Assembly Diffs
linux arm64
Diffs are based on 1,610,272 contexts (368,644 MinOpts, 1,241,628 FullOpts).
MISSED contexts: 3,428 (0.21%)
Overall (-7,664 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm64.checked.mch |
13,063,296 |
+52 |
benchmarks.run_pgo.linux.arm64.checked.mch |
65,248,964 |
-7,960 |
benchmarks.run_tiered.linux.arm64.checked.mch |
20,463,492 |
+4 |
coreclr_tests.run.linux.arm64.checked.mch |
301,232,224 |
-128 |
libraries.crossgen2.linux.arm64.checked.mch |
63,420,392 |
+168 |
libraries.pmi.linux.arm64.checked.mch |
76,198,412 |
+136 |
libraries_tests.run.linux.arm64.Release.mch |
38,229,644 |
-196 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
161,788,104 |
+300 |
realworld.run.linux.arm64.checked.mch |
15,927,560 |
-40 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
2,805,868 |
+0 |
FullOpts (-7,664 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.arm64.checked.mch |
12,929,980 |
+52 |
benchmarks.run_pgo.linux.arm64.checked.mch |
43,966,340 |
-7,960 |
benchmarks.run_tiered.linux.arm64.checked.mch |
4,684,868 |
+4 |
coreclr_tests.run.linux.arm64.checked.mch |
140,438,460 |
-128 |
libraries.crossgen2.linux.arm64.checked.mch |
63,418,756 |
+168 |
libraries.pmi.linux.arm64.checked.mch |
76,078,428 |
+136 |
libraries_tests.run.linux.arm64.Release.mch |
14,334,168 |
-196 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
148,385,272 |
+300 |
realworld.run.linux.arm64.checked.mch |
15,345,356 |
-40 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
2,804,880 |
+0 |
Example diffs
benchmarks.run.linux.arm64.checked.mch
-12 (-1.23%) : 5190.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 12, 7 ) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T04] ( 12, 11.44) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T14] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T12] ( 8, 7.02) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
-; V04 loc2 [V04,T21] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T23] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
; V05 loc3 [V05,T00] ( 11, 17.08) int -> x0
; V06 loc4 [V06,T02] ( 8, 16 ) ref -> x15 class-hnd <System.Type>
-; V07 loc5 [V07,T08] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
-; V08 loc6 [V08,T20] ( 6, 1.83) ref -> x1 class-hnd exact <System.Type[]>
+; V07 loc5 [V07,T09] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
+; V08 loc6 [V08,T18] ( 6, 3.31) ref -> x1 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x0
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,36 +25,36 @@
;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType>
; V16 tmp5 [V16,T26] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp7 [V18,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp7 [V18,T21] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V19 tmp8 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp10 [V21,T22] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
-; V22 tmp11 [V22 ] ( 4, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
-; V23 tmp12 [V23,T18] ( 2, 2 ) long -> x0 "impAppendStmt"
+; V21 tmp10 [V21,T16] ( 2, 3.96) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
+; V22 tmp11 [V22 ] ( 4, 7.92) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
+; V23 tmp12 [V23,T11] ( 2, 7.92) long -> x0 "impAppendStmt"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V27 tmp16 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T14] ( 3, 4 ) ref -> x0 "Single return block return value"
-; V31 FramesRoot [V31,T13] ( 6, 4 ) long -> x20 "Pinvoke FrameListRoot"
-; V32 PInvokeFrame [V32 ] ( 8, 6 ) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp19 [V30,T13] ( 3, 6.96) ref -> x0 "Single return block return value"
+; V31 FramesRoot [V31,T08] ( 6, 9.92) long -> x21 "Pinvoke FrameListRoot"
+; V32 PInvokeFrame [V32 ] ( 8, 11.92) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V33 tmp22 [V33 ] ( 0, 0 ) long -> zero-ref "field V24._ptr (fldOffset=0x0)" P-INDEP
-; V34 tmp23 [V34,T23] ( 2, 1 ) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp24 [V35,T19] ( 2, 2 ) long -> x1 "argument with side effect"
-; V36 tmp25 [V36,T15] ( 2, 2 ) ref -> x20 single-def "argument with side effect"
-; V37 tmp26 [V37,T16] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V34 tmp23 [V34,T17] ( 2, 3.96) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp24 [V35,T22] ( 2, 2 ) long -> x1 "argument with side effect"
+; V36 tmp25 [V36,T19] ( 2, 2 ) ref -> x21 single-def "argument with side effect"
+; V37 tmp26 [V37,T20] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V39 tmp28 [V39,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V40 tmp29 [V40,T28] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V41 PSPSym [V41,T24] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym"
-; V42 cse0 [V42,T04] ( 10, 12.50) int -> x21 "CSE - aggressive"
-; V43 cse1 [V43,T09] ( 6, 8.54) byref -> x22 hoist multi-def "CSE - aggressive"
-; V44 cse2 [V44,T12] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
-; V45 cse3 [V45,T05] ( 3, 11.88) long -> x14 "CSE - aggressive"
-; V46 cse4 [V46,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V42 cse0 [V42,T05] ( 10, 12.50) int -> x22 "CSE - aggressive"
+; V43 cse1 [V43,T10] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
+; V44 cse2 [V44,T15] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
+; V45 cse3 [V45,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V46 cse4 [V46,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
; Lcl frame size = 112
@@ -71,21 +71,23 @@ G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x2, [fp, #0x78] // [V41 PSPSym]
str x0, [fp, #0x68] // [V00 this]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=52 bbWeight=1 PerfScore 11.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
add x0, fp, #32 // [V32 PInvokeFrame+0x08]
mov x1, x12
bl CORINFO_HELP_INIT_PINVOKE_FRAME
- mov x20, x0
+ mov x21, x0
mov x1, sp
str x1, [fp, #0x40] // [V32 PInvokeFrame+0x28]
mov x1, fp
str x1, [fp, #0x50] // [V32 PInvokeFrame+0x38]
- cbz x19, G_M59170_IG21
- ldr w21, [x19, #0x08]
- mov w1, w21
+ cbz x20, G_M59170_IG21
+ ldr w22, [x20, #0x08]
+ mov w1, w22
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -94,33 +96,28 @@ G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=800
; gcr arg pop 0
str x0, [fp, #0x60] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
- ldr x0, [x1, #0x50]
+ ldr x0, [x19, #0x50]
; gcrRegs -[x0]
bl <unknown method>
- ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
cbz w0, G_M59170_IG22
mov w0, wzr
- cmp w21, #0
+ cmp w22, #0
ble G_M59170_IG07
- ;; size=96 bbWeight=1 PerfScore 24.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- ldr w14, [x2, #0x08]
- cmp w14, w21
+ ;; size=88 bbWeight=1 PerfScore 20.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ ldr w14, [x1, #0x08]
+ cmp w14, w22
blt G_M59170_IG06
- add x22, x19, #16
- ; byrRegs +[x22]
+ add x23, x20, #16
+ ; byrRegs +[x23]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80002 {x1 x19}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x20]
mov w14, w0
- ldr x15, [x22, x14, LSL #3]
+ ldr x15, [x23, x14, LSL #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x12, [x15]
@@ -129,7 +126,7 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
movk xip0, #0xD1FFAB1E LSL #32
cmp x12, xip0
bne G_M59170_IG12
- add x12, x2, #16
+ add x12, x1, #16
; byrRegs +[x12]
add x14, x12, x14, LSL #3
; byrRegs +[x14]
@@ -137,20 +134,20 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
; gcrRegs -[x15]
; byrRegs -[x12 x14]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG04
;; size=60 bbWeight=3.96 PerfScore 59.40
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ; byrRegs -[x22]
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x23]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2] +[x19]
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- add x22, x19, #16
- ; byrRegs +[x22]
- ldr x15, [x22, w0, UXTW #3]
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x20]
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ add x23, x20, #16
+ ; byrRegs +[x23]
+ ldr x15, [x23, w0, UXTW #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x14, [x15]
@@ -159,30 +156,30 @@ G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x12, #0xD1FFAB1E LSL #32
cmp x14, x12
bne G_M59170_IG12
- ldr w14, [x2, #0x08]
+ ldr w14, [x1, #0x08]
cmp w0, w14
bhs G_M59170_IG20
- add x14, x2, #16
+ add x14, x1, #16
; byrRegs +[x14]
add x14, x14, x0, LSL #3
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x2 x15]
- ; byrRegs -[x14 x22]
+ ; gcrRegs -[x1 x15]
+ ; byrRegs -[x14 x23]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG06
;; size=76 bbWeight=0.04 PerfScore 0.86
-G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG07: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
str xzr, [fp, #0x70] // [V22 tmp11]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x1]
+ movz x2, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
add x1, fp, #112 // [V22 tmp11]
mov w2, #1
@@ -194,22 +191,22 @@ G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
str x3, [fp, #0x48] // [V32 PInvokeFrame+0x30]
add x3, fp, #32 // [V32 PInvokeFrame+0x08]
; byrRegs +[x3]
- str x3, [x20, #0x10]
- strb wzr, [x20, #0x0C]
- ;; size=72 bbWeight=0.50 PerfScore 7.25
-G_M59170_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ str x3, [x21, #0x10]
+ strb wzr, [x21, #0x0C]
...
-4 (-0.76%) : 26624.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T11] ( 3, 3 ) ref -> x20 this class-hnd single-def <Microsoft.Extensions.Logging.LogValuesFormatter>
-; V01 arg1 [V01,T09] ( 4, 3.50) ref -> x19 class-hnd single-def <System.Object[]>
-; V02 loc0 [V02,T05] ( 10, 9.25) ref -> x21 class-hnd <System.Object[]>
+; V00 this [V00,T09] ( 3, 3.98) ref -> x19 this class-hnd single-def <Microsoft.Extensions.Logging.LogValuesFormatter>
+; V01 arg1 [V01,T10] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Object[]>
+; V02 loc0 [V02,T04] ( 10, 10.23) ref -> x21 class-hnd <System.Object[]>
; V03 loc1 [V03,T00] ( 21, 42.75) int -> registers
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T13] ( 2, 2 ) ref -> x0 single-def
-; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x1 single-def
-; V08 tmp3 [V08,T10] ( 5, 5 ) ref -> x2
+; V06 tmp1 [V06,T13] ( 2, 2.98) ref -> x0 single-def
+; V07 tmp2 [V07,T14] ( 2, 2.98) ref -> x1 single-def
+; V08 tmp3 [V08,T11] ( 4, 5.46) ref -> x2
; V09 tmp4 [V09,T12] ( 3, 3 ) int -> x22 "impSpillLclRefs"
; V10 tmp5 [V10,T06] ( 4, 8.50) ref -> x26 class-hnd "Inline return value spill temp" <System.Object>
; V11 tmp6 [V11 ] ( 5, 18 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
@@ -25,7 +25,7 @@
; V14 tmp9 [V14 ] ( 10, 18 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
; V15 tmp10 [V15,T01] ( 6, 20 ) ref -> x22 class-hnd "Inlining Arg" <System.Object>
; V16 cse0 [V16,T03] ( 5, 12.25) byref -> x24 hoist "CSE - aggressive"
-; V17 cse1 [V17,T04] ( 7, 10 ) int -> x23 "CSE - aggressive"
+; V17 cse1 [V17,T05] ( 7, 10 ) int -> x23 "CSE - aggressive"
; V18 cse2 [V18,T07] ( 4, 8.25) long -> x25 hoist "CSE - aggressive"
;
; Lcl frame size = 16
@@ -38,13 +38,13 @@ G_M27341_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0x50]
mov fp, sp
stp xzr, xzr, [fp, #0x10] // [V14 tmp9], [V11 tmp6]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
+ mov x20, x1
+ ; gcrRegs +[x20]
;; size=36 bbWeight=1 PerfScore 7.50
G_M27341_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x21, x19
+ mov x21, x20
; gcrRegs +[x21]
cbz x21, G_M27341_IG21
;; size=8 bbWeight=1 PerfScore 1.50
@@ -96,13 +96,13 @@ G_M27341_IG08: ; bbWeight=4, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRe
cmp w23, w22
bgt G_M27341_IG05
;; size=28 bbWeight=4 PerfScore 30.00
-G_M27341_IG09: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x19 x26]
+G_M27341_IG09: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1 x20 x26]
; byrRegs -[x24]
b G_M27341_IG21
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs -[x21] +[x19 x26]
+ ; gcrRegs -[x21] +[x20 x26]
; byrRegs +[x24]
mov w1, w23
movz x0, #0xD1FFAB1E
@@ -112,7 +112,7 @@ G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefReg
; gcrRegs +[x0]
mov x21, x0
; gcrRegs +[x21]
- mov x0, x19
+ mov x0, x20
mov x1, x21
; gcrRegs +[x1]
mov w2, w22
@@ -121,9 +121,9 @@ G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefReg
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
add w1, w22, #1
- sxtw w19, w1
+ sxtw w20, w1
sxtw x1, w22
mov x0, x21
; gcrRegs +[x0]
@@ -131,14 +131,14 @@ G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefReg
; gcrRegs +[x2]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2 x26]
- cmp w23, w19
+ cmp w23, w20
ble G_M27341_IG21
;; size=88 bbWeight=0.50 PerfScore 7.75
-G_M27341_IG11: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
- tbnz w19, #31, G_M27341_IG17
+G_M27341_IG11: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
+ tbnz w20, #31, G_M27341_IG17
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M27341_IG12: ; bbWeight=3.96, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
- ldr x22, [x24, w19, UXTW #3]
+G_M27341_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
+ ldr x22, [x24, w20, UXTW #3]
; gcrRegs +[x22]
str xzr, [fp, #0x10] // [V14 tmp9]
str xzr, [fp, #0x10] // [V14 tmp9]
@@ -154,34 +154,34 @@ G_M27341_IG12: ; bbWeight=3.96, gcrefRegs=300000 {x20 x21}, byrefRegs=100
; gcrRegs -[x1]
cbnz w0, G_M27341_IG14
;; size=48 bbWeight=3.96 PerfScore 51.48
-G_M27341_IG13: ; bbWeight=1.98, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG13: ; bbWeight=1.98, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=1000000 {x24}, byref
mov x2, x22
; gcrRegs +[x2]
b G_M27341_IG15
;; size=8 bbWeight=1.98 PerfScore 2.97
-G_M27341_IG14: ; bbWeight=1.98, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG14: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref
; gcrRegs -[x2 x22]
ldr x2, [fp, #0x10] // [V14 tmp9]
; gcrRegs +[x2]
;; size=4 bbWeight=1.98 PerfScore 3.96
-G_M27341_IG15: ; bbWeight=3.96, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=1000000 {x24}, byref, isz
+G_M27341_IG15: ; bbWeight=3.96, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=1000000 {x24}, byref, isz
str xzr, [fp, #0x10] // [V14 tmp9]
- sxtw x1, w19
+ sxtw x1, w20
mov x0, x21
; gcrRegs +[x0]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
- add w19, w19, #1
- cmp w23, w19
+ add w20, w20, #1
+ cmp w23, w20
bgt G_M27341_IG12
;; size=28 bbWeight=3.96 PerfScore 19.80
-G_M27341_IG16: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M27341_IG16: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x24]
b G_M27341_IG21
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M27341_IG17: ; bbWeight=0.04, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M27341_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
; byrRegs +[x24]
- ldr x22, [x24, w19, UXTW #3]
+ ldr x22, [x24, w20, UXTW #3]
; gcrRegs +[x22]
str xzr, [fp, #0x10] // [V14 tmp9]
str xzr, [fp, #0x10] // [V14 tmp9]
@@ -197,28 +197,28 @@ G_M27341_IG17: ; bbWeight=0.04, gcrefRegs=300000 {x20 x21}, byrefRegs=100
; gcrRegs -[x1]
cbnz w0, G_M27341_IG19
;; size=48 bbWeight=0.04 PerfScore 0.52
-G_M27341_IG18: ; bbWeight=0.02, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG18: ; bbWeight=0.02, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=1000000 {x24}, byref
mov x2, x22
; gcrRegs +[x2]
b G_M27341_IG20
;; size=8 bbWeight=0.02 PerfScore 0.03
-G_M27341_IG19: ; bbWeight=0.02, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG19: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref
; gcrRegs -[x2 x22]
ldr x2, [fp, #0x10] // [V14 tmp9]
; gcrRegs +[x2]
;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M27341_IG20: ; bbWeight=0.04, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=1000000 {x24}, byref, isz
+G_M27341_IG20: ; bbWeight=0.04, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=1000000 {x24}, byref, isz
str xzr, [fp, #0x10] // [V14 tmp9]
- sxtw x1, w19
+ sxtw x1, w20
mov x0, x21
; gcrRegs +[x0]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
- add w19, w19, #1
- cmp w23, w19
+ add w20, w20, #1
+ cmp w23, w20
bgt G_M27341_IG17
;; size=28 bbWeight=0.04 PerfScore 0.20
-G_M27341_IG21: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M27341_IG21: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x24]
movz x0, #0xD1FFAB1E // code for System.Globalization.CultureInfo:get_InvariantCulture():System.Globalization.CultureInfo
movk x0, #0xD1FFAB1E LSL #16
@@ -226,23 +226,28 @@ G_M27341_IG21: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
ldr x0, [x0]
blr x0
; gcrRegs +[x0]
- ldr x1, [x20, #0x10]
+ ldr x1, [x19, #0x10]
; gcrRegs +[x1]
mov x2, x21
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, #0
- csel x2, x2, x3, ne
+ cbnz x2, G_M27341_IG23
+ ;; size=32 bbWeight=1.98 PerfScore 19.80
+G_M27341_IG22: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2 x19 x21]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
+G_M27341_IG23: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for System.String:Format(System.IFormatProvider,System.Text.CompositeFormat,System.Object[]):System.String
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x1-x2 x20-x21]
- ;; size=68 bbWeight=1 PerfScore 17.00
-G_M27341_IG22: ; bbWeight=1, epilog, nogc, extend
+ ; gcrRegs -[x1-x2]
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M27341_IG24: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
@@ -251,7 +256,7 @@ G_M27341_IG22: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
-; Total bytes of code 528, prolog size 28, PerfScore 212.00, instruction count 132, allocated bytes for code 528 (MethodHash=19de9532) for method Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
+; Total bytes of code 524, prolog size 28, PerfScore 223.01, instruction count 131, allocated bytes for code 524 (MethodHash=19de9532) for method Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -262,7 +267,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 132 (0x00084) Actual length = 528 (0x000210)
+ Function Length : 131 (0x00083) Actual length = 524 (0x00020c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.14%) : 18557.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
@@ -269,7 +269,7 @@
; V258 tmp219 [V258,T176] ( 2, 2 ) ref -> x24 single-def "field V83._array (fldOffset=0x0)" P-INDEP
;* V259 tmp220 [V259,T179] ( 0, 0 ) int -> zero-ref single-def "field V83._index (fldOffset=0x8)" P-INDEP
; V260 tmp221 [V260,T149] ( 5, 10.50) ref -> x1 "field V87._value (fldOffset=0x0)" P-INDEP
-; V261 tmp222 [V261,T164] ( 3, 6 ) ref -> x28 "field V87._equalityComparer (fldOffset=0x8)" P-INDEP
+; V261 tmp222 [V261,T164] ( 3, 6 ) ref -> x27 "field V87._equalityComparer (fldOffset=0x8)" P-INDEP
; V262 tmp223 [V262,T165] ( 2, 4 ) ref -> x1 "field V88._value (fldOffset=0x0)" P-INDEP
; V263 tmp224 [V263,T166] ( 2, 4 ) ref -> x27 "field V88._equalityComparer (fldOffset=0x8)" P-INDEP
; V264 tmp225 [V264,T170] ( 2, 4 ) ref -> x27 "field V101._root (fldOffset=0x0)" P-INDEP
@@ -441,46 +441,33 @@ G_M7105_IG05: ; bbWeight=4, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x2
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbz x0, G_M7105_IG07
+ cbz x0, G_M7105_IG47
;; size=36 bbWeight=4 PerfScore 52.00
G_M7105_IG06: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0001 {x0}, byref
ldp x1, x27, [x0]
; gcrRegs +[x1 x27]
- b G_M7105_IG08
- ;; size=8 bbWeight=2 PerfScore 10.00
-G_M7105_IG07: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x27]
+ ;; size=4 bbWeight=2 PerfScore 8.00
+G_M7105_IG07: ; bbWeight=4, gcrefRegs=DF80002 {x1 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- ldp x1, x28, [x23, #0x18]
- ; gcrRegs +[x1 x28]
- b G_M7105_IG09
- ;; size=8 bbWeight=2 PerfScore 10.00
-G_M7105_IG08: ; bbWeight=2, gcrefRegs=DF80002 {x1 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x28] +[x27]
- mov x28, x27
- ; gcrRegs +[x28]
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M7105_IG09: ; bbWeight=4, gcrefRegs=15F80002 {x1 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x27]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M7105_IG11
+ cbz x2, G_M7105_IG09
;; size=8 bbWeight=4 PerfScore 6.00
-G_M7105_IG10: ; bbWeight=1, gcrefRegs=15F80006 {x1 x2 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG08: ; bbWeight=1, gcrefRegs=DF80006 {x1 x2 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
cmp x0, x3
- beq G_M7105_IG16
+ beq G_M7105_IG48
;; size=24 bbWeight=1 PerfScore 6.00
-G_M7105_IG11: ; bbWeight=2, gcrefRegs=15F80002 {x1 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG09: ; bbWeight=2, gcrefRegs=DF80002 {x1 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M7105_IG15
+ cbz x2, G_M7105_IG46
;; size=8 bbWeight=2 PerfScore 3.00
-G_M7105_IG12: ; bbWeight=1, gcrefRegs=15F80006 {x1 x2 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG10: ; bbWeight=1, gcrefRegs=DF80006 {x1 x2 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
@@ -488,9 +475,9 @@ G_M7105_IG12: ; bbWeight=1, gcrefRegs=15F80006 {x1 x2 x19 x20 x21 x22 x23
cmp x0, x3
str x2, [fp, #0xD1FFAB1E] // [V99 tmp60]
; GC ptr vars +{V99}
- beq G_M7105_IG14
+ beq G_M7105_IG12
;; size=28 bbWeight=1 PerfScore 7.00
-G_M7105_IG13: ; bbWeight=0.50, gcrefRegs=15F80002 {x1 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref
+G_M7105_IG11: ; bbWeight=0.50, gcrefRegs=DF80002 {x1 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
; GC ptr vars -{V99}
mov x0, x3
@@ -499,9 +486,9 @@ G_M7105_IG13: ; bbWeight=0.50, gcrefRegs=15F80002 {x1 x19 x20 x21 x22 x23
str x0, [fp, #0xD1FFAB1E] // [V99 tmp60]
; GC ptr vars +{V99}
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M7105_IG14: ; bbWeight=2, gcVars=000000000000800000000000000000000000000000000000 {V99}, gcrefRegs=15F80000 {x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M7105_IG12: ; bbWeight=2, gcVars=000000000000800000000000000000000000000000000000 {V99}, gcrefRegs=DF80000 {x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- mov x0, x28
+ mov x0, x27
; gcrRegs +[x0]
mov x2, x26
; gcrRegs +[x2]
@@ -513,103 +500,12 @@ G_M7105_IG14: ; bbWeight=2, gcVars=00000000000080000000000000000000000000
ldr x3, [x11]
; GC ptr vars -{V99}
blr x3
- ; gcrRegs -[x0-x2 x28]
- b G_M7105_IG23
- ;; size=36 bbWeight=2 PerfScore 19.00
-G_M7105_IG15: ; bbWeight=1, gcrefRegs=15F80004 {x2 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x2 x28]
- str x2, [fp, #0xD1FFAB1E] // [V99 tmp60]
- ; GC ptr vars +{V99}
- b G_M7105_IG14
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M7105_IG16: ; bbWeight=2, gcrefRegs=5F80004 {x2 x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x28]
- ; GC ptr vars -{V99}
- ldp x28, x27, [x2, #0x08]
- ; gcrRegs +[x27-x28]
- cbnz x26, G_M7105_IG17
- mov w1, wzr
- b G_M7105_IG18
- ;; size=16 bbWeight=2 PerfScore 13.00
-G_M7105_IG17: ; bbWeight=2, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- mov x0, x28
- ; gcrRegs +[x0]
- mov x1, x26
- ; gcrRegs +[x1]
- movz x11, #0xD1FFAB1E // code for <unknown method>
- movk x11, #0xD1FFAB1E LSL #16
- movk x11, #0xD1FFAB1E LSL #32
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x0-x1]
- sxtw w1, w0
- ;; size=32 bbWeight=2 PerfScore 14.00
-G_M7105_IG18: ; bbWeight=2, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
- add x2, fp, #0xD1FFAB1E // [V106 tmp67]
- mov x0, x27
- ; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:TryGetValue(int,byref):ubyte:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- ldr wzr, [x0]
- blr x3
- ; gcrRegs -[x0 x27]
- cbz w0, G_M7105_IG22
- ldr x0, [fp, #0xD1FFAB1E] // [V273 tmp234]
- ; gcrRegs +[x0]
- cbnz x0, G_M7105_IG19
- mov w27, wzr
- b G_M7105_IG21
- ;; size=52 bbWeight=2 PerfScore 30.00
-G_M7105_IG19: ; bbWeight=2, gcrefRegs=15F80000 {x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- mov x0, x28
- ; gcrRegs +[x0]
- ldr x2, [fp, #0xD1FFAB1E] // [V272 tmp233]
- ; gcrRegs +[x2]
- mov x1, x26
- ; gcrRegs +[x1]
- movz x11, #0xD1FFAB1E // code for <unknown method>
- movk x11, #0xD1FFAB1E LSL #16
- movk x11, #0xD1FFAB1E LSL #32
- ldr x3, [x11]
- blr x3
- ; gcrRegs -[x0-x2]
- cbnz w0, G_M7105_IG20
- ldr x0, [fp, #0xD1FFAB1E] // [V273 tmp234]
- ; gcrRegs +[x0]
- ldr w3, [x0, #0x20]
- mov x1, x26
- ; gcrRegs +[x1]
- mov x4, x28
- ; gcrRegs +[x4]
- mov w2, wzr
- movz x5, #0xD1FFAB1E // code for <unknown method>
- movk x5, #0xD1FFAB1E LSL #16
- movk x5, #0xD1FFAB1E LSL #32
- ldr x5, [x5]
- blr x5
- ; gcrRegs -[x0-x1 x4 x28]
- cmp w0, #0
- cset x27, ge
- b G_M7105_IG21
- ;; size=88 bbWeight=2 PerfScore 47.00
-G_M7105_IG20: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref
- mov w27, #1
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M7105_IG21: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref
- sxtw w0, w27
- b G_M7105_IG23
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M7105_IG22: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M7105_IG23: ; bbWeight=4, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0-x2 x27]
+ ;; size=32 bbWeight=2 PerfScore 17.00
+G_M7105_IG13: ; bbWeight=4, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
cbz w0, G_M7105_IG89
;; size=4 bbWeight=4 PerfScore 4.00
-G_M7105_IG24: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG14: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
str xzr, [fp, #0xD1FFAB1E] // [V09 loc6]
mov x0, x26
; gcrRegs +[x0]
@@ -625,7 +521,7 @@ G_M7105_IG24: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x2
cmp w27, #0
ble G_M7105_IG89
;; size=48 bbWeight=2 PerfScore 36.00
-G_M7105_IG25: ; bbWeight=16, gcrefRegs=15F80000 {x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG15: ; bbWeight=16, gcrefRegs=15F80000 {x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
add x0, x28, #16
; byrRegs +[x0]
@@ -634,9 +530,9 @@ G_M7105_IG25: ; bbWeight=16, gcrefRegs=15F80000 {x19 x20 x21 x22 x23 x24
ldr x0, [fp, #0xD1FFAB1E] // [V221 tmp182]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbz x0, G_M7105_IG27
+ cbz x0, G_M7105_IG17
;; size=16 bbWeight=16 PerfScore 104.00
-G_M7105_IG26: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG16: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [fp, #0xD1FFAB1E] // [V221 tmp182]
; gcrRegs +[x0]
@@ -647,7 +543,7 @@ G_M7105_IG26: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x
; byrRegs -[x0]
cbnz w0, G_M7105_IG94
;; size=16 bbWeight=8 PerfScore 52.00
-G_M7105_IG27: ; bbWeight=16, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG17: ; bbWeight=16, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
mov x0, x27
; gcrRegs +[x0]
ldr x1, [x27]
@@ -662,7 +558,7 @@ G_M7105_IG27: ; bbWeight=16, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24
ccmp w1, #15, z, ne
bne G_M7105_IG88
;; size=44 bbWeight=16 PerfScore 232.00
-G_M7105_IG28: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG18: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
mov x0, x27
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsImplementableInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte
@@ -696,16 +592,16 @@ G_M7105_IG28: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x
mov w0, wzr
; gcrRegs -[x0]
;; size=96 bbWeight=8 PerfScore 220.00
-G_M7105_IG29: ; bbWeight=8, gcrefRegs=1DF80004 {x2 x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG19: ; bbWeight=8, gcrefRegs=1DF80004 {x2 x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
cbz w0, G_M7105_IG88
cmp w0, #1
bne G_M7105_IG58
mov x3, x2
; gcrRegs +[x3]
- cbz x3, G_M7105_IG55
+ cbz x3, G_M7105_IG45
...
+16 (+0.80%) : 7101.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):this (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 22, 19.50) ref -> x19 this class-hnd single-def <ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]>
+; V00 this [V00,T03] ( 22, 20.48) ref -> x19 this class-hnd single-def <ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]>
; V01 arg1 [V01,T06] ( 8, 8 ) ref -> x20 class-hnd single-def <int[]>
; V02 arg2 [V02,T08] ( 9, 7.02) ref -> x21 class-hnd single-def <ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[]>
; V03 arg3 [V03,T09] ( 8, 5.75) ref -> x22 class-hnd <System.Reflection.MethodInfo[]>
@@ -16,14 +16,14 @@
; V05 arg5 [V05,T13] ( 4, 4 ) ubyte -> x24 single-def
; V06 arg6 [V06,T20] ( 3, 3 ) ubyte -> x27 single-def
; V07 arg7 [V07,T17] ( 4, 3.50) ref -> x25 class-hnd single-def <ProtoBuf.Meta.CallbackSet>
-; V08 arg8 [V08,T11] ( 12, 6.50) ref -> x23 class-hnd <System.Type>
-; V09 arg9 [V09,T30] ( 1, 1 ) ref -> [fp+0x88] class-hnd single-def <System.Reflection.MethodInfo>
+; V08 arg8 [V08,T11] ( 12, 7.48) ref -> x23 class-hnd <System.Type>
+; V09 arg9 [V09,T29] ( 1, 1.98) ref -> x28 class-hnd single-def <System.Reflection.MethodInfo>
; V10 arg10 [V10,T31] ( 1, 1 ) int -> [fp+0x90] single-def
; V11 loc0 [V11,T10] ( 6, 7.50) ubyte -> [fp+0x24]
-; V12 loc1 [V12,T05] ( 13, 11.50) ref -> [fp+0x18] class-hnd exact spill-single-def <System.RuntimeType>
+; V12 loc1 [V12,T05] ( 13, 11.50) ref -> [fp+0x10] class-hnd exact spill-single-def <System.RuntimeType>
; V13 loc2 [V13,T02] ( 17, 23.02) int -> [fp+0x20]
;* V14 loc3 [V14,T32] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.MethodInfo[]>
-; V15 loc4 [V15,T04] ( 5, 16.50) int -> x20
+; V15 loc4 [V15,T04] ( 5, 16.50) int -> x28
;* V16 loc5 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MethodInfo>
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V18 tmp1 [V18,T40] ( 2, 0 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
@@ -35,7 +35,7 @@
; V24 tmp7 [V24,T23] ( 4, 4 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V25 tmp8 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp9 [V26,T35] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V27 tmp10 [V27,T29] ( 3, 1.50) int -> x0
+; V27 tmp10 [V27,T30] ( 3, 1.50) int -> x0
; V28 tmp11 [V28,T36] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V29 tmp12 [V29,T37] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V30 tmp13 [V30,T38] ( 3, 0 ) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
@@ -66,10 +66,10 @@
; V55 tmp38 [V55,T56] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V56 tmp39 [V56,T57] ( 2, 0 ) ref -> x21 single-def "argument with side effect"
; V57 tmp40 [V57,T58] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V58 cse0 [V58,T07] ( 8, 9.50) int -> x28 "CSE - aggressive"
-; V59 cse1 [V59,T19] ( 4, 5.50) int -> x21 "CSE - aggressive"
-; V60 cse2 [V60,T22] ( 2, 4.25) byref -> x27 hoist "CSE - moderate"
-; V61 cse3 [V61,T12] ( 7, 6 ) byref -> x3 multi-def "CSE - aggressive"
+; V58 cse0 [V58,T07] ( 8, 9.50) int -> [fp+0x1C] spill-single-def "CSE - aggressive"
+; V59 cse1 [V59,T19] ( 4, 5.50) int -> x20 "CSE - aggressive"
+; V60 cse2 [V60,T22] ( 2, 4.25) byref -> x21 hoist "CSE - moderate"
+; V61 cse3 [V61,T12] ( 7, 6 ) byref -> x4 multi-def "CSE - aggressive"
; V62 cse4 [V62,T15] ( 3, 5.94) int -> x11 "CSE - aggressive"
; V63 cse5 [V63,T33] ( 3, 0.06) int -> x11 "CSE - conservative"
; V64 rat0 [V64,T21] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
@@ -103,13 +103,14 @@ G_M2714_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w27, w6
mov x25, x7
; gcrRegs +[x25]
- ldr x23, [fp, #0x80] // [V08 arg8]
- ; gcrRegs +[x23]
- ;; size=68 bbWeight=1 PerfScore 13.50
-G_M2714_IG02: ; bbWeight=1, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+ ldp x23, x28, [fp, #0x80] // [V08 arg8], [V09 arg9]
+ ; gcrRegs +[x23 x28]
+ ;; size=68 bbWeight=1 PerfScore 14.50
+G_M2714_IG02: ; bbWeight=1, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
cbz x20, G_M2714_IG43
- ldr w28, [x20, #0x08]
- mov w4, w28
+ ldr w6, [x20, #0x08]
+ str w6, [fp, #0x1C] // [V58 cse0]
+ mov w4, w6
mov x1, x20
; gcrRegs +[x1]
mov x2, x21
@@ -119,11 +120,11 @@ G_M2714_IG02: ; bbWeight=1, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25},
movk x0, #0xD1FFAB1E LSL #32
mov w3, wzr
mov x5, xzr
- movz x6, #0xD1FFAB1E // code for System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int])
- movk x6, #0xD1FFAB1E LSL #16
- movk x6, #0xD1FFAB1E LSL #32
- ldr x6, [x6]
- blr x6
+ movz x7, #0xD1FFAB1E // code for System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int])
+ movk x7, #0xD1FFAB1E LSL #16
+ movk x7, #0xD1FFAB1E LSL #32
+ ldr x7, [x7]
+ blr x7
; gcrRegs -[x1-x2]
; gcr arg pop 0
ldr w0, [fp, #0x90] // [V10 arg10]
@@ -136,39 +137,41 @@ G_M2714_IG02: ; bbWeight=1, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25},
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
; gcr arg pop 0
- str x0, [fp, #0x18] // [V12 loc1]
+ str x0, [fp, #0x10] // [V12 loc1]
; GC ptr vars +{V12}
mov w2, wzr
- cmp w28, #0
+ ldr w3, [fp, #0x1C] // [V58 cse0]
+ cmp w3, #0
ble G_M2714_IG16
- ;; size=108 bbWeight=1 PerfScore 33.50
-G_M2714_IG03: ; bbWeight=0.50, gcVars=0000000000000020 {V12}, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=116 bbWeight=1 PerfScore 36.50
+G_M2714_IG03: ; bbWeight=0.50, gcVars=0000000000000020 {V12}, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
cbz x21, G_M2714_IG11
ldr w0, [x21, #0x08]
- cmp w0, w28
+ cmp w0, w3
blt G_M2714_IG11
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M2714_IG04: ; bbWeight=3.96, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+G_M2714_IG04: ; bbWeight=3.96, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
cbz w2, G_M2714_IG06
;; size=4 bbWeight=3.96 PerfScore 3.96
-G_M2714_IG05: ; bbWeight=1.98, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- add x3, x20, #16
- ; byrRegs +[x3]
- ldr w0, [x3, w2, UXTW #2]
+G_M2714_IG05: ; bbWeight=1.98, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
+ add x4, x20, #16
+ ; byrRegs +[x4]
+ ldr w0, [x4, w2, UXTW #2]
sub w11, w2, #1
- cmp w11, w28
+ cmp w11, w3
bhs G_M2714_IG42
- ldr w11, [x3, w11, UXTW #2]
+ ldr w11, [x4, w11, UXTW #2]
cmp w0, w11
+ ldr w3, [fp, #0x1C] // [V58 cse0]
beq G_M2714_IG44
- ;; size=32 bbWeight=1.98 PerfScore 19.80
-G_M2714_IG06: ; bbWeight=3.96, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x3]
- ldr w4, [fp, #0x24] // [V11 loc0]
- cbnz w4, G_M2714_IG08
+ ;; size=36 bbWeight=1.98 PerfScore 23.76
+G_M2714_IG06: ; bbWeight=3.96, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x4]
+ ldr w5, [fp, #0x24] // [V11 loc0]
+ cbnz w5, G_M2714_IG08
;; size=8 bbWeight=3.96 PerfScore 11.88
-G_M2714_IG07: ; bbWeight=1.98, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+G_M2714_IG07: ; bbWeight=1.98, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
add x0, x21, #16
; byrRegs +[x0]
str w2, [fp, #0x20] // [V13 loc2]
@@ -178,51 +181,52 @@ G_M2714_IG07: ; bbWeight=1.98, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
- ldr x3, [x11]
- blr x3
+ ldr x4, [x11]
+ blr x4
; gcr arg pop 0
- ldr x1, [fp, #0x18] // [V12 loc1]
+ ldr x1, [fp, #0x10] // [V12 loc1]
; gcrRegs +[x1]
cmp x0, x1
beq G_M2714_IG10
- mov w4, #1
- sxtw w2, w4
+ mov w5, #1
+ sxtw w2, w5
str w2, [fp, #0x24] // [V11 loc0]
- ldr w2, [fp, #0x20] // [V13 loc2]
+ ldp w3, w2, [fp, #0x1C] // [V58 cse0], [V13 loc2]
;; size=60 bbWeight=1.98 PerfScore 34.65
-G_M2714_IG08: ; bbWeight=3.96, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+G_M2714_IG08: ; bbWeight=3.96, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
add w2, w2, #1
- cmp w28, w2
+ cmp w3, w2
bgt G_M2714_IG04
;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M2714_IG09: ; bbWeight=1, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref
+G_M2714_IG09: ; bbWeight=1.98, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref
b G_M2714_IG16
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M2714_IG10: ; bbWeight=0.99, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref
- ldr w2, [fp, #0x20] // [V13 loc2]
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M2714_IG10: ; bbWeight=0.99, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref
+ ldp w3, w2, [fp, #0x1C] // [V58 cse0], [V13 loc2]
b G_M2714_IG08
;; size=8 bbWeight=0.99 PerfScore 2.97
-G_M2714_IG11: ; bbWeight=0.04, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+G_M2714_IG11: ; bbWeight=0.04, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
cbz w2, G_M2714_IG13
;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M2714_IG12: ; bbWeight=0.02, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- add x3, x20, #16
- ; byrRegs +[x3]
- ldr w0, [x3, w2, UXTW #2]
+G_M2714_IG12: ; bbWeight=0.02, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
+ add x4, x20, #16
+ ; byrRegs +[x4]
+ ldr w0, [x4, w2, UXTW #2]
sub w11, w2, #1
- cmp w11, w28
+ cmp w11, w3
bhs G_M2714_IG42
- ldr w11, [x3, w11, UXTW #2]
+ ldr w11, [x4, w11, UXTW #2]
cmp w0, w11
+ ldr w3, [fp, #0x1C] // [V58 cse0]
beq G_M2714_IG44
- ;; size=32 bbWeight=0.02 PerfScore 0.20
-G_M2714_IG13: ; bbWeight=0.04, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x3]
- ldr w4, [fp, #0x24] // [V11 loc0]
- cbnz w4, G_M2714_IG15
+ ;; size=36 bbWeight=0.02 PerfScore 0.24
+G_M2714_IG13: ; bbWeight=0.04, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x4]
+ ldr w5, [fp, #0x24] // [V11 loc0]
+ cbnz w5, G_M2714_IG15
;; size=8 bbWeight=0.04 PerfScore 0.12
-G_M2714_IG14: ; bbWeight=0.02, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+G_M2714_IG14: ; bbWeight=0.02, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w2, w0
bhs G_M2714_IG42
@@ -235,37 +239,37 @@ G_M2714_IG14: ; bbWeight=0.02, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25
movz x11, #0xD1FFAB1E
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
- ldr x3, [x11]
- blr x3
+ ldr x4, [x11]
+ blr x4
; gcr arg pop 0
- ldr x2, [fp, #0x18] // [V12 loc1]
+ ldr x2, [fp, #0x10] // [V12 loc1]
; gcrRegs +[x2]
cmp x0, x2
beq G_M2714_IG36
- mov w4, #1
- str w4, [fp, #0x24] // [V11 loc0]
- ldr w2, [fp, #0x20] // [V13 loc2]
+ mov w5, #1
+ str w5, [fp, #0x24] // [V11 loc0]
+ ldp w3, w2, [fp, #0x1C] // [V58 cse0], [V13 loc2]
; gcrRegs -[x2]
;; size=68 bbWeight=0.02 PerfScore 0.43
...
+8 (+1.12%) : 13341.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
@@ -74,12 +74,12 @@ G_M17197_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
mov w24, wzr
sxtw w25, w22
cmp w25, w23
- bge G_M17197_IG09
+ bge G_M17197_IG08
;; size=28 bbWeight=1 PerfScore 11.50
G_M17197_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr w26, [x0, #0x08]
cmp w25, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
add x27, x0, #16
; byrRegs +[x27]
ldrb w28, [x27, w25, UXTW #2]
@@ -96,7 +96,7 @@ G_M17197_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
add w0, w25, #1
sxtw w4, w0
cmp w4, w23
- bge G_M17197_IG10
+ bge G_M17197_IG09
;; size=72 bbWeight=0.50 PerfScore 8.75
G_M17197_IG04: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
orr w0, w4, w23
@@ -107,40 +107,40 @@ G_M17197_IG04: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
G_M17197_IG05: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
ldrb w28, [x27, w4, UXTW #2]
ldrb w0, [x22, w28, UXTW #2]
- tbz w0, #1, G_M17197_IG10
+ tbz w0, #1, G_M17197_IG09
orr w24, w24, w28
add w4, w4, #1
cmp w4, w23
blt G_M17197_IG05
;; size=28 bbWeight=3.96 PerfScore 37.62
-G_M17197_IG06: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
+G_M17197_IG06: ; bbWeight=1.98, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
mov w0, w28
mov w28, w0
- b G_M17197_IG10
- ;; size=12 bbWeight=0.50 PerfScore 1.00
+ b G_M17197_IG09
+ ;; size=12 bbWeight=1.98 PerfScore 3.96
G_M17197_IG07: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
cmp w4, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
ldrb w28, [x27, w4, UXTW #2]
ldrb w0, [x22, w28, UXTW #2]
- tbz w0, #1, G_M17197_IG10
+ tbz w0, #1, G_M17197_IG09
orr w24, w24, w28
add w4, w4, #1
cmp w4, w23
blt G_M17197_IG07
- ;; size=36 bbWeight=0.04 PerfScore 0.44
-G_M17197_IG08: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
- b G_M17197_IG10
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG09: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ mov w0, w28
+ mov w28, w0
+ b G_M17197_IG09
+ ;; size=48 bbWeight=0.04 PerfScore 0.52
+G_M17197_IG08: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
mov w24, #128
- b G_M17197_IG22
+ b G_M17197_IG20
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M17197_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG09: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
; byrRegs +[x27]
cmp w28, #58
- bne G_M17197_IG11
+ bne G_M17197_IG10
str w4, [fp, #0x1C] // [V03 loc0]
sub w2, w4, w25
mov w0, #97
@@ -148,17 +148,17 @@ G_M17197_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
cmp w2, #1
ccmp w3, w0, nc, eq
ccmp w3, w1, 0, ge
- bgt G_M17197_IG12
+ bgt G_M17197_IG11
sub w0, w3, #96
str w0, [x21, #0x10]
- b G_M17197_IG13
+ b G_M17197_IG12
;; size=52 bbWeight=0.50 PerfScore 4.50
-G_M17197_IG11: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M17197_IG10: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
mov w22, w4
- b G_M17197_IG22
+ b G_M17197_IG20
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M17197_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
+G_M17197_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
; byrRegs +[x27]
mov x0, x21
; gcrRegs +[x0]
@@ -172,72 +172,70 @@ G_M17197_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; gcrRegs -[x0]
; gcr arg pop 0
;; size=32 bbWeight=0.50 PerfScore 4.75
-G_M17197_IG13: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
ldr w4, [fp, #0x1C] // [V03 loc0]
add w4, w4, #1
sxtw w1, w4
cmp w1, w23
- bge G_M17197_IG20
+ bge G_M17197_IG18
cmp w1, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
ldrb w28, [x27, w1, UXTW #2]
ldrb w4, [x22, w28, UXTW #2]
- tbnz w4, #0, G_M17197_IG14
+ tbnz w4, #0, G_M17197_IG13
orr w24, w24, #128
;; size=44 bbWeight=0.50 PerfScore 6.75
-G_M17197_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG13: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
orr w24, w24, w28
add w4, w1, #1
sxtw w28, w4
cmp w28, w23
- bge G_M17197_IG21
+ bge G_M17197_IG19
;; size=20 bbWeight=0.50 PerfScore 1.50
-G_M17197_IG15: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG14: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
orr w0, w28, w23
cmp w0, #0
ccmp w26, w23, nc, ge
- blt G_M17197_IG18
+ blt G_M17197_IG17
;; size=16 bbWeight=0.25 PerfScore 0.62
-G_M17197_IG16: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG15: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
ldrb w0, [x27, w28, UXTW #2]
ldrb w2, [x22, w0, UXTW #2]
- tbz w2, #1, G_M17197_IG21
+ tbz w2, #1, G_M17197_IG19
orr w24, w24, w0
add w28, w28, #1
cmp w28, w23
- blt G_M17197_IG16
+ blt G_M17197_IG15
;; size=28 bbWeight=3.96 PerfScore 37.62
-G_M17197_IG17: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M17197_IG16: ; bbWeight=1.98, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
- b G_M17197_IG21
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG18: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+ b G_M17197_IG19
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M17197_IG17: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
; byrRegs +[x27]
cmp w28, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
ldrb w0, [x27, w28, UXTW #2]
ldrb w2, [x22, w0, UXTW #2]
- tbz w2, #1, G_M17197_IG21
+ tbz w2, #1, G_M17197_IG19
orr w24, w24, w0
add w28, w28, #1
cmp w28, w23
- blt G_M17197_IG18
- ;; size=36 bbWeight=0.04 PerfScore 0.44
-G_M17197_IG19: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ blt G_M17197_IG17
+ b G_M17197_IG19
+ ;; size=40 bbWeight=0.04 PerfScore 0.48
+G_M17197_IG18: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
- b G_M17197_IG21
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG20: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
orr w24, w24, #128
mov w28, w4
;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG21: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M17197_IG19: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
sub w0, w28, w1
mov w2, #1
str w2, [x19, #0x10]
stp w1, w0, [x19, #0x18]
cmp w24, #128
- blt G_M17197_IG24
+ blt G_M17197_IG22
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.PrefixHandle:GetString():System.String:this
@@ -257,9 +255,9 @@ G_M17197_IG21: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M17197_IG23
+ b G_M17197_IG21
;; size=80 bbWeight=0.50 PerfScore 9.00
-G_M17197_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M17197_IG20: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
str wzr, [x21, #0x10]
sub w0, w22, w25
@@ -268,9 +266,9 @@ G_M17197_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
stp w25, w0, [x19, #0x18]
cmp w24, #128
mov w28, w22
- blt G_M17197_IG24
+ blt G_M17197_IG22
;; size=32 bbWeight=0.50 PerfScore 3.00
-G_M17197_IG23: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M17197_IG21: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
mov x0, x19
; gcrRegs +[x0]
@@ -292,7 +290,7 @@ G_M17197_IG23: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=52 bbWeight=0.50 PerfScore 6.25
-G_M17197_IG24: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M17197_IG22: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
sub w1, w28, w25
@@ -300,7 +298,7 @@ G_M17197_IG24: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
add w1, w1, w2
str w1, [x0, #0x50]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M17197_IG25: ; bbWeight=1, epilog, nogc, extend
+G_M17197_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -309,14 +307,14 @@ G_M17197_IG25: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M17197_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17197_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
...
+12 (+1.84%) : 3818.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 25 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 34,131.50) byref -> x19 this single-def
-; V01 arg1 [V01,T12] ( 8, 5 ) byref -> x21 single-def
-; V02 arg2 [V02,T09] ( 9, 13 ) byref -> x20 single-def
-; V03 arg3 [V03,T13] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
-; V04 loc0 [V04,T11] ( 3, 12 ) int -> x2
-; V05 loc1 [V05,T17] ( 3, 1.50) int -> x3
-; V06 loc2 [V06,T04] ( 9, 37.50) int -> x23
-; V07 loc3 [V07,T20] ( 2, 1 ) int -> x23
-; V08 loc4 [V08,T21] ( 2, 1 ) ushort -> x24
-; V09 loc5 [V09 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
-; V10 loc6 [V10 ] ( 2, 1 ) int -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
+; V00 this [V00,T00] ( 34, 56.50) byref -> x19 this single-def
+; V01 arg1 [V01,T10] ( 8, 5 ) byref -> x21 single-def
+; V02 arg2 [V02,T05] ( 9, 13 ) byref -> x20 single-def
+; V03 arg3 [V03,T11] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
+; V04 loc0 [V04,T07] ( 3, 12 ) int -> x2
+; V05 loc1 [V05,T17] ( 3, 1.75) int -> x3
+; V06 loc2 [V06,T01] ( 9, 25.50) int -> x24
+; V07 loc3 [V07,T21] ( 2, 1 ) int -> x23
+; V08 loc4 [V08,T22] ( 2, 1 ) ushort -> x24
+; V09 loc5 [V09 ] ( 2, 1 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
+; V10 loc6 [V10 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V13 tmp2 [V13,T03] ( 3, 96 ) int -> x0 "Span.get_Item index"
-; V14 tmp3 [V14,T02] ( 3, 96 ) byref -> x1 "Span.get_Item ptrToSpan"
-; V15 tmp4 [V15,T08] ( 3, 24 ) int -> x2 "Span.get_Item index"
-; V16 tmp5 [V16,T07] ( 3, 24 ) byref -> x0 "Span.get_Item ptrToSpan"
-; V17 tmp6 [V17,T16] ( 3, 3 ) int -> x2 "Span.get_Item index"
-; V18 tmp7 [V18,T15] ( 3, 3 ) byref -> x3 "Span.get_Item ptrToSpan"
+; V13 tmp2 [V13,T08] ( 3, 12 ) int -> x0 "Span.get_Item index"
+; V14 tmp3 [V14,T06] ( 3, 12 ) byref -> x25 "Span.get_Item ptrToSpan"
+; V15 tmp4 [V15,T03] ( 3, 24 ) int -> x2 "Span.get_Item index"
+; V16 tmp5 [V16,T02] ( 3, 24 ) byref -> x0 "Span.get_Item ptrToSpan"
+; V17 tmp6 [V17,T15] ( 3, 3 ) int -> x2 "Span.get_Item index"
+; V18 tmp7 [V18,T14] ( 3, 3 ) byref -> x3 "Span.get_Item ptrToSpan"
;* V19 tmp8 [V19 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V20 tmp9 [V20,T14] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
-; V21 tmp10 [V21,T06] ( 4, 24 ) ushort -> x0 "Inlining Arg"
+; V20 tmp9 [V20,T23] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
+; V21 tmp10 [V21,T12] ( 4, 4 ) ushort -> x0 "Inlining Arg"
;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V23 tmp12 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -37,8 +37,8 @@
;* V26 tmp15 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp16 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V29 tmp18 [V29,T05] ( 2, 32 ) ubyte -> x0 "Inline return value spill temp"
-; V30 tmp19 [V30,T01] ( 4,128 ) ushort -> x0 "Inlining Arg"
+; V29 tmp18 [V29,T13] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V30 tmp19 [V30,T04] ( 4, 16 ) ushort -> x0 "Inlining Arg"
;* V31 tmp20 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V32 tmp21 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V33 tmp22 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -70,17 +70,20 @@
;* V59 tmp48 [V59 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V61 tmp50 [V61 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
-; V62 cse0 [V62,T18] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V63 cse1 [V63,T10] ( 4, 12.50) int -> x0 "CSE - moderate"
-; V64 cse2 [V64,T19] ( 3, 1.50) int -> x2 "CSE - moderate"
+; V62 cse0 [V62,T16] ( 3, 2 ) int -> x2 "CSE - moderate"
+; V63 cse1 [V63,T18] ( 3, 1.50) int -> x23 "CSE - moderate"
+; V64 cse2 [V64,T19] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V65 cse3 [V65,T20] ( 3, 1.50) int -> x2 "CSE - moderate"
+; V66 cse4 [V66,T09] ( 6, 9.25) byref -> x25 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x28]
+ stp x21, x22, [sp, #0x38]
+ stp x23, x24, [sp, #0x48]
+ str x25, [sp, #0x58]
mov fp, sp
mov x19, x0
; byrRegs +[x19]
@@ -90,107 +93,108 @@ G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x20]
mov x22, x3
; gcrRegs +[x22]
- ;; size=36 bbWeight=1 PerfScore 6.50
+ ;; size=40 bbWeight=1 PerfScore 7.50
G_M44776_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
str wzr, [x20]
ldr w0, [x19, #0x08]
ldr w1, [x19, #0x18]
cmp w0, w1
- bge G_M44776_IG12
+ bge G_M44776_IG10
;; size=20 bbWeight=1 PerfScore 8.50
-G_M44776_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG03: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldrh w0, [x19, #0x0C]
- sub w1, w0, #48
- cmp w1, #9
- bls G_M44776_IG13
+ sub w23, w0, #48
+ cmp w23, #9
+ bls G_M44776_IG11
cmp w0, #0xD1FFAB1E
- blo G_M44776_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
-G_M44776_IG04: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ blo G_M44776_IG05
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M44776_IG11
- ;; size=24 bbWeight=2 PerfScore 13.00
-G_M44776_IG05: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ cbnz w0, G_M44776_IG09
+ ;; size=48 bbWeight=0.50 PerfScore 6.50
+G_M44776_IG04: ; bbWeight=0.25, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
b G_M44776_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M44776_IG06: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ ;; size=4 bbWeight=0.25 PerfScore 0.25
+G_M44776_IG05: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M44776_IG11
- ;; size=20 bbWeight=2 PerfScore 11.00
-G_M44776_IG07: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ tbnz w0, #7, G_M44776_IG09
b G_M44776_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M44776_IG08: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M44776_IG06: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldr w0, [x19, #0x08]
- add x1, x19, #16
- ; byrRegs +[x1]
- ldr w2, [x1, #0x08]
- cmp w0, w2
+ add x25, x19, #16
+ ; byrRegs +[x25]
+ ldr w1, [x25, #0x08]
+ cmp w0, w1
bhs G_M44776_IG22
- ldr x1, [x1]
+ ldr x1, [x25]
+ ; byrRegs +[x1]
ldrh w0, [x1, w0, UXTW #2]
strh w0, [x19, #0x0C]
ldrh w0, [x19, #0x0C]
cmp w0, #0xD1FFAB1E
- blo G_M44776_IG10
+ blo G_M44776_IG08
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; byrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; byrRegs -[x25]
; gcr arg pop 0
cbz w0, G_M44776_IG03
- ;; size=68 bbWeight=16 PerfScore 416.00
-G_M44776_IG09: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
- b G_M44776_IG11
+ ;; size=68 bbWeight=2 PerfScore 52.00
+G_M44776_IG07: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ b G_M44776_IG09
;; size=4 bbWeight=4 PerfScore 4.00
-G_M44776_IG10: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG08: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
tbz w0, #7, G_M44776_IG03
- ;; size=20 bbWeight=16 PerfScore 88.00
-G_M44776_IG11: ; bbWeight=8, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ ;; size=20 bbWeight=2 PerfScore 11.00
+G_M44776_IG09: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldr w0, [x19, #0x08]
- add w23, w0, #1
- str w23, [x19, #0x08]
+ add w24, w0, #1
+ str w24, [x19, #0x08]
ldr w0, [x19, #0x18]
- cmp w23, w0
- blt G_M44776_IG08
- ;; size=24 bbWeight=8 PerfScore 72.00
-G_M44776_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ cmp w24, w0
+ blt G_M44776_IG06
+ ;; size=24 bbWeight=4 PerfScore 36.00
+G_M44776_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x22]
; byrRegs -[x19-x20]
mov w2, #6
str w2, [x21]
b G_M44776_IG21
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M44776_IG13: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG11: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
; gcrRegs +[x22]
; byrRegs +[x19-x20]
- sub w2, w0, #48
- str w2, [x20]
+ str w23, [x20]
ldr w2, [x19, #0x08]
sxtw w3, w2
- add w23, w2, #1
- str w23, [x19, #0x08]
+ add w24, w2, #1
+ str w24, [x19, #0x08]
ldr w2, [x19, #0x18]
- cmp w23, w2
- bge G_M44776_IG15
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M44776_IG14: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ cmp w24, w2
+ bge G_M44776_IG14
+ ;; size=32 bbWeight=0.50 PerfScore 5.25
+G_M44776_IG12: ; bbWeight=0.25, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ add x25, x19, #16
+ ; byrRegs +[x25]
+ ;; size=4 bbWeight=0.25 PerfScore 0.12
+G_M44776_IG13: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=2380000 {x19 x20 x21 x25}, byref, isz
ldr w2, [x19, #0x08]
- add x0, x19, #16
+ mov x0, x25
; byrRegs +[x0]
ldr w4, [x0, #0x08]
cmp w2, w4
@@ -201,30 +205,33 @@ G_M44776_IG14: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x1
ldrh w2, [x19, #0x0C]
sub w2, w2, #48
cmp w2, #9
- bhi G_M44776_IG15
+ bhi G_M44776_IG14
...
benchmarks.run_pgo.linux.arm64.checked.mch
-16 (-15.38%) : 95314.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
@@ -10,11 +10,11 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Lowering.InstructionReplacement>
-; V01 loc0 [V01,T02] ( 4,100.25) int -> x1
-; V02 loc1 [V02,T01] ( 7,299.99) int -> registers
+; V01 loc0 [V01,T02] ( 4,100.26) int -> x1
+; V02 loc1 [V02,T01] ( 5,299.99) int -> registers
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 9,600.00) int -> x0 "impSpillLclRefs"
-; V05 cse0 [V05,T03] ( 4,100.01) int -> x3 "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 6,600.00) int -> x0 "impSpillLclRefs"
+; V05 cse0 [V05,T03] ( 3,100.01) int -> x3 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,40 +28,34 @@ G_M4100_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
movz w3, #0xD1FFAB1E
movk w3, #152 LSL #16
cmp w0, w3
- bge G_M4100_IG07
+ bge G_M4100_IG05
;; size=20 bbWeight=0.01 PerfScore 0.03
G_M4100_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov w0, #1
lsl w0, w0, w1
tst w2, w0
- beq G_M4100_IG06
+ beq G_M4100_IG07
;; size=16 bbWeight=99.99 PerfScore 249.98
-G_M4100_IG04: ; bbWeight=99.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sxtw w0, w2
- add w2, w0, #1
- cmp w0, w3
- bge G_M4100_IG07
- ;; size=16 bbWeight=99.86 PerfScore 249.65
-G_M4100_IG05: ; bbWeight=99.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M4100_IG03
- ;; size=4 bbWeight=99.92 PerfScore 99.92
-G_M4100_IG06: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add w1, w1, #1
+G_M4100_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sxtw w0, w2
add w2, w0, #1
cmp w0, w3
blt G_M4100_IG03
- ;; size=20 bbWeight=0.13 PerfScore 0.39
-G_M4100_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=99.99 PerfScore 249.98
+G_M4100_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M4100_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=0.01 PerfScore 0.00
+G_M4100_IG06: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #48
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0.01 PerfScore 0.02
+G_M4100_IG07: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ add w1, w1, #1
+ b G_M4100_IG04
+ ;; size=8 bbWeight=0.13 PerfScore 0.19
-; Total bytes of code 104, prolog size 12, PerfScore 600.00, instruction count 26, allocated bytes for code 104 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
+; Total bytes of code 88, prolog size 12, PerfScore 500.24, instruction count 22, allocated bytes for code 88 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -72,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-40 (-14.49%) : 90002.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)
@@ -11,16 +11,16 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> x20
+; V01 loc0 [V01,T02] ( 5,199.99) ubyte -> x20
; V02 loc1 [V02,T06] ( 4,101.00) ref -> x21 class-hnd <<unknown class>>
; V03 loc2 [V03,T09] ( 3, 0.02) ref -> x2 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> x19
+; V04 loc3 [V04,T00] ( 11,400.98) int -> x19
; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [fp+0x60] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> x2 "Inline return value spill temp"
+; V07 tmp1 [V07,T03] ( 6,199.98) ubyte -> x2 "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 4,399.96) ref -> x1 class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T04] ( 4,199.98) byref -> x0 "Inline stloc first use temp"
-; V10 cse0 [V10,T05] ( 7,101.01) int -> x22 "CSE - aggressive"
+; V10 cse0 [V10,T05] ( 5,101.01) int -> x22 "CSE - aggressive"
; V11 cse1 [V11,T07] ( 4,100.00) byref -> x23 hoist multi-def "CSE - aggressive"
;
; Lcl frame size = 8
@@ -42,7 +42,7 @@ G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000
ble G_M16914_IG11
;; size=12 bbWeight=0.01 PerfScore 0.04
G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref, isz
- tbnz w19, #31, G_M16914_IG06
+ tbnz w19, #31, G_M16914_IG08
;; size=4 bbWeight=0.01 PerfScore 0.01
G_M16914_IG04: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref
add x23, x2, #16
@@ -62,26 +62,31 @@ G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbnz x0, G_M16914_IG09
+ cbnz x0, G_M16914_IG14
mov w2, wzr
- eor w0, w20, w2
+ ;; size=36 bbWeight=98.99 PerfScore 1039.40
+G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0]
+ eor w0, w20, w2
uxtb w20, w0
add w19, w19, #1
cmp w22, w19
- ble G_M16914_IG11
- b G_M16914_IG05
- ;; size=60 bbWeight=98.99 PerfScore 1435.36
-G_M16914_IG06: ; bbWeight=0.00, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x2]
+ bgt G_M16914_IG05
+ ;; size=20 bbWeight=98.99 PerfScore 296.97
+G_M16914_IG07: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x21]
; byrRegs -[x23]
+ b G_M16914_IG11
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M16914_IG08: ; bbWeight=0.00, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x2 x21]
add x23, x2, #16
; byrRegs +[x23]
;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
+G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
; gcrRegs -[x2]
cmp w19, w22
- bhs G_M16914_IG08
+ bhs G_M16914_IG13
ldr x1, [x23, w19, UXTW #3]
; gcrRegs +[x1]
ldrsb wzr, [x21]
@@ -94,54 +99,45 @@ G_M16914_IG07: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbnz x0, G_M16914_IG10
+ cbnz x0, G_M16914_IG15
mov w2, wzr
- eor w2, w20, w2
- uxtb w20, w2
- add w19, w19, #1
- cmp w22, w19
- ble G_M16914_IG11
- b G_M16914_IG07
- ;; size=72 bbWeight=1.00 PerfScore 19.00
-G_M16914_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x21]
- ; byrRegs -[x0 x23]
- bl CORINFO_HELP_RNGCHKFAIL
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M16914_IG09: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs +[x21]
- ; byrRegs +[x23]
- mov w2, #1
- eor w2, w20, w2
- uxtb w20, w2
- add w19, w19, #1
- cmp w22, w19
- bgt G_M16914_IG05
- b G_M16914_IG11
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M16914_IG10: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
- mov w2, #1
+ ;; size=48 bbWeight=1.00 PerfScore 15.00
+G_M16914_IG10: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz
+ ; byrRegs -[x0]
eor w0, w20, w2
uxtb w20, w0
add w19, w19, #1
cmp w22, w19
- bgt G_M16914_IG07
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M16914_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bgt G_M16914_IG09
+ ;; size=20 bbWeight=1.00 PerfScore 3.00
+G_M16914_IG11: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
; byrRegs -[x23]
mov w0, w20
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M16914_IG12: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=0.01 PerfScore 0.00
+G_M16914_IG12: ; bbWeight=0.01, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
add sp, sp, #80
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0.01 PerfScore 0.06
+G_M16914_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M16914_IG14: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref
+ ; gcrRegs +[x21]
+ ; byrRegs +[x23]
+ mov w2, #1
+ b G_M16914_IG06
+ ;; size=8 bbWeight=0 PerfScore 0.00
+G_M16914_IG15: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref
+ mov w2, #1
+ b G_M16914_IG10
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 276, prolog size 20, PerfScore 1454.56, instruction count 69, allocated bytes for code 276 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 236, prolog size 20, PerfScore 1354.64, instruction count 59, allocated bytes for code 236 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -152,7 +148,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-8.33%) : 51209.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet1[System.String],System.ReadOnlySpan
1[System.String],int):ubyte (Tier1-OSR)
@@ -14,7 +14,7 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[System.String]>
; V02 arg2 [V02,T05] ( 5, 2 ) int -> x20
; V03 loc0 [V03,T06] ( 3, 3 ) struct (16) [fp+0x70] do-not-enreg[SF] ld-addr-op tier0-frame <System.ReadOnlySpan`1[System.String]>
-; V04 loc1 [V04,T00] ( 9,499.96) int -> [fp+0x6C] tier0-frame
+; V04 loc1 [V04,T00] ( 6,499.96) int -> [fp+0x6C] tier0-frame
; V05 loc2 [V05,T03] ( 2,199.98) ref -> x1 class-hnd <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T09] ( 2, 0 ) int -> x20 "dup spill"
@@ -22,11 +22,11 @@
; V09 tmp3 [V09,T07] ( 1, 1 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V10 tmp4 [V10,T08] ( 1, 1 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V11 tmp5 [V11,T04] ( 2,100.99) byref -> x21 single-def "V03.[000..008)"
-; V12 tmp6 [V12,T02] ( 5,200.99) int -> x22 "V03.[008..012)"
+; V12 tmp6 [V12,T02] ( 4,200.99) int -> x22 "V03.[008..012)"
;
; Lcl frame size = 8
-G_M49737_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M49737_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
@@ -42,11 +42,11 @@ G_M49737_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr w22, [fp, #0x78] // [V03 loc0+0x08]
ldr w23, [fp, #0x6C] // [V04 loc1]
cmp w23, w22
- bge G_M49737_IG07
+ bge G_M49737_IG05
;; size=20 bbWeight=1 PerfScore 7.50
G_M49737_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w22
- bhs G_M49737_IG05
+ bhs G_M49737_IG07
ldr x1, [x21, w23, UXTW #3]
; gcrRegs +[x1]
ldrsb wzr, [x19]
@@ -59,45 +59,37 @@ G_M49737_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- cbz w0, G_M49737_IG06
- add w23, w23, #1
- cmp w23, w22
- bge G_M49737_IG07
- ;; size=60 bbWeight=99.99 PerfScore 1699.83
-G_M49737_IG04: ; bbWeight=0.00, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
- b G_M49737_IG03
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M49737_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x21]
- bl CORINFO_HELP_RNGCHKFAIL
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs +[x19]
- ; byrRegs +[x21]
- sub w20, w20, #1
- tbnz w20, #31, G_M49737_IG09
+ cbz w0, G_M49737_IG08
+ ;; size=48 bbWeight=99.99 PerfScore 1499.85
+G_M49737_IG04: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
add w23, w23, #1
cmp w23, w22
blt G_M49737_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M49737_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=99.99 PerfScore 199.98
+G_M49737_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x21]
mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=0.01 PerfScore 0.00
+G_M49737_IG06: ; bbWeight=0.01, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
add sp, sp, #96
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M49737_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, wzr
+ ;; size=24 bbWeight=0.01 PerfScore 0.06
+G_M49737_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M49737_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+ ; gcrRegs +[x19]
+ ; byrRegs +[x21]
+ sub w20, w20, #1
+ tbz w20, #31, G_M49737_IG04
+ mov w0, wzr
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M49737_IG09: ; bbWeight=0, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -106,7 +98,7 @@ G_M49737_IG10: ; bbWeight=0, epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 20, PerfScore 1715.84, instruction count 48, allocated bytes for code 192 (MethodHash=abf53db6) for method System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 1715.90, instruction count 44, allocated bytes for code 176 (MethodHash=abf53db6) for method System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -117,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+4.08%) : 54918.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
@@ -6,7 +6,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 191.82
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 191.82
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 6,302 ) byref -> x0 single-def
@@ -47,7 +47,7 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; gcrRegs +[x5]
ldr w6, [x5, #0x08]
cmp w1, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x5, x5, #16
; gcrRegs -[x5]
; byrRegs +[x5]
@@ -55,7 +55,7 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; gcrRegs +[x7]
ldr w8, [x7, #0x08]
cmp w2, w8
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x7, x7, #16
; gcrRegs -[x7]
; byrRegs +[x7]
@@ -63,13 +63,13 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; byrRegs -[x7]
add w8, w1, #1
cmp w8, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
ldr x5, [x5, w8, UXTW #3]
; gcrRegs +[x5]
; byrRegs -[x5]
ldr w6, [x5, #0x08]
cmp w3, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x5, x5, #16
; gcrRegs -[x5]
; byrRegs +[x5]
@@ -87,32 +87,38 @@ G_M3693_IG05: ; bbWeight=3.99, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, by
cmp w2, #50
ble G_M3693_IG03
;; size=12 bbWeight=3.99 PerfScore 7.99
-G_M3693_IG06: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- add w3, w3, #1
- cmp w3, #50
- bgt G_M3693_IG08
+G_M3693_IG06: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ b G_M3693_IG08
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+G_M3693_IG07: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
mov w2, #1
b G_M3693_IG03
- ;; size=20 bbWeight=0.08 PerfScore 0.27
-G_M3693_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.08 PerfScore 0.12
+G_M3693_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ add w3, w3, #1
+ cmp w3, #50
+ bgt G_M3693_IG10
+ b G_M3693_IG07
+ ;; size=16 bbWeight=0.08 PerfScore 0.23
+G_M3693_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3693_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M3693_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
ldr w0, [x0, #0x08]
; byrRegs -[x0]
cmp w0, #1
cset x0, eq
;; size=12 bbWeight=0 PerfScore 0.00
-G_M3693_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M3693_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #48
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 20, PerfScore 3918.76, instruction count 49, allocated bytes for code 196 (MethodHash=1e6cf192) for method Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
+; Total bytes of code 204, prolog size 20, PerfScore 3918.91, instruction count 51, allocated bytes for code 204 (MethodHash=1e6cf192) for method Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -123,7 +129,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ 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)
+8 (+4.08%) : 54903.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
@@ -6,7 +6,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 90.67
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 90.67
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 6,302 ) byref -> x0 single-def
@@ -47,7 +47,7 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; gcrRegs +[x5]
ldr w6, [x5, #0x08]
cmp w1, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x5, x5, #16
; gcrRegs -[x5]
; byrRegs +[x5]
@@ -55,7 +55,7 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; gcrRegs +[x7]
ldr w8, [x7, #0x08]
cmp w2, w8
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x7, x7, #16
; gcrRegs -[x7]
; byrRegs +[x7]
@@ -63,13 +63,13 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; byrRegs -[x7]
add w8, w1, #1
cmp w8, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
ldr x5, [x5, w8, UXTW #3]
; gcrRegs +[x5]
; byrRegs -[x5]
ldr w6, [x5, #0x08]
cmp w3, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x5, x5, #16
; gcrRegs -[x5]
; byrRegs +[x5]
@@ -87,32 +87,38 @@ G_M3693_IG05: ; bbWeight=3.98, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, by
cmp w2, #50
ble G_M3693_IG03
;; size=12 bbWeight=3.98 PerfScore 7.96
-G_M3693_IG06: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- add w3, w3, #1
- cmp w3, #50
- bgt G_M3693_IG08
+G_M3693_IG06: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ b G_M3693_IG08
+ ;; size=4 bbWeight=0.09 PerfScore 0.09
+G_M3693_IG07: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
mov w2, #1
b G_M3693_IG03
- ;; size=20 bbWeight=0.09 PerfScore 0.31
-G_M3693_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.09 PerfScore 0.13
+G_M3693_IG08: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ add w3, w3, #1
+ cmp w3, #50
+ bgt G_M3693_IG10
+ b G_M3693_IG07
+ ;; size=16 bbWeight=0.09 PerfScore 0.26
+G_M3693_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3693_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M3693_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
ldr w0, [x0, #0x08]
; byrRegs -[x0]
cmp w0, #1
cset x0, eq
;; size=12 bbWeight=0 PerfScore 0.00
-G_M3693_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M3693_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #48
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 20, PerfScore 3918.76, instruction count 49, allocated bytes for code 196 (MethodHash=1e6cf192) for method Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
+; Total bytes of code 204, prolog size 20, PerfScore 3918.94, instruction count 51, allocated bytes for code 204 (MethodHash=1e6cf192) for method Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -123,7 +129,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ 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)
+36 (+5.00%) : 93049.dasm - Benchstone.BenchF.Regula:Test():ubyte:this (Tier1-OSR)
@@ -11,157 +11,58 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Benchstone.BenchF.Regula>
-; V01 loc0 [V01,T15] ( 3, 98.90) double -> d9
-; V02 loc1 [V02,T16] ( 3, 98.90) double -> d10
-; V03 loc2 [V03,T09] ( 9,2015.66) double -> d16 ld-addr-op
-; V04 loc3 [V04,T10] ( 8,1810.39) double -> d17 ld-addr-op
-; V05 loc4 [V05,T13] ( 6, 395.60) double -> d8
+; V01 loc0 [V01,T19] ( 3, 98.91) double -> d9
+; V02 loc1 [V02,T20] ( 3, 98.91) double -> d10
+; V03 loc2 [V03,T13] ( 9,2015.66) double -> d11 ld-addr-op
+; V04 loc3 [V04,T14] ( 8,1810.39) double -> d12 ld-addr-op
+; V05 loc4 [V05,T17] ( 6, 395.61) double -> d8
; V06 loc5 [V06,T04] ( 1, 98.90) int -> x21
-; V07 loc6 [V07,T02] ( 6, 201.40) int -> x20 ld-addr-op
+; V07 loc6 [V07,T02] ( 6, 201.41) int -> x20 ld-addr-op
; V08 loc7 [V08,T01] ( 4, 299.98) int -> x19
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T17] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V11 tmp2 [V11,T18] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V12 tmp3 [V12,T19] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V13 tmp4 [V13,T20] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V14 tmp5 [V14,T21] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V15 tmp6 [V15,T22] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V16 tmp7 [V16,T23] ( 3, 0 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V17 tmp8 [V17,T08] ( 7,2122.86) double -> d18 "Inline stloc first use temp"
-;* V18 tmp9 [V18,T14] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp"
-; V19 tmp10 [V19,T07] ( 7,2306.42) double -> d19 "Inline stloc first use temp"
-; V20 tmp11 [V20,T05] ( 8,3129.33) double -> d20 "Inline stloc first use temp"
-; V21 tmp12 [V21,T06] ( 7,3129.33) double -> d21 "Inline stloc first use temp"
-; V22 tmp13 [V22,T00] ( 4,2217.56) int -> x0 "Inline stloc first use temp"
-; V23 tmp14 [V23,T11] ( 4,1211.73) double -> d23 "Inline stloc first use temp"
+; V10 tmp1 [V10,T21] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V11 tmp2 [V11,T22] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V12 tmp3 [V12,T23] ( 3, 0 ) ref -> x0 class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V13 tmp4 [V13,T05] ( 3, 0.06) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V14 tmp5 [V14,T06] ( 3, 0.06) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V15 tmp6 [V15,T07] ( 3, 0.06) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V16 tmp7 [V16,T08] ( 3, 0.06) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V17 tmp8 [V17,T12] ( 7,2122.86) double -> d13 "Inline stloc first use temp"
+;* V18 tmp9 [V18,T18] ( 0, 0 ) double -> zero-ref "Inline stloc first use temp"
+; V19 tmp10 [V19,T11] ( 7,2306.42) double -> d14 "Inline stloc first use temp"
+; V20 tmp11 [V20,T09] ( 8,3129.33) double -> d15 "Inline stloc first use temp"
+; V21 tmp12 [V21,T10] ( 7,3129.33) double -> d16 "Inline stloc first use temp"
+; V22 tmp13 [V22,T00] ( 4,2217.56) int -> x23 "Inline stloc first use temp"
+; V23 tmp14 [V23,T15] ( 4,1211.73) double -> d18 "Inline stloc first use temp"
;* V24 tmp15 [V24 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
;* V25 tmp16 [V25 ] ( 0, 0 ) double -> zero-ref "Inlining Arg"
; V26 cse0 [V26,T03] ( 3, 100.01) int -> x22 "CSE - aggressive"
-; V27 cse1 [V27,T12] ( 2, 805.43) double -> d22 hoist "CSE - aggressive"
+; V27 cse1 [V27,T16] ( 2, 805.43) double -> d17 hoist "CSE - aggressive"
;
; Lcl frame size = 8
G_M38627_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x80]!
stp d8, d9, [sp, #0x18]
- str d10, [sp, #0x28]
- stp x19, x20, [sp, #0x30]
- stp x21, x22, [sp, #0x40]
+ stp d10, d11, [sp, #0x28]
+ stp d12, d13, [sp, #0x38]
+ stp d14, d15, [sp, #0x48]
+ stp x19, x20, [sp, #0x58]
+ stp x21, x22, [sp, #0x68]
+ str x23, [sp, #0x78]
mov fp, sp
- ldp d10, d9, [fp, #0xA8]
- ldr d8, [fp, #0x90]
- ldr w21, [fp, #0x8C]
- ldp w19, w20, [fp, #0x7C]
- ;; size=40 bbWeight=0.01 PerfScore 0.14
+ ldp d10, d9, [fp, #0xD8]
+ ldr d8, [fp, #0xC0]
+ ldr w21, [fp, #0xBC]
+ ldp w19, w20, [fp, #0xAC]
+ ;; size=52 bbWeight=0.01 PerfScore 0.17
G_M38627_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movz w22, #0xD1FFAB1E
movk w22, #61 LSL #16
cmp w19, w22
- bgt G_M38627_IG17
+ ble G_M38627_IG14
;; size=16 bbWeight=0.01 PerfScore 0.02
-G_M38627_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fmov d16, #1.0000
- fmov d17, #2.0000
- mov w20, wzr
- fmov d18, #-1.0000
- fmov d19, #5.0000
- fmov d20, #1.0000
- fmov d21, #-1.0000
- mov w0, #1
- ldr d22, [@RWD00]
- ;; size=36 bbWeight=99.99 PerfScore 599.94
-G_M38627_IG04: ; bbWeight=705.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fsub d23, d17, d16
- fabs d23, d23
- fmov d24, #0.5000
- fmul d23, d23, d24
- fcmp d23, d22
- bls G_M38627_IG14
- ;; size=24 bbWeight=705.44 PerfScore 7407.08
-G_M38627_IG05: ; bbWeight=605.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fabs d23, d21
- ldr d24, [@RWD08]
- fcmp d23, d24
- ble G_M38627_IG20
- fmul d20, d18, d17
- fmul d23, d19, d16
- fsub d20, d20, d23
- fsub d23, d18, d19
- fdiv d20, d20, d23
- fcmp d21, #0.0
- bhs G_M38627_IG10
- ;; size=44 bbWeight=605.87 PerfScore 21205.35
-G_M38627_IG06: ; bbWeight=505.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- fmov d23, #-1.0000
- ;; size=4 bbWeight=505.38 PerfScore 252.69
-G_M38627_IG07: ; bbWeight=605.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fmul d21, d20, d20
- fmov d24, #1.0000
- fsub d21, d24, d21
- fmul d21, d21, d20
- fmov d24, #-1.0000
- fsub d21, d24, d21
- fmul d24, d21, d24
- fcmp d24, #0.0
- blo G_M38627_IG11
- ;; size=36 bbWeight=605.87 PerfScore 11511.47
-G_M38627_IG08: ; bbWeight=405.57, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fmov d16, d20
- fmov d18, d21
- fmul d23, d18, d23
- fcmp d23, #0.0
- ble G_M38627_IG12
- ;; size=20 bbWeight=405.57 PerfScore 2838.97
-G_M38627_IG09: ; bbWeight=297.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- fmov d23, #0.5000
- fmul d19, d19, d23
- b G_M38627_IG12
- ;; size=12 bbWeight=297.05 PerfScore 1336.71
-G_M38627_IG10: ; bbWeight=100.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- fmov d23, #1.0000
- b G_M38627_IG07
- ;; size=8 bbWeight=100.49 PerfScore 150.74
-G_M38627_IG11: ; bbWeight=200.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fmov d17, d20
- fmov d19, d21
- fmul d23, d19, d23
- fcmp d23, #0.0
- bgt G_M38627_IG19
- ;; size=20 bbWeight=200.30 PerfScore 1402.10
-G_M38627_IG12: ; bbWeight=705.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add w0, w0, #1
- cmp w0, #30
- ble G_M38627_IG04
- ;; size=12 bbWeight=705.86 PerfScore 1411.71
-G_M38627_IG13: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov w20, #2
- b G_M38627_IG15
- ;; size=8 bbWeight=0.42 PerfScore 0.63
-G_M38627_IG14: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w20, #2
- bgt G_M38627_IG16
- ;; size=8 bbWeight=99.99 PerfScore 149.99
-G_M38627_IG15: ; bbWeight=98.90, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- fadd d18, d16, d17
- fmov d19, #0.5000
- fmul d8, d18, d19
- fsub d16, d17, d16
- fabs d17, d16
- fmul d9, d17, d19
- fmul d21, d8, d8
- fmov d22, #1.0000
- fsub d20, d22, d21
- fmul d16, d20, d8
- fmov d17, #-1.0000
- fsub d10, d17, d16
- cbnz w21, G_M38627_IG21
- ;; size=52 bbWeight=98.90 PerfScore 2818.63
-G_M38627_IG16: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add w19, w19, #1
- cmp w19, w22
- ble G_M38627_IG03
- ;; size=12 bbWeight=99.99 PerfScore 199.98
-G_M38627_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38627_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -216,28 +117,138 @@ G_M38627_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
; gcr arg pop 0
mov w0, #1
- ;; size=152 bbWeight=0 PerfScore 0.00
-G_M38627_IG18: ; bbWeight=0, epilog, nogc, extend
- ldp x21, x22, [sp, #0x40]
- ldp x19, x20, [sp, #0x30]
- ldr d10, [sp, #0x28]
+ ;; size=152 bbWeight=0.01 PerfScore 0.35
+G_M38627_IG04: ; bbWeight=0.01, epilog, nogc, extend
+ ldr x23, [sp, #0x78]
+ ldp x21, x22, [sp, #0x68]
+ ldp x19, x20, [sp, #0x58]
+ ldp d14, d15, [sp, #0x48]
+ ldp d12, d13, [sp, #0x38]
+ ldp d10, d11, [sp, #0x28]
ldp d8, d9, [sp, #0x18]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x80
add sp, sp, #112
ret lr
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M38627_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- fmov d23, #0.5000
- fmul d18, d18, d23
- b G_M38627_IG12
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=40 bbWeight=0.01 PerfScore 0.10
+G_M38627_IG05: ; bbWeight=705.86, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ add w23, w23, #1
+ cmp w23, #30
+ bgt G_M38627_IG13
+ ;; size=12 bbWeight=705.86 PerfScore 1411.71
+G_M38627_IG06: ; bbWeight=705.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ fsub d18, d12, d11
+ fabs d18, d18
+ fmov d19, #0.5000
+ fmul d18, d18, d19
+ fcmp d18, d17
+ bls G_M38627_IG16
+ ;; size=24 bbWeight=705.44 PerfScore 7407.08
+G_M38627_IG07: ; bbWeight=605.87, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ fabs d18, d16
+ ldr d19, [@RWD00]
+ fcmp d18, d19
+ ble G_M38627_IG21
+ fmul d18, d13, d12
+ fmul d19, d14, d11
+ fsub d18, d18, d19
+ fsub d19, d13, d14
+ fdiv d15, d18, d19
+ fcmp d16, #0.0
+ bhs G_M38627_IG15
+ ;; size=44 bbWeight=605.87 PerfScore 21205.35
+G_M38627_IG08: ; bbWeight=505.38, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ fmov d18, #-1.0000
...
benchmarks.run_tiered.linux.arm64.checked.mch
-12 (-1.23%) : 25493.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 12, 7 ) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T04] ( 12, 11.44) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T14] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T12] ( 8, 7.02) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
-; V04 loc2 [V04,T21] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T23] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
; V05 loc3 [V05,T00] ( 11, 17.08) int -> x0
; V06 loc4 [V06,T02] ( 8, 16 ) ref -> x15 class-hnd <System.Type>
-; V07 loc5 [V07,T08] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
-; V08 loc6 [V08,T20] ( 6, 1.83) ref -> x1 class-hnd exact <System.Type[]>
+; V07 loc5 [V07,T09] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
+; V08 loc6 [V08,T18] ( 6, 3.31) ref -> x1 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x0
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,36 +25,36 @@
;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType>
; V16 tmp5 [V16,T26] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp7 [V18,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp7 [V18,T21] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V19 tmp8 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp10 [V21,T22] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
-; V22 tmp11 [V22 ] ( 4, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
-; V23 tmp12 [V23,T18] ( 2, 2 ) long -> x0 "impAppendStmt"
+; V21 tmp10 [V21,T16] ( 2, 3.96) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
+; V22 tmp11 [V22 ] ( 4, 7.92) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
+; V23 tmp12 [V23,T11] ( 2, 7.92) long -> x0 "impAppendStmt"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V27 tmp16 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T14] ( 3, 4 ) ref -> x0 "Single return block return value"
-; V31 FramesRoot [V31,T13] ( 6, 4 ) long -> x20 "Pinvoke FrameListRoot"
-; V32 PInvokeFrame [V32 ] ( 8, 6 ) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp19 [V30,T13] ( 3, 6.96) ref -> x0 "Single return block return value"
+; V31 FramesRoot [V31,T08] ( 6, 9.92) long -> x21 "Pinvoke FrameListRoot"
+; V32 PInvokeFrame [V32 ] ( 8, 11.92) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V33 tmp22 [V33 ] ( 0, 0 ) long -> zero-ref "field V24._ptr (fldOffset=0x0)" P-INDEP
-; V34 tmp23 [V34,T23] ( 2, 1 ) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp24 [V35,T19] ( 2, 2 ) long -> x1 "argument with side effect"
-; V36 tmp25 [V36,T15] ( 2, 2 ) ref -> x20 single-def "argument with side effect"
-; V37 tmp26 [V37,T16] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V34 tmp23 [V34,T17] ( 2, 3.96) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp24 [V35,T22] ( 2, 2 ) long -> x1 "argument with side effect"
+; V36 tmp25 [V36,T19] ( 2, 2 ) ref -> x21 single-def "argument with side effect"
+; V37 tmp26 [V37,T20] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V39 tmp28 [V39,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V40 tmp29 [V40,T28] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V41 PSPSym [V41,T24] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym"
-; V42 cse0 [V42,T04] ( 10, 12.50) int -> x21 "CSE - aggressive"
-; V43 cse1 [V43,T09] ( 6, 8.54) byref -> x22 hoist multi-def "CSE - aggressive"
-; V44 cse2 [V44,T12] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
-; V45 cse3 [V45,T05] ( 3, 11.88) long -> x14 "CSE - aggressive"
-; V46 cse4 [V46,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V42 cse0 [V42,T05] ( 10, 12.50) int -> x22 "CSE - aggressive"
+; V43 cse1 [V43,T10] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
+; V44 cse2 [V44,T15] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
+; V45 cse3 [V45,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V46 cse4 [V46,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
; Lcl frame size = 112
@@ -71,21 +71,23 @@ G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x2, [fp, #0x78] // [V41 PSPSym]
str x0, [fp, #0x68] // [V00 this]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=52 bbWeight=1 PerfScore 11.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
add x0, fp, #32 // [V32 PInvokeFrame+0x08]
mov x1, x12
bl CORINFO_HELP_INIT_PINVOKE_FRAME
- mov x20, x0
+ mov x21, x0
mov x1, sp
str x1, [fp, #0x40] // [V32 PInvokeFrame+0x28]
mov x1, fp
str x1, [fp, #0x50] // [V32 PInvokeFrame+0x38]
- cbz x19, G_M59170_IG21
- ldr w21, [x19, #0x08]
- mov w1, w21
+ cbz x20, G_M59170_IG21
+ ldr w22, [x20, #0x08]
+ mov w1, w22
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -94,33 +96,28 @@ G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=800
; gcr arg pop 0
str x0, [fp, #0x60] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
- ldr x0, [x1, #0x50]
+ ldr x0, [x19, #0x50]
; gcrRegs -[x0]
bl <unknown method>
- ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
cbz w0, G_M59170_IG22
mov w0, wzr
- cmp w21, #0
+ cmp w22, #0
ble G_M59170_IG07
- ;; size=96 bbWeight=1 PerfScore 24.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- ldr w14, [x2, #0x08]
- cmp w14, w21
+ ;; size=88 bbWeight=1 PerfScore 20.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ ldr w14, [x1, #0x08]
+ cmp w14, w22
blt G_M59170_IG06
- add x22, x19, #16
- ; byrRegs +[x22]
+ add x23, x20, #16
+ ; byrRegs +[x23]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80002 {x1 x19}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x20]
mov w14, w0
- ldr x15, [x22, x14, LSL #3]
+ ldr x15, [x23, x14, LSL #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x12, [x15]
@@ -129,7 +126,7 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
movk xip0, #0xD1FFAB1E LSL #32
cmp x12, xip0
bne G_M59170_IG12
- add x12, x2, #16
+ add x12, x1, #16
; byrRegs +[x12]
add x14, x12, x14, LSL #3
; byrRegs +[x14]
@@ -137,20 +134,20 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
; gcrRegs -[x15]
; byrRegs -[x12 x14]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG04
;; size=60 bbWeight=3.96 PerfScore 59.40
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ; byrRegs -[x22]
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x23]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2] +[x19]
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- add x22, x19, #16
- ; byrRegs +[x22]
- ldr x15, [x22, w0, UXTW #3]
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x20]
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ add x23, x20, #16
+ ; byrRegs +[x23]
+ ldr x15, [x23, w0, UXTW #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x14, [x15]
@@ -159,30 +156,30 @@ G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x12, #0xD1FFAB1E LSL #32
cmp x14, x12
bne G_M59170_IG12
- ldr w14, [x2, #0x08]
+ ldr w14, [x1, #0x08]
cmp w0, w14
bhs G_M59170_IG20
- add x14, x2, #16
+ add x14, x1, #16
; byrRegs +[x14]
add x14, x14, x0, LSL #3
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x2 x15]
- ; byrRegs -[x14 x22]
+ ; gcrRegs -[x1 x15]
+ ; byrRegs -[x14 x23]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG06
;; size=76 bbWeight=0.04 PerfScore 0.86
-G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG07: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
str xzr, [fp, #0x70] // [V22 tmp11]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x1]
+ movz x2, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
add x1, fp, #112 // [V22 tmp11]
mov w2, #1
@@ -194,22 +191,22 @@ G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
str x3, [fp, #0x48] // [V32 PInvokeFrame+0x30]
add x3, fp, #32 // [V32 PInvokeFrame+0x08]
; byrRegs +[x3]
- str x3, [x20, #0x10]
- strb wzr, [x20, #0x0C]
- ;; size=72 bbWeight=0.50 PerfScore 7.25
-G_M59170_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ str x3, [x21, #0x10]
+ strb wzr, [x21, #0x0C]
...
-8 (-1.01%) : 31509.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
@@ -8,34 +8,34 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 10, 4.10) ref -> x0 class-hnd single-def <double[][]>
-; V01 arg1 [V01,T05] ( 12, 31.97) int -> x1 single-def
-; V02 arg2 [V02,T12] ( 4, 6 ) ref -> x2 class-hnd single-def <int[]>
-; V03 arg3 [V03,T14] ( 7, 4.05) ref -> x3 class-hnd single-def <double[]>
-; V04 loc0 [V04,T01] ( 41, 85.81) int -> x5
-; V05 loc1 [V05,T00] ( 37, 88.07) int -> registers
-; V06 loc2 [V06,T16] ( 3, 6 ) int -> x4
+; V00 arg0 [V00,T14] ( 10, 4.10) ref -> x0 class-hnd single-def <double[][]>
+; V01 arg1 [V01,T07] ( 12, 31.97) int -> x1 single-def
+; V02 arg2 [V02,T13] ( 4, 6 ) ref -> x2 class-hnd single-def <int[]>
+; V03 arg3 [V03,T15] ( 7, 4.05) ref -> x3 class-hnd single-def <double[]>
+; V04 loc0 [V04,T00] ( 41,101.33) int -> x4
+; V05 loc1 [V05,T01] ( 37, 88.07) int -> registers
+; V06 loc2 [V06,T17] ( 3, 6 ) int -> x5
; V07 loc3 [V07,T21] ( 3, 4.50) int -> x6
-; V08 loc4 [V08,T24] ( 17, 60 ) double -> d16
+; V08 loc4 [V08,T24] ( 17, 63.88) double -> d16
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T26] ( 2, 8 ) double -> d17 "Strict ordering of exceptions for Array store"
-; V11 tmp2 [V11,T25] ( 4, 16 ) double -> d17 "Strict ordering of exceptions for Array store"
+; V11 tmp2 [V11,T25] ( 4, 31.52) double -> d17 "Strict ordering of exceptions for Array store"
; V12 tmp3 [V12,T09] ( 5, 16.08) ref -> x9 "arr expr"
; V13 tmp4 [V13,T02] ( 8, 64.64) ref -> registers "arr expr"
-; V14 tmp5 [V14,T07] ( 6, 24 ) ref -> x2 "arr expr"
-; V15 cse0 [V15,T06] ( 8, 26.89) ref -> x6 multi-def "CSE - aggressive"
+; V14 tmp5 [V14,T03] ( 6, 47.28) ref -> x3 "arr expr"
+; V15 cse0 [V15,T06] ( 8, 34.65) ref -> x6 multi-def "CSE - aggressive"
; V16 cse1 [V16,T20] ( 6, 5.54) ref -> x10 multi-def "CSE - aggressive"
-; V17 cse2 [V17,T04] ( 14, 42.01) byref -> x7 hoist "CSE - aggressive"
-; V18 cse3 [V18,T19] ( 8, 5.86) byref -> x8 hoist "CSE - aggressive"
+; V17 cse2 [V17,T05] ( 14, 45.89) byref -> x7 hoist "CSE - aggressive"
+; V18 cse3 [V18,T12] ( 8, 9.74) byref -> x8 hoist "CSE - aggressive"
; V19 cse4 [V19,T10] ( 13, 15.93) int -> x9 hoist multi-def "CSE - aggressive"
-; V20 cse5 [V20,T15] ( 4, 6 ) int -> x4 "CSE - aggressive"
+; V20 cse5 [V20,T16] ( 4, 6 ) int -> x2 "CSE - aggressive"
; V21 cse6 [V21,T22] ( 11, 3.32) int -> registers hoist multi-def "CSE - aggressive"
-; V22 cse7 [V22,T08] ( 7, 20.95) long -> x11 "CSE - aggressive"
-; V23 cse8 [V23,T03] ( 3, 47.04) long -> x3 "CSE - aggressive"
+; V22 cse7 [V22,T08] ( 7, 32.59) long -> x10 "CSE - aggressive"
+; V23 cse8 [V23,T04] ( 3, 47.04) long -> x11 "CSE - aggressive"
; V24 cse9 [V24,T11] ( 3, 11.88) long -> x11 "CSE - aggressive"
-; V25 cse10 [V25,T17] ( 3, 6 ) long -> x10 "CSE - aggressive"
-; V26 cse11 [V26,T18] ( 3, 6 ) long -> x4 "CSE - aggressive"
-; V27 cse12 [V27,T23] ( 6, 0.36) long -> x11 "CSE - conservative"
+; V25 cse10 [V25,T18] ( 3, 6 ) long -> x10 "CSE - aggressive"
+; V26 cse11 [V26,T19] ( 3, 6 ) long -> x5 "CSE - aggressive"
+; V27 cse12 [V27,T23] ( 6, 0.36) long -> x10 "CSE - conservative"
;
; Lcl frame size = 0
@@ -47,7 +47,7 @@ G_M64421_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w1, [fp, #0x64]
ldp x3, x2, [fp, #0x50]
; gcrRegs +[x2-x3]
- ldp w4, w5, [fp, #0x48]
+ ldp w5, w4, [fp, #0x48]
ldr w6, [fp, #0x40]
ldr d16, [fp, #0x38]
;; size=32 bbWeight=0.01 PerfScore 0.14
@@ -63,111 +63,111 @@ G_M64421_IG03: ; bbWeight=1, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x
b G_M64421_IG05
;; size=8 bbWeight=1 PerfScore 4.00
G_M64421_IG04: ; bbWeight=2, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x7 x8}, byref, isz
- ldr w4, [x2, #0x08]
- cmp w5, w4
- bhs G_M64421_IG29
- add x4, x2, #16
- ; byrRegs +[x4]
- mov w10, w5
- ldr w4, [x4, x10, LSL #2]
- ; byrRegs -[x4]
- cmp w4, w9
- bhs G_M64421_IG29
- mov w4, w4
- ldr d16, [x7, x4, LSL #3]
+ ldr w5, [x2, #0x08]
+ cmp w4, w5
+ bhs G_M64421_IG28
+ add x5, x2, #16
+ ; byrRegs +[x5]
+ mov w10, w4
+ ldr w5, [x5, x10, LSL #2]
+ ; byrRegs -[x5]
cmp w5, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
+ mov w5, w5
+ ldr d16, [x7, x5, LSL #3]
+ cmp w4, w9
+ bhs G_M64421_IG28
ldr d17, [x7, x10, LSL #3]
- str d17, [x7, x4, LSL #3]
+ str d17, [x7, x5, LSL #3]
cmn w6, #1
bne G_M64421_IG22
fcmp d16, #0.0
beq G_M64421_IG05
- sxtw w6, w5
+ sxtw w6, w4
;; size=76 bbWeight=2 PerfScore 48.00
G_M64421_IG05: ; bbWeight=8, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x7 x8}, byref, isz
- cmp w5, w9
- bhs G_M64421_IG29
- str d16, [x7, w5, UXTW #3]
- add w5, w5, #1
- cmp w5, w1
+ cmp w4, w9
+ bhs G_M64421_IG28
+ str d16, [x7, w4, UXTW #3]
+ add w4, w4, #1
+ cmp w4, w1
blt G_M64421_IG04
;; size=24 bbWeight=8 PerfScore 36.00
G_M64421_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
; gcrRegs -[x2-x3]
- sub w4, w1, #1
- sxtw w5, w4
- tbnz w5, #31, G_M64421_IG21
+ sub w2, w1, #1
+ sxtw w4, w2
+ tbnz w4, #31, G_M64421_IG21
;; size=12 bbWeight=1 PerfScore 2.00
G_M64421_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
cbz x0, G_M64421_IG16
- cmp w9, w5
+ cmp w9, w4
ble G_M64421_IG16
- ldr w10, [x0, #0x08]
- cmp w10, w5
+ ldr w5, [x0, #0x08]
+ cmp w5, w4
ble G_M64421_IG16
;; size=24 bbWeight=0.50 PerfScore 3.50
G_M64421_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
; gcrRegs -[x0]
- mov w11, w5
- ldr d16, [x7, x11, LSL #3]
- cmp w5, w4
+ mov w10, w4
+ ldr d16, [x7, x10, LSL #3]
+ cmp w4, w2
beq G_M64421_IG14
;; size=16 bbWeight=3.96 PerfScore 19.80
G_M64421_IG09: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- add w0, w5, #1
+ add w0, w4, #1
cmp w0, w1
bge G_M64421_IG14
;; size=12 bbWeight=1.98 PerfScore 3.96
G_M64421_IG10: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- cmp w10, w5
+ cmp w5, w4
bls G_M64421_IG13
- ldr x6, [x8, x11, LSL #3]
+ ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
cbz x6, G_M64421_IG13
orr w3, w0, w1
tbnz w3, #31, G_M64421_IG13
- ldr w2, [x6, #0x08]
- cmp w2, w1
+ ldr w3, [x6, #0x08]
+ cmp w3, w1
blt G_M64421_IG13
cmp w9, w1
blt G_M64421_IG13
;; size=44 bbWeight=0.99 PerfScore 12.87
G_M64421_IG11: ; bbWeight=15.68, gcrefRegs=0040 {x6}, byrefRegs=0180 {x7 x8}, byref, isz
- mov x2, x6
- ; gcrRegs +[x2]
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- mov w3, w0
- ldr d17, [x2, x3, LSL #3]
- ldr d18, [x7, x3, LSL #3]
+ mov x3, x6
+ ; gcrRegs +[x3]
+ add x3, x3, #16
+ ; gcrRegs -[x3]
+ ; byrRegs +[x3]
+ mov w11, w0
+ ldr d17, [x3, x11, LSL #3]
+ ldr d18, [x7, x11, LSL #3]
fmul d17, d17, d18
fsub d16, d16, d17
add w0, w0, #1
cmp w0, w1
blt G_M64421_IG11
;; size=40 bbWeight=15.68 PerfScore 243.06
-G_M64421_IG12: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref
+G_M64421_IG12: ; bbWeight=7.84, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref
; gcrRegs -[x6]
- ; byrRegs -[x2]
+ ; byrRegs -[x3]
b G_M64421_IG14
- ;; size=4 bbWeight=3.96 PerfScore 3.96
+ ;; size=4 bbWeight=7.84 PerfScore 7.84
G_M64421_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- ldr x6, [x8, x11, LSL #3]
+ ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- mov x2, x6
- ; gcrRegs +[x2]
- ldr w6, [x2, #0x08]
+ mov x3, x6
+ ; gcrRegs +[x3]
+ ldr w6, [x3, #0x08]
; gcrRegs -[x6]
cmp w0, w6
- bhs G_M64421_IG29
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- ldr d17, [x2, w0, UXTW #3]
+ bhs G_M64421_IG28
+ add x3, x3, #16
+ ; gcrRegs -[x3]
+ ; byrRegs +[x3]
+ ldr d17, [x3, w0, UXTW #3]
cmp w0, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
ldr d18, [x7, w0, UXTW #3]
fmul d17, d17, d18
fsub d16, d16, d17
@@ -175,123 +175,119 @@ G_M64421_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}
cmp w0, w1
blt G_M64421_IG13
;; size=60 bbWeight=0.16 PerfScore 3.80
-G_M64421_IG14: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- ; byrRegs -[x2]
- ldr x6, [x8, x11, LSL #3]
+G_M64421_IG14: ; bbWeight=7.84, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
+ ; byrRegs -[x3]
+ ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- mov x2, x6
- ; gcrRegs +[x2]
- ldr w0, [x2, #0x08]
- cmp w5, w0
- bhs G_M64421_IG29
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- ldr d17, [x2, x11, LSL #3]
...
+0 (0.00%) : 21977.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1)
@@ -10,23 +10,23 @@
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.DefaultBinder>
;* V01 arg1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
-; V02 arg2 [V02,T46] ( 5, 5 ) ref -> x20 class-hnd single-def <System.Reflection.MethodBase[]>
-; V03 arg3 [V03,T16] ( 11, 29.04) ref -> x19 class-hnd <System.Type[]>
+; V02 arg2 [V02,T45] ( 5, 5.98) ref -> x20 class-hnd single-def <System.Reflection.MethodBase[]>
+; V03 arg3 [V03,T13] ( 11, 30.02) ref -> x19 class-hnd <System.Type[]>
;* V04 arg4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.ParameterModifier[]>
-; V05 loc0 [V05,T02] ( 45, 91.12) int -> x23
-; V06 loc1 [V06,T03] ( 7, 84 ) int -> x25
-; V07 loc2 [V07,T50] ( 6, 3.08) ref -> x22 class-hnd exact single-def <System.Type[]>
-; V08 loc3 [V08,T45] ( 7, 7.29) ref -> x21 class-hnd single-def <System.Reflection.MethodBase[]>
-; V09 loc4 [V09,T35] ( 10, 11.50) int -> registers
-; V10 loc5 [V10,T36] ( 9, 11.50) int -> x22
-; V11 loc6 [V11,T47] ( 6, 5 ) ubyte -> x28
+; V05 loc0 [V05,T02] ( 45, 92.60) int -> x23
+; V06 loc1 [V06,T03] ( 7, 87.25) int -> x25
+; V07 loc2 [V07,T50] ( 6, 4.06) ref -> x22 class-hnd exact single-def <System.Type[]>
+; V08 loc3 [V08,T40] ( 7, 8.77) ref -> x21 class-hnd single-def <System.Reflection.MethodBase[]>
+; V09 loc4 [V09,T36] ( 10, 12.98) int -> registers
+; V10 loc5 [V10,T35] ( 9, 14.46) int -> x22
+; V11 loc6 [V11,T47] ( 6, 6.48) ubyte -> x28
; V12 loc7 [V12,T39] ( 9, 9.08) ref -> x25 class-hnd exact single-def <int[]>
-; V13 loc8 [V13,T51] ( 3, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodBase>
+; V13 loc8 [V13,T51] ( 3, 2.48) ref -> x0 class-hnd single-def <System.Reflection.MethodBase>
;* V14 loc9 [V14 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
; V15 loc10 [V15,T07] ( 6, 56 ) ref -> [fp+0x40] class-hnd spill-single-def <System.Type>
; V16 loc11 [V16,T06] ( 7, 56 ) ref -> [fp+0x38] class-hnd <System.Type>
; V17 loc12 [V17,T19] ( 3, 24 ) ref -> [fp+0x30] class-hnd spill-single-def <System.Reflection.SignatureType>
-; V18 loc13 [V18,T12] ( 4, 32 ) ref -> x0 class-hnd <System.Reflection.MethodInfo>
+; V18 loc13 [V18,T14] ( 4, 32 ) ref -> x0 class-hnd <System.Reflection.MethodInfo>
; V19 loc14 [V19,T09] ( 6, 44 ) ref -> [fp+0x28] class-hnd exact spill-single-def <System.RuntimeType>
; V20 loc15 [V20,T37] ( 6, 10 ) int -> x0
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -36,11 +36,11 @@
; V25 tmp4 [V25,T53] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V26 tmp5 [V26,T54] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V27 tmp6 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V28 tmp7 [V28,T14] ( 2, 32 ) ref -> x1 "CASTCLASS eval op1"
+; V28 tmp7 [V28,T16] ( 2, 32 ) ref -> x1 "CASTCLASS eval op1"
;* V29 tmp8 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
; V30 tmp9 [V30,T30] ( 4, 16 ) int -> x20 "impSpillLclRefs"
-; V31 tmp10 [V31,T40] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
-;* V32 tmp11 [V32,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V31 tmp10 [V31,T41] ( 2, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
+;* V32 tmp11 [V32,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[int]>
;* V34 tmp13 [V34 ] ( 0, 0 ) int -> zero-ref "Span.get_Item index"
; V35 tmp14 [V35,T33] ( 2, 16 ) int -> [fp+0x5C] spill-single-def "Inline stloc first use temp"
@@ -74,21 +74,21 @@
;* V63 tmp42 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V64 tmp43 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V65 tmp44 [V65 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V66 tmp45 [V66,T10] ( 3, 36 ) byref -> x22 "field V14._reference (fldOffset=0x0)" P-INDEP
+; V66 tmp45 [V66,T11] ( 3, 36 ) byref -> x22 "field V14._reference (fldOffset=0x0)" P-INDEP
; V67 tmp46 [V67,T25] ( 3, 24 ) int -> x28 "field V14._length (fldOffset=0x8)" P-INDEP
;* V68 tmp47 [V68 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-DEP
;* V69 tmp48 [V69 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-DEP
; V70 tmp49 [V70,T31] ( 2, 16 ) byref -> [fp+0x18] spill-single-def "field V33._reference (fldOffset=0x0)" P-INDEP
-;* V71 tmp50 [V71,T42] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
+;* V71 tmp50 [V71,T43] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
; V72 tmp51 [V72,T32] ( 2, 16 ) byref -> x3 "field V38._reference (fldOffset=0x0)" P-INDEP
-;* V73 tmp52 [V73,T43] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
+;* V73 tmp52 [V73,T44] ( 0, 0 ) int -> zero-ref "field V38._length (fldOffset=0x8)" P-INDEP
; V74 tmp53 [V74,T18] ( 6, 24 ) ref -> x0 "argument with side effect"
; V75 tmp54 [V75,T55] ( 2, 0 ) ref -> x20 "argument with side effect"
; V76 tmp55 [V76,T56] ( 2, 0 ) ref -> x2 "argument with side effect"
; V77 tmp56 [V77,T20] ( 3, 24 ) ref -> x0 "argument with side effect"
; V78 tmp57 [V78,T01] ( 3, 96 ) ref -> x0 "argument with side effect"
; V79 tmp58 [V79,T05] ( 2, 64 ) ref -> x0 "argument with side effect"
-; V80 tmp59 [V80,T15] ( 2, 32 ) ref -> x1 "argument with side effect"
+; V80 tmp59 [V80,T17] ( 2, 32 ) ref -> x1 "argument with side effect"
;* V81 tmp60 [V81 ] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V82 tmp61 [V82 ] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V83 tmp62 [V83 ] ( 0, 0 ) int -> zero-ref "index expr"
@@ -100,14 +100,14 @@
; V89 tmp68 [V89,T58] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
; V90 cse0 [V90,T52] ( 3, 0.10) ref -> x1 "CSE - conservative"
; V91 cse1 [V91,T38] ( 3, 9.90) ref -> x1 "CSE - moderate"
-; V92 cse2 [V92,T11] ( 15, 34.83) int -> x24 multi-def "CSE - aggressive"
-; V93 cse3 [V93,T17] ( 13, 29.29) byref -> x27 hoist multi-def "CSE - moderate"
+; V92 cse2 [V92,T10] ( 15, 38.08) int -> x24 multi-def "CSE - aggressive"
+; V93 cse3 [V93,T12] ( 13, 32.25) byref -> x27 hoist multi-def "CSE - moderate"
; V94 cse4 [V94,T08] ( 9, 48.54) byref -> [fp+0x10] hoist multi-def "CSE - aggressive"
-; V95 cse5 [V95,T13] ( 4, 32 ) long -> [fp+0x50] spill-single-def "CSE - moderate"
-; V96 cse6 [V96,T34] ( 10, 13.29) int -> x26 "CSE - moderate"
+; V95 cse5 [V95,T15] ( 4, 32 ) long -> [fp+0x50] spill-single-def "CSE - moderate"
+; V96 cse6 [V96,T34] ( 10, 14.77) int -> x26 "CSE - moderate"
; V97 cse7 [V97,T21] ( 3, 24 ) ref -> x0 "CSE - moderate"
; V98 cse8 [V98,T22] ( 3, 24 ) ref -> x0 "CSE - moderate"
-; V99 cse9 [V99,T44] ( 6, 7.50) int -> x21 "CSE - moderate"
+; V99 cse9 [V99,T46] ( 6, 7.50) int -> x21 "CSE - moderate"
; V100 cse10 [V100,T49] ( 4, 4.29) byref -> x0 hoist multi-def "CSE - moderate"
; V101 cse11 [V101,T48] ( 4, 4.54) byref -> x24 hoist multi-def "CSE - moderate"
; V102 cse12 [V102,T04] ( 5, 72 ) long -> [fp+0x48] spill-single-def "CSE - aggressive"
@@ -190,7 +190,7 @@ G_M46704_IG06: ; bbWeight=1.98, gcrefRegs=500002 {x1 x20 x22}, byrefRegs=
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbz x0, G_M46704_IG56
+ cbz x0, G_M46704_IG58
;; size=20 bbWeight=1.98 PerfScore 6.93
G_M46704_IG07: ; bbWeight=3.96, gcrefRegs=500000 {x20 x22}, byrefRegs=3000000 {x24 x25}, byref, isz
; gcrRegs -[x0]
@@ -198,10 +198,10 @@ G_M46704_IG07: ; bbWeight=3.96, gcrefRegs=500000 {x20 x22}, byrefRegs=300
cmp w21, w23
bgt G_M46704_IG04
;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M46704_IG08: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
+G_M46704_IG08: ; bbWeight=1.98, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref
; byrRegs -[x24-x25]
b G_M46704_IG13
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M46704_IG09: ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19]
add x24, x19, #16
@@ -216,7 +216,7 @@ G_M46704_IG09: ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
; gcr arg pop 0
ldr w24, [x22, #0x08]
cmp w23, w24
- bhs G_M46704_IG54
+ bhs G_M46704_IG56
add x25, x22, #16
; byrRegs +[x25]
add x14, x25, x23, LSL #3
@@ -249,7 +249,7 @@ G_M46704_IG11: ; bbWeight=0.02, gcrefRegs=580002 {x1 x19 x20 x22}, byrefR
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbz x0, G_M46704_IG56
+ cbz x0, G_M46704_IG58
;; size=20 bbWeight=0.02 PerfScore 0.07
G_M46704_IG12: ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -257,13 +257,16 @@ G_M46704_IG12: ; bbWeight=0.04, gcrefRegs=580000 {x19 x20 x22}, byrefRegs
cmp w21, w23
bgt G_M46704_IG09
;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M46704_IG13: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
+G_M46704_IG13: ; bbWeight=1.98, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
mov x19, x22
; gcrRegs +[x19]
- cbz x20, G_M46704_IG55
+ cbz x20, G_M46704_IG57
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M46704_IG14: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x22]
ldr w0, [x20, #0x08]
- cbz w0, G_M46704_IG55
+ cbz w0, G_M46704_IG57
mov x0, x20
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this
@@ -271,7 +274,7 @@ G_M46704_IG13: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
- ; gcrRegs -[x20 x22]
+ ; gcrRegs -[x20]
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
@@ -279,9 +282,9 @@ G_M46704_IG13: ; bbWeight=1, gcrefRegs=500000 {x20 x22}, byrefRegs=0000 {
mov w23, wzr
ldr w26, [x21, #0x08]
cmp w26, #0
- ble G_M46704_IG31
- ;; size=64 bbWeight=1 PerfScore 17.50
-G_M46704_IG14: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
+ ble G_M46704_IG33
+ ;; size=56 bbWeight=1 PerfScore 16.00
+G_M46704_IG15: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
add x27, x21, #16
; byrRegs +[x27]
@@ -299,17 +302,17 @@ G_M46704_IG14: ; bbWeight=4, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {
mov w28, w1
ldr w24, [x19, #0x08]
cmp w24, w28
- bne G_M46704_IG30
+ bne G_M46704_IG32
;; size=44 bbWeight=4 PerfScore 76.00
-G_M46704_IG15: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M46704_IG16: ; bbWeight=2, gcrefRegs=280000 {x19 x21}, byrefRegs=8400000 {x22 x27}, byref, isz
; byrRegs -[x0]
mov w25, wzr
cmp w24, #0
- ble G_M46704_IG29
+ ble G_M46704_IG30
;; size=12 bbWeight=2 PerfScore 4.00
-G_M46704_IG16: ; bbWeight=16, gcrefRegs=280000 {x19 x21}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M46704_IG17: ; bbWeight=16, gcrefRegs=280000 {x19 x21}, byrefRegs=8400000 {x22 x27}, byref, isz
cmp w25, w28
- bhs G_M46704_IG54
+ bhs G_M46704_IG56
mov w1, w25
str x1, [fp, #0x48] // [V102 cse12]
ldr x0, [x22, x1, LSL #3]
@@ -342,16 +345,16 @@ G_M46704_IG16: ; bbWeight=16, gcrefRegs=280000 {x19 x21}, byrefRegs=84000
; gcrRegs -[x0-x1]
; byrRegs -[x3]
; gcr arg pop 0
- cbnz w0, G_M46704_IG28
+ cbnz w0, G_M46704_IG29
;; size=88 bbWeight=16 PerfScore 536.00
-G_M46704_IG17: ; bbWeight=8, gcrefRegs=280000 {x19 x21}, byrefRegs=8400000 {x22 x27}, byref, isz
+G_M46704_IG18: ; bbWeight=8, gcrefRegs=280000 {x19 x21}, byrefRegs=8400000 {x22 x27}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x2, [fp, #0x40] // [V15 loc10]
; gcrRegs +[x2]
cmp x2, x1
- beq G_M46704_IG28
+ beq G_M46704_IG29
ldr x1, [fp, #0x10] // [V94 cse4]
; byrRegs +[x1]
ldr x0, [fp, #0x48] // [V102 cse12]
@@ -373,7 +376,7 @@ G_M46704_IG17: ; bbWeight=8, gcrefRegs=280000 {x19 x21}, byrefRegs=840000
; gcrRegs +[x2]
str x2, [fp, #0x30] // [V17 loc12]
; GC ptr vars +{V17}
- cbz x2, G_M46704_IG18
+ cbz x2, G_M46704_IG19
ldr x1, [x27, w23, UXTW #3]
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -384,7 +387,7 @@ G_M46704_IG17: ; bbWeight=8, gcrefRegs=280000 {x19 x21}, byrefRegs=840000
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1-x2] +[x0]
; gcr arg pop 0
- cbz x0, G_M46704_IG29
+ cbz x0, G_M46704_IG30
ldr x1, [x0]
ldr x1, [x1, #0x60]
ldr x1, [x1, #0x20]
@@ -405,9 +408,9 @@ G_M46704_IG17: ; bbWeight=8, gcrefRegs=280000 {x19 x21}, byrefRegs=840000
; gcrRegs +[x1]
str x1, [fp, #0x38] // [V16 loc11]
; GC ptr vars +{V16}
- cbz x1, G_M46704_IG29
+ cbz x1, G_M46704_IG30
;; size=152 bbWeight=8 PerfScore 364.00
-G_M46704_IG18: ; bbWeight=8, gcVars=00000000000000C0 {V15 V16}, gcrefRegs=280000 {x19 x21}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
+G_M46704_IG19: ; bbWeight=8, gcVars=00000000000000C0 {V15 V16}, gcrefRegs=280000 {x19 x21}, byrefRegs=8400000 {x22 x27}, gcvars, byref, isz
; gcrRegs -[x0-x1]
ldr x0, [fp, #0x40] // [V15 loc10]
...
+4 (+0.28%) : 53811.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>cDisplayClass24_0+<b0>d[ubyte]:MoveNext():this (Tier1)
@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 27 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 20, 83 ) byref -> [fp+0x18] this EH-live single-def
-; V01 loc0 [V01,T24] ( 2, 2 ) int -> x14 single-def
-; V02 loc1 [V02,T08] ( 5, 22 ) ref -> x19 class-hnd exact single-def <<unknown class>>
-; V03 loc2 [V03 ] ( 3, 12 ) struct (16) [fp+0x38] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Threading.Tasks.ValueTask`1[ubyte]>
+; V00 this [V00,T02] ( 20, 24 ) byref -> [fp+0x18] this EH-live single-def
+; V01 loc0 [V01,T20] ( 2, 2 ) int -> x14 single-def
+; V02 loc1 [V02,T03] ( 5, 19 ) ref -> x19 class-hnd exact single-def <<unknown class>>
+; V03 loc2 [V03 ] ( 3, 3 ) struct (16) [fp+0x38] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Threading.Tasks.ValueTask`1[ubyte]>
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Threading.CancellationToken>
-; V05 loc4 [V05,T11] ( 3, 16 ) ubyte -> x21
+; V05 loc4 [V05,T16] ( 3, 3 ) ubyte -> x21
;* V06 loc5 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc6 [V07 ] ( 9, 27 ) struct (16) [fp+0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
-; V08 loc7 [V08 ] ( 3, 76 ) ref -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <ubyte[]>
+; V07 loc6 [V07 ] ( 9, 9 ) struct (16) [fp+0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
+; V08 loc7 [V08 ] ( 3, 20 ) ref -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <ubyte[]>
;* V09 loc8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V12 tmp2 [V12,T07] ( 3, 24 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
+; V12 tmp2 [V12,T09] ( 3, 6 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[ubyte]>
-; V14 tmp4 [V14,T27] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V14 tmp4 [V14,T26] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]>
;* V17 tmp7 [V17 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
-;* V18 tmp8 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp9 [V19,T04] ( 7, 28 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V20 tmp10 [V20,T14] ( 2, 8 ) int -> x0
-; V21 tmp11 [V21,T12] ( 3, 12 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
+;* V18 tmp8 [V18,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp9 [V19,T05] ( 7, 7 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V20 tmp10 [V20,T17] ( 2, 2 ) int -> x0
+; V21 tmp11 [V21,T14] ( 3, 3 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V23 tmp13 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -37,38 +37,37 @@
;* V26 tmp16 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V27 tmp17 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp18 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V29 tmp19 [V29,T10] ( 4, 16 ) ubyte -> x21 "Inline return value spill temp"
-; V30 tmp20 [V30,T05] ( 7, 28 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V31 tmp21 [V31,T15] ( 2, 8 ) int -> x0
-; V32 tmp22 [V32,T09] ( 5, 20 ) ref -> x21 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
+; V29 tmp19 [V29,T11] ( 4, 4 ) ubyte -> x21 "Inline return value spill temp"
+; V30 tmp20 [V30,T06] ( 7, 7 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V31 tmp21 [V31,T18] ( 2, 2 ) int -> x0
+; V32 tmp22 [V32,T07] ( 6, 6 ) ref -> x21 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
;* V33 tmp23 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V34 tmp24 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp25 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp26 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp27 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V38 tmp28 [V38,T02] ( 7, 48 ) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]>
+; V38 tmp28 [V38,T04] ( 7, 12 ) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]>
;* V39 tmp29 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V40 tmp30 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V41 tmp31 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V42 tmp32 [V42,T16] ( 3, 8 ) ref -> x22 class-hnd "Inline stloc first use temp" <System.AggregateException>
+; V42 tmp32 [V42,T19] ( 3, 2 ) ref -> x22 class-hnd "Inline stloc first use temp" <System.AggregateException>
;* V43 tmp33 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V44 tmp34 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V45 tmp35 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp36 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp37 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]>
-; V48 tmp38 [V48,T17] ( 3, 6 ) byref -> x14 single-def "Inlining Arg"
-;* V49 tmp39 [V49,T25] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
-; V50 tmp40 [V50,T18] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
-;* V51 tmp41 [V51,T20] ( 0, 0 ) ref -> zero-ref "field V04._source (fldOffset=0x0)" P-INDEP
-;* V52 tmp42 [V52,T21] ( 0, 0 ) ref -> zero-ref "field V39._source (fldOffset=0x0)" P-INDEP
+; V48 tmp38 [V48,T10] ( 3, 6 ) byref -> x14 single-def "Inlining Arg"
+;* V49 tmp39 [V49,T24] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
+; V50 tmp40 [V50,T12] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
+;* V51 tmp41 [V51,T21] ( 0, 0 ) ref -> zero-ref "field V04._source (fldOffset=0x0)" P-INDEP
+;* V52 tmp42 [V52,T22] ( 0, 0 ) ref -> zero-ref "field V39._source (fldOffset=0x0)" P-INDEP
;* V53 tmp43 [V53 ] ( 0, 0 ) ref -> zero-ref "field V41._source (fldOffset=0x0)" P-INDEP
-; V54 tmp44 [V54,T00] ( 3,384 ) ref -> x2 "argument with side effect"
-; V55 tmp45 [V55,T03] ( 3, 48 ) ref -> x3 "argument with side effect"
-; V56 tmp46 [V56,T19] ( 2, 4 ) ref -> x1 "argument with side effect"
-; V57 PSPSym [V57,T26] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
-; V58 cse0 [V58,T06] ( 6, 24 ) byref -> x21 "CSE - aggressive"
-; V59 cse1 [V59,T13] ( 3, 12 ) byref -> x20 "CSE - aggressive"
-; V60 cse2 [V60,T23] ( 3, 3 ) ref -> x0 "CSE - moderate"
+; V54 tmp44 [V54,T00] ( 3, 48 ) ref -> x2 "argument with side effect"
+; V55 tmp45 [V55,T01] ( 3, 48 ) ref -> x3 "argument with side effect"
+; V56 tmp46 [V56,T13] ( 2, 4 ) ref -> x1 "argument with side effect"
+; V57 PSPSym [V57,T25] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V58 cse0 [V58,T08] ( 6, 6 ) byref -> x21 "CSE - aggressive"
+; V59 cse1 [V59,T15] ( 3, 3 ) ref -> x0 "CSE - moderate"
;
; Lcl frame size = 64
@@ -86,14 +85,14 @@ G_M63909_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
;; size=44 bbWeight=1 PerfScore 9.00
-G_M63909_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
+G_M63909_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; byrRegs +[x0]
ldr w14, [x0, #0x10]
ldr x19, [x0]
; gcrRegs +[x19]
;; size=8 bbWeight=1 PerfScore 6.00
G_M63909_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
- cbz w14, G_M63909_IG12
+ cbz w14, G_M63909_IG11
ldr x14, [x19, #0x08]
; gcrRegs +[x14]
ldr x15, [x14, #0x08]
@@ -105,7 +104,7 @@ G_M63909_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
; gcrRegs -[x15]
; byrRegs -[x14]
;; size=20 bbWeight=1 PerfScore 8.50
-G_M63909_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M63909_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr x0, [fp, #0x18] // [V00 this]
; byrRegs +[x0]
@@ -126,14 +125,14 @@ G_M63909_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
ldrb w1, [x1, #0x1D]
; gcrRegs -[x1]
- cbz w1, G_M63909_IG21
- ;; size=48 bbWeight=4 PerfScore 96.00
-G_M63909_IG05: ; bbWeight=4, nogc, extend
+ cbz w1, G_M63909_IG20
+ ;; size=48 bbWeight=1 PerfScore 24.00
+G_M63909_IG05: ; bbWeight=1, nogc, extend
ldp x0, x1, [fp, #0x38]
; gcrRegs -[x0]
stp x0, x1, [fp, #0x28]
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M63909_IG06: ; bbWeight=4, isz, extend
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M63909_IG06: ; bbWeight=1, isz, extend
ldr x20, [fp, #0x28] // [V07 loc6]
; gcrRegs +[x20]
cbz x20, G_M63909_IG07
@@ -173,11 +172,11 @@ G_M63909_IG06: ; bbWeight=4, isz, extend
blr x2
; gcr arg pop 0
b G_M63909_IG08
- ;; size=116 bbWeight=4 PerfScore 88.00
-G_M63909_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M63909_IG14
- ;; size=4 bbWeight=4 PerfScore 4.00
-G_M63909_IG08: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=116 bbWeight=1 PerfScore 22.00
+G_M63909_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M63909_IG13
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M63909_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -186,7 +185,7 @@ G_M63909_IG08: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbz x0, G_M63909_IG10
+ cbz x0, G_M63909_IG09
add x0, x0, #52
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -194,14 +193,10 @@ G_M63909_IG08: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; byrRegs -[x0]
mov w1, #0xD1FFAB1E
tst w0, w1
- bne G_M63909_IG14
- ;; size=44 bbWeight=4 PerfScore 38.00
-G_M63909_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- b G_M63909_IG11
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M63909_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19-x20]
+ bne G_M63909_IG13
+ b G_M63909_IG10
+ ;; size=48 bbWeight=1 PerfScore 10.50
+G_M63909_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
ldrsh w1, [fp, #0x30] // [V07 loc6+0x08]
@@ -212,9 +207,9 @@ G_M63909_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0 x20]
; gcr arg pop 0
- cbnz w0, G_M63909_IG14
- ;; size=32 bbWeight=4 PerfScore 36.00
-G_M63909_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M63909_IG13
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M63909_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
ldr x0, [fp, #0x18] // [V00 this]
; byrRegs +[x0]
@@ -247,24 +242,24 @@ G_M63909_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M63909_IG34
+ b G_M63909_IG32
;; size=84 bbWeight=1 PerfScore 22.50
-G_M63909_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, nogc
+G_M63909_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, nogc
; gcrRegs +[x19]
; byrRegs +[x0]
ldp x1, x2, [x0, #0x20]
stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M63909_IG13: ; bbWeight=1, extend
+G_M63909_IG12: ; bbWeight=1, extend
stp xzr, xzr, [x0, #0x20]
movn w1, #0
str w1, [x0, #0x10]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M63909_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M63909_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr x20, [fp, #0x28] // [V07 loc6]
; gcrRegs +[x20]
- cbz x20, G_M63909_IG15
+ cbz x20, G_M63909_IG14
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -273,7 +268,7 @@ G_M63909_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M63909_IG15
+ cbnz x0, G_M63909_IG14
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -287,7 +282,7 @@ G_M63909_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cset x0, ne
; gcrRegs -[x0]
tst w0, #255
- bne G_M63909_IG16
+ bne G_M63909_IG15
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
...
+8 (+0.29%) : 28572.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
@@ -17,10 +17,10 @@
; V06 arg6 [V06,T31] ( 8, 8 ) ref -> x24 class-hnd single-def <System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[]>
; V07 arg7 [V07,T14] ( 7, 19.29) ref -> x21 class-hnd single-def <System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[]>
; V08 arg8 [V08,T45] ( 4, 4 ) ref -> [fp+0x148] class-hnd single-def <System.Security.Cryptography.AsymmetricAlgorithm[]>
-; V09 arg9 [V09,T12] ( 8, 22.99) int -> x20 single-def
-; V10 loc0 [V10,T13] ( 19, 22.06) int -> [fp+0xEC]
+; V09 arg9 [V09,T13] ( 8, 22.99) int -> x20 single-def
+; V10 loc0 [V10,T07] ( 19, 27.92) int -> [fp+0xEC]
; V11 loc1 [V11 ] ( 6, 12 ) struct (16) [fp+0xD8] do-not-enreg[SFAR] multireg-arg multireg-ret must-init <System.ReadOnlyMemory`1[ubyte]>
-; V12 loc2 [V12,T08] ( 7, 24.16) ref -> [fp+0x50] class-hnd <System.Security.Cryptography.Asn1.AttributeAsn[]>
+; V12 loc2 [V12,T09] ( 7, 24.16) ref -> [fp+0x50] class-hnd <System.Security.Cryptography.Asn1.AttributeAsn[]>
; V13 loc3 [V13,T02] ( 10, 68 ) int -> [fp+0xD4]
;* V14 loc4 [V14 ] ( 0, 0 ) struct (16) zero-ref <System.Security.Cryptography.Asn1.AttributeAsn>
; V15 loc5 [V15 ] ( 24, 24 ) struct (16) [fp+0xC0] do-not-enreg[SBR] multireg-ret must-init ld-addr-op <System.ReadOnlyMemory`1[ubyte]>
@@ -28,7 +28,7 @@
; V17 loc7 [V17,T17] ( 5, 18 ) ref -> [fp+0x40] class-hnd exact <System.String>
; V18 loc8 [V18,T18] ( 5, 18 ) ref -> [fp+0x38] class-hnd <<unknown class>>
; V19 loc9 [V19,T19] ( 5, 18 ) ref -> [fp+0x30] class-hnd <<unknown class>>
-; V20 loc10 [V20,T01] ( 18, 68.32) int -> [fp+0xBC]
+; V20 loc10 [V20,T01] ( 18, 74.18) int -> [fp+0xBC]
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V22 tmp1 [V22,T21] ( 4, 16 ) ref -> x4 class-hnd exact "dup spill" <System.Security.Cryptography.Asn1.AttributeAsn[]>
; V23 tmp2 [V23,T24] ( 8, 14 ) ref -> registers
@@ -70,7 +70,7 @@
; V59 tmp38 [V59,T28] ( 6, 12 ) int -> [fp+0xE0] do-not-enreg[] "field V11._index (fldOffset=0x8)" P-DEP
; V60 tmp39 [V60,T29] ( 6, 12 ) int -> [fp+0xE4] do-not-enreg[] "field V11._length (fldOffset=0xc)" P-DEP
; V61 tmp40 [V61,T03] ( 11, 56.08) ref -> x8 "field V14.AttrType (fldOffset=0x0)" P-INDEP
-; V62 tmp41 [V62,T07] ( 7, 26.02) ref -> [fp+0x20] "field V14.AttrValues (fldOffset=0x8)" P-INDEP
+; V62 tmp41 [V62,T08] ( 7, 26.02) ref -> [fp+0x20] "field V14.AttrValues (fldOffset=0x8)" P-INDEP
; V63 tmp42 [V63,T15] ( 18, 18 ) ref -> [fp+0xC0] do-not-enreg[] "field V15._object (fldOffset=0x0)" P-DEP
; V64 tmp43 [V64,T48] ( 4, 4 ) int -> [fp+0xC8] do-not-enreg[] "field V15._index (fldOffset=0x8)" P-DEP
; V65 tmp44 [V65,T40] ( 6, 6 ) int -> [fp+0xCC] do-not-enreg[] "field V15._length (fldOffset=0xc)" P-DEP
@@ -94,7 +94,7 @@
;* V83 tmp62 [V83 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
; V84 tmp63 [V84,T00] ( 6, 96 ) byref -> x7 "BlockOp address local"
; V85 tmp64 [V85,T30] ( 6, 12 ) struct (16) [fp+0xA8] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
-; V86 tmp65 [V86,T09] ( 6, 24 ) struct (16) [fp+0x98] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
+; V86 tmp65 [V86,T10] ( 6, 24 ) struct (16) [fp+0x98] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
; V87 tmp66 [V87,T55] ( 2, 0 ) ref -> x1 "argument with side effect"
; V88 tmp67 [V88 ] ( 4, 8 ) struct (32) [fp+0x78] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn>
; V89 cse0 [V89,T41] ( 3, 5.94) ref -> x15 "CSE - moderate"
@@ -103,13 +103,13 @@
; V92 cse3 [V92,T25] ( 5, 13.86) long -> [fp+0x70] spill-single-def "CSE - moderate"
; V93 cse4 [V93,T52] ( 3, 0.10) long -> [fp+0x68] spill-single-def "CSE - conservative"
; V94 cse5 [V94,T16] ( 18, 18 ) ref -> x1 multi-def "CSE - aggressive"
-; V95 cse6 [V95,T10] ( 3, 23.76) int -> [fp+0x64] spill-single-def "CSE - aggressive"
+; V95 cse6 [V95,T11] ( 3, 23.76) int -> [fp+0x64] spill-single-def "CSE - aggressive"
; V96 cse7 [V96,T04] ( 6, 40 ) ref -> x10 multi-def "CSE - aggressive"
-; V97 cse8 [V97,T11] ( 3, 23.76) int -> x1 "CSE - aggressive"
+; V97 cse8 [V97,T12] ( 3, 23.76) int -> x1 "CSE - aggressive"
; V98 cse9 [V98,T35] ( 8, 8 ) long -> [fp+0x58] multi-def "CSE - moderate"
-; V99 cse10 [V99,T44] ( 5, 4.02) int -> x5 multi-def "CSE - moderate"
-; V100 cse11 [V100,T38] ( 6, 6 ) byref -> x6 multi-def "CSE - moderate"
-; V101 cse12 [V101,T37] ( 4, 7.92) long -> x5 "CSE - moderate"
+; V99 cse10 [V99,T44] ( 5, 4.02) int -> x6 multi-def "CSE - moderate"
+; V100 cse11 [V100,T38] ( 6, 6 ) byref -> x7 multi-def "CSE - moderate"
+; V101 cse12 [V101,T37] ( 4, 7.92) long -> x6 "CSE - moderate"
; TEMP_01 byref -> [fp+0x10]
;
; Lcl frame size = 224
@@ -151,21 +151,21 @@ G_M36482_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=104 bbWeight=1 PerfScore 21.50
G_M36482_IG02: ; bbWeight=1, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
sub w19, w19, #1
- tbnz w19, #31, G_M36482_IG66
+ tbnz w19, #31, G_M36482_IG67
;; size=8 bbWeight=1 PerfScore 1.50
G_M36482_IG03: ; bbWeight=0.50, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
- cbz x26, G_M36482_IG36
- cbz x25, G_M36482_IG36
- cbz x23, G_M36482_IG36
+ cbz x26, G_M36482_IG37
+ cbz x25, G_M36482_IG37
+ cbz x23, G_M36482_IG37
ldr w0, [x26, #0x08]
cmp w0, w19
- ble G_M36482_IG36
+ ble G_M36482_IG37
ldr w0, [x25, #0x08]
cmp w0, w19
- ble G_M36482_IG36
+ ble G_M36482_IG37
ldr w0, [x23, #0x08]
cmp w0, w19
- ble G_M36482_IG36
+ ble G_M36482_IG37
;; size=48 bbWeight=0.50 PerfScore 8.25
G_M36482_IG04: ; bbWeight=3.96, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
movn w3, #0
@@ -224,7 +224,7 @@ G_M36482_IG07: ; bbWeight=15.84, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x2
cmp x8, x10
beq G_M36482_IG09
;; size=48 bbWeight=15.84 PerfScore 190.08
-G_M36482_IG08: ; bbWeight=7.92, gcVars=0000000000000180 {V12 V62}, gcrefRegs=7E00500 {x8 x10 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
+G_M36482_IG08: ; bbWeight=7.92, gcVars=0000000000000300 {V12 V62}, gcrefRegs=7E00500 {x8 x10 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
; gcrRegs -[x4 x9] +[x10]
; byrRegs -[x7]
cbz x8, G_M36482_IG10
@@ -254,7 +254,7 @@ G_M36482_IG09: ; bbWeight=7.92, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x2
str x9, [fp, #0x20] // [V62 tmp41]
cbnz w0, G_M36482_IG12
;; size=16 bbWeight=7.92 PerfScore 55.44
-G_M36482_IG10: ; bbWeight=15.84, gcVars=0000000000000100 {V12}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
+G_M36482_IG10: ; bbWeight=15.84, gcVars=0000000000000200 {V12}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
; gcrRegs -[x9]
; GC ptr vars -{V62}
ldr w6, [fp, #0xD4] // [V13 loc3]
@@ -270,8 +270,8 @@ G_M36482_IG11: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=7E0
; GC ptr vars -{V12}
b G_M36482_IG20
;; size=4 bbWeight=3.96 PerfScore 3.96
-G_M36482_IG12: ; bbWeight=1.98, gcVars=0000000000000080 {V62}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, nogc
- ; GC ptr vars +{V07 V62}
+G_M36482_IG12: ; bbWeight=1.98, gcVars=0000000000000100 {V62}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, nogc
+ ; GC ptr vars +{V08 V62}
ldr x9, [fp, #0x20] // [V62 tmp41]
; gcrRegs +[x9]
ldp x0, x1, [x9, #0x10]
@@ -284,7 +284,7 @@ G_M36482_IG13: ; bbWeight=1.98, isz, extend
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
- ; GC ptr vars -{V07 V62}
+ ; GC ptr vars -{V08 V62}
blr x3
; gcrRegs -[x9]
; gcr arg pop 0
@@ -383,7 +383,7 @@ G_M36482_IG17: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x2
add x0, x4, w0, UXTW
mov w3, w3
cmp x0, x3
- bhi G_M36482_IG68
+ bhi G_M36482_IG69
add x2, x2, x4
str x2, [fp, #0x28] // [V39 tmp18]
; GC ptr vars +{V39}
@@ -476,7 +476,7 @@ G_M36482_IG22: ; bbWeight=3.96, isz, extend
ldr w1, [fp, #0xEC] // [V10 loc0]
cmn w1, #1
ccmp w20, #0, nzc, eq
- ble G_M36482_IG29
+ ble G_M36482_IG27
;; size=100 bbWeight=3.96 PerfScore 136.62
G_M36482_IG23: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
ldr x2, [fp, #0x70] // [V92 cse3]
@@ -515,13 +515,13 @@ G_M36482_IG23: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x2
mov x4, x0
; gcrRegs +[x4]
mov w1, wzr
- cbz x21, G_M36482_IG27
+ cbz x21, G_M36482_IG28
;; size=104 bbWeight=1.98 PerfScore 68.31
G_M36482_IG24: ; bbWeight=0.99, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
; gcrRegs -[x0]
ldr w3, [x21, #0x08]
cmp w3, w20
- blt G_M36482_IG27
+ blt G_M36482_IG28
;; size=12 bbWeight=0.99 PerfScore 4.46
G_M36482_IG25: ; bbWeight=15.68, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
str w1, [fp, #0xBC] // [V20 loc10]
@@ -544,7 +544,7 @@ G_M36482_IG25: ; bbWeight=15.68, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x2
; gcrRegs -[x0-x2 x4]
; byrRegs -[x3]
; gcr arg pop 0
- cbnz w0, G_M36482_IG28
+ cbnz w0, G_M36482_IG29
ldr w1, [fp, #0xBC] // [V20 loc10]
add w1, w1, #1
cmp w1, w20
@@ -555,14 +555,19 @@ G_M36482_IG25: ; bbWeight=15.68, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x2
G_M36482_IG26: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref
; gcrRegs -[x4]
; GC ptr vars -{V17 V18 V19}
- b G_M36482_IG29
- ;; size=4 bbWeight=3.96 PerfScore 3.96
-G_M36482_IG27: ; bbWeight=0.16, gcVars=0000000000060000 {V17 V18}, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
+ ldr w4, [fp, #0xEC] // [V10 loc0]
+ b G_M36482_IG30
+ ;; size=8 bbWeight=3.96 PerfScore 11.88
+G_M36482_IG27: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref
+ ldr w4, [fp, #0xEC] // [V10 loc0]
+ b G_M36482_IG30
+ ;; size=8 bbWeight=1.98 PerfScore 5.94
+G_M36482_IG28: ; bbWeight=0.16, gcVars=0000000000060000 {V17 V18}, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
; gcrRegs +[x4]
; GC ptr vars +{V17 V18}
ldr w3, [x21, #0x08]
cmp w1, w3
- bhs G_M36482_IG67
+ bhs G_M36482_IG68
str w1, [fp, #0xBC] // [V20 loc10]
ubfiz x3, x1, #6, #32
add x3, x3, #16
@@ -583,64 +588,63 @@ G_M36482_IG27: ; bbWeight=0.16, gcVars=0000000000060000 {V17 V18}, gcrefR
; gcrRegs -[x0-x2 x4]
; byrRegs -[x3]
; gcr arg pop 0
- cbnz w0, G_M36482_IG28
+ cbnz w0, G_M36482_IG29
ldr w1, [fp, #0xBC] // [V20 loc10]
add w1, w1, #1
cmp w1, w20
ldr x4, [fp, #0x30] // [V19 loc9]
; gcrRegs +[x4]
- blt G_M36482_IG27
- b G_M36482_IG29
- ;; size=92 bbWeight=0.16 PerfScore 4.12
-G_M36482_IG28: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref
+ blt G_M36482_IG28
+ ldr w4, [fp, #0xEC] // [V10 loc0]
; gcrRegs -[x4]
+ b G_M36482_IG30
+ ;; size=96 bbWeight=0.16 PerfScore 4.44
+G_M36482_IG29: ; bbWeight=7.84, gcVars=0000000000000000 {}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref
; GC ptr vars -{V17 V18 V19}
ldr w1, [fp, #0xBC] // [V20 loc10]
sxtw w4, w1
- str w4, [fp, #0xEC] // [V10 loc0]
- ;; size=12 bbWeight=1.98 PerfScore 6.93
-G_M36482_IG29: ; bbWeight=3.96, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
- ldr w1, [fp, #0xEC] // [V10 loc0]
- cmn w1, #1
- beq G_M36482_IG34
- ;; size=12 bbWeight=3.96 PerfScore 13.86
-G_M36482_IG30: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
- ldr x4, [fp, #0xD1FFAB1E] // [V08 arg8]
- ; gcrRegs +[x4]
- ldr w5, [x4, #0x08]
- cmp w1, w5
- bhs G_M36482_IG67
- str x4, [fp, #0xD1FFAB1E] // [V08 arg8]
- add x6, x4, #16
- ; byrRegs +[x6]
- mov w5, w1
- ldr x15, [x6, x5, LSL #3]
+ ;; size=8 bbWeight=7.84 PerfScore 19.60
+G_M36482_IG30: ; bbWeight=3.96, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
+ cmn w4, #1
+ beq G_M36482_IG35
+ ;; size=8 bbWeight=3.96 PerfScore 5.94
+G_M36482_IG31: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
+ ldr x5, [fp, #0xD1FFAB1E] // [V08 arg8]
+ ; gcrRegs +[x5]
+ ldr w6, [x5, #0x08]
+ cmp w4, w6
+ bhs G_M36482_IG68
+ str x5, [fp, #0xD1FFAB1E] // [V08 arg8]
+ add x7, x5, #16
+ ; byrRegs +[x7]
...
+4 (+0.30%) : 16676.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>cDisplayClass24_0+<b0>d[ubyte]:MoveNext():this (Tier1-OSR)
@@ -9,29 +9,29 @@
; 0 inlinees with PGO data; 27 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 14, 77 ) byref -> [fp+0xF0] this EH-live single-def tier0-frame
+; V00 this [V00,T02] ( 14, 18 ) byref -> [fp+0xF0] this EH-live single-def tier0-frame
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 loc1 [V02,T09] ( 3, 20 ) ref -> x19 class-hnd exact <<unknown class>>
-; V03 loc2 [V03 ] ( 4, 13 ) struct (16) [fp+0xD0] do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op tier0-frame <System.Threading.Tasks.ValueTask`1[ubyte]>
-; V04 loc3 [V04,T18] ( 1, 1 ) struct ( 8) [fp+0xC8] do-not-enreg[S] ld-addr-op tier0-frame <System.Threading.CancellationToken>
-; V05 loc4 [V05,T13] ( 3, 12 ) ubyte -> x21
+; V02 loc1 [V02,T03] ( 3, 17 ) ref -> x19 class-hnd exact <<unknown class>>
+; V03 loc2 [V03 ] ( 4, 4 ) struct (16) [fp+0xD0] do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op tier0-frame <System.Threading.Tasks.ValueTask`1[ubyte]>
+; V04 loc3 [V04,T21] ( 1, 1 ) struct ( 8) [fp+0xC8] do-not-enreg[S] ld-addr-op tier0-frame <System.Threading.CancellationToken>
+; V05 loc4 [V05,T16] ( 3, 3 ) ubyte -> x21
;* V06 loc5 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc6 [V07 ] ( 9, 27 ) struct (16) [fp+0xB0] do-not-enreg[XSF] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
-; V08 loc7 [V08 ] ( 4, 77 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <ubyte[]>
+; V07 loc6 [V07 ] ( 9, 9 ) struct (16) [fp+0xB0] do-not-enreg[XSF] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
+; V08 loc7 [V08 ] ( 4, 21 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <ubyte[]>
;* V09 loc8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V12 tmp2 [V12,T07] ( 3, 24 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
+; V12 tmp2 [V12,T09] ( 3, 6 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[ubyte]>
-; V14 tmp4 [V14,T28] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;* V15 tmp5 [V15,T27] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
+; V14 tmp4 [V14,T27] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;* V15 tmp5 [V15,T26] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]>
;* V18 tmp8 [V18 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
-;* V19 tmp9 [V19,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp10 [V20,T04] ( 7, 28 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V21 tmp11 [V21,T14] ( 2, 8 ) int -> x0
-; V22 tmp12 [V22,T11] ( 3, 12 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
+;* V19 tmp9 [V19,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V20 tmp10 [V20,T05] ( 7, 7 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V21 tmp11 [V21,T17] ( 2, 2 ) int -> x0
+; V22 tmp12 [V22,T14] ( 3, 3 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -39,38 +39,37 @@
;* V27 tmp17 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp18 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V30 tmp20 [V30,T10] ( 4, 16 ) ubyte -> x21 "Inline return value spill temp"
-; V31 tmp21 [V31,T05] ( 7, 28 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V32 tmp22 [V32,T15] ( 2, 8 ) int -> x0
-; V33 tmp23 [V33,T08] ( 5, 20 ) ref -> x21 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
+; V30 tmp20 [V30,T11] ( 4, 4 ) ubyte -> x21 "Inline return value spill temp"
+; V31 tmp21 [V31,T06] ( 7, 7 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V32 tmp22 [V32,T18] ( 2, 2 ) int -> x0
+; V33 tmp23 [V33,T07] ( 6, 6 ) ref -> x21 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
;* V34 tmp24 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V35 tmp25 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp26 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp27 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp28 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V39 tmp29 [V39,T02] ( 7, 48 ) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]>
+; V39 tmp29 [V39,T04] ( 7, 12 ) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]>
;* V40 tmp30 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V41 tmp31 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V42 tmp32 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V43 tmp33 [V43,T16] ( 3, 8 ) ref -> x22 class-hnd "Inline stloc first use temp" <System.AggregateException>
+; V43 tmp33 [V43,T19] ( 3, 2 ) ref -> x22 class-hnd "Inline stloc first use temp" <System.AggregateException>
;* V44 tmp34 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V45 tmp35 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp36 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp37 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp38 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]>
-; V49 tmp39 [V49,T17] ( 3, 6 ) byref -> x14 single-def "Inlining Arg"
-;* V50 tmp40 [V50,T25] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
-; V51 tmp41 [V51,T19] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
-;* V52 tmp42 [V52,T21] ( 0, 0 ) ref -> zero-ref "field V40._source (fldOffset=0x0)" P-INDEP
+; V49 tmp39 [V49,T10] ( 3, 6 ) byref -> x14 single-def "Inlining Arg"
+;* V50 tmp40 [V50,T24] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
+; V51 tmp41 [V51,T12] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
+;* V52 tmp42 [V52,T22] ( 0, 0 ) ref -> zero-ref "field V40._source (fldOffset=0x0)" P-INDEP
;* V53 tmp43 [V53 ] ( 0, 0 ) ref -> zero-ref "field V42._source (fldOffset=0x0)" P-INDEP
-; V54 tmp44 [V54,T00] ( 3,384 ) ref -> x2 "argument with side effect"
-; V55 tmp45 [V55,T03] ( 3, 48 ) ref -> x0 "argument with side effect"
-; V56 tmp46 [V56,T20] ( 2, 4 ) ref -> x1 "argument with side effect"
-; V57 PSPSym [V57,T26] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V58 cse0 [V58,T06] ( 6, 24 ) byref -> x21 "CSE - aggressive"
-; V59 cse1 [V59,T12] ( 3, 12 ) byref -> x20 "CSE - aggressive"
-; V60 cse2 [V60,T24] ( 2, 2 ) byref -> x14 "CSE - moderate"
-; V61 cse3 [V61,T23] ( 3, 3 ) ref -> x0 "CSE - moderate"
+; V54 tmp44 [V54,T00] ( 3, 48 ) ref -> x2 "argument with side effect"
+; V55 tmp45 [V55,T01] ( 3, 48 ) ref -> x0 "argument with side effect"
+; V56 tmp46 [V56,T13] ( 2, 4 ) ref -> x1 "argument with side effect"
+; V57 PSPSym [V57,T25] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V58 cse0 [V58,T08] ( 6, 6 ) byref -> x21 "CSE - aggressive"
+; V59 cse1 [V59,T20] ( 2, 2 ) byref -> x14 "CSE - moderate"
+; V60 cse2 [V60,T15] ( 3, 3 ) ref -> x0 "CSE - moderate"
;
; Lcl frame size = 16
@@ -86,11 +85,11 @@ G_M63909_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
ldr x19, [fp, #0xE0]
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 9.00
-G_M63909_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
- ; GC ptr vars +{V00}
- b G_M63909_IG24
+G_M63909_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
+ ; GC ptr vars +{V00 V02}
+ b G_M63909_IG23
;; size=4 bbWeight=1 PerfScore 1.00
-G_M63909_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M63909_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr x0, [fp, #0xF0] // [V00 this]
; byrRegs +[x0]
@@ -111,14 +110,14 @@ G_M63909_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
ldrb w1, [x1, #0x1D]
; gcrRegs -[x1]
- cbz w1, G_M63909_IG18
- ;; size=48 bbWeight=4 PerfScore 96.00
-G_M63909_IG04: ; bbWeight=4, nogc, extend
+ cbz w1, G_M63909_IG17
+ ;; size=48 bbWeight=1 PerfScore 24.00
+G_M63909_IG04: ; bbWeight=1, nogc, extend
ldp x0, x1, [fp, #0xD0]
; gcrRegs -[x0]
stp x0, x1, [fp, #0xB0]
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M63909_IG05: ; bbWeight=4, isz, extend
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M63909_IG05: ; bbWeight=1, isz, extend
ldr x20, [fp, #0xB0] // [V07 loc6]
; gcrRegs +[x20]
cbz x20, G_M63909_IG06
@@ -158,11 +157,11 @@ G_M63909_IG05: ; bbWeight=4, isz, extend
blr x2
; gcr arg pop 0
b G_M63909_IG07
- ;; size=116 bbWeight=4 PerfScore 88.00
-G_M63909_IG06: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M63909_IG11
- ;; size=4 bbWeight=4 PerfScore 4.00
-G_M63909_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=116 bbWeight=1 PerfScore 22.00
+G_M63909_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M63909_IG10
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M63909_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -171,7 +170,7 @@ G_M63909_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbz x0, G_M63909_IG09
+ cbz x0, G_M63909_IG08
add x0, x0, #52
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -179,14 +178,10 @@ G_M63909_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; byrRegs -[x0]
mov w1, #0xD1FFAB1E
tst w0, w1
- bne G_M63909_IG11
- ;; size=44 bbWeight=4 PerfScore 38.00
-G_M63909_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- b G_M63909_IG10
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M63909_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19-x20]
+ bne G_M63909_IG10
+ b G_M63909_IG09
+ ;; size=48 bbWeight=1 PerfScore 10.50
+G_M63909_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
ldrsh w1, [fp, #0xB8] // [V07 loc6+0x08]
@@ -197,9 +192,9 @@ G_M63909_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0 x20]
; gcr arg pop 0
- cbnz w0, G_M63909_IG11
- ;; size=32 bbWeight=4 PerfScore 36.00
-G_M63909_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M63909_IG10
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M63909_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
ldr x0, [fp, #0xF0] // [V00 this]
; byrRegs +[x0]
@@ -232,13 +227,13 @@ G_M63909_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M63909_IG31
+ b G_M63909_IG29
;; size=84 bbWeight=1 PerfScore 22.50
-G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M63909_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19]
ldr x20, [fp, #0xB0] // [V07 loc6]
; gcrRegs +[x20]
- cbz x20, G_M63909_IG12
+ cbz x20, G_M63909_IG11
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -247,7 +242,7 @@ G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M63909_IG12
+ cbnz x0, G_M63909_IG11
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -261,7 +256,7 @@ G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cset x0, ne
; gcrRegs -[x0]
tst w0, #255
- bne G_M63909_IG13
+ bne G_M63909_IG12
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -274,14 +269,14 @@ G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x2]
blr x2
; gcr arg pop 0
- b G_M63909_IG13
- ;; size=116 bbWeight=4 PerfScore 88.00
-G_M63909_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz x20, G_M63909_IG13
+ b G_M63909_IG12
+ ;; size=116 bbWeight=1 PerfScore 22.00
+G_M63909_IG11: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M63909_IG12
ldrb w21, [fp, #0xBA] // [V07 loc6+0x0a]
- b G_M63909_IG17
- ;; size=12 bbWeight=4 PerfScore 16.00
-G_M63909_IG13: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ b G_M63909_IG16
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M63909_IG12: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20
; gcrRegs +[x1]
...
coreclr_tests.run.linux.arm64.checked.mch
-20 (-9.62%) : 336017.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,120 +11,112 @@
;
; V00 arg0 [V00,T00] ( 8, 5.24) long -> x0 single-def
; V01 arg1 [V01,T01] ( 7, 4.99) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 2.99) long -> x19
-; V03 loc1 [V03,T03] ( 10, 4.01) long -> x2
-; V04 loc2 [V04,T02] ( 10, 4.86) long -> x3
+; V02 loc0 [V02,T04] ( 4, 2.99) long -> x2
+; V03 loc1 [V03,T03] ( 10, 4.01) long -> x3
+; V04 loc2 [V04,T02] ( 10, 4.86) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG07
+ cbz x1, G_M24157_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M24157_IG03: ; bbWeight=0.98, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG13
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG12
;; size=12 bbWeight=0.98 PerfScore 6.88
G_M24157_IG04: ; bbWeight=0.98, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG16
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG11
;; size=12 bbWeight=0.98 PerfScore 4.42
G_M24157_IG05: ; bbWeight=1.27, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG07
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG16
;; size=12 bbWeight=1.27 PerfScore 5.71
G_M24157_IG06: ; bbWeight=1.27, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x08]
- cmp x4, x0
- bne G_M24157_IG09
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG16
;; size=12 bbWeight=1.27 PerfScore 5.71
-G_M24157_IG07: ; bbWeight=0.96, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- mov x0, x1
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M24157_IG08: ; bbWeight=0.96, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.96 PerfScore 3.85
-G_M24157_IG09: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG07
+G_M24157_IG07: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG16
;; size=12 bbWeight=0.33 PerfScore 1.47
-G_M24157_IG10: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG07
+G_M24157_IG08: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG16
;; size=12 bbWeight=0.33 PerfScore 1.47
-G_M24157_IG11: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+G_M24157_IG09: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG05
;; size=16 bbWeight=0.33 PerfScore 0.82
-G_M24157_IG12: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG16
+G_M24157_IG10: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x3, G_M24157_IG12
;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M24157_IG13: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG11: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG16
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG11
+ ;; size=28 bbWeight=0.01 PerfScore 0.08
+G_M24157_IG12: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- beq G_M24157_IG18
+ beq G_M24157_IG15
;; size=16 bbWeight=0.04 PerfScore 0.21
-G_M24157_IG14: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG13: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.04 PerfScore 0.16
-G_M24157_IG15: ; bbWeight=0.04, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG14: ; bbWeight=0.04, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.04 PerfScore 0.15
-G_M24157_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG07
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG16
- ;; size=28 bbWeight=0.01 PerfScore 0.08
-G_M24157_IG17: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG13
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M24157_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.04 PerfScore 0.07
+G_M24157_IG15: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
- b G_M24157_IG07
- ;; size=8 bbWeight=0.00 PerfScore 0.01
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M24157_IG16: ; bbWeight=0.96, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.96 PerfScore 0.48
+G_M24157_IG17: ; bbWeight=0.96, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.96 PerfScore 1.93
-; Total bytes of code 208, prolog size 12, PerfScore 34.97, instruction count 52, allocated bytes for code 208 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 31.96, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -135,10 +127,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-16 (-7.84%) : 319285.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -10,112 +10,105 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 8, 19.30) long -> x0 single-def
-; V01 arg1 [V01,T03] ( 7, 5.33) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.73) long -> x19
-; V03 loc1 [V03,T02] ( 10, 16.63) long -> x2
-; V04 loc2 [V04,T00] ( 10, 26.50) long -> x3
+; V01 arg1 [V01,T03] ( 7, 9.53) ref -> x1 class-hnd <System.Object>
+; V02 loc0 [V02,T04] ( 4, 3.73) long -> x2
+; V03 loc1 [V03,T02] ( 10, 16.63) long -> x3
+; V04 loc2 [V04,T00] ( 10, 26.50) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG10
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG06
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG12
+ cbz x1, G_M24157_IG12
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG08
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG06
;; size=28 bbWeight=1 PerfScore 12.50
G_M24157_IG03: ; bbWeight=4.23, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG10
- ldr x4, [x3, #0x08]
- cmp x4, x0
- beq G_M24157_IG10
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG12
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG12
;; size=24 bbWeight=4.23 PerfScore 38.10
G_M24157_IG04: ; bbWeight=3.97, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG10
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG10
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG12
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG12
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG03
;; size=40 bbWeight=3.97 PerfScore 45.62
G_M24157_IG05: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG12
+ cbz x3, G_M24157_IG08
;; size=4 bbWeight=0.73 PerfScore 0.73
-G_M24157_IG06: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG06: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG12
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M24157_IG07: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG06
+ ;; size=16 bbWeight=0.33 PerfScore 0.83
+G_M24157_IG08: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- beq G_M24157_IG09
+ beq G_M24157_IG11
;; size=16 bbWeight=0.73 PerfScore 3.67
-G_M24157_IG07: ; bbWeight=0.40, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG09: ; bbWeight=0.40, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.40 PerfScore 1.80
-G_M24157_IG08: ; bbWeight=0.40, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG10: ; bbWeight=0.40, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.40 PerfScore 1.60
-G_M24157_IG09: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.40 PerfScore 0.80
+G_M24157_IG11: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0.33 PerfScore 0.17
-G_M24157_IG10: ; bbWeight=0.60, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG12: ; bbWeight=4.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.60 PerfScore 0.30
-G_M24157_IG11: ; bbWeight=0.60, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=4.80 PerfScore 2.40
+G_M24157_IG13: ; bbWeight=4.80, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.60 PerfScore 2.40
-G_M24157_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG10
- ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M24157_IG13: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG12
- ;; size=16 bbWeight=0.33 PerfScore 0.83
-G_M24157_IG14: ; bbWeight=0.17, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG06
- ;; size=4 bbWeight=0.17 PerfScore 0.17
+ ;; size=8 bbWeight=4.80 PerfScore 9.59
-; Total bytes of code 204, prolog size 12, PerfScore 112.63, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 119.96, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -126,10 +119,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-16 (-7.84%) : 319429.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -10,112 +10,106 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 8, 18.33) long -> x0 single-def
-; V01 arg1 [V01,T03] ( 7, 5.36) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.73) long -> x19
-; V03 loc1 [V03,T02] ( 10, 16.00) long -> x2
-; V04 loc2 [V04,T00] ( 10, 25.15) long -> x3
+; V01 arg1 [V01,T03] ( 7, 9.94) ref -> x1 class-hnd <System.Object>
+; V02 loc0 [V02,T04] ( 4, 3.73) long -> x2
+; V03 loc1 [V03,T02] ( 10, 16.00) long -> x3
+; V04 loc2 [V04,T00] ( 10, 25.15) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG08
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG06
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG10
+ cbz x1, G_M24157_IG10
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG08
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG06
;; size=28 bbWeight=1 PerfScore 12.50
G_M24157_IG03: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG08
- ldr x4, [x3, #0x08]
- cmp x4, x0
- beq G_M24157_IG08
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG10
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG10
;; size=24 bbWeight=4 PerfScore 36.00
G_M24157_IG04: ; bbWeight=3.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG08
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG08
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG10
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG10
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG03
;; size=40 bbWeight=3.73 PerfScore 42.86
G_M24157_IG05: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG10
+ cbz x3, G_M24157_IG08
;; size=4 bbWeight=0.73 PerfScore 0.73
-G_M24157_IG06: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG06: ; bbWeight=0.52, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG10
+ ;; size=12 bbWeight=0.52 PerfScore 2.32
+G_M24157_IG07: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG06
+ ;; size=16 bbWeight=0.36 PerfScore 0.91
+G_M24157_IG08: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- bne G_M24157_IG13
+ bne G_M24157_IG12
;; size=16 bbWeight=0.73 PerfScore 3.64
-G_M24157_IG07: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0.36 PerfScore 0.18
-G_M24157_IG08: ; bbWeight=0.64, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG10: ; bbWeight=5.22, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.64 PerfScore 0.32
-G_M24157_IG09: ; bbWeight=0.64, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=5.22 PerfScore 2.61
+G_M24157_IG11: ; bbWeight=5.22, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.64 PerfScore 2.55
-G_M24157_IG10: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=5.22 PerfScore 10.43
+G_M24157_IG12: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG08
- ;; size=12 bbWeight=0.52 PerfScore 2.32
-G_M24157_IG11: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG10
- ;; size=16 bbWeight=0.36 PerfScore 0.91
-G_M24157_IG12: ; bbWeight=0.18, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG06
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M24157_IG13: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.36 PerfScore 1.64
-G_M24157_IG14: ; bbWeight=0.36, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG13: ; bbWeight=0.36, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.36 PerfScore 1.45
+ ;; size=8 bbWeight=0.36 PerfScore 0.73
-; Total bytes of code 204, prolog size 12, PerfScore 107.77, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 116.04, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -126,10 +120,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
+24 (+4.69%) : 294112.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 6, 8 ) byref -> x19 this single-def
+; V00 this [V00,T03] ( 6, 8.98) byref -> x19 this single-def
; V01 loc0 [V01,T04] ( 6, 8 ) int -> x21 single-def
-; V02 loc1 [V02,T08] ( 6, 3.58) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
+; V02 loc1 [V02,T09] ( 6, 3.08) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Reflection.Metadata.SignatureHeader>
; V04 loc3 [V04,T00] ( 10, 17.04) int -> x22
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -22,7 +22,7 @@
; V11 tmp6 [V11,T07] ( 4, 4 ) long -> x0 single-def "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V13 tmp8 [V13,T13] ( 2, 1 ) ubyte -> x1 "Inline return value spill temp"
-; V14 tmp9 [V14,T09] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
+; V14 tmp9 [V14,T08] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
; V15 tmp10 [V15,T02] ( 6, 12 ) byref -> x20 single-def "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp"
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
@@ -52,7 +52,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
; byrRegs +[x1]
ldp x2, x0, [x1, #0x10]
cmp x0, x2
- beq G_M22286_IG12
+ beq G_M22286_IG15
add x2, x0, #1
str x2, [x1, #0x18]
ldrb w1, [x0]
@@ -60,12 +60,12 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
and w1, w1, #15
cmp w1, #5
ccmp w1, #9, z, gt
- beq G_M22286_IG13
+ beq G_M22286_IG16
;; size=48 bbWeight=1 PerfScore 13.50
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
uxtb w1, w1
cmp w1, #10
- bne G_M22286_IG13
+ bne G_M22286_IG16
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
ldr x1, [x20, #0x18]
@@ -87,9 +87,9 @@ G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
str x1, [x20, #0x18]
movn w1, #0xD1FFAB1E LSL #16
cmp w21, w1
- beq G_M22286_IG14
+ beq G_M22286_IG17
cmp w21, #0
- ble G_M22286_IG15
+ ble G_M22286_IG18
sxtw x1, w21
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -130,10 +130,10 @@ G_M22286_IG06: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=880000
cmp w22, w21
blt G_M22286_IG06
;; size=48 bbWeight=3.96 PerfScore 41.58
-G_M22286_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG07: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
; byrRegs -[x23]
b G_M22286_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
mov x0, x19
; byrRegs +[x0]
@@ -146,7 +146,7 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
; byrRegs -[x0]
ldr w14, [x20, #0x08]
cmp w22, w14
- bhs G_M22286_IG11
+ bhs G_M22286_IG14
add x23, x20, #16
; byrRegs +[x23]
add x14, x23, x22, LSL #3
@@ -160,25 +160,39 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
cmp w22, w21
blt G_M22286_IG08
;; size=64 bbWeight=0.04 PerfScore 0.62
-G_M22286_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG09: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cmp x0, #0
- csel x0, xzr, x20, ne
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M22286_IG10: ; bbWeight=1, epilog, nogc, extend
+ cbnz x0, G_M22286_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 7.92
+G_M22286_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ; byrRegs -[x19]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG11: ; 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
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
- ; byrRegs -[x19]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG13: ; 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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:OutOfBounds()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -186,7 +200,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -205,7 +219,7 @@ G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=48 bbWeight=0 PerfScore 0.00
-G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:InvalidCompressedInteger()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -213,7 +227,7 @@ G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -234,22 +248,25 @@ G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 512, prolog size 24, PerfScore 106.45, instruction count 128, allocated bytes for code 512 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
+; Total bytes of code 536, prolog size 24, PerfScore 111.85, instruction count 134, allocated bytes for code 536 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 128 (0x00080) Actual length = 512 (0x000200)
+ Function Length : 134 (0x00086) Actual length = 536 (0x000218)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+12 (+6.25%) : 337180.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,7 +11,7 @@
;
; V00 arg0 [V00,T02] ( 8, 5.47) long -> x0 single-def
; V01 arg1 [V01,T00] ( 7, 6.00) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 4.00) long -> x2
+; V02 loc0 [V02,T04] ( 5, 4.00) long -> x2
; V03 loc1 [V03,T01] ( 10, 7.55) long -> x3
; V04 loc2 [V04,T03] ( 10, 7.02) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -24,78 +24,85 @@ G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG07
+ cbz x1, G_M24157_IG08
ldr x2, [x1]
ldrh w3, [x2, #0x0E]
cbz x3, G_M24157_IG06
ldr x4, [x2, #0x40]
cmp x3, #4
- blt G_M24157_IG09
+ blt G_M24157_IG10
;; size=28 bbWeight=1 PerfScore 12.50
G_M24157_IG03: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x5, [x4]
cmp x5, x0
- beq G_M24157_IG07
+ beq G_M24157_IG08
ldr x5, [x4, #0x08]
cmp x5, x0
- beq G_M24157_IG07
+ beq G_M24157_IG08
;; size=24 bbWeight=0.73 PerfScore 6.61
G_M24157_IG04: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x5, [x4, #0x10]
cmp x5, x0
- beq G_M24157_IG07
+ beq G_M24157_IG08
ldr x5, [x4, #0x18]
cmp x5, x0
- beq G_M24157_IG07
+ beq G_M24157_IG08
add x4, x4, #32
sub x3, x3, #4
cmp x3, #4
bge G_M24157_IG03
;; size=40 bbWeight=0.73 PerfScore 8.43
G_M24157_IG05: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x3, G_M24157_IG09
+ cbnz x3, G_M24157_IG10
;; size=4 bbWeight=0.73 PerfScore 0.73
-G_M24157_IG06: ; bbWeight=1.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG06: ; bbWeight=0.59, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- bne G_M24157_IG11
+ bne G_M24157_IG12
+ ;; size=16 bbWeight=0.59 PerfScore 2.97
+G_M24157_IG07: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
mov x1, xzr
- ;; size=20 bbWeight=1.00 PerfScore 5.49
-G_M24157_IG07: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x1]
+ ;; size=4 bbWeight=1.00 PerfScore 0.50
+G_M24157_IG08: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
-G_M24157_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M24157_IG09: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M24157_IG09: ; bbWeight=0.54, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M24157_IG10: ; bbWeight=0.54, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x5, [x4]
cmp x5, x0
- beq G_M24157_IG07
+ beq G_M24157_IG08
add x4, x4, #8
sub x3, x3, #1
cmp x3, #0
- bgt G_M24157_IG09
+ bgt G_M24157_IG10
;; size=28 bbWeight=0.54 PerfScore 3.78
-G_M24157_IG10: ; bbWeight=0.40, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG06
- ;; size=4 bbWeight=0.40 PerfScore 0.40
-G_M24157_IG11: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG11: ; bbWeight=0.40, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
+ mov w3, #0xD1FFAB1E
+ tst w2, w3
+ beq G_M24157_IG07
+ ;; size=16 bbWeight=0.40 PerfScore 2.02
+G_M24157_IG12: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M24157_IG12: ; bbWeight=0, epilog, nogc, extend
+G_M24157_IG13: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 8, PerfScore 41.94, instruction count 48, allocated bytes for code 192 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 204, prolog size 8, PerfScore 41.54, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -106,7 +113,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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)
+28 (+6.54%) : 203916.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
@@ -7,16 +7,16 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T06] ( 7, 4.08) ref -> x19 class-hnd single-def <double[][]>
-; V01 loc1 [V01,T07] ( 4, 4 ) ref -> x20 class-hnd single-def <double[][]>
-; V02 loc2 [V02,T02] ( 15, 34.16) int -> x21
+; V00 loc0 [V00,T07] ( 7, 5.06) ref -> x19 class-hnd single-def <double[][]>
+; V01 loc1 [V01,T05] ( 4, 6.94) ref -> x20 class-hnd single-def <double[][]>
+; V02 loc2 [V02,T02] ( 15, 45.80) int -> x21
; V03 loc3 [V03,T00] ( 19, 84.32) int -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T01] ( 8, 64.64) ref -> registers "arr expr"
-; V06 tmp2 [V06,T04] ( 3, 6 ) ref -> x0 single-def "arr expr"
+; V06 tmp2 [V06,T04] ( 3, 11.88) ref -> x0 single-def "arr expr"
; V07 cse0 [V07,T03] ( 6, 18.97) ref -> x2 multi-def "CSE - aggressive"
; V08 cse1 [V08,T09] ( 5, 1.85) byref -> x23 hoist multi-def "CSE - aggressive"
-; V09 cse2 [V09,T05] ( 5, 5.16) int -> x22 hoist multi-def "CSE - aggressive"
+; V09 cse2 [V09,T06] ( 5, 5.16) int -> x22 hoist multi-def "CSE - aggressive"
; V10 cse3 [V10,T08] ( 4, 2.15) long -> x1 hoist multi-def "CSE - aggressive"
; V11 cse4 [V11,T10] ( 2, 0.20) long -> x1 hoist "CSE - conservative"
;
@@ -91,11 +91,11 @@ G_M31008_IG06: ; bbWeight=15.68, gcrefRegs=180004 {x2 x19 x20}, byrefRegs
cmp w0, #40
ble G_M31008_IG06
;; size=32 bbWeight=15.68 PerfScore 133.29
-G_M31008_IG07: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+G_M31008_IG07: ; bbWeight=7.84, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
; gcrRegs -[x2]
; byrRegs -[x1]
b G_M31008_IG10
- ;; size=4 bbWeight=3.96 PerfScore 3.96
+ ;; size=4 bbWeight=7.84 PerfScore 7.84
G_M31008_IG08: ; bbWeight=0.01, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
mov w1, w21
;; size=4 bbWeight=0.01 PerfScore 0.00
@@ -104,7 +104,7 @@ G_M31008_IG09: ; bbWeight=0.16, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; gcrRegs +[x2]
ldr w3, [x2, #0x08]
cmp w0, w3
- bhs G_M31008_IG17
+ bhs G_M31008_IG20
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
@@ -115,16 +115,16 @@ G_M31008_IG09: ; bbWeight=0.16, gcrefRegs=180000 {x19 x20}, byrefRegs=800
cmp w0, #40
ble G_M31008_IG09
;; size=44 bbWeight=0.16 PerfScore 2.46
-G_M31008_IG10: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M31008_IG10: ; bbWeight=7.84, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x2]
add w21, w21, #1
cmp w21, #40
ble G_M31008_IG04
- ;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M31008_IG11: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=7.84 PerfScore 15.68
+G_M31008_IG11: ; bbWeight=1.98, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x23]
b G_M31008_IG15
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M31008_IG12: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w0, #1
ldr w22, [x19, #0x08]
@@ -134,12 +134,12 @@ G_M31008_IG12: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
;; size=16 bbWeight=0.04 PerfScore 0.18
G_M31008_IG13: ; bbWeight=0.16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w21, w22
- bhs G_M31008_IG17
+ bhs G_M31008_IG20
ldr x2, [x23, x1, LSL #3]
; gcrRegs +[x2]
ldr w3, [x2, #0x08]
cmp w0, w3
- bhs G_M31008_IG17
+ bhs G_M31008_IG20
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
@@ -156,7 +156,7 @@ G_M31008_IG14: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
cmp w21, #40
ble G_M31008_IG12
;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M31008_IG15: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M31008_IG15: ; bbWeight=1.98, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
mov x1, x20
@@ -171,27 +171,39 @@ G_M31008_IG15: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcr arg pop 0
ldr w0, [x20, #0x08]
cmp w0, #1
- bls G_M31008_IG17
+ bls G_M31008_IG20
ldr x0, [x20, #0x18]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #1
- bls G_M31008_IG17
+ bls G_M31008_IG20
ldr d16, [x0, #0x18]
ldr d17, [@RWD00]
fcmp d16, d17
- cset x0, eq
- ; gcrRegs -[x0]
- ;; size=76 bbWeight=1 PerfScore 25.50
-G_M31008_IG16: ; bbWeight=1, epilog, nogc, extend
+ bne G_M31008_IG18
+ ;; size=76 bbWeight=1.98 PerfScore 51.48
+G_M31008_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x20]
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M31008_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
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M31008_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x20]
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M31008_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M31008_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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M31008_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
@@ -199,22 +211,25 @@ G_M31008_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
RWD00 dq 40D7430000000000h ; 23820
-; Total bytes of code 428, prolog size 20, PerfScore 222.44, instruction count 107, allocated bytes for code 428 (MethodHash=e2b186df) for method Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
+; Total bytes of code 456, prolog size 20, PerfScore 261.55, instruction count 114, allocated bytes for code 456 (MethodHash=e2b186df) for method Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
+ Function Length : 114 (0x00072) Actual length = 456 (0x0001c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.crossgen2.linux.arm64.checked.mch
-20 (-2.23%) : 24510.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
@@ -9,121 +9,117 @@
; 0 inlinees with PGO data; 8 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 11, 6.50) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T08] ( 11, 9.46) ref -> [fp+0x20] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T12] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T11] ( 8, 7.02) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
; V04 loc2 [V04,T20] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
-; V05 loc3 [V05,T00] ( 11, 17.08) int -> x22
-; V06 loc4 [V06,T04] ( 6, 12 ) ref -> x2 class-hnd <System.Type>
+; V05 loc3 [V05,T00] ( 11, 17.08) int -> x23
+; V06 loc4 [V06,T04] ( 6, 12 ) ref -> x1 class-hnd <System.Type>
; V07 loc5 [V07,T05] ( 6, 12 ) ref -> x0 class-hnd <System.RuntimeType>
-; V08 loc6 [V08,T19] ( 6, 1.83) ref -> x0 class-hnd exact <System.Type[]>
+; V08 loc6 [V08,T14] ( 6, 3.31) ref -> x0 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x1
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V12 tmp1 [V12,T02] ( 4, 16 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Type>
;* V13 tmp2 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeMethodHandleInternal>
-; V14 tmp3 [V14,T14] ( 2, 2 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
+; V14 tmp3 [V14,T16] ( 2, 2 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
;* V15 tmp4 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.RuntimeMethodHandleInternal>
; V16 tmp5 [V16,T25] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T24] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp6 [V17,T24] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V18 tmp7 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.RuntimeMethodHandleInternal>
-; V19 tmp8 [V19,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V19 tmp8 [V19,T18] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeMethodHandleInternal>
;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V23 tmp12 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V24 tmp13 [V24,T21] ( 2, 1 ) long -> x11 "field V13.m_handle (fldOffset=0x0)" P-INDEP
+; V24 tmp13 [V24,T21] ( 2, 1 ) long -> x0 "field V13.m_handle (fldOffset=0x0)" P-INDEP
; V25 tmp14 [V25,T22] ( 2, 1 ) long -> x1 "field V15.m_handle (fldOffset=0x0)" P-INDEP
;* V26 tmp15 [V26 ] ( 0, 0 ) long -> zero-ref "field V18.m_handle (fldOffset=0x0)" P-INDEP
-; V27 tmp16 [V27,T18] ( 2, 2 ) long -> x11 "field V20.m_handle (fldOffset=0x0)" P-INDEP
-; V28 tmp17 [V28,T15] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V29 tmp18 [V29,T16] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V27 tmp16 [V27,T19] ( 2, 2 ) long -> x11 "field V20.m_handle (fldOffset=0x0)" P-INDEP
+; V28 tmp17 [V28,T10] ( 2, 7.92) ref -> x1 single-def "argument with side effect"
+; V29 tmp18 [V29,T17] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V30 tmp19 [V30,T26] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V31 tmp20 [V31,T27] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V32 PSPSym [V32,T23] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V33 cse0 [V33,T13] ( 3, 2.50) long -> x21 "CSE - aggressive"
-; V34 cse1 [V34,T03] ( 9, 12 ) int -> x20 "CSE - aggressive"
-; V35 cse2 [V35,T08] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
-; V36 cse3 [V36,T12] ( 4, 4.29) byref -> x11 hoist multi-def "CSE - moderate"
-; V37 cse4 [V37,T06] ( 3, 11.88) long -> x19 "CSE - aggressive"
+; V32 PSPSym [V32,T23] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V33 cse0 [V33,T15] ( 3, 2.50) long -> x22 "CSE - aggressive"
+; V34 cse1 [V34,T03] ( 9, 12 ) int -> x21 "CSE - aggressive"
+; V35 cse2 [V35,T09] ( 6, 8.54) byref -> x24 hoist multi-def "CSE - aggressive"
+; V36 cse3 [V36,T13] ( 4, 4.29) byref -> x11 hoist multi-def "CSE - moderate"
+; V37 cse4 [V37,T06] ( 3, 11.88) long -> x20 "CSE - aggressive"
; V38 cse5 [V38,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- str x23, [sp, #0x48]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
mov fp, sp
- add x2, sp, #80
- stp x0, x2, [fp, #0x18] // [V00 this], [V32 PSPSym]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x20] // [V00 this], [V32 PSPSym]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- cbz x19, G_M59170_IG18
- ldr w20, [x19, #0x08]
- mov w21, w20
- mov x0, x21
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=36 bbWeight=1 PerfScore 7.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x20, G_M59170_IG18
+ ldr w21, [x20, #0x08]
+ mov w22, w21
+ mov x0, x22
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcrRegs +[x0]
; gcr arg pop 0
- str x0, [fp, #0x10] // [V02 loc0]
+ str x0, [fp, #0x18] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x1]
- ldr x11, [x1, #0x50]
+ ldr x11, [x19, #0x50]
mov x0, x11
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
cbz w0, G_M59170_IG19
- ldr x1, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x1]
- mov w22, wzr
- cmp w20, #0
+ mov w23, wzr
+ cmp w21, #0
ble G_M59170_IG07
- ;; size=84 bbWeight=1 PerfScore 26.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x10] // [V02 loc0]
+ ;; size=76 bbWeight=1 PerfScore 22.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
- cmp w11, w20
+ cmp w11, w21
blt G_M59170_IG06
- add x23, x19, #16
- ; byrRegs +[x23]
+ add x24, x20, #16
+ ; byrRegs +[x24]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0002 {x1}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x0 x19]
- mov w19, w22
- ldr x2, [x23, x19, LSL #3]
- ; gcrRegs +[x2]
- cbz x2, G_M59170_IG20
- mov x0, x2
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
+ ; gcrRegs -[x0 x20]
+ mov w20, w23
+ ldr x1, [x24, x20, LSL #3]
+ ; gcrRegs +[x1]
+ cbz x1, G_M59170_IG20
+ mov x0, x1
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- ; gcrRegs -[x2]
- blr x2
+ ldr x1, [x11]
; gcrRegs -[x1]
+ blr x1
; gcr arg pop 0
cbz x0, G_M59170_IG08
- ldr x1, [fp, #0x10] // [V02 loc0]
+ ldr x1, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x1]
add x14, x1, #16
; byrRegs +[x14]
- add x14, x14, x19, LSL #3
+ add x14, x14, x20, LSL #3
mov x15, x0
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
@@ -132,67 +128,62 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0002 {x1}, byrefRegs=800000 {x2
blr x12
; gcrRegs -[x0-x1 x15]
; byrRegs -[x14]
- add w22, w22, #1
- cmp w20, w22
- ldr x1, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x1]
+ add w23, w23, #1
+ cmp w21, w23
bgt G_M59170_IG04
- ;; size=84 bbWeight=3.96 PerfScore 95.04
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; byrRegs -[x23]
+ ;; size=80 bbWeight=3.96 PerfScore 87.12
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x24]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19]
- add x23, x19, #16
- ; byrRegs +[x23]
- ldr x2, [x23, w22, UXTW #3]
- ; gcrRegs +[x2]
- cbz x2, G_M59170_IG20
- mov x0, x2
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x20]
+ add x24, x20, #16
+ ; byrRegs +[x24]
+ ldr x1, [x24, w23, UXTW #3]
+ ; gcrRegs +[x1]
+ cbz x1, G_M59170_IG20
+ mov x0, x1
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- ; gcrRegs -[x2]
- blr x2
+ ldr x1, [x11]
; gcrRegs -[x1]
+ blr x1
; gcr arg pop 0
cbz x0, G_M59170_IG08
- ldr x1, [fp, #0x10] // [V02 loc0]
+ ldr x1, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x1]
ldr w14, [x1, #0x08]
- cmp w22, w14
+ cmp w23, w14
bhs G_M59170_IG17
add x14, x1, #16
; byrRegs +[x14]
- add x14, x14, x22, LSL #3
+ add x14, x14, x23, LSL #3
mov x15, x0
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x0 x15]
- ; byrRegs -[x14 x23]
- add w22, w22, #1
- cmp w20, w22
- ldr x1, [fp, #0x18] // [V00 this]
+ ; gcrRegs -[x0-x1 x15]
...
-16 (-2.16%) : 145042.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
@@ -9,63 +9,59 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 24,134.50) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEventDispatcher>
-; V01 arg1 [V01,T10] ( 11, 45 ) long -> x20 single-def
-; V02 loc0 [V02,T03] ( 7,137 ) int -> x21
-; V03 loc1 [V03,T11] ( 6, 44 ) ushort -> x11
-; V04 loc2 [V04,T12] ( 5, 40 ) long -> x0
-; V05 loc3 [V05,T06] ( 6,108 ) int -> x2
-; V06 loc4 [V06,T02] ( 7,176 ) long -> x5
+; V00 this [V00,T01] ( 24, 24.50) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEventDispatcher>
+; V01 arg1 [V01,T07] ( 11, 8.50) long -> x20 single-def
+; V02 loc0 [V02,T05] ( 7, 21.50) int -> x21
+; V03 loc1 [V03,T09] ( 6, 9 ) ushort -> x11
+; V04 loc2 [V04,T11] ( 5, 8 ) long -> x0
+; V05 loc3 [V05,T06] ( 6, 18 ) int -> x2
+; V06 loc4 [V06,T00] ( 7, 28 ) long -> x5
;* V07 loc5 [V07 ] ( 0, 0 ) long -> zero-ref
-; V08 loc6 [V08,T18] ( 6, 6 ) ref -> x24 class-hnd <Microsoft.Diagnostics.Tracing.TraceEvent>
-; V09 loc7 [V09,T09] ( 2, 64 ) ubyte -> x0
+; V08 loc6 [V08,T15] ( 6, 3 ) ref -> x23 class-hnd <Microsoft.Diagnostics.Tracing.TraceEvent>
+; V09 loc7 [V09,T12] ( 2, 8 ) ubyte -> x0
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V13 tmp3 [V13,T15] ( 3, 12 ) ref -> x11 "arr expr"
-; V14 tmp4 [V14,T00] ( 3,192 ) ref -> x1 "arr expr"
-; V15 tmp5 [V15,T01] ( 3,192 ) ref -> x2 "argument with side effect"
-; V16 cse0 [V16,T08] ( 2, 72 ) long -> x4 hoist "CSE - aggressive"
-; V17 cse1 [V17,T13] ( 3, 32 ) int -> x3 "CSE - aggressive"
-; V18 cse2 [V18,T16] ( 3, 12 ) ref -> x11 "CSE - aggressive"
-; V19 cse3 [V19,T17] ( 3, 12 ) ref -> x0 "CSE - aggressive"
-; V20 cse4 [V20,T05] ( 23,133.50) long -> x22 hoist "CSE - aggressive"
-; V21 cse5 [V21,T14] ( 11, 30 ) long -> x25 multi-def "CSE - aggressive"
-; V22 cse6 [V22,T07] ( 3, 80 ) int -> x1 "CSE - aggressive"
-; V23 cse7 [V23,T19] ( 2, 5 ) long -> x23 hoist "CSE - aggressive"
+; V13 tmp3 [V13,T16] ( 3, 3 ) ref -> x11 "arr expr"
+; V14 tmp4 [V14,T02] ( 3, 24 ) ref -> x1 "arr expr"
+; V15 tmp5 [V15,T03] ( 3, 24 ) ref -> x2 "argument with side effect"
+; V16 cse0 [V16,T10] ( 2, 9 ) long -> x4 hoist "CSE - aggressive"
+; V17 cse1 [V17,T13] ( 3, 6 ) int -> x3 "CSE - aggressive"
+; V18 cse2 [V18,T17] ( 3, 1.50) ref -> x11 "CSE - moderate"
+; V19 cse3 [V19,T18] ( 3, 1.50) ref -> x0 "CSE - moderate"
+; V20 cse4 [V20,T04] ( 23, 23.50) long -> x22 hoist "CSE - aggressive"
+; V21 cse5 [V21,T14] ( 11, 5.50) long -> x24 multi-def "CSE - aggressive"
+; V22 cse6 [V22,T08] ( 3, 10 ) int -> x1 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M63325_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M63325_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov w21, wzr
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x22, [x11]
- adrp x23, [HIGH RELOC #0xD1FFAB1E]
- add x23, x23, [LOW RELOC #0xD1FFAB1E]
- ;; size=24 bbWeight=1 PerfScore 5.50
-G_M63325_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 4.50
+G_M63325_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrh w11, [x20, #0x28]
ldrh w0, [x20, #0x04]
tbz w0, #8, G_M63325_IG05
- ;; size=12 bbWeight=8 PerfScore 56.00
-G_M63325_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M63325_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldrb w0, [x20, #0x2D]
add w11, w11, w0
uxth w11, w11
- ;; size=12 bbWeight=2 PerfScore 8.00
-G_M63325_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M63325_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldrsb wzr, [x20]
add x0, x20, #24
ldr w1, [x0]
@@ -80,15 +76,15 @@ G_M63325_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs +[x4]
ldr x4, [x4, #0x38]
; byrRegs -[x4]
- ;; size=40 bbWeight=8 PerfScore 132.00
-G_M63325_IG06: ; bbWeight=64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=1 PerfScore 16.50
+G_M63325_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w5, #20
smaddl x5, w2, w5, x4
ldr w6, [x5]
cmp w6, w1
bne G_M63325_IG08
- ;; size=20 bbWeight=64 PerfScore 640.00
-G_M63325_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=8 PerfScore 80.00
+G_M63325_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w6, [x5, #0x04]
ldr w7, [x0, #0x04]
cmp w6, w7
@@ -104,16 +100,16 @@ G_M63325_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldrh w6, [x5, #0x10]
cmp w6, w11
beq G_M63325_IG09
- ;; size=60 bbWeight=8 PerfScore 216.00
-G_M63325_IG08: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=60 bbWeight=2 PerfScore 54.00
+G_M63325_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w5, [x5, #0x12]
cbz w5, G_M63325_IG10
add w2, w2, w11, LSL #1
add w2, w2, #1
and w2, w2, w3
b G_M63325_IG06
- ;; size=24 bbWeight=16 PerfScore 112.00
-G_M63325_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=4 PerfScore 28.00
+G_M63325_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add x11, x19, x22
; byrRegs +[x11]
ldr x11, [x11, #0x10]
@@ -121,16 +117,16 @@ G_M63325_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs -[x11]
ldr w0, [x11, #0x08]
cmp w2, w0
- bhs G_M63325_IG20
+ bhs G_M63325_IG18
add x11, x11, #16
; gcrRegs -[x11]
; byrRegs +[x11]
- ldr x24, [x11, w2, UXTW #3]
- ; gcrRegs +[x24]
- cbnz x24, G_M63325_IG17
- ;; size=32 bbWeight=2 PerfScore 25.00
-G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
+ ldr x23, [x11, w2, UXTW #3]
+ ; gcrRegs +[x23]
+ cbnz x23, G_M63325_IG15
+ ;; size=32 bbWeight=0.50 PerfScore 6.25
+G_M63325_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x23]
; byrRegs -[x11]
add x11, x19, x22
; byrRegs +[x11]
@@ -139,8 +135,8 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs -[x11]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ldr x25, [x0]
- add x11, x11, x25
+ ldr x24, [x0]
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
str x20, [x11, #0x48]
@@ -148,7 +144,7 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x11, [x11, #0x20]
; gcrRegs +[x11]
; byrRegs -[x11]
- add x11, x11, x25
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
ldr x0, [x20, #0x60]
@@ -157,7 +153,7 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x11, [x11, #0x20]
; gcrRegs +[x11]
; byrRegs -[x11]
- add x11, x11, x25
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
add x0, x19, x22
@@ -169,9 +165,9 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x11, [x11, #0x20]
; gcrRegs +[x11]
; byrRegs -[x11]
- add x0, x11, x25
+ add x0, x11, x24
; byrRegs +[x0]
- add x11, x11, x25
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
ldr x11, [x11, #0x48]
@@ -191,24 +187,22 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs +[x11]
ldrh w11, [x11, #0x48]
; byrRegs -[x11]
- cbnz w11, G_M63325_IG12
- ;; size=140 bbWeight=4 PerfScore 192.00
-G_M63325_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
+ cbnz w11, G_M63325_IG11
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
mov w0, wzr
+ ; byrRegs -[x0]
ldr x1, [x11]
blr x1
; gcr arg pop 0
- ;; size=20 bbWeight=2 PerfScore 11.00
-G_M63325_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=160 bbWeight=0.50 PerfScore 26.75
+G_M63325_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add x0, x19, x22
; byrRegs +[x0]
ldr x0, [x0, #0x20]
; gcrRegs +[x0]
; byrRegs -[x0]
- add x0, x0, x25
+ add x0, x0, x24
; gcrRegs -[x0]
; byrRegs +[x0]
mov w11, #255
@@ -217,24 +211,25 @@ G_M63325_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x0, [x0, #0x28]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbz x0, G_M63325_IG15
+ cbz x0, G_M63325_IG13
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w21
- ble G_M63325_IG15
+ ble G_M63325_IG13
add x0, x19, x22
; byrRegs +[x0]
ldr x0, [x0, #0x20]
; gcrRegs +[x0]
; byrRegs -[x0]
- mov x11, x23
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
...
-12 (-0.79%) : 202592.dasm - System.Text.RegularExpressions.Generated.FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952_Regex13+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
@@ -9,58 +9,58 @@
; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 22,110 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner>
-; V01 arg1 [V01 ] ( 11, 23.50) struct (16) [fp+0x40] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T01] ( 34, 94.50) int -> [fp+0x3C]
-; V03 loc1 [V03,T38] ( 3, 2.50) int -> x21
-; V04 loc2 [V04,T30] ( 3, 12 ) int -> x20
-; V05 loc3 [V05,T19] ( 4, 12.50) int -> x20
-; V06 loc4 [V06,T05] ( 2, 32.50) int -> [fp+0x38] spill-single-def
-; V07 loc5 [V07,T13] ( 5, 16.50) int -> [fp+0x34]
-; V08 loc6 [V08,T27] ( 5, 13 ) int -> x25
-; V09 loc7 [V09,T07] ( 7, 27 ) int -> x23
-; V10 loc8 [V10 ] ( 9, 23 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op
-; V11 loc9 [V11 ] ( 37,113.50) struct (16) [fp+0x18] do-not-enreg[XSAR] multireg-arg multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V12 loc10 [V12,T09] ( 6, 22 ) int -> x26
-; V13 loc11 [V13,T22] ( 3, 16 ) int -> x20
-; V14 loc12 [V14,T31] ( 3, 12 ) int -> x28
-; V15 loc13 [V15,T10] ( 6, 22 ) int -> x26
-; V16 loc14 [V16,T11] ( 6, 22 ) int -> x26
+; V00 this [V00,T01] ( 22, 74.50) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner>
+; V01 arg1 [V01 ] ( 11, 20 ) struct (16) [fp+0x30] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V02 loc0 [V02,T00] ( 34, 87.50) int -> registers
+; V03 loc1 [V03,T35] ( 3, 2.50) int -> x21
+; V04 loc2 [V04,T24] ( 3, 12 ) int -> x20
+; V05 loc3 [V05,T26] ( 4, 5.50) int -> x20
+; V06 loc4 [V06,T32] ( 2, 4.50) int -> [fp+0x2C] spill-single-def
+; V07 loc5 [V07,T29] ( 5, 2.50) int -> x28
+; V08 loc6 [V08,T34] ( 5, 2.50) int -> x25
+; V09 loc7 [V09,T05] ( 7, 27 ) int -> x23
+; V10 loc8 [V10 ] ( 9, 23 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
+; V11 loc9 [V11 ] ( 37,106.50) struct (16) [fp+0x10] do-not-enreg[XSAR] multireg-arg multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
+; V12 loc10 [V12,T21] ( 6, 15 ) int -> x26
+; V13 loc11 [V13,T16] ( 3, 16 ) int -> x20
+; V14 loc12 [V14,T25] ( 3, 12 ) int -> x28
+; V15 loc13 [V15,T08] ( 6, 22 ) int -> x26
+; V16 loc14 [V16,T09] ( 6, 22 ) int -> x26
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
; V19 tmp2 [V19,T03] ( 3, 36 ) byref -> x26 "non-inline candidate call"
;* V20 tmp3 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp4 [V21 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-; V22 tmp5 [V22,T34] ( 2, 8 ) int -> x23 "dup spill"
-; V23 tmp6 [V23,T20] ( 4, 16 ) int -> x11 "dup spill"
-; V24 tmp7 [V24,T28] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
-; V25 tmp8 [V25,T21] ( 4, 16 ) int -> x11 "dup spill"
-; V26 tmp9 [V26,T29] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V22 tmp5 [V22,T28] ( 2, 8 ) int -> x23 "dup spill"
+; V23 tmp6 [V23,T14] ( 4, 16 ) int -> x11 "dup spill"
+; V24 tmp7 [V24,T22] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V25 tmp8 [V25,T15] ( 4, 16 ) int -> x11 "dup spill"
+; V26 tmp9 [V26,T23] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
;* V27 tmp10 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp11 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp12 [V29 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V30 tmp13 [V30 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp14 [V31 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp15 [V32,T18] ( 3, 17 ) int -> x0 "dup spill"
+; V32 tmp15 [V32,T33] ( 3, 3 ) int -> x0 "dup spill"
;* V33 tmp16 [V33 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V34 tmp17 [V34 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V35 tmp18 [V35 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V36 tmp19 [V36 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp20 [V37 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
-; V38 tmp21 [V38,T15] ( 3, 18 ) ref -> x1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V39 tmp22 [V39,T14] ( 4, 20 ) int -> x3 "Inline stloc first use temp"
-; V40 tmp23 [V40,T08] ( 3, 24 ) int -> x2 "Inlining Arg"
+; V38 tmp21 [V38,T11] ( 3, 18 ) ref -> x1 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V39 tmp22 [V39,T10] ( 4, 20 ) int -> x3 "Inline stloc first use temp"
+; V40 tmp23 [V40,T07] ( 3, 24 ) int -> x2 "Inlining Arg"
; V41 tmp24 [V41,T04] ( 2, 36 ) int -> x20 "Inlining Arg"
-; V42 tmp25 [V42 ] ( 10, 22.50) byref -> [fp+0x40] do-not-enreg[X] addr-exposed single-def "field V01._reference (fldOffset=0x0)" P-DEP
-; V43 tmp26 [V43 ] ( 10, 22.50) int -> [fp+0x48] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
-; V44 tmp27 [V44 ] ( 22, 69.50) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP
-; V45 tmp28 [V45 ] ( 29, 84.50) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
+; V42 tmp25 [V42 ] ( 10, 19 ) byref -> [fp+0x30] do-not-enreg[X] addr-exposed single-def "field V01._reference (fldOffset=0x0)" P-DEP
+; V43 tmp26 [V43 ] ( 10, 19 ) int -> [fp+0x38] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
+; V44 tmp27 [V44 ] ( 22, 62.50) byref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP
+; V45 tmp28 [V45 ] ( 29, 77.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
;* V46 tmp29 [V46 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-DEP
;* V47 tmp30 [V47 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-DEP
-; V48 tmp31 [V48,T23] ( 2, 16 ) byref -> x2 "field V20._reference (fldOffset=0x0)" P-INDEP
-; V49 tmp32 [V49,T25] ( 2, 16 ) int -> x3 "field V20._length (fldOffset=0x8)" P-INDEP
-; V50 tmp33 [V50,T24] ( 2, 16 ) byref -> x26 "field V21._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp34 [V51,T26] ( 2, 16 ) int -> x28 "field V21._length (fldOffset=0x8)" P-INDEP
+; V48 tmp31 [V48,T17] ( 2, 16 ) byref -> x2 "field V20._reference (fldOffset=0x0)" P-INDEP
+; V49 tmp32 [V49,T19] ( 2, 16 ) int -> x3 "field V20._length (fldOffset=0x8)" P-INDEP
+; V50 tmp33 [V50,T18] ( 2, 16 ) byref -> x26 "field V21._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp34 [V51,T20] ( 2, 16 ) int -> x28 "field V21._length (fldOffset=0x8)" P-INDEP
;* V52 tmp35 [V52 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-DEP
;* V53 tmp36 [V53 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-DEP
;* V54 tmp37 [V54 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-DEP
@@ -69,8 +69,8 @@
;* V57 tmp40 [V57 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-DEP
;* V58 tmp41 [V58 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-DEP
;* V59 tmp42 [V59 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-DEP
-; V60 tmp43 [V60,T33] ( 2, 8 ) byref -> x0 "field V31._reference (fldOffset=0x0)" P-INDEP
-; V61 tmp44 [V61,T35] ( 2, 8 ) int -> x1 "field V31._length (fldOffset=0x8)" P-INDEP
+; V60 tmp43 [V60,T36] ( 2, 1 ) byref -> x0 "field V31._reference (fldOffset=0x0)" P-INDEP
+; V61 tmp44 [V61,T37] ( 2, 1 ) int -> x1 "field V31._length (fldOffset=0x8)" P-INDEP
;* V62 tmp45 [V62 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-DEP
;* V63 tmp46 [V63 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-DEP
;* V64 tmp47 [V64 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-DEP
@@ -81,27 +81,26 @@
;* V69 tmp52 [V69 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-DEP
;* V70 tmp53 [V70 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-DEP
;* V71 tmp54 [V71 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-DEP
-; V72 cse0 [V72,T32] ( 2, 9 ) byref -> x25 hoist "CSE - moderate"
-; V73 cse1 [V73,T36] ( 4, 6 ) long -> x24 "CSE - moderate"
-; V74 cse2 [V74,T16] ( 3, 18 ) int -> x0 "CSE - aggressive"
-; V75 cse3 [V75,T17] ( 3, 18 ) int -> x11 "CSE - aggressive"
-; V76 cse4 [V76,T37] ( 3, 6 ) byref -> x1 "CSE - moderate"
-; V77 cse5 [V77,T02] ( 6, 68.50) long -> x27 "CSE - aggressive"
-; V78 cse6 [V78,T06] ( 11, 29 ) long -> x22 "CSE - aggressive"
-; V79 cse7 [V79,T12] ( 7, 21 ) long -> x28 multi-def "CSE - aggressive"
+; V72 cse0 [V72,T27] ( 2, 9 ) byref -> x25 hoist "CSE - moderate"
+; V73 cse1 [V73,T30] ( 4, 6 ) long -> x24 "CSE - moderate"
+; V74 cse2 [V74,T12] ( 3, 18 ) int -> x0 "CSE - aggressive"
+; V75 cse3 [V75,T13] ( 3, 18 ) int -> x11 "CSE - aggressive"
+; V76 cse4 [V76,T31] ( 3, 6 ) byref -> x1 "CSE - moderate"
+; V77 cse5 [V77,T02] ( 6, 40.50) long -> x27 "CSE - aggressive"
+; V78 cse6 [V78,T06] ( 11, 25.50) long -> x22 "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M58872_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xA0]!
- stp x19, x20, [sp, #0x50]
- stp x21, x22, [sp, #0x60]
- stp x23, x24, [sp, #0x70]
- stp x25, x26, [sp, #0x80]
- stp x27, x28, [sp, #0x90]
+ stp fp, lr, [sp, #-0x90]!
+ stp x19, x20, [sp, #0x40]
+ stp x21, x22, [sp, #0x50]
+ stp x23, x24, [sp, #0x60]
+ stp x25, x26, [sp, #0x70]
+ stp x27, x28, [sp, #0x80]
mov fp, sp
- str xzr, [fp, #0x18] // [V11 loc9]
- stp x1, x2, [fp, #0x40] // [V01 arg1], [V01 arg1+0x08]
+ str xzr, [fp, #0x10] // [V11 loc9]
+ stp x1, x2, [fp, #0x30] // [V01 arg1], [V01 arg1+0x08]
mov x19, x0
; gcrRegs +[x19]
;; size=40 bbWeight=1 PerfScore 9.00
@@ -111,8 +110,8 @@ G_M58872_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x0, [x0]
ldr w20, [x19, x0]
sxtw w21, w20
- str wzr, [fp, #0x28] // [V10 loc8]
- add x0, fp, #64 // [V01 arg1]
+ str wzr, [fp, #0x20] // [V10 loc8]
+ add x0, fp, #48 // [V01 arg1]
mov w1, w21
adrp x22, [HIGH RELOC #0xD1FFAB1E] // function address
add x22, x22, [LOW RELOC #0xD1FFAB1E]
@@ -120,7 +119,7 @@ G_M58872_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x11]
blr x2
; byrRegs +[x0]
- stp x0, x1, [fp, #0x18] // [V11 loc9], [V11 loc9+0x08]
+ stp x0, x1, [fp, #0x10] // [V11 loc9], [V11 loc9+0x08]
mov w23, wzr
adrp x0, [HIGH RELOC #0xD1FFAB1E]
; byrRegs -[x0]
@@ -144,7 +143,7 @@ G_M58872_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x2
sxtw w2, w0
ldr x1, [x26]
; gcrRegs +[x1]
- ldr w3, [fp, #0x28] // [V10 loc8]
+ ldr w3, [fp, #0x20] // [V10 loc8]
ldr w0, [x1, #0x08]
add w11, w3, #1
cmp w0, w11
@@ -159,15 +158,15 @@ G_M58872_IG04: ; bbWeight=2, gcrefRegs=80002 {x1 x19}, byrefRegs=2000000
; byrRegs +[x1]
str w2, [x1, w3, UXTW #2]
str w20, [x1, w11, UXTW #2]
- ldr w1, [fp, #0x28] // [V10 loc8]
+ ldr w1, [fp, #0x20] // [V10 loc8]
; byrRegs -[x1]
add w1, w1, #2
- str w1, [fp, #0x28] // [V10 loc8]
+ str w1, [fp, #0x20] // [V10 loc8]
b G_M58872_IG06
;; size=36 bbWeight=2 PerfScore 17.00
G_M58872_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=6000000 {x25 x26}, byref
; byrRegs +[x26]
- add x1, fp, #40 // [V10 loc8]
+ add x1, fp, #32 // [V10 loc8]
mov w3, w20
mov x0, x26
; byrRegs +[x0]
@@ -179,9 +178,9 @@ G_M58872_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=6000000 {x2
;; size=28 bbWeight=2 PerfScore 13.00
G_M58872_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref, isz
add w23, w23, #1
- ldr x26, [fp, #0x18] // [V44 tmp27]
+ ldr x26, [fp, #0x10] // [V44 tmp27]
; byrRegs +[x26]
- ldr w28, [fp, #0x20] // [V45 tmp28]
+ ldr w28, [fp, #0x18] // [V45 tmp28]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
@@ -203,21 +202,21 @@ G_M58872_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x2
ldr x4, [x11]
blr x4
; byrRegs -[x0 x2 x26]
- cbz w0, G_M58872_IG10
+ cbz w0, G_M58872_IG11
;; size=80 bbWeight=8 PerfScore 196.00
G_M58872_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref, isz
add w0, w20, #2
sxtw w26, w0
- add x0, fp, #64 // [V01 arg1]
+ add x0, fp, #48 // [V01 arg1]
mov w1, w26
mov x11, x22
ldr x2, [x11]
blr x2
; byrRegs +[x0]
- stp x0, x1, [fp, #0x18] // [V11 loc9], [V11 loc9+0x08]
+ stp x0, x1, [fp, #0x10] // [V11 loc9], [V11 loc9+0x08]
sxtw w28, w26
- ldr x0, [fp, #0x18] // [V44 tmp27]
- ldr w1, [fp, #0x20] // [V45 tmp28]
+ ldr x0, [fp, #0x10] // [V44 tmp27]
+ ldr w1, [fp, #0x18] // [V45 tmp28]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
mov w2, #41
@@ -228,72 +227,75 @@ G_M58872_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x2
tbz w26, #31, G_M58872_IG09
;; size=72 bbWeight=4 PerfScore 76.00
G_M58872_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref
- ldr w26, [fp, #0x20] // [V45 tmp28]
+ ldr w26, [fp, #0x18] // [V45 tmp28]
;; size=4 bbWeight=2 PerfScore 4.00
G_M58872_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref, isz
- cbz w26, G_M58872_IG10
- add x0, fp, #24 // [V11 loc9]
+ cbz w26, G_M58872_IG11
+ add x0, fp, #16 // [V11 loc9]
mov w1, w26
mov x11, x22
ldr x2, [x11]
...
+12 (+1.88%) : 37352.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
@@ -9,33 +9,33 @@
; 0 inlinees with PGO data; 11 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 34,119.50) byref -> x19 this single-def
-; V01 arg1 [V01,T13] ( 8, 5 ) byref -> x21 single-def
-; V02 arg2 [V02,T09] ( 9, 13 ) byref -> x20 single-def
-; V03 arg3 [V03,T14] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
-; V04 loc0 [V04,T11] ( 3, 12 ) int -> x2
-; V05 loc1 [V05,T17] ( 3, 1.50) int -> x3
-; V06 loc2 [V06,T05] ( 9, 25.50) int -> x23
-; V07 loc3 [V07,T20] ( 2, 1 ) int -> x23
-; V08 loc4 [V08,T21] ( 2, 1 ) ushort -> x24
-; V09 loc5 [V09 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
-; V10 loc6 [V10 ] ( 2, 1 ) int -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
+; V00 this [V00,T00] ( 34, 56.50) byref -> x19 this single-def
+; V01 arg1 [V01,T10] ( 8, 5 ) byref -> x21 single-def
+; V02 arg2 [V02,T05] ( 9, 13 ) byref -> x20 single-def
+; V03 arg3 [V03,T12] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
+; V04 loc0 [V04,T07] ( 3, 12 ) int -> x2
+; V05 loc1 [V05,T17] ( 3, 1.75) int -> x3
+; V06 loc2 [V06,T01] ( 9, 25.50) int -> x24
+; V07 loc3 [V07,T22] ( 2, 1 ) int -> x23
+; V08 loc4 [V08,T23] ( 2, 1 ) ushort -> x24
+; V09 loc5 [V09 ] ( 2, 1 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
+; V10 loc6 [V10 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V13 tmp2 [V13,T03] ( 3, 96 ) int -> x0 "Span.get_Item index"
-; V14 tmp3 [V14,T02] ( 3, 96 ) byref -> x11 "Span.get_Item ptrToSpan"
-; V15 tmp4 [V15,T08] ( 3, 24 ) int -> x2 "Span.get_Item index"
-; V16 tmp5 [V16,T07] ( 3, 24 ) byref -> x0 "Span.get_Item ptrToSpan"
-; V17 tmp6 [V17,T16] ( 3, 3 ) int -> x2 "Span.get_Item index"
-; V18 tmp7 [V18,T15] ( 3, 3 ) byref -> x3 "Span.get_Item ptrToSpan"
+; V13 tmp2 [V13,T08] ( 3, 12 ) int -> x0 "Span.get_Item index"
+; V14 tmp3 [V14,T06] ( 3, 12 ) byref -> x25 "Span.get_Item ptrToSpan"
+; V15 tmp4 [V15,T03] ( 3, 24 ) int -> x2 "Span.get_Item index"
+; V16 tmp5 [V16,T02] ( 3, 24 ) byref -> x0 "Span.get_Item ptrToSpan"
+; V17 tmp6 [V17,T15] ( 3, 3 ) int -> x2 "Span.get_Item index"
+; V18 tmp7 [V18,T14] ( 3, 3 ) byref -> x3 "Span.get_Item ptrToSpan"
;* V19 tmp8 [V19 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V20 tmp9 [V20,T12] ( 3, 8 ) ubyte -> x0 "Inline return value spill temp"
-; V21 tmp10 [V21,T06] ( 4, 24 ) ushort -> x0 "Inlining Arg"
+; V20 tmp9 [V20,T18] ( 3, 1.50) ubyte -> x0 "Inline return value spill temp"
+; V21 tmp10 [V21,T13] ( 4, 4 ) ushort -> x0 "Inlining Arg"
;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V23 tmp12 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp13 [V24 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V25 tmp14 [V25,T04] ( 3, 32 ) ubyte -> x0 "Inline return value spill temp"
-; V26 tmp15 [V26,T01] ( 4, 96 ) ushort -> x0 "Inlining Arg"
+; V25 tmp14 [V25,T11] ( 3, 6 ) ubyte -> x0 "Inline return value spill temp"
+; V26 tmp15 [V26,T04] ( 4, 16 ) ushort -> x0 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp17 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
@@ -47,17 +47,20 @@
;* V35 tmp24 [V35 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp26 [V37 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T18] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V39 cse1 [V39,T10] ( 4, 12.50) int -> x0 "CSE - aggressive"
-; V40 cse2 [V40,T19] ( 3, 1.50) int -> x2 "CSE - moderate"
+; V38 cse0 [V38,T16] ( 3, 2 ) int -> x2 "CSE - moderate"
+; V39 cse1 [V39,T19] ( 3, 1.50) int -> x23 "CSE - moderate"
+; V40 cse2 [V40,T20] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V41 cse3 [V41,T21] ( 3, 1.50) int -> x2 "CSE - moderate"
+; V42 cse4 [V42,T09] ( 6, 9.25) byref -> x25 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x28]
+ stp x21, x22, [sp, #0x38]
+ stp x23, x24, [sp, #0x48]
+ str x25, [sp, #0x58]
mov fp, sp
mov x19, x0
; byrRegs +[x19]
@@ -67,169 +70,173 @@ G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x20]
mov x22, x3
; gcrRegs +[x22]
- ;; size=36 bbWeight=1 PerfScore 6.50
+ ;; size=40 bbWeight=1 PerfScore 7.50
G_M44776_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
str wzr, [x20]
ldr w0, [x19, #0x08]
ldr w11, [x19, #0x18]
cmp w0, w11
- bge G_M44776_IG13
+ bge G_M44776_IG10
;; size=20 bbWeight=1 PerfScore 8.50
-G_M44776_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG03: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldrh w0, [x19, #0x0C]
- sub w11, w0, #48
- cmp w11, #9
- bls G_M44776_IG14
+ sub w23, w0, #48
+ cmp w23, #9
+ bls G_M44776_IG11
cmp w0, #0xD1FFAB1E
- bhs G_M44776_IG05
- ;; size=24 bbWeight=4 PerfScore 26.00
-G_M44776_IG04: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ bhs G_M44776_IG04
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcr arg pop 0
- b G_M44776_IG06
- ;; size=20 bbWeight=2 PerfScore 12.00
-G_M44776_IG05: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ b G_M44776_IG05
+ ;; size=44 bbWeight=0.50 PerfScore 6.25
+G_M44776_IG04: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr x1, [x11]
+ blr x1
+ ; gcr arg pop 0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M44776_IG05: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ cbnz w0, G_M44776_IG09
+ b G_M44776_IG20
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M44776_IG06: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ ldr w0, [x19, #0x08]
+ add x25, x19, #16
+ ; byrRegs +[x25]
+ ldr w11, [x25, #0x08]
+ cmp w0, w11
+ bhs G_M44776_IG22
+ ldr x11, [x25]
+ ; byrRegs +[x11]
+ ldrh w0, [x11, w0, UXTW #2]
+ strh w0, [x19, #0x0C]
+ ldrh w0, [x19, #0x0C]
+ cmp w0, #0xD1FFAB1E
+ bhs G_M44776_IG07
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ ; byrRegs -[x11]
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr x1, [x11]
+ blr x1
+ ; byrRegs -[x25]
+ ; gcr arg pop 0
+ b G_M44776_IG08
+ ;; size=64 bbWeight=2 PerfScore 51.00
+G_M44776_IG07: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcr arg pop 0
;; size=16 bbWeight=2 PerfScore 10.00
-G_M44776_IG06: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
- cbnz w0, G_M44776_IG12
- ;; size=4 bbWeight=4 PerfScore 4.00
-G_M44776_IG07: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
- b G_M44776_IG21
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M44776_IG08: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
- ldr w0, [x19, #0x08]
- add x11, x19, #16
- ; byrRegs +[x11]
- ldr w1, [x11, #0x08]
- cmp w0, w1
- bhs G_M44776_IG23
- ldr x11, [x11]
- ldrh w0, [x11, w0, UXTW #2]
- strh w0, [x19, #0x0C]
- ldrh w0, [x19, #0x0C]
- cmp w0, #0xD1FFAB1E
- bhs G_M44776_IG10
- ;; size=44 bbWeight=16 PerfScore 312.00
-G_M44776_IG09: ; bbWeight=8, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
- ; byrRegs -[x11]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcr arg pop 0
- b G_M44776_IG11
- ;; size=20 bbWeight=8 PerfScore 48.00
-G_M44776_IG10: ; bbWeight=8, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcr arg pop 0
- ;; size=16 bbWeight=8 PerfScore 40.00
-G_M44776_IG11: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG08: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
cbz w0, G_M44776_IG03
- ;; size=4 bbWeight=16 PerfScore 16.00
-G_M44776_IG12: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M44776_IG09: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldr w0, [x19, #0x08]
- add w23, w0, #1
- str w23, [x19, #0x08]
+ add w24, w0, #1
+ str w24, [x19, #0x08]
ldr w0, [x19, #0x18]
- cmp w23, w0
- blt G_M44776_IG08
+ cmp w24, w0
+ blt G_M44776_IG06
;; size=24 bbWeight=4 PerfScore 36.00
-G_M44776_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+G_M44776_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x22]
; byrRegs -[x19-x20]
mov w2, #6
str w2, [x21]
- b G_M44776_IG22
+ b G_M44776_IG21
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M44776_IG14: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG11: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
; gcrRegs +[x22]
; byrRegs +[x19-x20]
- sub w2, w0, #48
- str w2, [x20]
+ str w23, [x20]
ldr w2, [x19, #0x08]
sxtw w3, w2
- add w23, w2, #1
- str w23, [x19, #0x08]
+ add w24, w2, #1
+ str w24, [x19, #0x08]
ldr w2, [x19, #0x18]
- cmp w23, w2
- bge G_M44776_IG16
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M44776_IG15: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ cmp w24, w2
+ bge G_M44776_IG14
+ ;; size=32 bbWeight=0.50 PerfScore 5.25
+G_M44776_IG12: ; bbWeight=0.25, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ add x25, x19, #16
+ ; byrRegs +[x25]
...
+12 (+5.88%) : 182501.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -11,14 +11,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -56,53 +56,62 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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]
@@ -111,18 +120,18 @@ G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 8, PerfScore 56.64, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 216, prolog size 8, PerfScore 61.84, instruction count 54, allocated bytes for code 216 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
@@ -130,6 +139,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+12 (+5.88%) : 4248.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -11,14 +11,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -56,53 +56,62 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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]
@@ -111,18 +120,18 @@ G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 8, PerfScore 56.64, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 216, prolog size 8, PerfScore 61.84, instruction count 54, allocated bytes for code 216 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
@@ -130,6 +139,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.pmi.linux.arm64.checked.mch
-12 (-12.00%) : 2671.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,27 +10,27 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> x0 single-def
; V01 arg1 [V01,T04] ( 4, 6.33) int -> x1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.33) int -> x2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> x2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> x3 single-def
-; V04 loc0 [V04,T00] ( 7, 19.67) int -> x3
+; V04 loc0 [V04,T00] ( 7, 18.71) int -> x3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> x4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.66) int -> x5 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.66) int -> x4 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> x4 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M34838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
sub w3, w3, #1
- tbnz w3, #31, G_M34838_IG09
+ tbnz w3, #31, G_M34838_IG06
;; size=8 bbWeight=1 PerfScore 1.50
G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
sbfiz x4, x3, #2, #32
@@ -44,43 +44,31 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
;; size=24 bbWeight=4 PerfScore 26.00
G_M34838_IG04: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w1, w5
- bgt G_M34838_IG06
+ bgt G_M34838_IG08
;; size=8 bbWeight=0.33 PerfScore 0.49
G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w2, w4
- bge G_M34838_IG11
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M34838_IG06: ; bbWeight=1.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
- mov w0, w3
- ;; size=4 bbWeight=1.67 PerfScore 0.84
-G_M34838_IG07: ; bbWeight=1.67, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=1.67 PerfScore 3.34
-G_M34838_IG08: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
- ; byrRegs +[x0]
+ blt G_M34838_IG08
sub w3, w3, #1
tbz w3, #31, G_M34838_IG03
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M34838_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=4 PerfScore 12.00
+G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
movn w0, #0
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M34838_IG11: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w2, w4
- ble G_M34838_IG08
- ;; size=8 bbWeight=0.33 PerfScore 0.49
-G_M34838_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- b G_M34838_IG08
- ;; size=4 bbWeight=0.04 PerfScore 0.04
+G_M34838_IG08: ; bbWeight=0.71, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, w3
+ ;; size=4 bbWeight=0.71 PerfScore 0.36
+G_M34838_IG09: ; bbWeight=0.71, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.71 PerfScore 1.43
-; Total bytes of code 100, prolog size 8, PerfScore 47.46, instruction count 25, allocated bytes for code 100 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 44.53, instruction count 22, allocated bytes for code 88 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-11.11%) : 2659.dasm - System.SpanHelpers:IndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T07] ( 3, 6 ) byref -> x0 single-def
; V01 arg1 [V01,T05] ( 4, 6.33) int -> x1 ld-addr-op single-def
-; V02 arg2 [V02,T06] ( 4, 6.33) int -> x2 ld-addr-op single-def
+; V02 arg2 [V02,T06] ( 3, 6 ) int -> x2 ld-addr-op single-def
; V03 arg3 [V03,T04] ( 4, 7 ) int -> x3 single-def
-; V04 loc0 [V04,T00] ( 6, 18.67) int -> x4
+; V04 loc0 [V04,T00] ( 6, 17.71) int -> x4
; V05 loc1 [V05,T08] ( 2, 8 ) byref -> x5
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.66) int -> x6 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.66) int -> x5 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> x5 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M35228_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M35228_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -31,7 +31,7 @@ G_M35228_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
; byrRegs +[x0]
mov w4, wzr
cmp w3, #0
- ble G_M35228_IG09
+ ble G_M35228_IG06
;; size=12 bbWeight=1 PerfScore 2.00
G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
sbfiz x5, x4, #2, #32
@@ -45,44 +45,32 @@ G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
;; size=24 bbWeight=4 PerfScore 26.00
G_M35228_IG04: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w1, w6
- bgt G_M35228_IG06
+ bgt G_M35228_IG08
;; size=8 bbWeight=0.33 PerfScore 0.49
G_M35228_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w2, w5
- bge G_M35228_IG11
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M35228_IG06: ; bbWeight=1.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
- mov w0, w4
- ;; size=4 bbWeight=1.67 PerfScore 0.84
-G_M35228_IG07: ; bbWeight=1.67, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=1.67 PerfScore 3.34
-G_M35228_IG08: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
- ; byrRegs +[x0]
+ blt G_M35228_IG08
add w4, w4, #1
cmp w4, w3
blt G_M35228_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M35228_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=4 PerfScore 14.00
+G_M35228_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
movn w0, #0
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M35228_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M35228_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M35228_IG11: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w2, w5
- ble G_M35228_IG08
- ;; size=8 bbWeight=0.33 PerfScore 0.49
-G_M35228_IG12: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- b G_M35228_IG08
- ;; size=4 bbWeight=0.04 PerfScore 0.04
+G_M35228_IG08: ; bbWeight=0.71, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, w4
+ ;; size=4 bbWeight=0.71 PerfScore 0.36
+G_M35228_IG09: ; bbWeight=0.71, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.71 PerfScore 1.43
-; Total bytes of code 108, prolog size 8, PerfScore 49.96, instruction count 27, allocated bytes for code 108 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 47.03, instruction count 24, allocated bytes for code 96 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -93,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.31%) : 165313.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
@@ -8,32 +8,33 @@
; 0 inlinees with PGO data; 3 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 26,731 ) ref -> x20 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
-; V01 arg1 [V01,T00] ( 26,754 ) ref -> x19 class-hnd single-def <System.Xml.XPath.XPathNavigator>
+; V00 this [V00,T00] ( 26,245.50) ref -> x19 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
+; V01 arg1 [V01,T01] ( 20,214 ) ref -> x20 class-hnd single-def <System.Xml.XPath.XPathNavigator>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T02] ( 6,559 ) int -> x21
+; V03 loc1 [V03,T04] ( 6,109.50) int -> x21
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref
-; V09 tmp5 [V09,T15] ( 3, 8 ) int -> x2
+; V09 tmp5 [V09,T13] ( 3, 8 ) int -> x2
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp7 [V11,T11] ( 2, 32 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
-; V12 tmp8 [V12,T12] ( 2, 32 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
-; V13 tmp9 [V13,T13] ( 2, 32 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
-; V14 tmp10 [V14,T06] ( 4, 64 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
+; V11 tmp7 [V11,T14] ( 2, 8 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
+; V12 tmp8 [V12,T15] ( 2, 8 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
+; V13 tmp9 [V13,T16] ( 2, 8 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
+; V14 tmp10 [V14,T11] ( 4, 16 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp12 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
+; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
; V18 tmp14 [V18,T08] ( 2, 64 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
; V19 tmp15 [V19,T09] ( 2, 64 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
; V20 tmp16 [V20,T03] ( 4,128 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref
-; V22 tmp18 [V22,T14] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V23 tmp19 [V23,T10] ( 3, 48 ) ref -> x0 "argument with side effect"
+; V22 tmp18 [V22,T10] ( 3, 24 ) ref -> x0 "argument with side effect"
+; V23 tmp19 [V23,T12] ( 3, 12 ) ref -> x0 "argument with side effect"
; V24 tmp20 [V24,T05] ( 3, 96 ) ref -> x0 "argument with side effect"
-; V25 cse0 [V25,T04] ( 9, 96 ) long -> x22 multi-def "CSE - aggressive"
+; V25 cse0 [V25,T06] ( 9, 78 ) long -> x23 multi-def "CSE - aggressive"
+; V26 cse1 [V26,T02] ( 10,146 ) long -> x22 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -43,21 +44,21 @@ G_M8478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
mov fp, sp
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
+ mov x20, x1
+ ; gcrRegs +[x20]
;; size=28 bbWeight=1 PerfScore 5.50
G_M8478_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ldr w21, [x20, #0x58]
+ ldr w21, [x19, #0x58]
;; size=4 bbWeight=1 PerfScore 3.00
G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x20, #0x58]
+ ldr w2, [x19, #0x58]
cmp w2, w21
cset x2, eq
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
@@ -68,26 +69,25 @@ G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
cbz w0, G_M8478_IG16
;; size=44 bbWeight=8 PerfScore 92.00
G_M8478_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x22, [x1, #0x60]
- ldr x1, [x22, #0x08]
+ ldr x22, [x20]
+ ldr x23, [x22, #0x60]
+ ldr x1, [x23, #0x08]
blr x1
; gcrRegs -[x0]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x68]
+ ldr x1, [x22, #0x68]
ldr x1, [x1, #0x38]
blr x1
; gcrRegs -[x0]
cbz w0, G_M8478_IG07
- ;; size=44 bbWeight=4 PerfScore 88.00
+ ;; size=40 bbWeight=4 PerfScore 76.00
G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
mov w2, wzr
movz x3, #0xD1FFAB1E // code for <unknown method>
@@ -96,26 +96,24 @@ G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x70]
+ ldr x1, [x22, #0x70]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG05
- ;; size=56 bbWeight=16 PerfScore 296.00
+ ;; size=52 bbWeight=16 PerfScore 248.00
G_M8478_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1, #0x08]
blr x1
; gcrRegs -[x0]
- ;; size=20 bbWeight=2 PerfScore 21.00
+ ;; size=16 bbWeight=2 PerfScore 15.00
G_M8478_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
beq G_M8478_IG09
@@ -128,9 +126,9 @@ G_M8478_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
mov w2, #1
;; size=4 bbWeight=2 PerfScore 1.00
G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNamespaces(System.Xml.XPath.XPathNavigator,int):this
movk x3, #0xD1FFAB1E LSL #16
@@ -138,11 +136,11 @@ G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr w0, [x20, #0x60]
+ ldr w0, [x19, #0x60]
cbz w0, G_M8478_IG12
;; size=36 bbWeight=4 PerfScore 42.00
G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteCachedNamespaces():this
movk x1, #0xD1FFAB1E LSL #16
@@ -152,7 +150,7 @@ G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
; gcrRegs -[x0]
;; size=24 bbWeight=2 PerfScore 12.00
G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x20, #0x10]
+ ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x98]
@@ -160,24 +158,23 @@ G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
mov w0, #2
- str w0, [x20, #0x5C]
- mov x0, x19
+ str w0, [x19, #0x5C]
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG03
- ;; size=52 bbWeight=4 PerfScore 104.00
-G_M8478_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ;; size=48 bbWeight=4 PerfScore 92.00
+G_M8478_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
bne G_M8478_IG15
- ;; size=16 bbWeight=2 PerfScore 10.00
-G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M8478_IG14: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteEndElement():this
movk x1, #0xD1FFAB1E LSL #16
@@ -186,26 +183,26 @@ G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
b G_M8478_IG16
- ;; size=28 bbWeight=8 PerfScore 56.00
-G_M8478_IG15: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ ;; size=28 bbWeight=2 PerfScore 14.00
+G_M8478_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x22, #0x28]
+ ldr x1, [x23, #0x28]
blr x1
- mov x23, x0
- ; gcrRegs +[x23]
- mov x0, x19
- ldr x1, [x22, #0x10]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ mov x0, x20
+ ldr x1, [x23, #0x10]
blr x1
mov x24, x0
; gcrRegs +[x24]
- mov x0, x19
- ldr x1, [x22, #0x20]
+ mov x0, x20
+ ldr x1, [x23, #0x20]
blr x1
mov x3, x0
; gcrRegs +[x3]
- ldr x0, [x20, #0x10]
- mov x1, x23
+ ldr x0, [x19, #0x10]
+ mov x1, x22
...
+24 (+4.69%) : 176740.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 6, 8 ) byref -> x19 this single-def
+; V00 this [V00,T03] ( 6, 8.98) byref -> x19 this single-def
; V01 loc0 [V01,T04] ( 6, 8 ) int -> x21 single-def
-; V02 loc1 [V02,T08] ( 6, 3.58) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
+; V02 loc1 [V02,T09] ( 6, 3.08) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Reflection.Metadata.SignatureHeader>
; V04 loc3 [V04,T00] ( 10, 17.04) int -> x22
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -22,7 +22,7 @@
; V11 tmp6 [V11,T07] ( 4, 4 ) long -> x0 single-def "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V13 tmp8 [V13,T13] ( 2, 1 ) ubyte -> x1 "Inline return value spill temp"
-; V14 tmp9 [V14,T09] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
+; V14 tmp9 [V14,T08] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
; V15 tmp10 [V15,T02] ( 6, 12 ) byref -> x20 single-def "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp"
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
@@ -52,7 +52,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
; byrRegs +[x1]
ldp x2, x0, [x1, #0x10]
cmp x0, x2
- beq G_M22286_IG12
+ beq G_M22286_IG15
add x2, x0, #1
str x2, [x1, #0x18]
ldrb w1, [x0]
@@ -60,12 +60,12 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
and w1, w1, #15
cmp w1, #5
ccmp w1, #9, z, gt
- beq G_M22286_IG13
+ beq G_M22286_IG16
;; size=48 bbWeight=1 PerfScore 13.50
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
uxtb w1, w1
cmp w1, #10
- bne G_M22286_IG13
+ bne G_M22286_IG16
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
ldr x1, [x20, #0x18]
@@ -87,9 +87,9 @@ G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
str x1, [x20, #0x18]
movn w1, #0xD1FFAB1E LSL #16
cmp w21, w1
- beq G_M22286_IG14
+ beq G_M22286_IG17
cmp w21, #0
- ble G_M22286_IG15
+ ble G_M22286_IG18
sxtw x1, w21
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -130,10 +130,10 @@ G_M22286_IG06: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=880000
cmp w22, w21
blt G_M22286_IG06
;; size=48 bbWeight=3.96 PerfScore 41.58
-G_M22286_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG07: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
; byrRegs -[x23]
b G_M22286_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
mov x0, x19
; byrRegs +[x0]
@@ -146,7 +146,7 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
; byrRegs -[x0]
ldr w14, [x20, #0x08]
cmp w22, w14
- bhs G_M22286_IG11
+ bhs G_M22286_IG14
add x23, x20, #16
; byrRegs +[x23]
add x14, x23, x22, LSL #3
@@ -160,25 +160,39 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
cmp w22, w21
blt G_M22286_IG08
;; size=64 bbWeight=0.04 PerfScore 0.62
-G_M22286_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG09: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cmp x0, #0
- csel x0, xzr, x20, ne
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M22286_IG10: ; bbWeight=1, epilog, nogc, extend
+ cbnz x0, G_M22286_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 7.92
+G_M22286_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ; byrRegs -[x19]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG11: ; 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
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
- ; byrRegs -[x19]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG13: ; 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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:OutOfBounds()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -186,7 +200,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -205,7 +219,7 @@ G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=48 bbWeight=0 PerfScore 0.00
-G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:InvalidCompressedInteger()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -213,7 +227,7 @@ G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -234,22 +248,25 @@ G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 512, prolog size 24, PerfScore 106.45, instruction count 128, allocated bytes for code 512 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
+; Total bytes of code 536, prolog size 24, PerfScore 111.85, instruction count 134, allocated bytes for code 536 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 128 (0x00080) Actual length = 512 (0x000200)
+ Function Length : 134 (0x00086) Actual length = 536 (0x000218)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+12 (+6.25%) : 18569.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -10,14 +10,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -55,70 +55,79 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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 192, prolog size 8, PerfScore 56.64, instruction count 48, allocated bytes for code 192 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 204, prolog size 8, PerfScore 61.84, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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)
@@ -126,6 +135,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+12 (+6.25%) : 213340.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -10,14 +10,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -55,70 +55,79 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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 192, prolog size 8, PerfScore 56.64, instruction count 48, allocated bytes for code 192 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 204, prolog size 8, PerfScore 61.84, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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)
@@ -126,6 +135,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries_tests.run.linux.arm64.Release.mch
-16 (-7.84%) : 6783.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -10,116 +10,110 @@
; Final local variable assignments
;
; V00 arg0 [V00,T00] ( 8, 7.36) long -> x0 single-def
-; V01 arg1 [V01,T03] ( 7, 5.41) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.65) long -> x19
-; V03 loc1 [V03,T02] ( 10, 8.24) long -> x2
-; V04 loc2 [V04,T01] ( 10, 9.19) long -> x3
+; V01 arg1 [V01,T02] ( 7, 6.24) ref -> x1 class-hnd <System.Object>
+; V02 loc0 [V02,T04] ( 4, 3.65) long -> x2
+; V03 loc1 [V03,T03] ( 10, 8.24) long -> x3
+; V04 loc2 [V04,T01] ( 10, 9.19) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG10
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG08
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG12
+ cbz x1, G_M24157_IG12
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG10
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG08
;; size=28 bbWeight=1 PerfScore 12.50
G_M24157_IG03: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG10
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG12
;; size=12 bbWeight=1.29 PerfScore 5.82
G_M24157_IG04: ; bbWeight=1.26, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x08]
- cmp x4, x0
- beq G_M24157_IG10
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG12
;; size=12 bbWeight=1.26 PerfScore 5.69
G_M24157_IG05: ; bbWeight=0.97, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG10
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG10
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG12
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG12
;; size=24 bbWeight=0.97 PerfScore 8.74
G_M24157_IG06: ; bbWeight=0.94, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG03
;; size=16 bbWeight=0.94 PerfScore 2.35
G_M24157_IG07: ; bbWeight=0.65, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG12
+ cbz x3, G_M24157_IG10
;; size=4 bbWeight=0.65 PerfScore 0.65
-G_M24157_IG08: ; bbWeight=0.65, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG08: ; bbWeight=0.63, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG12
+ ;; size=12 bbWeight=0.63 PerfScore 2.82
+G_M24157_IG09: ; bbWeight=0.59, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG08
+ ;; size=16 bbWeight=0.59 PerfScore 1.47
+G_M24157_IG10: ; bbWeight=0.65, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- bne G_M24157_IG15
+ bne G_M24157_IG14
;; size=16 bbWeight=0.65 PerfScore 3.24
-G_M24157_IG09: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG11: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0.41 PerfScore 0.21
-G_M24157_IG10: ; bbWeight=0.76, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG12: ; bbWeight=1.59, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.76 PerfScore 0.38
-G_M24157_IG11: ; bbWeight=0.76, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=1.59 PerfScore 0.80
+G_M24157_IG13: ; bbWeight=1.59, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.76 PerfScore 3.06
-G_M24157_IG12: ; bbWeight=0.63, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=1.59 PerfScore 3.18
+G_M24157_IG14: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG10
- ;; size=12 bbWeight=0.63 PerfScore 2.82
-G_M24157_IG13: ; bbWeight=0.59, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG12
- ;; size=16 bbWeight=0.59 PerfScore 1.47
-G_M24157_IG14: ; bbWeight=0.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG08
- ;; size=4 bbWeight=0.29 PerfScore 0.29
-G_M24157_IG15: ; bbWeight=0.24, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.24 PerfScore 1.06
-G_M24157_IG16: ; bbWeight=0.24, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG15: ; bbWeight=0.24, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.24 PerfScore 0.94
+ ;; size=8 bbWeight=0.24 PerfScore 0.47
-; Total bytes of code 204, prolog size 12, PerfScore 51.72, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 50.49, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -130,10 +124,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-12 (-3.09%) : 32260.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
@@ -5,15 +5,15 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 61
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 61
; 0 inlinees with PGO data; 9 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
; V00 arg0 [V00,T02] ( 6, 22.56) long -> x19 single-def
; V01 arg1 [V01,T05] ( 8, 5.10) long -> x21 single-def
-; V02 arg2 [V02,T04] ( 6, 5.93) long -> x20 single-def
-; V03 loc0 [V03,T00] ( 26, 88.07) long -> x22
-; V04 loc1 [V04,T07] ( 5, 4.48) long -> x1
+; V02 arg2 [V02,T04] ( 6, 6.65) long -> x20 single-def
+; V03 loc0 [V03,T00] ( 26, 88.79) long -> x22
+; V04 loc1 [V04,T07] ( 5, 4.48) long -> x0
; V05 loc2 [V05,T06] ( 15, 5.70) int -> x20
; V06 loc3 [V06,T01] ( 5, 76.08) long -> x0
;* V07 loc4 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
@@ -28,7 +28,7 @@
; V16 loc13 [V16,T10] ( 5, 93.93) simd16 -> d16 HFA(simd16) <System.Runtime.Intrinsics.Vector128`1[ubyte]>
;* V17 loc14 [V17 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Runtime.Intrinsics.Vector128`1[ushort]>
;* V18 loc15 [V18 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Runtime.Intrinsics.Vector128`1[ushort]>
-; V19 loc16 [V19,T09] ( 2, 1.44) long -> x0
+; V19 loc16 [V19,T09] ( 2, 1.44) long -> x1
;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V21 tmp1 [V21 ] ( 0, 0 ) struct (32) zero-ref HFA(simd16) "dup spill" <System.ValueTuple`2[System.Runtime.Intrinsics.Vector128`1[ushort],System.Runtime.Intrinsics.Vector128`1[ushort]]>
;* V22 tmp2 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
@@ -86,9 +86,11 @@ G_M26761_IG04: ; bbWeight=18.79, gcrefRegs=0000 {}, byrefRegs=0000 {}, by
cmp x22, x1
bls G_M26761_IG04
;; size=52 bbWeight=18.79 PerfScore 234.84
-G_M26761_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG05: ; bbWeight=1.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x22, x20
- bls G_M26761_IG06
+ bls G_M26761_IG07
+ ;; size=8 bbWeight=1.72 PerfScore 2.58
+G_M26761_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -101,32 +103,17 @@ G_M26761_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=44 bbWeight=1 PerfScore 9.00
-G_M26761_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sub x1, x20, x22
- cmp x1, #4
- bhs G_M26761_IG11
- ;; size=12 bbWeight=1 PerfScore 2.00
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M26761_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #1, G_M26761_IG15
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M26761_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- tbnz w1, #0, G_M26761_IG14
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M26761_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov x0, x22
- ;; size=4 bbWeight=1 PerfScore 0.50
-G_M26761_IG10: ; bbWeight=1, epilog, nogc, extend
- ldp x21, x22, [sp, #0x20]
- ldp x19, x20, [sp, #0x10]
- ldp fp, lr, [sp], #0x30
- ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
-G_M26761_IG11: ; bbWeight=0.48, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- add x0, x22, x1
- sub x0, x0, #4
+ sub x0, x20, x22
+ cmp x0, #4
+ blo G_M26761_IG10
+ ;; size=12 bbWeight=1 PerfScore 2.00
+G_M26761_IG08: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add x1, x22, x0
+ sub x1, x1, #4
;; size=8 bbWeight=0.48 PerfScore 0.48
-G_M26761_IG12: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG09: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, x22]
tst w20, #0xD1FFAB1E
bne G_M26761_IG16
@@ -137,32 +124,42 @@ G_M26761_IG12: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
lsl x3, x22, #1
str x2, [x21, x3]
add x22, x22, #4
- cmp x22, x0
- bls G_M26761_IG12
+ cmp x22, x1
+ bls G_M26761_IG09
;; size=48 bbWeight=0.97 PerfScore 12.57
-G_M26761_IG13: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M26761_IG07
- ;; size=4 bbWeight=0.48 PerfScore 0.48
-G_M26761_IG14: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ldrb w20, [x19, x22]
- tbnz w20, #7, G_M26761_IG09
- strh w20, [x21, x22, LSL #2]
- add x22, x22, #1
- b G_M26761_IG09
- ;; size=20 bbWeight=0.41 PerfScore 2.66
-G_M26761_IG15: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tbz w0, #1, G_M26761_IG12
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M26761_IG11: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
ldrh w20, [x19, x22]
tst w20, #0xD1FFAB1E
bne G_M26761_IG16
- uxtb w0, w20
- strh w0, [x21, x22, LSL #2]
- lsr w0, w20, #8
+ uxtb w1, w20
+ strh w1, [x21, x22, LSL #2]
+ lsr w1, w20, #8
add x2, x21, x22, LSL #1
- strh w0, [x2, #0x02]
+ strh w1, [x2, #0x02]
add x22, x22, #2
- b G_M26761_IG08
- ;; size=40 bbWeight=0.39 PerfScore 4.13
-G_M26761_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=36 bbWeight=0.39 PerfScore 3.74
+G_M26761_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ tbz w0, #0, G_M26761_IG14
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M26761_IG13: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ldrb w20, [x19, x22]
+ tbnz w20, #7, G_M26761_IG14
+ strh w20, [x21, x22, LSL #2]
+ add x22, x22, #1
+ ;; size=16 bbWeight=0.41 PerfScore 2.25
+G_M26761_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov x0, x22
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M26761_IG15: ; bbWeight=1, epilog, nogc, extend
+ ldp x21, x22, [sp, #0x20]
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x30
+ ret lr
+ ;; size=16 bbWeight=1 PerfScore 4.00
+G_M26761_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
tst w20, #0xD1FFAB1E
bne G_M26761_IG18
movz x0, #0xD1FFAB1E
@@ -188,10 +185,10 @@ G_M26761_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M26761_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
uxtb w0, w20
tbz w0, #7, G_M26761_IG17
- b G_M26761_IG09
+ b G_M26761_IG14
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 388, prolog size 28, PerfScore 280.59, instruction count 97, allocated bytes for code 388 (MethodHash=eb059776) for method System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
+; Total bytes of code 376, prolog size 28, PerfScore 280.39, instruction count 94, allocated bytes for code 376 (MethodHash=eb059776) for method System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
; ============================================================
Unwind Info:
@@ -202,7 +199,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 97 (0x00061) Actual length = 388 (0x000184)
+ Function Length : 94 (0x0005e) Actual length = 376 (0x000178)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-2.51%) : 4145.dasm - System.Linq.Enumerable:TryGetFirstSystem.__Canon:System.__Canon (Tier1)
@@ -13,7 +13,7 @@
; V01 arg0 [V01,T15] ( 4, 4 ) ref -> x21 class-hnd single-def <System.Collections.Generic.IEnumerable`1[System.__Canon]>
; V02 arg1 [V02,T06] ( 7, 13.86) ref -> x19 class-hnd single-def <System.Func`2[System.__Canon,ubyte]>
; V03 arg2 [V03,T20] ( 4, 3 ) byref -> x22 single-def
-; V04 loc0 [V04,T05] ( 10, 17.34) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
+; V04 loc0 [V04,T05] ( 9, 16.60) ref -> [fp+0x18] class-hnd EH-live spill-single-def <System.Collections.Generic.IEnumerator`1[System.__Canon]>
; V05 loc1 [V05,T10] ( 4, 8.49) ref -> x24 class-hnd <System.__Canon>
; V06 loc2 [V06,T24] ( 2, 0.52) ref -> [fp+0x10] do-not-enreg[Z] must-init class-hnd EH-live <System.__Canon>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon>
@@ -63,8 +63,8 @@ G_M62024_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=48 bbWeight=1 PerfScore 9.00
G_M62024_IG02: ; bbWeight=1, gcVars=0000000001000000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref, isz
; GC ptr vars +{V06 V24}
- cbz x21, G_M62024_IG33
- cbz x19, G_M62024_IG34
+ cbz x21, G_M62024_IG32
+ cbz x19, G_M62024_IG33
ldr x0, [x20, #0x38]
ldr x11, [x0, #0x10]
cbz x11, G_M62024_IG24
@@ -261,10 +261,10 @@ G_M62024_IG21: ; bbWeight=4.85, gcrefRegs=80001 {x0 x19}, byrefRegs=40000
; gcr arg pop 0
cbnz w0, G_M62024_IG05
;; size=24 bbWeight=4.85 PerfScore 31.54
-G_M62024_IG22: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M62024_IG22: ; bbWeight=0.38, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x19]
- b G_M62024_IG25
- ;; size=4 bbWeight=0.74 PerfScore 0.74
+ b G_M62024_IG27
+ ;; size=4 bbWeight=0.38 PerfScore 0.38
G_M62024_IG23: ; bbWeight=0.26, gcrefRegs=1000000 {x24}, byrefRegs=400000 {x22}, byref
; gcrRegs +[x24]
ldr x0, [fp, #0x18] // [V04 loc0]
@@ -272,7 +272,7 @@ G_M62024_IG23: ; bbWeight=0.26, gcrefRegs=1000000 {x24}, byrefRegs=400000
mov w11, #1
strb w11, [x22]
str x24, [fp, #0x10] // [V06 loc2]
- b G_M62024_IG29
+ b G_M62024_IG28
;; size=20 bbWeight=0.26 PerfScore 1.44
G_M62024_IG24: ; bbWeight=0.20, gcVars=0000000001000000 {V06}, gcrefRegs=280000 {x19 x21}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs -[x0 x24] +[x19 x21]
@@ -286,19 +286,23 @@ G_M62024_IG24: ; bbWeight=0.20, gcVars=0000000001000000 {V06}, gcrefRegs=
mov x11, x0
b G_M62024_IG03
;; size=28 bbWeight=0.20 PerfScore 0.90
-G_M62024_IG25: ; bbWeight=0.74, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref, isz
+G_M62024_IG25: ; bbWeight=0.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
; gcrRegs -[x19 x21]
- ; GC ptr vars -{V06} +{V04 V05}
+ ; GC ptr vars -{V06}
+ strb wzr, [x22]
+ mov x0, xzr
+ ;; size=8 bbWeight=0.74 PerfScore 1.11
+G_M62024_IG26: ; bbWeight=0.74, epilog, nogc, extend
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
+ ldp fp, lr, [sp], #0x60
+ ret lr
+ ;; size=20 bbWeight=0.74 PerfScore 3.69
+G_M62024_IG27: ; bbWeight=0.38, gcVars=0000000000000020 {V04}, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, gcvars, byref
+ ; GC ptr vars +{V04 V05}
ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
- ldr x11, [x0]
- movz x1, #0xD1FFAB1E
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- cmp x11, x1
- beq G_M62024_IG27
- ;; size=28 bbWeight=0.74 PerfScore 5.90
-G_M62024_IG26: ; bbWeight=0.38, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
@@ -307,42 +311,32 @@ G_M62024_IG26: ; bbWeight=0.38, gcrefRegs=0001 {x0}, byrefRegs=400000 {x2
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=20 bbWeight=0.38 PerfScore 2.07
-G_M62024_IG27: ; bbWeight=0.74, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
- strb wzr, [x22]
- mov x0, xzr
- ;; size=8 bbWeight=0.74 PerfScore 1.11
-G_M62024_IG28: ; bbWeight=0.74, epilog, nogc, extend
- ldp x23, x24, [sp, #0x50]
- ldp x21, x22, [sp, #0x40]
- ldp x19, x20, [sp, #0x30]
- ldp fp, lr, [sp], #0x60
- ret lr
- ;; size=20 bbWeight=0.74 PerfScore 3.69
-G_M62024_IG29: ; bbWeight=0.26, gcVars=0000000001000020 {V04 V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
+ b G_M62024_IG25
+ ;; size=28 bbWeight=0.38 PerfScore 3.20
+G_M62024_IG28: ; bbWeight=0.26, gcVars=0000000001000020 {V04 V06}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x0]
; byrRegs -[x22]
; GC ptr vars +{V04 V05 V06 V24}
ldr x0, [fp, #0x28] // [V26 PSPSym]
; gcrRegs -[x0]
- bl G_M62024_IG35
+ bl G_M62024_IG34
;; size=8 bbWeight=0.26 PerfScore 0.79
-G_M62024_IG30: ; bbWeight=0.26, nogc, extend
+G_M62024_IG29: ; bbWeight=0.26, nogc, extend
nop
;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M62024_IG31: ; bbWeight=0.26, gcVars=0000000001000000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG30: ; bbWeight=0.26, gcVars=0000000001000000 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V04 V05 V24}
ldr x0, [fp, #0x10] // [V06 loc2]
; gcrRegs +[x0]
;; size=4 bbWeight=0.26 PerfScore 0.52
-G_M62024_IG32: ; bbWeight=0.26, epilog, nogc, extend
+G_M62024_IG31: ; bbWeight=0.26, epilog, nogc, extend
ldp x23, x24, [sp, #0x50]
ldp x21, x22, [sp, #0x40]
ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x60
ret lr
;; size=20 bbWeight=0.26 PerfScore 1.31
-G_M62024_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M62024_IG32: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
; GC ptr vars -{V06}
mov w0, #17
@@ -354,7 +348,7 @@ G_M62024_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG34: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M62024_IG33: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #12
movz x1, #0xD1FFAB1E // code for System.Linq.ThrowHelper:ThrowArgumentNullException(int)
movk x1, #0xD1FFAB1E LSL #16
@@ -364,7 +358,7 @@ G_M62024_IG34: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=28 bbWeight=0 PerfScore 0.00
-G_M62024_IG35: ; bbWeight=0.26, gcVars=0000000001000020 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M62024_IG34: ; bbWeight=0.26, gcVars=0000000001000020 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V04 V05 V06 V24}
stp fp, lr, [sp, #-0x50]!
stp x19, x20, [sp, #0x20]
@@ -373,18 +367,18 @@ G_M62024_IG35: ; bbWeight=0.26, gcVars=0000000001000020 {V04 V06}, gcrefR
add x3, fp, #96
str x3, [sp, #0x18]
;; size=24 bbWeight=0.26 PerfScore 1.44
-G_M62024_IG36: ; bbWeight=0.26, gcVars=0000000001000020 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M62024_IG35: ; bbWeight=0.26, gcVars=0000000001000020 {V04 V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr x0, [fp, #0x18] // [V04 loc0]
; gcrRegs +[x0]
- cbz x0, G_M62024_IG38
+ cbz x0, G_M62024_IG37
ldr x11, [x0]
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x11, x1
- beq G_M62024_IG38
+ beq G_M62024_IG37
;; size=32 bbWeight=0.26 PerfScore 2.36
-G_M62024_IG37: ; bbWeight=0.13, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M62024_IG36: ; bbWeight=0.13, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #0xD1FFAB1E LSL #32
@@ -394,7 +388,7 @@ G_M62024_IG37: ; bbWeight=0.13, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; gcrRegs -[x0]
; gcr arg pop 0
;; size=20 bbWeight=0.13 PerfScore 0.74
-G_M62024_IG38: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
+G_M62024_IG37: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
@@ -402,7 +396,7 @@ G_M62024_IG38: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ret lr
;; size=20 bbWeight=0.26 PerfScore 3.41
-; Total bytes of code 796, prolog size 48, PerfScore 405.81, instruction count 199, allocated bytes for code 796 (MethodHash=c4780db7) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
+; Total bytes of code 776, prolog size 48, PerfScore 400.68, instruction count 194, allocated bytes for code 776 (MethodHash=c4780db7) for method System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
; ============================================================
Unwind Info:
@@ -413,7 +407,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 175 (0x000af) Actual length = 700 (0x0002bc)
+ Function Length : 170 (0x000aa) Actual length = 680 (0x0002a8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -453,5 +447,5 @@ Unwind Info:
*************** EH table for System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon
1 EH table entries, 0 duplicate clauses, 1 cloned finallys, 2 total EH entries reported to VM
-EH#0: try [G_M62024_IG04..G_M62024_IG24) handled by [G_M62024_IG35..END) (finally)
-EH#1: try [G_M62024_IG29..G_M62024_IG29) handled by [G_M62024_IG29..G_M62024_IG31) (finally) cloned finally
+EH#0: try [G_M62024_IG04..G_M62024_IG24) handled by [G_M62024_IG34..END) (finally)
+EH#1: try [G_M62024_IG28..G_M62024_IG28) handled by [G_M62024_IG28..G_M62024_IG30) (finally) cloned finally
+8 (+3.92%) : 19292.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 5.06) long -> x19 single-def
-; V01 arg1 [V01,T02] ( 5, 4 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 8, 5.20) long -> x19 single-def
+; V01 arg1 [V01,T02] ( 5, 4.14) ref -> x20 class-hnd single-def <System.Object>
; V02 loc0 [V02,T00] ( 18, 8.75) long -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -50,7 +50,7 @@ G_M64200_IG03: ; bbWeight=1.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
beq G_M64200_IG05
;; size=12 bbWeight=1.50 PerfScore 6.75
G_M64200_IG04: ; bbWeight=0.55, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M64200_IG09
+ cbz x21, G_M64200_IG08
ldr x21, [x21, #0x18]
cmp x21, x19
bne G_M64200_IG07
@@ -67,19 +67,13 @@ G_M64200_IG06: ; bbWeight=1, epilog, nogc, extend
;; size=16 bbWeight=1 PerfScore 5.00
G_M64200_IG07: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- cbz x21, G_M64200_IG09
+ cbz x21, G_M64200_IG08
ldr x21, [x21, #0x18]
cmp x21, x19
- beq G_M64200_IG05
- ;; size=16 bbWeight=0.01 PerfScore 0.06
-G_M64200_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M64200_IG09
- ldr x21, [x21, #0x18]
- cmp x21, x19
- beq G_M64200_IG05
- cbnz x21, G_M64200_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M64200_IG09: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bne G_M64200_IG10
+ b G_M64200_IG05
+ ;; size=20 bbWeight=0.01 PerfScore 0.07
+G_M64200_IG08: ; bbWeight=0.14, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
mov x1, x20
; gcrRegs +[x1]
@@ -87,16 +81,25 @@ G_M64200_IG09: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M64200_IG10: ; bbWeight=0, epilog, nogc, extend
+ ;; size=24 bbWeight=0.14 PerfScore 0.77
+G_M64200_IG09: ; bbWeight=0.14, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0.14 PerfScore 0.70
+G_M64200_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x1]
+ cbz x21, G_M64200_IG08
+ ldr x21, [x21, #0x18]
+ cmp x21, x19
+ beq G_M64200_IG05
+ cbnz x21, G_M64200_IG03
+ b G_M64200_IG08
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 24, PerfScore 32.84, instruction count 51, allocated bytes for code 204 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 212, prolog size 24, PerfScore 34.33, instruction count 53, allocated bytes for code 212 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -107,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
+8 (+3.92%) : 20724.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 4.93) long -> x19 single-def
-; V01 arg1 [V01,T02] ( 5, 4 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 8, 5.00) long -> x19 single-def
+; V01 arg1 [V01,T02] ( 5, 4.08) ref -> x20 class-hnd single-def <System.Object>
; V02 loc0 [V02,T00] ( 18, 8.21) long -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -61,23 +61,13 @@ G_M64200_IG05: ; bbWeight=1, epilog, nogc, extend
;; size=16 bbWeight=1 PerfScore 5.00
G_M64200_IG06: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- cbz x21, G_M64200_IG08
+ cbz x21, G_M64200_IG07
ldr x21, [x21, #0x18]
cmp x21, x19
- beq G_M64200_IG04
- ;; size=16 bbWeight=0.43 PerfScore 2.35
-G_M64200_IG07: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M64200_IG08
- ldr x21, [x21, #0x18]
- cmp x21, x19
- beq G_M64200_IG04
- cbz x21, G_M64200_IG08
- ldr x21, [x21, #0x18]
- cmp x21, x19
- beq G_M64200_IG04
- cbnz x21, G_M64200_IG03
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M64200_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bne G_M64200_IG09
+ b G_M64200_IG04
+ ;; size=20 bbWeight=0.43 PerfScore 2.77
+G_M64200_IG07: ; bbWeight=0.08, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
mov x1, x20
; gcrRegs +[x1]
@@ -85,16 +75,29 @@ G_M64200_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M64200_IG09: ; bbWeight=0, epilog, nogc, extend
+ ;; size=24 bbWeight=0.08 PerfScore 0.42
+G_M64200_IG08: ; bbWeight=0.08, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0.08 PerfScore 0.39
+G_M64200_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x1]
+ cbz x21, G_M64200_IG07
+ ldr x21, [x21, #0x18]
+ cmp x21, x19
+ beq G_M64200_IG04
+ cbz x21, G_M64200_IG07
+ ldr x21, [x21, #0x18]
+ cmp x21, x19
+ beq G_M64200_IG04
+ cbnz x21, G_M64200_IG03
+ b G_M64200_IG07
+ ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 24, PerfScore 32.10, instruction count 51, allocated bytes for code 204 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 212, prolog size 24, PerfScore 33.33, instruction count 53, allocated bytes for code 212 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -105,7 +108,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
+8 (+3.92%) : 26488.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 4.84) long -> x19 single-def
-; V01 arg1 [V01,T02] ( 5, 4 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 8, 4.93) long -> x19 single-def
+; V01 arg1 [V01,T02] ( 5, 4.10) ref -> x20 class-hnd single-def <System.Object>
; V02 loc0 [V02,T00] ( 18, 7.85) long -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -61,23 +61,13 @@ G_M64200_IG05: ; bbWeight=1, epilog, nogc, extend
;; size=16 bbWeight=1 PerfScore 5.00
G_M64200_IG06: ; bbWeight=0.34, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- cbz x21, G_M64200_IG08
+ cbz x21, G_M64200_IG07
ldr x21, [x21, #0x18]
cmp x21, x19
- beq G_M64200_IG04
- ;; size=16 bbWeight=0.34 PerfScore 1.86
-G_M64200_IG07: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M64200_IG08
- ldr x21, [x21, #0x18]
- cmp x21, x19
- beq G_M64200_IG04
- cbz x21, G_M64200_IG08
- ldr x21, [x21, #0x18]
- cmp x21, x19
- beq G_M64200_IG04
- cbnz x21, G_M64200_IG03
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M64200_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bne G_M64200_IG09
+ b G_M64200_IG04
+ ;; size=20 bbWeight=0.34 PerfScore 2.20
+G_M64200_IG07: ; bbWeight=0.10, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
mov x1, x20
; gcrRegs +[x1]
@@ -85,16 +75,29 @@ G_M64200_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M64200_IG09: ; bbWeight=0, epilog, nogc, extend
+ ;; size=24 bbWeight=0.10 PerfScore 0.53
+G_M64200_IG08: ; bbWeight=0.10, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0.10 PerfScore 0.48
+G_M64200_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x1]
+ cbz x21, G_M64200_IG07
+ ldr x21, [x21, #0x18]
+ cmp x21, x19
+ beq G_M64200_IG04
+ cbz x21, G_M64200_IG07
+ ldr x21, [x21, #0x18]
+ cmp x21, x19
+ beq G_M64200_IG04
+ cbnz x21, G_M64200_IG03
+ b G_M64200_IG07
+ ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 24, PerfScore 31.61, instruction count 51, allocated bytes for code 204 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 212, prolog size 24, PerfScore 32.95, instruction count 53, allocated bytes for code 212 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -105,7 +108,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
librariestestsnotieredcompilation.run.linux.arm64.Release.mch
-24 (-3.31%) : 170356.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
@@ -8,32 +8,33 @@
; 0 inlinees with PGO data; 3 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 26,731 ) ref -> x20 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
-; V01 arg1 [V01,T00] ( 26,754 ) ref -> x19 class-hnd single-def <System.Xml.XPath.XPathNavigator>
+; V00 this [V00,T00] ( 26,245.50) ref -> x19 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
+; V01 arg1 [V01,T01] ( 20,214 ) ref -> x20 class-hnd single-def <System.Xml.XPath.XPathNavigator>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T02] ( 6,559 ) int -> x21
+; V03 loc1 [V03,T04] ( 6,109.50) int -> x21
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref
-; V09 tmp5 [V09,T15] ( 3, 8 ) int -> x2
+; V09 tmp5 [V09,T13] ( 3, 8 ) int -> x2
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp7 [V11,T11] ( 2, 32 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
-; V12 tmp8 [V12,T12] ( 2, 32 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
-; V13 tmp9 [V13,T13] ( 2, 32 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
-; V14 tmp10 [V14,T06] ( 4, 64 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
+; V11 tmp7 [V11,T14] ( 2, 8 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
+; V12 tmp8 [V12,T15] ( 2, 8 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
+; V13 tmp9 [V13,T16] ( 2, 8 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
+; V14 tmp10 [V14,T11] ( 4, 16 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp12 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
+; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
; V18 tmp14 [V18,T08] ( 2, 64 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
; V19 tmp15 [V19,T09] ( 2, 64 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
; V20 tmp16 [V20,T03] ( 4,128 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref
-; V22 tmp18 [V22,T14] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V23 tmp19 [V23,T10] ( 3, 48 ) ref -> x0 "argument with side effect"
+; V22 tmp18 [V22,T10] ( 3, 24 ) ref -> x0 "argument with side effect"
+; V23 tmp19 [V23,T12] ( 3, 12 ) ref -> x0 "argument with side effect"
; V24 tmp20 [V24,T05] ( 3, 96 ) ref -> x0 "argument with side effect"
-; V25 cse0 [V25,T04] ( 9, 96 ) long -> x22 multi-def "CSE - aggressive"
+; V25 cse0 [V25,T06] ( 9, 78 ) long -> x23 multi-def "CSE - aggressive"
+; V26 cse1 [V26,T02] ( 10,146 ) long -> x22 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -43,21 +44,21 @@ G_M8478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
mov fp, sp
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
+ mov x20, x1
+ ; gcrRegs +[x20]
;; size=28 bbWeight=1 PerfScore 5.50
G_M8478_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ldr w21, [x20, #0x58]
+ ldr w21, [x19, #0x58]
;; size=4 bbWeight=1 PerfScore 3.00
G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x20, #0x58]
+ ldr w2, [x19, #0x58]
cmp w2, w21
cset x2, eq
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
@@ -68,26 +69,25 @@ G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
cbz w0, G_M8478_IG16
;; size=44 bbWeight=8 PerfScore 92.00
G_M8478_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x22, [x1, #0x60]
- ldr x1, [x22, #0x08]
+ ldr x22, [x20]
+ ldr x23, [x22, #0x60]
+ ldr x1, [x23, #0x08]
blr x1
; gcrRegs -[x0]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x68]
+ ldr x1, [x22, #0x68]
ldr x1, [x1, #0x38]
blr x1
; gcrRegs -[x0]
cbz w0, G_M8478_IG07
- ;; size=44 bbWeight=4 PerfScore 88.00
+ ;; size=40 bbWeight=4 PerfScore 76.00
G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
mov w2, wzr
movz x3, #0xD1FFAB1E // code for <unknown method>
@@ -96,26 +96,24 @@ G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x70]
+ ldr x1, [x22, #0x70]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG05
- ;; size=56 bbWeight=16 PerfScore 296.00
+ ;; size=52 bbWeight=16 PerfScore 248.00
G_M8478_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1, #0x08]
blr x1
; gcrRegs -[x0]
- ;; size=20 bbWeight=2 PerfScore 21.00
+ ;; size=16 bbWeight=2 PerfScore 15.00
G_M8478_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
beq G_M8478_IG09
@@ -128,9 +126,9 @@ G_M8478_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
mov w2, #1
;; size=4 bbWeight=2 PerfScore 1.00
G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNamespaces(System.Xml.XPath.XPathNavigator,int):this
movk x3, #0xD1FFAB1E LSL #16
@@ -138,11 +136,11 @@ G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr w0, [x20, #0x60]
+ ldr w0, [x19, #0x60]
cbz w0, G_M8478_IG12
;; size=36 bbWeight=4 PerfScore 42.00
G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteCachedNamespaces():this
movk x1, #0xD1FFAB1E LSL #16
@@ -152,7 +150,7 @@ G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
; gcrRegs -[x0]
;; size=24 bbWeight=2 PerfScore 12.00
G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x20, #0x10]
+ ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x98]
@@ -160,24 +158,23 @@ G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
mov w0, #2
- str w0, [x20, #0x5C]
- mov x0, x19
+ str w0, [x19, #0x5C]
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG03
- ;; size=52 bbWeight=4 PerfScore 104.00
-G_M8478_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ;; size=48 bbWeight=4 PerfScore 92.00
+G_M8478_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
bne G_M8478_IG15
- ;; size=16 bbWeight=2 PerfScore 10.00
-G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M8478_IG14: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteEndElement():this
movk x1, #0xD1FFAB1E LSL #16
@@ -186,26 +183,26 @@ G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
b G_M8478_IG16
- ;; size=28 bbWeight=8 PerfScore 56.00
-G_M8478_IG15: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ ;; size=28 bbWeight=2 PerfScore 14.00
+G_M8478_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x22, #0x28]
+ ldr x1, [x23, #0x28]
blr x1
- mov x23, x0
- ; gcrRegs +[x23]
- mov x0, x19
- ldr x1, [x22, #0x10]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ mov x0, x20
+ ldr x1, [x23, #0x10]
blr x1
mov x24, x0
; gcrRegs +[x24]
- mov x0, x19
- ldr x1, [x22, #0x20]
+ mov x0, x20
+ ldr x1, [x23, #0x20]
blr x1
mov x3, x0
; gcrRegs +[x3]
- ldr x0, [x20, #0x10]
- mov x1, x23
+ ldr x0, [x19, #0x10]
+ mov x1, x22
...
-8 (-2.11%) : 25503.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 this [V00,T07] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Dynamic.DynamicObject+MetaDynamic>
-; V01 arg1 [V01,T04] ( 6, 6.03) ref -> x19 class-hnd single-def <System.Reflection.MethodInfo>
+; V01 arg1 [V01,T04] ( 6, 8 ) ref -> x19 class-hnd single-def <System.Reflection.MethodInfo>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
; V03 loc1 [V03,T13] ( 3, 2.50) ref -> x0 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T01] ( 5, 17 ) int -> x20
@@ -22,8 +22,8 @@
; V11 tmp5 [V11,T10] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
; V12 tmp6 [V12,T15] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
; V13 tmp7 [V13,T05] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.Dynamic.DynamicObject>
-; V14 tmp8 [V14,T14] ( 2, 2.03) ubyte -> x0 "Inline return value spill temp"
-; V15 tmp9 [V15,T03] ( 5, 8.18) ref -> x0 class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
+; V14 tmp8 [V14,T14] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V15 tmp9 [V15,T03] ( 5, 16.06) ref -> x0 class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
; V16 tmp10 [V16,T11] ( 2, 4 ) ref -> x20 single-def "argument with side effect"
; V17 tmp11 [V17,T12] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V18 cse0 [V18,T09] ( 2, 4.50) byref -> x22 hoist "CSE - aggressive"
@@ -31,7 +31,7 @@
;
; Lcl frame size = 8
-G_M46876_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M46876_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]
@@ -88,7 +88,7 @@ G_M46876_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
mov w20, wzr
ldr w21, [x0, #0x08]
cmp w21, #0
- ble G_M46876_IG16
+ ble G_M46876_IG15
;; size=80 bbWeight=1 PerfScore 24.50
G_M46876_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
add x22, x0, #16
@@ -130,7 +130,7 @@ G_M46876_IG10: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=400000
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M46876_IG15
+ beq G_M46876_IG14
;; size=40 bbWeight=4 PerfScore 54.00
G_M46876_IG11: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
@@ -142,38 +142,12 @@ G_M46876_IG11: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=400000
blr x1
; gcrRegs -[x23]
cmp x0, x19
- beq G_M46876_IG19
+ beq G_M46876_IG17
;; size=28 bbWeight=2 PerfScore 24.00
G_M46876_IG12: ; bbWeight=0.03, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
- cbz x0, G_M46876_IG15
+ cbz x0, G_M46876_IG14
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M46876_IG13: ; bbWeight=0.03, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref
- b G_M46876_IG18
- ;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M46876_IG14: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x0]
- cbnz w0, G_M46876_IG19
- ;; size=4 bbWeight=2 PerfScore 2.00
-G_M46876_IG15: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- add w20, w20, #1
- cmp w21, w20
- bgt G_M46876_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M46876_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x22]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M46876_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
- ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M46876_IG18: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref
- ; gcrRegs +[x0 x19]
- ; byrRegs +[x22]
+G_M46876_IG13: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
mov x1, x19
; gcrRegs +[x1]
ldr x2, [x0]
@@ -181,14 +155,29 @@ G_M46876_IG18: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=800
ldr x2, [x2, #0x10]
blr x2
; gcrRegs -[x0-x1]
- b G_M46876_IG14
- ;; size=24 bbWeight=0.03 PerfScore 0.35
-G_M46876_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M46876_IG17
+ ;; size=24 bbWeight=2 PerfScore 23.00
+G_M46876_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ add w20, w20, #1
+ cmp w21, w20
+ bgt G_M46876_IG07
+ ;; size=12 bbWeight=4 PerfScore 8.00
+G_M46876_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x22]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M46876_IG16: ; 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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M46876_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M46876_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M46876_IG18: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -196,7 +185,7 @@ G_M46876_IG20: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 380, prolog size 20, PerfScore 158.34, instruction count 95, allocated bytes for code 380 (MethodHash=33b248e3) for method System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
+; Total bytes of code 372, prolog size 20, PerfScore 178.97, instruction count 93, allocated bytes for code 372 (MethodHash=33b248e3) for method System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -207,7 +196,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
+ Function Length : 93 (0x0005d) Actual length = 372 (0x000174)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-1.34%) : 277014.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2086_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,27 +8,27 @@
; 8 inlinees with PGO data; 21 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 26,104.50) ref -> x19 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V00 arg0 [V00,T06] ( 26, 80.50) ref -> x19 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V03 loc1 [V03,T53] ( 6, 5 ) int -> x23 single-def
-; V04 loc2 [V04,T05] ( 23,176.50) int -> registers
+; V04 loc2 [V04,T03] ( 23,112.50) int -> registers
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T00] ( 53,421 ) int -> x24
-; V07 loc5 [V07,T02] ( 7,241 ) int -> x27
-; V08 loc6 [V08,T11] ( 10, 64 ) int -> x22
-; V09 loc7 [V09,T28] ( 4, 10 ) int -> [fp+0x2C]
-; V10 loc8 [V10,T30] ( 7, 16 ) int -> [fp+0x28]
-; V11 loc9 [V11,T19] ( 8, 34 ) int -> x28
+; V06 loc4 [V06,T00] ( 53,293 ) int -> x24
+; V07 loc5 [V07,T01] ( 7,129 ) int -> x27
+; V08 loc6 [V08,T07] ( 10, 56 ) int -> registers
+; V09 loc7 [V09,T26] ( 4, 10 ) int -> [fp+0x2C]
+; V10 loc8 [V10,T28] ( 7, 16 ) int -> [fp+0x28]
+; V11 loc9 [V11,T16] ( 8, 34 ) int -> x28
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V14 tmp2 [V14,T52] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V14 tmp2 [V14,T65] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp4 [V16,T51] ( 3, 6 ) int -> x26 "Inlining Arg"
+; V16 tmp4 [V16,T52] ( 3, 6 ) int -> x26 "Inlining Arg"
; V17 tmp5 [V17,T56] ( 2, 4 ) byref -> x25 single-def "Inlining Arg"
;* V18 tmp6 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp7 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp8 [V20,T32] ( 2, 16 ) int -> x28 "Inline return value spill temp"
+; V20 tmp8 [V20,T30] ( 2, 16 ) int -> x28 "Inline return value spill temp"
;* V21 tmp9 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp10 [V22,T33] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -46,18 +46,18 @@
;* V35 tmp23 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V36 tmp24 [V36 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V37 tmp25 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V38 tmp26 [V38,T39] ( 3, 12 ) int -> x26 "Inlining Arg"
-; V39 tmp27 [V39,T44] ( 2, 8 ) byref -> x25 "Inlining Arg"
+; V38 tmp26 [V38,T40] ( 3, 12 ) int -> x26 "Inlining Arg"
+; V39 tmp27 [V39,T45] ( 2, 8 ) byref -> x25 "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V43 tmp31 [V43,T40] ( 3, 12 ) int -> [fp+0x24] spill-single-def "Inlining Arg"
-; V44 tmp32 [V44,T45] ( 2, 8 ) byref -> [fp+0x18] spill-single-def "Inlining Arg"
+; V43 tmp31 [V43,T41] ( 3, 12 ) int -> [fp+0x24] spill-single-def "Inlining Arg"
+; V44 tmp32 [V44,T46] ( 2, 8 ) byref -> [fp+0x18] spill-single-def "Inlining Arg"
;* V45 tmp33 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp34 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp35 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V48 tmp36 [V48,T18] ( 3, 48 ) int -> x25 "Inlining Arg"
-; V49 tmp37 [V49,T29] ( 2, 18 ) byref -> x28 "Inlining Arg"
+; V48 tmp36 [V48,T14] ( 3, 48 ) int -> x25 "Inlining Arg"
+; V49 tmp37 [V49,T27] ( 2, 18 ) byref -> x28 "Inlining Arg"
;* V50 tmp38 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V51 tmp39 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V52 tmp40 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -66,30 +66,30 @@
;* V55 tmp43 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V56 tmp44 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V57 tmp45 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V58 tmp46 [V58,T26] ( 3, 24 ) int -> x25 "Inlining Arg"
-; V59 tmp47 [V59,T31] ( 2, 16 ) byref -> x22 "Inlining Arg"
+; V58 tmp46 [V58,T24] ( 3, 24 ) int -> x25 "Inlining Arg"
+; V59 tmp47 [V59,T29] ( 2, 16 ) byref -> x22 "Inlining Arg"
;* V60 tmp48 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V61 tmp49 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V62 tmp50 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V63 tmp51 [V63,T01] ( 3,192 ) int -> x26 "Inlining Arg"
-; V64 tmp52 [V64,T03] ( 2,128 ) byref -> x25 "Inlining Arg"
+; V63 tmp51 [V63,T02] ( 3, 96 ) int -> x26 "Inlining Arg"
+; V64 tmp52 [V64,T04] ( 2, 64 ) byref -> x25 "Inlining Arg"
;* V65 tmp53 [V65 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V66 tmp54 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V67 tmp55 [V67,T55] ( 4, 4 ) int -> x21 "Inlining Arg"
-; V68 tmp56 [V68,T54] ( 5, 5 ) int -> x20 "Inlining Arg"
+; V67 tmp55 [V67,T55] ( 4, 4 ) int -> x20 "Inlining Arg"
+; V68 tmp56 [V68,T54] ( 5, 5 ) int -> x22 "Inlining Arg"
;* V69 tmp57 [V69 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V70 tmp58 [V70,T66] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
-; V71 tmp59 [V71,T65] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V70 tmp58 [V70,T67] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
+; V71 tmp59 [V71,T66] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
; V72 tmp60 [V72,T57] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V73 tmp61 [V73,T60] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V74 tmp62 [V74,T16] ( 6, 48 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V75 tmp63 [V75,T09] ( 11, 95 ) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V76 tmp64 [V76,T12] ( 8, 67 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
-; V77 tmp65 [V77,T10] ( 10, 87 ) int -> registers "field V05._length (fldOffset=0x8)" P-INDEP
+; V74 tmp62 [V74,T17] ( 6, 32 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V75 tmp63 [V75,T08] ( 11, 63 ) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V76 tmp64 [V76,T11] ( 8, 51 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
+; V77 tmp65 [V77,T09] ( 10, 55 ) int -> registers "field V05._length (fldOffset=0x8)" P-INDEP
;* V78 tmp66 [V78 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V79 tmp67 [V79 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V80 tmp68 [V80,T67] ( 2, 2 ) byref -> x25 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V81 tmp69 [V81,T68] ( 2, 2 ) int -> x26 single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V80 tmp68 [V80,T68] ( 2, 2 ) byref -> x25 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V81 tmp69 [V81,T69] ( 2, 2 ) int -> x26 single-def "field V15._length (fldOffset=0x8)" P-INDEP
;* V82 tmp70 [V82 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V83 tmp71 [V83 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V84 tmp72 [V84 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
@@ -104,35 +104,36 @@
;* V93 tmp81 [V93 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V94 tmp82 [V94 ] ( 0, 0 ) byref -> zero-ref "field V52._reference (fldOffset=0x0)" P-INDEP
;* V95 tmp83 [V95 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
-; V96 tmp84 [V96,T46] ( 2, 8 ) byref -> x2 "field V57._reference (fldOffset=0x0)" P-INDEP
-; V97 tmp85 [V97,T47] ( 2, 8 ) int -> x3 "field V57._length (fldOffset=0x8)" P-INDEP
-;* V98 tmp86 [V98,T20] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP
-;* V99 tmp87 [V99,T22] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
-; V100 tmp88 [V100,T17] ( 3, 48 ) ref -> x1 "arr expr"
-; V101 tmp89 [V101,T07] ( 3, 96 ) ref -> x1 "arr expr"
-;* V102 tmp90 [V102,T21] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V96 tmp84 [V96,T47] ( 2, 8 ) byref -> x2 "field V57._reference (fldOffset=0x0)" P-INDEP
+; V97 tmp85 [V97,T48] ( 2, 8 ) int -> x3 "field V57._length (fldOffset=0x8)" P-INDEP
+;* V98 tmp86 [V98,T31] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP
+;* V99 tmp87 [V99,T34] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
+; V100 tmp88 [V100,T12] ( 3, 48 ) ref -> x1 "arr expr"
+; V101 tmp89 [V101,T13] ( 3, 48 ) ref -> x1 "arr expr"
+;* V102 tmp90 [V102,T32] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V103 tmp91 [V103,T63] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V104 tmp92 [V104,T64] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V105 tmp93 [V105,T04] ( 3,192 ) ref -> x0 "arr expr"
-; V106 tmp94 [V106,T23] ( 3, 24 ) ref -> x0 "arr expr"
-;* V107 tmp95 [V107,T48] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V108 tmp96 [V108,T24] ( 3, 24 ) ref -> x0 "arr expr"
-;* V109 tmp97 [V109,T49] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V110 tmp98 [V110,T25] ( 3, 24 ) ref -> x0 "arr expr"
-;* V111 tmp99 [V111,T50] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V112 cse0 [V112,T13] ( 2, 32 ) ref -> x1 "CSE - moderate"
-; V113 cse1 [V113,T27] ( 4, 14 ) ref -> x1 "CSE - moderate"
-; V114 cse2 [V114,T34] ( 2, 8 ) ref -> x0 "CSE - moderate"
-; V115 cse3 [V115,T35] ( 2, 8 ) ref -> x0 "CSE - moderate"
-; V116 cse4 [V116,T15] ( 5, 52 ) int -> x2 "CSE - moderate"
-; V117 cse5 [V117,T14] ( 5, 52 ) byref -> x3 "CSE - moderate"
-; V118 cse6 [V118,T41] ( 3, 12 ) int -> x4 "CSE - moderate"
-; V119 cse7 [V119,T36] ( 3, 12 ) byref -> x0 "CSE - moderate"
-; V120 cse8 [V120,T42] ( 3, 12 ) int -> x1 "CSE - moderate"
-; V121 cse9 [V121,T37] ( 3, 12 ) byref -> x0 "CSE - moderate"
-; V122 cse10 [V122,T43] ( 3, 12 ) int -> x1 "CSE - moderate"
-; V123 cse11 [V123,T38] ( 3, 12 ) byref -> x0 "CSE - moderate"
-; V124 rat0 [V124,T08] ( 3, 96 ) int -> x4 "ReplaceWithLclVar is creating a new local variable"
+; V105 tmp93 [V105,T05] ( 3, 96 ) ref -> x0 "arr expr"
+; V106 tmp94 [V106,T21] ( 3, 24 ) ref -> x0 "arr expr"
+;* V107 tmp95 [V107,T49] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V108 tmp96 [V108,T22] ( 3, 24 ) ref -> x0 "arr expr"
+;* V109 tmp97 [V109,T50] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V110 tmp98 [V110,T23] ( 3, 24 ) ref -> x0 "arr expr"
+;* V111 tmp99 [V111,T51] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V112 cse0 [V112,T18] ( 2, 16 ) ref -> x1 "CSE - moderate"
+; V113 cse1 [V113,T25] ( 4, 14 ) ref -> x1 "CSE - moderate"
+; V114 cse2 [V114,T35] ( 2, 8 ) ref -> x0 "CSE - moderate"
+; V115 cse3 [V115,T36] ( 2, 8 ) ref -> x0 "CSE - moderate"
+; V116 cse4 [V116,T10] ( 20, 53.50) ref -> registers multi-def "CSE - aggressive"
+; V117 cse5 [V117,T20] ( 5, 28 ) int -> registers "CSE - moderate"
+; V118 cse6 [V118,T19] ( 5, 28 ) byref -> x2 "CSE - moderate"
+; V119 cse7 [V119,T42] ( 3, 12 ) int -> x4 "CSE - moderate"
+; V120 cse8 [V120,T37] ( 3, 12 ) byref -> x0 "CSE - moderate"
+; V121 cse9 [V121,T43] ( 3, 12 ) int -> x1 "CSE - moderate"
+; V122 cse10 [V122,T38] ( 3, 12 ) byref -> x0 "CSE - moderate"
+; V123 cse11 [V123,T44] ( 3, 12 ) int -> x1 "CSE - moderate"
+; V124 cse12 [V124,T39] ( 3, 12 ) byref -> x0 "CSE - moderate"
+; V125 rat0 [V125,T15] ( 3, 48 ) int -> x4 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 32
@@ -156,7 +157,7 @@ G_M46203_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
sxtw w23, w22
mov w24, wzr
cmp w23, w21
- bhi G_M46203_IG44
+ bhi G_M46203_IG43
ubfiz x0, x23, #1, #32
add x25, x20, x0
; byrRegs +[x25]
@@ -165,19 +166,21 @@ G_M46203_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
;; size=44 bbWeight=1 PerfScore 9.50
G_M46203_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x20 x25}, byref
; byrRegs -[x1]
- 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 x27, #0xD1FFAB1E
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #0xD1FFAB1E LSL #32
+ mov x0, x27
+ ; gcrRegs +[x0]
+ mov x1, x27
+ ; 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-x1]
; gcr arg pop 0
- ;; size=44 bbWeight=0.50 PerfScore 4.25
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
G_M46203_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x20 x25}, byref
mov w27, wzr
;; size=4 bbWeight=1 PerfScore 0.50
@@ -210,7 +213,7 @@ G_M46203_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x2
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
cmp w24, w0
- bhs G_M46203_IG43
+ bhs G_M46203_IG42
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -241,7 +244,7 @@ G_M46203_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x2
;; size=8 bbWeight=8 PerfScore 12.00
G_M46203_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x20 x25}, byref, isz
cmp w28, w26
- bhi G_M46203_IG44
+ bhi G_M46203_IG43
ubfiz x0, x28, #1, #32
add x25, x25, x0
sub w26, w26, w28
@@ -249,43 +252,46 @@ G_M46203_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x2
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
+ mov x2, x0
+ ; gcrRegs +[x2]
+ mov x1, x2
+ ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
+ ; gcrRegs -[x1]
; gcr arg pop 0
- ;; size=68 bbWeight=2 PerfScore 26.00
+ ;; size=64 bbWeight=2 PerfScore 25.00
...
+40 (+2.62%) : 281188.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3847_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,63 +8,63 @@
; 5 inlinees with PGO data; 24 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 38,182.75) ref -> x19 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V00 arg0 [V00,T00] ( 38,154.75) ref -> x19 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T77] ( 6, 5 ) int -> x23 single-def
-; V04 loc2 [V04,T11] ( 21, 51.50) int -> registers
+; V03 loc1 [V03,T66] ( 6, 5 ) int -> x23 single-def
+; V04 loc2 [V04,T06] ( 21, 51.50) int -> registers
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T06] ( 18, 89 ) int -> x24
-; V07 loc5 [V07,T25] ( 7, 27 ) int -> x27
-; V08 loc6 [V08,T38] ( 4, 18 ) int -> x22
-; V09 loc7 [V09,T17] ( 8, 36.50) int -> x22
-; V10 loc8 [V10,T20] ( 2, 36 ) int -> [fp+0x2C]
-; V11 loc9 [V11,T01] ( 8,128 ) int -> [fp+0x28]
-; V12 loc10 [V12,T07] ( 3, 80 ) ushort -> x0
+; V06 loc4 [V06,T04] ( 18, 89 ) int -> x24
+; V07 loc5 [V07,T15] ( 7, 27 ) int -> x27
+; V08 loc6 [V08,T28] ( 4, 18 ) int -> x22
+; V09 loc7 [V09,T12] ( 8, 33 ) int -> x22
+; V10 loc8 [V10,T68] ( 2, 4.50) int -> [fp+0x2C]
+; V11 loc9 [V11,T16] ( 8, 26.50) int -> [fp+0x28]
+; V12 loc10 [V12,T50] ( 3, 10 ) ushort -> x0
;* V13 loc11 [V13 ] ( 0, 0 ) ushort -> zero-ref
-; V14 loc12 [V14 ] ( 3, 48 ) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
+; V14 loc12 [V14 ] ( 3, 6 ) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T14] ( 3, 48 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
-; V17 tmp2 [V17,T22] ( 2, 32 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp1 [V16,T07] ( 3, 48 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V17 tmp2 [V17,T13] ( 2, 32 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V18 tmp3 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp4 [V19,T73] ( 3, 6 ) int -> x26 "Inlining Arg"
-; V20 tmp5 [V20,T80] ( 2, 4 ) byref -> x25 single-def "Inlining Arg"
+; V19 tmp4 [V19,T63] ( 3, 6 ) int -> x26 "Inlining Arg"
+; V20 tmp5 [V20,T70] ( 2, 4 ) byref -> x25 single-def "Inlining Arg"
;* V21 tmp6 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp7 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp8 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp9 [V24,T32] ( 3, 24 ) int -> x26 "Inlining Arg"
-; V25 tmp10 [V25,T45] ( 2, 16 ) byref -> x25 "Inlining Arg"
+; V24 tmp9 [V24,T23] ( 3, 24 ) int -> x26 "Inlining Arg"
+; V25 tmp10 [V25,T31] ( 2, 16 ) byref -> x25 "Inlining Arg"
;* V26 tmp11 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp12 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V28 tmp13 [V28,T24] ( 4, 28 ) int -> [fp+0x14] "Inlining Arg"
-; V29 tmp14 [V29,T18] ( 5, 36 ) int -> [fp+0x10] "Inlining Arg"
+; V28 tmp13 [V28,T14] ( 4, 28 ) int -> [fp+0x14] "Inlining Arg"
+; V29 tmp14 [V29,T10] ( 5, 36 ) int -> [fp+0x10] "Inlining Arg"
;* V30 tmp15 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V31 tmp16 [V31,T44] ( 4, 16 ) int -> x0 "Inline stloc first use temp"
-; V32 tmp17 [V32,T26] ( 3, 24 ) ref -> x3 class-hnd "impAppendStmt" <<unknown class>>
+; V31 tmp16 [V31,T30] ( 4, 16 ) int -> x0 "Inline stloc first use temp"
+; V32 tmp17 [V32,T17] ( 3, 24 ) ref -> x3 class-hnd "impAppendStmt" <<unknown class>>
;* V33 tmp18 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp19 [V34,T56] ( 3, 12 ) int -> x26 "Inlining Arg"
-; V35 tmp20 [V35,T61] ( 2, 8 ) byref -> x25 "Inlining Arg"
+; V34 tmp19 [V34,T47] ( 3, 12 ) int -> x26 "Inlining Arg"
+; V35 tmp20 [V35,T53] ( 2, 8 ) byref -> x25 "Inlining Arg"
;* V36 tmp21 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp22 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V38 tmp23 [V38,T15] ( 3, 48 ) int -> x2 "Inline stloc first use temp"
-; V39 tmp24 [V39,T09] ( 4, 64 ) int -> x3 "Inline stloc first use temp"
-; V40 tmp25 [V40,T02] ( 3, 96 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
+; V38 tmp23 [V38,T08] ( 3, 48 ) int -> x2 "Inline stloc first use temp"
+; V39 tmp24 [V39,T05] ( 4, 64 ) int -> x3 "Inline stloc first use temp"
+; V40 tmp25 [V40,T01] ( 3, 96 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
;* V41 tmp26 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V42 tmp27 [V42,T03] ( 3, 96 ) byref -> x2 "dup spill"
-;* V43 tmp28 [V43,T89] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V44 tmp29 [V44,T27] ( 3, 24 ) ref -> x1 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V45 tmp30 [V45,T50] ( 3, 12 ) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V46 tmp31 [V46,T59] ( 3, 8 ) int -> x22 "Inline return value spill temp"
-;* V47 tmp32 [V47,T65] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V48 tmp33 [V48,T85] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V49 tmp34 [V49,T48] ( 4, 12 ) int -> x22 "Inline stloc first use temp"
-; V50 tmp35 [V50,T60] ( 3, 8 ) int -> x4 "Inline return value spill temp"
-;* V51 tmp36 [V51,T66] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V52 tmp37 [V52,T86] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V53 tmp38 [V53,T49] ( 4, 12 ) int -> x4 "Inline stloc first use temp"
+; V42 tmp27 [V42,T02] ( 3, 96 ) byref -> x2 "dup spill"
+;* V43 tmp28 [V43,T78] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V44 tmp29 [V44,T18] ( 3, 24 ) ref -> x1 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+; V45 tmp30 [V45,T40] ( 3, 12 ) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V46 tmp31 [V46,T52] ( 3, 8 ) int -> x22 "Inline return value spill temp"
+;* V47 tmp32 [V47,T58] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V48 tmp33 [V48,T77] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V49 tmp34 [V49,T39] ( 4, 12 ) int -> x22 "Inline stloc first use temp"
+; V50 tmp35 [V50,T87] ( 3, 1.50) int -> x4 "Inline return value spill temp"
+;* V51 tmp36 [V51,T89] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V52 tmp37 [V52,T91] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V53 tmp38 [V53,T83] ( 4, 2 ) int -> x4 "Inline stloc first use temp"
;* V54 tmp39 [V54 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V55 tmp40 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V56 tmp41 [V56,T10] ( 2, 64 ) ushort -> x1 ld-addr-op "Inlining Arg"
+; V56 tmp41 [V56,T55] ( 2, 8 ) ushort -> x1 ld-addr-op "Inlining Arg"
;* V57 tmp42 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V58 tmp43 [V58 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V59 tmp44 [V59 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
@@ -75,72 +75,70 @@
;* V64 tmp49 [V64 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V65 tmp50 [V65 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V66 tmp51 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V67 tmp52 [V67,T79] ( 4, 4 ) int -> x21 "Inlining Arg"
-; V68 tmp53 [V68,T78] ( 5, 5 ) int -> x20 "Inlining Arg"
+; V67 tmp52 [V67,T69] ( 4, 4 ) int -> x21 "Inlining Arg"
+; V68 tmp53 [V68,T67] ( 5, 5 ) int -> x20 "Inlining Arg"
;* V69 tmp54 [V69 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V70 tmp55 [V70,T91] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
-; V71 tmp56 [V71,T90] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V72 tmp57 [V72,T74] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
-; V73 tmp58 [V73,T58] ( 4, 8 ) int -> x2 "Inline stloc first use temp"
-; V74 tmp59 [V74,T51] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" <<unknown class>>
+; V70 tmp55 [V70,T84] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
+; V71 tmp56 [V71,T79] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V72 tmp57 [V72,T64] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
+; V73 tmp58 [V73,T51] ( 4, 8 ) int -> x2 "Inline stloc first use temp"
+; V74 tmp59 [V74,T41] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" <<unknown class>>
;* V75 tmp60 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V76 tmp61 [V76,T52] ( 3, 12 ) byref -> x1 "dup spill"
-; V77 tmp62 [V77,T81] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V78 tmp63 [V78,T83] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V79 tmp64 [V79,T16] ( 5, 40 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V80 tmp65 [V80,T13] ( 10, 48 ) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V81 tmp66 [V81,T08] ( 11, 79 ) byref -> x25 "field V05._reference (fldOffset=0x0)" P-INDEP
-; V82 tmp67 [V82,T12] ( 6, 51 ) int -> x26 "field V05._length (fldOffset=0x8)" P-INDEP
-; V83 tmp68 [V83 ] ( 2, 32 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V14._reference (fldOffset=0x0)" P-DEP
-; V84 tmp69 [V84 ] ( 2, 32 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V14._length (fldOffset=0x8)" P-DEP
-; V85 tmp70 [V85,T92] ( 2, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V86 tmp71 [V86,T93] ( 2, 2 ) int -> x26 single-def "field V18._length (fldOffset=0x8)" P-INDEP
-; V87 tmp72 [V87,T62] ( 2, 8 ) byref -> x25 "field V23._reference (fldOffset=0x0)" P-INDEP
-; V88 tmp73 [V88,T63] ( 2, 8 ) int -> x26 "field V23._length (fldOffset=0x8)" P-INDEP
-; V89 tmp74 [V89,T82] ( 2, 4 ) byref -> x25 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V90 tmp75 [V90,T84] ( 2, 4 ) int -> x26 "field V33._length (fldOffset=0x8)" P-INDEP
-; V91 tmp76 [V91,T21] ( 2, 32 ) byref -> x0 "field V55._reference (fldOffset=0x0)" P-INDEP
-; V92 tmp77 [V92,T23] ( 2, 32 ) int -> x2 "field V55._length (fldOffset=0x8)" P-INDEP
+; V76 tmp61 [V76,T42] ( 3, 12 ) byref -> x1 "dup spill"
+; V77 tmp62 [V77,T71] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V78 tmp63 [V78,T74] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V79 tmp64 [V79,T38] ( 5, 12 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V80 tmp65 [V80,T27] ( 10, 20 ) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V81 tmp66 [V81,T09] ( 11, 37 ) byref -> x25 "field V05._reference (fldOffset=0x0)" P-INDEP
+; V82 tmp67 [V82,T26] ( 6, 23 ) int -> x26 "field V05._length (fldOffset=0x8)" P-INDEP
+; V83 tmp68 [V83 ] ( 2, 4 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V14._reference (fldOffset=0x0)" P-DEP
+; V84 tmp69 [V84 ] ( 2, 4 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V14._length (fldOffset=0x8)" P-DEP
+; V85 tmp70 [V85,T85] ( 2, 2 ) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V86 tmp71 [V86,T86] ( 2, 2 ) int -> x26 single-def "field V18._length (fldOffset=0x8)" P-INDEP
+; V87 tmp72 [V87,T54] ( 2, 8 ) byref -> x25 "field V23._reference (fldOffset=0x0)" P-INDEP
+; V88 tmp73 [V88,T56] ( 2, 8 ) int -> x26 "field V23._length (fldOffset=0x8)" P-INDEP
+; V89 tmp74 [V89,T72] ( 2, 4 ) byref -> x25 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V90 tmp75 [V90,T75] ( 2, 4 ) int -> x26 "field V33._length (fldOffset=0x8)" P-INDEP
+; V91 tmp76 [V91,T73] ( 2, 4 ) byref -> x0 "field V55._reference (fldOffset=0x0)" P-INDEP
+; V92 tmp77 [V92,T76] ( 2, 4 ) int -> x2 "field V55._length (fldOffset=0x8)" P-INDEP
;* V93 tmp78 [V93 ] ( 0, 0 ) byref -> zero-ref "field V57._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp79 [V94 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP
;* V95 tmp80 [V95 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp81 [V96 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
;* V97 tmp82 [V97 ] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp83 [V98 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
-;* V99 tmp84 [V99,T46] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V100 tmp85 [V100,T28] ( 3, 24 ) ref -> x1 "arr expr"
-; V101 tmp86 [V101,T33] ( 3, 24 ) int -> x3 "index expr"
-; V102 tmp87 [V102,T29] ( 3, 24 ) ref -> x1 "arr expr"
-;* V103 tmp88 [V103,T67] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V104 tmp89 [V104,T71] ( 0, 0 ) int -> zero-ref "index expr"
-;* V105 tmp90 [V105,T68] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V106 tmp91 [V106,T87] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V107 tmp92 [V107,T69] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V108 tmp93 [V108,T34] ( 3, 24 ) int -> x2 "index expr"
-;* V109 tmp94 [V109,T70] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V110 tmp95 [V110,T88] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V111 tmp96 [V111,T53] ( 3, 12 ) ref -> x2 "arr expr"
-; V112 tmp97 [V112,T54] ( 3, 12 ) ref -> x0 "arr expr"
-; V113 tmp98 [V113,T55] ( 3, 12 ) ref -> x1 "arr expr"
-; V114 tmp99 [V114,T04] ( 3, 96 ) ref -> x3 "arr expr"
-; V115 cse0 [V115,T57] ( 3, 12 ) int -> x22 "CSE - moderate"
-; V116 cse1 [V116,T37] ( 4, 16 ) int -> x2 "CSE - moderate"
-; V117 cse2 [V117,T36] ( 2, 8 ) ref -> x1 "CSE - moderate"
-; V118 cse3 [V118,T19] ( 4, 36 ) ref -> x1 "CSE - moderate"
-; V119 cse4 [V119,T41] ( 2, 8 ) ref -> x1 "CSE - moderate"
-; V120 cse5 [V120,T42] ( 2, 8 ) ref -> x1 "CSE - moderate"
-; V121 cse6 [V121,T43] ( 2, 8 ) ref -> x2 "CSE - moderate"
-; V122 cse7 [V122,T30] ( 2, 16 ) ref -> x0 "CSE - moderate"
-; V123 cse8 [V123,T72] ( 3, 6.25) ref -> x0 hoist "CSE - moderate"
-; V124 cse9 [V124,T75] ( 3, 6 ) int -> x3 "CSE - conservative"
-; V125 cse10 [V125,T76] ( 3, 6 ) int -> x2 "CSE - conservative"
-; V126 cse11 [V126,T05] ( 3, 96 ) int -> x1 "CSE - aggressive"
-; V127 cse12 [V127,T64] ( 2, 8 ) int -> x3 "CSE - moderate"
-; V128 cse13 [V128,T40] ( 5, 16 ) int -> x0 "CSE - moderate"
-; V129 cse14 [V129,T39] ( 5, 16 ) byref -> x1 "CSE - moderate"
-; V130 cse15 [V130,T35] ( 3, 24 ) int -> x2 "CSE - moderate"
-; V131 cse16 [V131,T31] ( 3, 24 ) byref -> x0 "CSE - moderate"
-; V132 cse17 [V132,T47] ( 12, 15 ) ref -> x1 multi-def "CSE - moderate"
+;* V99 tmp84 [V99,T32] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V100 tmp85 [V100,T19] ( 3, 24 ) ref -> x3 "arr expr"
+; V101 tmp86 [V101,T24] ( 3, 24 ) int -> x0 "index expr"
+; V102 tmp87 [V102,T20] ( 3, 24 ) ref -> x1 "arr expr"
+;* V103 tmp88 [V103,T59] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V104 tmp89 [V104,T61] ( 0, 0 ) int -> zero-ref "index expr"
+;* V105 tmp90 [V105,T60] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V106 tmp91 [V106,T43] ( 3, 12 ) ref -> x3 "arr expr"
+; V107 tmp92 [V107,T80] ( 3, 3 ) ref -> x3 "arr expr"
+; V108 tmp93 [V108,T82] ( 3, 3 ) int -> x2 "index expr"
+;* V109 tmp94 [V109,T90] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V110 tmp95 [V110,T81] ( 3, 3 ) ref -> x1 "arr expr"
+; V111 tmp96 [V111,T44] ( 3, 12 ) ref -> x2 "arr expr"
+; V112 tmp97 [V112,T45] ( 3, 12 ) ref -> x0 "arr expr"
+; V113 tmp98 [V113,T46] ( 3, 12 ) ref -> x1 "arr expr"
+; V114 tmp99 [V114,T03] ( 3, 96 ) ref -> x3 "arr expr"
+; V115 cse0 [V115,T48] ( 3, 12 ) int -> x22 "CSE - moderate"
+; V116 cse1 [V116,T29] ( 4, 12.50) int -> x2 "CSE - moderate"
+; V117 cse2 [V117,T34] ( 5, 11 ) ref -> x1 "CSE - moderate"
+; V118 cse3 [V118,T88] ( 3, 1.50) int -> x2 "CSE - conservative"
+; V119 cse4 [V119,T11] ( 4, 36 ) ref -> x1 "CSE - aggressive"
+; V120 cse5 [V120,T21] ( 2, 16 ) ref -> x0 "CSE - moderate"
+; V121 cse6 [V121,T62] ( 3, 6.25) ref -> x0 hoist "CSE - moderate"
+; V122 cse7 [V122,T35] ( 2, 8 ) ref -> x1 "CSE - moderate"
+; V123 cse8 [V123,T36] ( 2, 8 ) ref -> x1 "CSE - moderate"
+; V124 cse9 [V124,T37] ( 2, 8 ) ref -> x2 "CSE - moderate"
+; V125 cse10 [V125,T65] ( 3, 6 ) int -> x0 "CSE - moderate"
+; V126 cse11 [V126,T57] ( 2, 8 ) int -> x3 "CSE - moderate"
+; V127 cse12 [V127,T25] ( 3, 24 ) int -> x2 "CSE - moderate"
+; V128 cse13 [V128,T22] ( 3, 24 ) byref -> x0 "CSE - moderate"
+; V129 cse14 [V129,T33] ( 12, 15 ) ref -> x1 multi-def "CSE - moderate"
+; V130 cse15 [V130,T49] ( 3, 12 ) int -> x1 "CSE - moderate"
;
; Lcl frame size = 32
@@ -165,7 +163,7 @@ G_M29407_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
sxtw w23, w22
mov w24, wzr
cmp w23, w21
- bhi G_M29407_IG37
+ bhi G_M29407_IG38
ubfiz x0, x23, #1, #32
add x25, x20, x0
; byrRegs +[x25]
@@ -224,47 +222,47 @@ G_M29407_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x2
sub w1, w1, w2
ldr w2, [x0, #0x08]
cmp w24, w2
- bhs G_M29407_IG36
+ bhs G_M29407_IG37
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
...
+36 (+2.65%) : 279670.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3294_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -11,128 +11,126 @@
; V00 arg0 [V00,T00] ( 36,159 ) ref -> x19 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T75] ( 6, 5 ) int -> x23 single-def
-; V04 loc2 [V04,T08] ( 21, 59.50) int -> registers
+; V03 loc1 [V03,T66] ( 6, 5 ) int -> x23 single-def
+; V04 loc2 [V04,T06] ( 21, 59.50) int -> registers
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T02] ( 18,105 ) int -> x24
-; V07 loc5 [V07,T16] ( 6, 41 ) int -> x27
-; V08 loc6 [V08,T39] ( 4, 18 ) int -> x22
-; V09 loc7 [V09,T17] ( 8, 40.50) int -> registers
-; V10 loc8 [V10,T20] ( 2, 36 ) int -> x1
-; V11 loc9 [V11,T01] ( 7,112 ) int -> x0
+; V06 loc4 [V06,T01] ( 18,105 ) int -> x24
+; V07 loc5 [V07,T10] ( 6, 41 ) int -> x27
+; V08 loc6 [V08,T33] ( 4, 18 ) int -> x22
+; V09 loc7 [V09,T12] ( 8, 37 ) int -> registers
+; V10 loc8 [V10,T68] ( 2, 4.50) int -> x1
+; V11 loc9 [V11,T18] ( 7, 24.50) int -> x0
;* V12 loc10 [V12 ] ( 0, 0 ) ushort -> zero-ref
;* V13 loc11 [V13 ] ( 0, 0 ) ushort -> zero-ref
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T13] ( 3, 48 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
-; V16 tmp2 [V16,T21] ( 2, 32 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V15 tmp1 [V15,T07] ( 3, 48 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V16 tmp2 [V16,T14] ( 2, 32 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V17 tmp3 [V17 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V18 tmp4 [V18,T85] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V18 tmp4 [V18,T74] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V19 tmp5 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V20 tmp6 [V20,T71] ( 3, 6 ) int -> x26 "Inlining Arg"
-; V21 tmp7 [V21,T78] ( 2, 4 ) byref -> x25 single-def "Inlining Arg"
+; V20 tmp6 [V20,T63] ( 3, 6 ) int -> x26 "Inlining Arg"
+; V21 tmp7 [V21,T70] ( 2, 4 ) byref -> x25 single-def "Inlining Arg"
;* V22 tmp8 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp9 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp10 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp11 [V25,T22] ( 2, 32 ) int -> x26 "Inlining Arg"
-; V26 tmp12 [V26,T40] ( 2, 18 ) byref -> x25 "Inlining Arg"
+; V25 tmp11 [V25,T15] ( 2, 32 ) int -> x26 "Inlining Arg"
+; V26 tmp12 [V26,T34] ( 2, 18 ) byref -> x25 "Inlining Arg"
;* V27 tmp13 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp14 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp15 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V30 tmp16 [V30,T32] ( 3, 24 ) int -> x28 "Inlining Arg"
-; V31 tmp17 [V31,T45] ( 2, 16 ) byref -> x26 "Inlining Arg"
+; V30 tmp16 [V30,T28] ( 3, 24 ) int -> x28 "Inlining Arg"
+; V31 tmp17 [V31,T37] ( 2, 16 ) byref -> x26 "Inlining Arg"
;* V32 tmp18 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V33 tmp19 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V34 tmp20 [V34,T23] ( 4, 28 ) int -> [fp+0x1C] "Inlining Arg"
-; V35 tmp21 [V35,T19] ( 5, 36 ) int -> [fp+0x18] "Inlining Arg"
+; V34 tmp20 [V34,T16] ( 4, 28 ) int -> [fp+0x1C] "Inlining Arg"
+; V35 tmp21 [V35,T13] ( 5, 36 ) int -> [fp+0x18] "Inlining Arg"
;* V36 tmp22 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V37 tmp23 [V37,T44] ( 4, 16 ) int -> x0 "Inline stloc first use temp"
-; V38 tmp24 [V38,T24] ( 3, 24 ) ref -> x3 class-hnd "impAppendStmt" <<unknown class>>
+; V37 tmp23 [V37,T36] ( 4, 16 ) int -> x0 "Inline stloc first use temp"
+; V38 tmp24 [V38,T20] ( 3, 24 ) ref -> x3 class-hnd "impAppendStmt" <<unknown class>>
;* V39 tmp25 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V40 tmp26 [V40,T33] ( 3, 24 ) int -> x28 "Inlining Arg"
-; V41 tmp27 [V41,T46] ( 2, 16 ) byref -> x26 "Inlining Arg"
+; V40 tmp26 [V40,T29] ( 3, 24 ) int -> x28 "Inlining Arg"
+; V41 tmp27 [V41,T38] ( 2, 16 ) byref -> x26 "Inlining Arg"
;* V42 tmp28 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V43 tmp29 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V44 tmp30 [V44,T14] ( 3, 48 ) int -> x2 "Inline stloc first use temp"
-; V45 tmp31 [V45,T07] ( 4, 64 ) int -> x3 "Inline stloc first use temp"
-; V46 tmp32 [V46,T03] ( 3, 96 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
+; V44 tmp30 [V44,T08] ( 3, 48 ) int -> x2 "Inline stloc first use temp"
+; V45 tmp31 [V45,T05] ( 4, 64 ) int -> x3 "Inline stloc first use temp"
+; V46 tmp32 [V46,T02] ( 3, 96 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
;* V47 tmp33 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V48 tmp34 [V48,T04] ( 3, 96 ) byref -> x2 "dup spill"
-;* V49 tmp35 [V49,T86] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V50 tmp36 [V50,T25] ( 3, 24 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V51 tmp37 [V51,T51] ( 3, 12 ) ref -> x1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V52 tmp38 [V52,T57] ( 3, 8 ) int -> x2 "Inline return value spill temp"
-;* V53 tmp39 [V53,T63] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V54 tmp40 [V54,T81] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V55 tmp41 [V55,T49] ( 4, 12 ) int -> x2 "Inline stloc first use temp"
-; V56 tmp42 [V56,T58] ( 3, 8 ) int -> x1 "Inline return value spill temp"
-;* V57 tmp43 [V57,T64] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V58 tmp44 [V58,T82] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V59 tmp45 [V59,T50] ( 4, 12 ) int -> x1 "Inline stloc first use temp"
+; V48 tmp34 [V48,T03] ( 3, 96 ) byref -> x2 "dup spill"
+;* V49 tmp35 [V49,T75] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V50 tmp36 [V50,T21] ( 3, 24 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+; V51 tmp37 [V51,T45] ( 3, 12 ) ref -> x1 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V52 tmp38 [V52,T53] ( 3, 8 ) int -> x2 "Inline return value spill temp"
+;* V53 tmp39 [V53,T58] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V54 tmp40 [V54,T73] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V55 tmp41 [V55,T44] ( 4, 12 ) int -> x2 "Inline stloc first use temp"
+; V56 tmp42 [V56,T84] ( 3, 1.50) int -> x1 "Inline return value spill temp"
+;* V57 tmp43 [V57,T86] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V58 tmp44 [V58,T88] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V59 tmp45 [V59,T80] ( 4, 2 ) int -> x1 "Inline stloc first use temp"
;* V60 tmp46 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V61 tmp47 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V62 tmp48 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V63 tmp49 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V64 tmp50 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V65 tmp51 [V65,T77] ( 4, 4 ) int -> x21 "Inlining Arg"
-; V66 tmp52 [V66,T76] ( 5, 5 ) int -> x20 "Inlining Arg"
+; V65 tmp51 [V65,T69] ( 4, 4 ) int -> x21 "Inlining Arg"
+; V66 tmp52 [V66,T67] ( 5, 5 ) int -> x20 "Inlining Arg"
;* V67 tmp53 [V67 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V68 tmp54 [V68,T88] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
-; V69 tmp55 [V69,T87] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V70 tmp56 [V70,T72] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
-; V71 tmp57 [V71,T56] ( 4, 8 ) int -> x2 "Inline stloc first use temp"
-; V72 tmp58 [V72,T52] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" <<unknown class>>
+; V68 tmp54 [V68,T81] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
+; V69 tmp55 [V69,T76] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V70 tmp56 [V70,T64] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
+; V71 tmp57 [V71,T52] ( 4, 8 ) int -> x2 "Inline stloc first use temp"
+; V72 tmp58 [V72,T46] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" <<unknown class>>
;* V73 tmp59 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V74 tmp60 [V74,T53] ( 3, 12 ) byref -> x1 "dup spill"
-; V75 tmp61 [V75,T79] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V76 tmp62 [V76,T80] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V77 tmp63 [V77,T15] ( 5, 42 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V78 tmp64 [V78,T10] ( 10, 52 ) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V79 tmp65 [V79,T11] ( 5, 49 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
-; V80 tmp66 [V80,T09] ( 6, 53 ) int -> registers "field V05._length (fldOffset=0x8)" P-INDEP
+; V74 tmp60 [V74,T47] ( 3, 12 ) byref -> x1 "dup spill"
+; V75 tmp61 [V75,T71] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V76 tmp62 [V76,T72] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V77 tmp63 [V77,T42] ( 5, 14 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V78 tmp64 [V78,T19] ( 10, 24 ) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V79 tmp65 [V79,T32] ( 5, 21 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
+; V80 tmp66 [V80,T17] ( 6, 25 ) int -> registers "field V05._length (fldOffset=0x8)" P-INDEP
;* V81 tmp67 [V81 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp68 [V82 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V83 tmp69 [V83,T89] ( 2, 2 ) byref -> x25 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp70 [V84,T90] ( 2, 2 ) int -> x26 single-def "field V19._length (fldOffset=0x8)" P-INDEP
+; V83 tmp69 [V83,T82] ( 2, 2 ) byref -> x25 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+; V84 tmp70 [V84,T83] ( 2, 2 ) int -> x26 single-def "field V19._length (fldOffset=0x8)" P-INDEP
;* V85 tmp71 [V85 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V86 tmp72 [V86 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V87 tmp73 [V87,T59] ( 2, 8 ) byref -> x26 "field V29._reference (fldOffset=0x0)" P-INDEP
-; V88 tmp74 [V88,T61] ( 2, 8 ) int -> x28 "field V29._length (fldOffset=0x8)" P-INDEP
-; V89 tmp75 [V89,T60] ( 2, 8 ) byref -> x26 "field V39._reference (fldOffset=0x0)" P-INDEP
-; V90 tmp76 [V90,T62] ( 2, 8 ) int -> x28 "field V39._length (fldOffset=0x8)" P-INDEP
+; V87 tmp73 [V87,T54] ( 2, 8 ) byref -> x26 "field V29._reference (fldOffset=0x0)" P-INDEP
+; V88 tmp74 [V88,T56] ( 2, 8 ) int -> x28 "field V29._length (fldOffset=0x8)" P-INDEP
+; V89 tmp75 [V89,T55] ( 2, 8 ) byref -> x26 "field V39._reference (fldOffset=0x0)" P-INDEP
+; V90 tmp76 [V90,T57] ( 2, 8 ) int -> x28 "field V39._length (fldOffset=0x8)" P-INDEP
;* V91 tmp77 [V91 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp78 [V92 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP
-;* V93 tmp79 [V93,T47] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V94 tmp80 [V94,T54] ( 3, 12 ) ref -> x2 "arr expr"
-; V95 tmp81 [V95,T26] ( 3, 24 ) ref -> x0 "arr expr"
-; V96 tmp82 [V96,T27] ( 3, 24 ) ref -> x0 "arr expr"
-; V97 tmp83 [V97,T05] ( 3, 96 ) ref -> x3 "arr expr"
-; V98 tmp84 [V98,T28] ( 3, 24 ) ref -> x0 "arr expr"
-; V99 tmp85 [V99,T34] ( 3, 24 ) int -> x2 "index expr"
-; V100 tmp86 [V100,T29] ( 3, 24 ) ref -> x0 "arr expr"
-;* V101 tmp87 [V101,T65] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V102 tmp88 [V102,T69] ( 0, 0 ) int -> zero-ref "index expr"
-;* V103 tmp89 [V103,T66] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V104 tmp90 [V104,T83] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V105 tmp91 [V105,T67] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V106 tmp92 [V106,T35] ( 3, 24 ) int -> x1 "index expr"
-;* V107 tmp93 [V107,T68] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V108 tmp94 [V108,T84] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V109 cse0 [V109,T55] ( 3, 12 ) int -> x2 "CSE - moderate"
-; V110 cse1 [V110,T38] ( 4, 16 ) int -> x1 "CSE - moderate"
-; V111 cse2 [V111,T37] ( 2, 8 ) ref -> x0 "CSE - moderate"
-; V112 cse3 [V112,T12] ( 4, 40 ) ref -> x3 multi-def "CSE - moderate"
-; V113 cse4 [V113,T18] ( 4, 40 ) ref -> x1 "CSE - moderate"
-; V114 cse5 [V114,T43] ( 2, 8 ) ref -> x0 "CSE - moderate"
-; V115 cse6 [V115,T30] ( 2, 16 ) ref -> x0 "CSE - moderate"
-; V116 cse7 [V116,T70] ( 3, 6.50) ref -> x0 hoist "CSE - conservative"
-; V117 cse8 [V117,T73] ( 3, 6 ) int -> x2 "CSE - conservative"
-; V118 cse9 [V118,T74] ( 3, 6 ) int -> x1 "CSE - conservative"
-; V119 cse10 [V119,T06] ( 3, 96 ) int -> x3 "CSE - aggressive"
-; V120 cse11 [V120,T42] ( 5, 16 ) int -> x3 "CSE - moderate"
-; V121 cse12 [V121,T41] ( 5, 16 ) byref -> x0 "CSE - moderate"
-; V122 cse13 [V122,T36] ( 3, 24 ) int -> x2 "CSE - moderate"
-; V123 cse14 [V123,T31] ( 3, 24 ) byref -> x0 "CSE - moderate"
-; V124 cse15 [V124,T48] ( 12, 15 ) ref -> x1 multi-def "CSE - moderate"
+;* V93 tmp79 [V93,T39] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V94 tmp80 [V94,T48] ( 3, 12 ) ref -> x2 "arr expr"
+; V95 tmp81 [V95,T22] ( 3, 24 ) ref -> x0 "arr expr"
+; V96 tmp82 [V96,T23] ( 3, 24 ) ref -> x0 "arr expr"
+; V97 tmp83 [V97,T04] ( 3, 96 ) ref -> x3 "arr expr"
+; V98 tmp84 [V98,T24] ( 3, 24 ) ref -> x2 "arr expr"
+; V99 tmp85 [V99,T30] ( 3, 24 ) int -> x3 "index expr"
+; V100 tmp86 [V100,T25] ( 3, 24 ) ref -> x0 "arr expr"
+;* V101 tmp87 [V101,T59] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V102 tmp88 [V102,T61] ( 0, 0 ) int -> zero-ref "index expr"
+;* V103 tmp89 [V103,T60] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V104 tmp90 [V104,T49] ( 3, 12 ) ref -> x3 "arr expr"
+; V105 tmp91 [V105,T77] ( 3, 3 ) ref -> x3 "arr expr"
+; V106 tmp92 [V106,T79] ( 3, 3 ) int -> x1 "index expr"
+;* V107 tmp93 [V107,T87] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V108 tmp94 [V108,T78] ( 3, 3 ) ref -> x0 "arr expr"
+; V109 cse0 [V109,T50] ( 3, 12 ) int -> x2 "CSE - moderate"
+; V110 cse1 [V110,T35] ( 4, 12.50) int -> x1 "CSE - moderate"
+; V111 cse2 [V111,T41] ( 5, 11 ) ref -> x0 "CSE - moderate"
+; V112 cse3 [V112,T09] ( 4, 40 ) ref -> x3 multi-def "CSE - aggressive"
+; V113 cse4 [V113,T85] ( 3, 1.50) int -> x1 "CSE - conservative"
+; V114 cse5 [V114,T11] ( 4, 40 ) ref -> x1 "CSE - aggressive"
+; V115 cse6 [V115,T26] ( 2, 16 ) ref -> x0 "CSE - moderate"
+; V116 cse7 [V116,T62] ( 3, 6.50) ref -> x0 hoist "CSE - moderate"
+; V117 cse8 [V117,T43] ( 2, 8 ) ref -> x0 "CSE - moderate"
+; V118 cse9 [V118,T65] ( 3, 6 ) int -> x2 "CSE - moderate"
+; V119 cse10 [V119,T31] ( 3, 24 ) int -> x2 "CSE - moderate"
+; V120 cse11 [V120,T27] ( 3, 24 ) byref -> x0 "CSE - moderate"
+; V121 cse12 [V121,T40] ( 12, 15 ) ref -> x1 multi-def "CSE - moderate"
+; V122 cse13 [V122,T51] ( 3, 12 ) int -> x3 "CSE - moderate"
;
; Lcl frame size = 16
@@ -156,7 +154,7 @@ G_M18555_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
sxtw w23, w22
mov w24, wzr
cmp w23, w21
- bhi G_M18555_IG39
+ bhi G_M18555_IG38
ubfiz x0, x23, #1, #32
add x25, x20, x0
; byrRegs +[x25]
@@ -215,14 +213,14 @@ G_M18555_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x2
sub w1, w1, w2
ldr w2, [x0, #0x08]
cmp w24, w2
- bhs G_M18555_IG38
+ bhs G_M18555_IG37
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
str w1, [x0, w24, UXTW #2]
add w24, w24, #1
cmp w24, w2
- bhs G_M18555_IG38
+ bhs G_M18555_IG37
str w22, [x0, w24, UXTW #2]
add w24, w24, #1
add w27, w27, #1
@@ -242,7 +240,7 @@ G_M18555_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20
add w0, w22, #2
sxtw w25, w0
cmp w25, w21
- bhi G_M18555_IG39
+ bhi G_M18555_IG38
ubfiz x0, x25, #1, #32
...
+44 (+3.15%) : 148574.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
@@ -8,19 +8,19 @@
; 36 inlinees with PGO data; 82 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T11] ( 7, 15.50) ref -> x19 class-hnd single-def <System.String>
-; V01 loc0 [V01,T08] ( 9, 18 ) int -> x21
+; V00 arg0 [V00,T10] ( 8, 16 ) ref -> x19 class-hnd single-def <System.String>
+; V01 loc0 [V01,T08] ( 11, 20 ) int -> x21
;* V02 loc1 [V02,T51] ( 0, 0 ) int -> zero-ref
-; V03 loc2 [V03,T00] ( 35, 73 ) int -> x22
+; V03 loc2 [V03,T00] ( 39, 80.46) int -> x22
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-; V05 loc4 [V05,T10] ( 12, 17.54) int -> x2
-; V06 loc5 [V06,T09] ( 6, 18 ) ushort -> x0
+; V05 loc4 [V05,T07] ( 12, 21 ) int -> x2
+; V06 loc5 [V06,T11] ( 6, 18 ) ushort -> x0
; V07 loc6 [V07,T12] ( 5, 12 ) ushort -> x25
; V08 loc7 [V08 ] ( 5, 2.50) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V12 tmp3 [V12,T04] ( 3, 24 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.CompareInfo>
+; V12 tmp3 [V12,T05] ( 3, 24 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.CompareInfo>
; V13 tmp4 [V13,T21] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
;* V14 tmp5 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
@@ -233,11 +233,11 @@
;* V222 tmp213 [V222 ] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP
;* V223 tmp214 [V223 ] ( 0, 0 ) byref -> zero-ref single-def "field V105._reference (fldOffset=0x0)" P-INDEP
;* V224 tmp215 [V224 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
-; V225 tmp216 [V225,T05] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V226 cse0 [V226,T06] ( 12, 23.04) int -> x20 "CSE - aggressive"
+; V225 tmp216 [V225,T06] ( 3, 24 ) ref -> x0 "argument with side effect"
+; V226 cse0 [V226,T04] ( 14, 24.04) int -> x20 "CSE - aggressive"
; V227 cse1 [V227,T24] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
-; V228 cse2 [V228,T03] ( 13, 30.50) byref -> x24 multi-def "CSE - aggressive"
-; V229 cse3 [V229,T07] ( 5, 20 ) int -> x23 "CSE - aggressive"
+; V228 cse2 [V228,T03] ( 14, 31 ) byref -> x24 multi-def "CSE - aggressive"
+; V229 cse3 [V229,T09] ( 5, 20 ) int -> x23 "CSE - aggressive"
; V230 cse4 [V230,T13] ( 3, 12 ) int -> x0 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -254,7 +254,7 @@ G_M18406_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M18406_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M18406_IG37
+ cbz x19, G_M18406_IG41
;; size=4 bbWeight=1 PerfScore 1.00
G_M18406_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
@@ -299,12 +299,12 @@ G_M18406_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bge G_M18406_IG11
sub w0, w22, #1
cmp w0, w20
- bhs G_M18406_IG52
+ bhs G_M18406_IG56
add x24, x19, #12
; byrRegs +[x24]
ldrh w0, [x24, w0, UXTW #2]
cmp w23, w20
- bhs G_M18406_IG52
+ bhs G_M18406_IG56
ldrh w25, [x24, w23, UXTW #2]
mov w1, #44
cmp w0, #59
@@ -359,90 +359,111 @@ G_M18406_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
sxtw w22, w23
b G_M18406_IG04
;; size=8 bbWeight=4 PerfScore 6.00
-G_M18406_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M18406_IG11: ; bbWeight=1.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, w21
ccmp w22, #0, nc, lt
- blt G_M18406_IG37
+ blt G_M18406_IG41
+ ;; size=12 bbWeight=1.50 PerfScore 3.00
+G_M18406_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add w22, w22, #7
- b G_M18406_IG13
- ;; size=20 bbWeight=0.50 PerfScore 1.75
-G_M18406_IG12: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M18406_IG14
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M18406_IG13: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add w22, w22, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M18406_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M18406_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, w21
- bge G_M18406_IG37
+ bge G_M18406_IG18
cmp w22, w20
- bhs G_M18406_IG52
+ bhs G_M18406_IG56
add x24, x19, #12
; byrRegs +[x24]
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M18406_IG15
+ blo G_M18406_IG16
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; byrRegs -[x24]
; gcr arg pop 0
- cbnz w0, G_M18406_IG12
+ cbnz w0, G_M18406_IG13
;; size=56 bbWeight=4 PerfScore 58.00
-G_M18406_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
- ; gcrRegs -[x19]
- b G_M18406_IG16
+G_M18406_IG15: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M18406_IG18
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18406_IG15: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs +[x19]
+G_M18406_IG16: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M18406_IG12
+ tbnz w0, #7, G_M18406_IG13
;; size=20 bbWeight=4 PerfScore 22.00
-G_M18406_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs -[x19]
+G_M18406_IG17: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M18406_IG19
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M18406_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cmp w22, w21
+ bge G_M18406_IG41
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M18406_IG19: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cmp w22, w20
+ bhs G_M18406_IG56
+ add x24, x19, #12
+ ; byrRegs +[x24]
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #61
- bne G_M18406_IG37
- ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M18406_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ bne G_M18406_IG41
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M18406_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ ; gcrRegs -[x19]
add w22, w22, #1
cmp w22, w21
- bge G_M18406_IG37
+ bge G_M18406_IG24
cmp w22, w20
- bhs G_M18406_IG52
+ bhs G_M18406_IG56
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M18406_IG19
+ blo G_M18406_IG22
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M18406_IG17
+ cbnz w0, G_M18406_IG20
;; size=56 bbWeight=4 PerfScore 58.00
-G_M18406_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
- b G_M18406_IG20
+G_M18406_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
+ b G_M18406_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18406_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG22: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M18406_IG17
+ tbnz w0, #7, G_M18406_IG20
;; size=20 bbWeight=4 PerfScore 22.00
-G_M18406_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
+ b G_M18406_IG25
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M18406_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ cmp w22, w21
+ bge G_M18406_IG41
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M18406_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ cmp w22, w20
+ bhs G_M18406_IG56
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #34
- bne G_M18406_IG32
+ bne G_M18406_IG37
sub w0, w21, #1
cmp w22, w0
- beq G_M18406_IG37
+ beq G_M18406_IG41
add w21, w22, #1
sub w2, w20, w21
cmp w20, w21
- blo G_M18406_IG53
+ blo G_M18406_IG57
sbfiz x0, x21, #1, #32
add x0, x24, x0
; byrRegs +[x0]
@@ -460,7 +481,7 @@ G_M18406_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24
add w1, w22, #1
cmp w0, w1
ccmp w0, #0, nc, ne
- blt G_M18406_IG37
+ blt G_M18406_IG41
add w1, w22, #1
sub w0, w0, w22
sub w22, w0, #1
@@ -468,10 +489,10 @@ G_M18406_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24
add x0, x0, w22, UXTW
mov w2, w20
cmp x0, x2
- bhi G_M18406_IG54
+ bhi G_M18406_IG58
ubfiz x0, x1, #1, #32
add x24, x24, x0
- tbz w22, #31, G_M18406_IG21
+ tbz w22, #31, G_M18406_IG26
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -484,63 +505,63 @@ G_M18406_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=180 bbWeight=0.50 PerfScore 17.75
-G_M18406_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
- cbz w22, G_M18406_IG29
+ ;; size=188 bbWeight=0.50 PerfScore 18.50
+G_M18406_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ cbz w22, G_M18406_IG34
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18406_IG22: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG27: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
ldrh w0, [x24]
cmp w0, #0xD1FFAB1E
- blo G_M18406_IG24
+ blo G_M18406_IG29
...
realworld.run.linux.arm64.checked.mch
-12 (-1.23%) : 2793.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 12, 7 ) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T04] ( 12, 11.44) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T14] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T12] ( 8, 7.02) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
-; V04 loc2 [V04,T21] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T23] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
; V05 loc3 [V05,T00] ( 11, 17.08) int -> x0
; V06 loc4 [V06,T02] ( 8, 16 ) ref -> x15 class-hnd <System.Type>
-; V07 loc5 [V07,T08] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
-; V08 loc6 [V08,T20] ( 6, 1.83) ref -> x1 class-hnd exact <System.Type[]>
+; V07 loc5 [V07,T09] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
+; V08 loc6 [V08,T18] ( 6, 3.31) ref -> x1 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x0
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,36 +25,36 @@
;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType>
; V16 tmp5 [V16,T26] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp7 [V18,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp7 [V18,T21] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V19 tmp8 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp10 [V21,T22] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
-; V22 tmp11 [V22 ] ( 4, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
-; V23 tmp12 [V23,T18] ( 2, 2 ) long -> x0 "impAppendStmt"
+; V21 tmp10 [V21,T16] ( 2, 3.96) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
+; V22 tmp11 [V22 ] ( 4, 7.92) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
+; V23 tmp12 [V23,T11] ( 2, 7.92) long -> x0 "impAppendStmt"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V27 tmp16 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T14] ( 3, 4 ) ref -> x0 "Single return block return value"
-; V31 FramesRoot [V31,T13] ( 6, 4 ) long -> x20 "Pinvoke FrameListRoot"
-; V32 PInvokeFrame [V32 ] ( 8, 6 ) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp19 [V30,T13] ( 3, 6.96) ref -> x0 "Single return block return value"
+; V31 FramesRoot [V31,T08] ( 6, 9.92) long -> x21 "Pinvoke FrameListRoot"
+; V32 PInvokeFrame [V32 ] ( 8, 11.92) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V33 tmp22 [V33 ] ( 0, 0 ) long -> zero-ref "field V24._ptr (fldOffset=0x0)" P-INDEP
-; V34 tmp23 [V34,T23] ( 2, 1 ) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp24 [V35,T19] ( 2, 2 ) long -> x1 "argument with side effect"
-; V36 tmp25 [V36,T15] ( 2, 2 ) ref -> x20 single-def "argument with side effect"
-; V37 tmp26 [V37,T16] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V34 tmp23 [V34,T17] ( 2, 3.96) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp24 [V35,T22] ( 2, 2 ) long -> x1 "argument with side effect"
+; V36 tmp25 [V36,T19] ( 2, 2 ) ref -> x21 single-def "argument with side effect"
+; V37 tmp26 [V37,T20] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V39 tmp28 [V39,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V40 tmp29 [V40,T28] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V41 PSPSym [V41,T24] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym"
-; V42 cse0 [V42,T04] ( 10, 12.50) int -> x21 "CSE - aggressive"
-; V43 cse1 [V43,T09] ( 6, 8.54) byref -> x22 hoist multi-def "CSE - aggressive"
-; V44 cse2 [V44,T12] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
-; V45 cse3 [V45,T05] ( 3, 11.88) long -> x14 "CSE - aggressive"
-; V46 cse4 [V46,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V42 cse0 [V42,T05] ( 10, 12.50) int -> x22 "CSE - aggressive"
+; V43 cse1 [V43,T10] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
+; V44 cse2 [V44,T15] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
+; V45 cse3 [V45,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V46 cse4 [V46,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
; Lcl frame size = 112
@@ -71,21 +71,23 @@ G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x2, [fp, #0x78] // [V41 PSPSym]
str x0, [fp, #0x68] // [V00 this]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=52 bbWeight=1 PerfScore 11.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
add x0, fp, #32 // [V32 PInvokeFrame+0x08]
mov x1, x12
bl CORINFO_HELP_INIT_PINVOKE_FRAME
- mov x20, x0
+ mov x21, x0
mov x1, sp
str x1, [fp, #0x40] // [V32 PInvokeFrame+0x28]
mov x1, fp
str x1, [fp, #0x50] // [V32 PInvokeFrame+0x38]
- cbz x19, G_M59170_IG21
- ldr w21, [x19, #0x08]
- mov w1, w21
+ cbz x20, G_M59170_IG21
+ ldr w22, [x20, #0x08]
+ mov w1, w22
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -94,33 +96,28 @@ G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=800
; gcr arg pop 0
str x0, [fp, #0x60] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
- ldr x0, [x1, #0x50]
+ ldr x0, [x19, #0x50]
; gcrRegs -[x0]
bl <unknown method>
- ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
cbz w0, G_M59170_IG22
mov w0, wzr
- cmp w21, #0
+ cmp w22, #0
ble G_M59170_IG07
- ;; size=96 bbWeight=1 PerfScore 24.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- ldr w14, [x2, #0x08]
- cmp w14, w21
+ ;; size=88 bbWeight=1 PerfScore 20.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ ldr w14, [x1, #0x08]
+ cmp w14, w22
blt G_M59170_IG06
- add x22, x19, #16
- ; byrRegs +[x22]
+ add x23, x20, #16
+ ; byrRegs +[x23]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80002 {x1 x19}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x20]
mov w14, w0
- ldr x15, [x22, x14, LSL #3]
+ ldr x15, [x23, x14, LSL #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x12, [x15]
@@ -129,7 +126,7 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
movk xip0, #0xD1FFAB1E LSL #32
cmp x12, xip0
bne G_M59170_IG12
- add x12, x2, #16
+ add x12, x1, #16
; byrRegs +[x12]
add x14, x12, x14, LSL #3
; byrRegs +[x14]
@@ -137,20 +134,20 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
; gcrRegs -[x15]
; byrRegs -[x12 x14]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG04
;; size=60 bbWeight=3.96 PerfScore 59.40
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ; byrRegs -[x22]
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x23]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2] +[x19]
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- add x22, x19, #16
- ; byrRegs +[x22]
- ldr x15, [x22, w0, UXTW #3]
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x20]
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ add x23, x20, #16
+ ; byrRegs +[x23]
+ ldr x15, [x23, w0, UXTW #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x14, [x15]
@@ -159,30 +156,30 @@ G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x12, #0xD1FFAB1E LSL #32
cmp x14, x12
bne G_M59170_IG12
- ldr w14, [x2, #0x08]
+ ldr w14, [x1, #0x08]
cmp w0, w14
bhs G_M59170_IG20
- add x14, x2, #16
+ add x14, x1, #16
; byrRegs +[x14]
add x14, x14, x0, LSL #3
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x2 x15]
- ; byrRegs -[x14 x22]
+ ; gcrRegs -[x1 x15]
+ ; byrRegs -[x14 x23]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG06
;; size=76 bbWeight=0.04 PerfScore 0.86
-G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG07: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
str xzr, [fp, #0x70] // [V22 tmp11]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x1]
+ movz x2, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
add x1, fp, #112 // [V22 tmp11]
mov w2, #1
@@ -194,23 +191,23 @@ G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
str x3, [fp, #0x48] // [V32 PInvokeFrame+0x30]
add x3, fp, #32 // [V32 PInvokeFrame+0x08]
; byrRegs +[x3]
- str x3, [x20, #0x10]
- strb wzr, [x20, #0x0C]
- ;; size=72 bbWeight=0.50 PerfScore 7.25
-G_M59170_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ str x3, [x21, #0x10]
+ strb wzr, [x21, #0x0C]
...
-24 (-0.40%) : 22871.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMemberSystem.__Canon:int:this (FullOpts)
@@ -28,7 +28,7 @@
; V17 loc10 [V17 ] ( 5, 5 ) int -> [fp+0x218] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V18 loc11 [V18,T167] ( 3, 3 ) ubyte -> x0 single-def
; V19 loc12 [V19,T168] ( 3, 3 ) ubyte -> x2 single-def
-; V20 loc13 [V20,T169] ( 3, 3 ) int -> x22 single-def
+; V20 loc13 [V20,T169] ( 3, 3 ) int -> x24 single-def
; V21 loc14 [V21,T170] ( 3, 3 ) int -> x0 single-def
; V22 loc15 [V22,T34] ( 7, 28 ) ref -> [fp+0x70] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
;* V23 loc16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
@@ -1789,22 +1789,20 @@ G_M42452_IG91: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x1
bne G_M42452_IG92
cmp w3, #1
beq G_M42452_IG160
- ldr w3, [fp, #0xE0] // [V361 tmp315]
cmp w3, #2
bne G_M42452_IG93
ldr w0, [fp, #0xD1FFAB1E] // [V14 loc7]
ldr w2, [fp, #0xD1FFAB1E] // [V15 loc8]
cmp w0, w2
bgt G_M42452_IG162
- ldr w1, [fp, #0xE4] // [V360 tmp314]
- ldp x20, x19, [fp, #0x78] // [V04 arg3], [V03 arg2]
ldr w0, [fp, #0xD1FFAB1E] // [V14 loc7]
ldr w2, [fp, #0xD1FFAB1E] // [V15 loc8]
cmp w0, w2
blt G_M42452_IG160
ldr w3, [fp, #0xE0] // [V361 tmp315]
+ ldp x20, x19, [fp, #0x78] // [V04 arg3], [V03 arg2]
b G_M42452_IG93
- ;; size=96 bbWeight=1 PerfScore 31.50
+ ;; size=88 bbWeight=1 PerfScore 27.50
G_M42452_IG92: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref
ldr w0, [fp, #0xD1FFAB1E] // [V14 loc7]
ldr x2, [x20, #0x08]
@@ -1815,14 +1813,9 @@ G_M42452_IG92: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x1
cset x0, eq
b G_M42452_IG94
;; size=24 bbWeight=1 PerfScore 10.00
-G_M42452_IG93: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x20]
- ; byrRegs -[x19]
+G_M42452_IG93: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref
mov w0, #1
- ldp x20, x19, [fp, #0x78] // [V04 arg3], [V03 arg2]
- ; gcrRegs +[x20]
- ; byrRegs +[x19]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ ;; size=4 bbWeight=1 PerfScore 0.50
G_M42452_IG94: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref, isz
uxtb w0, w0
cmp w3, #2
@@ -1853,14 +1846,12 @@ G_M42452_IG97: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x1
stp xzr, xzr, [fp, #0xD1FFAB1E]
stp xzr, xzr, [fp, #0xD1FFAB1E]
;; size=28 bbWeight=1 PerfScore 5.50
-G_M42452_IG98: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x20]
- ; byrRegs -[x19]
+G_M42452_IG98: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref
stp xzr, xzr, [fp, #0xD1FFAB1E]
stp xzr, xzr, [fp, #0xD1FFAB1E]
stp xzr, xzr, [fp, #0xD1FFAB1E]
;; size=12 bbWeight=1 PerfScore 3.00
-G_M42452_IG99: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
+G_M42452_IG99: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x2, [fp, #0x88] // [V02 arg1]
; byrRegs +[x2]
ldr x0, [x2, #0x08]
@@ -1879,8 +1870,6 @@ G_M42452_IG99: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, b
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
- ldr x19, [fp, #0x80] // [V03 arg2]
- ; byrRegs +[x19]
ldr x0, [x19, #0x08]
ldr x1, [x0]
ldr x1, [x1, #0x68]
@@ -1896,14 +1885,12 @@ G_M42452_IG99: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, b
mov x23, x0
; gcrRegs +[x23]
mov w28, wzr
- ldr x20, [fp, #0x78] // [V04 arg3]
- ; gcrRegs +[x20]
ldr x0, [x20, #0x08]
ldr w0, [x0, #0x10]
; gcrRegs -[x0]
cmp w0, #0
ble G_M42452_IG121
- ;; size=120 bbWeight=1 PerfScore 52.00
+ ;; size=112 bbWeight=1 PerfScore 48.00
G_M42452_IG100: ; bbWeight=8, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=480000 {x19 x22}, byref, isz
mov x0, x20
; gcrRegs +[x0]
@@ -2239,10 +2226,9 @@ G_M42452_IG121: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x
sxtw w24, w0
cmp w24, #2
beq G_M42452_IG152
- sxtw w22, w24
- str w22, [fp, #0xD1FFAB1E] // [V42 loc35]
+ str w24, [fp, #0xD1FFAB1E] // [V42 loc35]
b G_M42452_IG153
- ;; size=56 bbWeight=1 PerfScore 11.50
+ ;; size=52 bbWeight=1 PerfScore 11.00
G_M42452_IG122: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
movz x0, #24
movk x0, #0xD1FFAB1E LSL #16
@@ -2753,7 +2739,7 @@ G_M42452_IG159: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
; byrRegs -[x2]
; gcr arg pop 0
- sxtw w22, w0
+ sxtw w24, w0
ldr x19, [fp, #0x80] // [V03 arg2]
; byrRegs +[x19]
ldr x0, [x19, #0x08]
@@ -2765,9 +2751,9 @@ G_M42452_IG159: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cmp w22, w0
+ cmp w24, w0
beq G_M42452_IG164
- cmp w22, w0
+ cmp w24, w0
blt G_M42452_IG162
;; size=80 bbWeight=1 PerfScore 26.50
G_M42452_IG160: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -2854,8 +2840,8 @@ G_M42452_IG168: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x1
b G_M42452_IG170
;; size=44 bbWeight=1 PerfScore 13.50
G_M42452_IG169: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr w22, [fp, #0xD1FFAB1E] // [V42 loc35]
- sxtw w0, w22
+ ldr w24, [fp, #0xD1FFAB1E] // [V42 loc35]
+ sxtw w0, w24
;; size=8 bbWeight=1 PerfScore 2.50
G_M42452_IG170: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp, #0x30]
@@ -2955,7 +2941,7 @@ RWD12 dd G_M42452_IG145 - G_M42452_IG02
dd G_M42452_IG147 - G_M42452_IG02
-; Total bytes of code 5980, prolog size 124, PerfScore 6115.54, instruction count 1495, allocated bytes for code 5980 (MethodHash=d3455a2b) for method 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)
+; Total bytes of code 5956, prolog size 124, PerfScore 6104.04, instruction count 1489, allocated bytes for code 5956 (MethodHash=d3455a2b) for method 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)
; ============================================================
Unwind Info:
@@ -2966,7 +2952,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 1443 (0x005a3) Actual length = 5772 (0x00168c)
+ Function Length : 1437 (0x0059d) Actual length = 5748 (0x001674)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.14%) : 32350.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
@@ -9,48 +9,48 @@
; Final local variable assignments
;
; V00 arg0 [V00,T18] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Dynamic.CallInfo>
-; V01 arg1 [V01,T14] ( 4, 3 ) ref -> x22 class-hnd single-def <System.String>
-; V02 arg2 [V02,T15] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Management.Automation.PSMethodInvocationConstraints>
-; V03 arg3 [V03,T04] ( 8, 7.50) int -> x20
+; V01 arg1 [V01,T16] ( 4, 3 ) ref -> x24 class-hnd single-def <System.String>
+; V02 arg2 [V02,T12] ( 3, 3.98) ref -> x22 class-hnd single-def <System.Management.Automation.PSMethodInvocationConstraints>
+; V03 arg3 [V03,T06] ( 7, 5 ) int -> x20
; V04 arg4 [V04,T19] ( 3, 2.50) ref -> x26 class-hnd single-def <System.Dynamic.DynamicMetaObject>
; V05 arg5 [V05,T01] ( 10, 9.04) ref -> x19 class-hnd single-def <System.Dynamic.DynamicMetaObject[]>
-; V06 arg6 [V06,T08] ( 6, 4 ) ref -> x21 class-hnd single-def <System.Dynamic.BindingRestrictions>
-; V07 arg7 [V07,T16] ( 3, 3 ) ref -> x24 class-hnd single-def <System.Management.Automation.MethodInformation[]>
+; V06 arg6 [V06,T09] ( 6, 4 ) ref -> x21 class-hnd single-def <System.Dynamic.BindingRestrictions>
+; V07 arg7 [V07,T13] ( 3, 3.98) ref -> x23 class-hnd single-def <System.Management.Automation.MethodInformation[]>
; V08 arg8 [V08,T69] ( 2, 1 ) ref -> [fp+0xB0] class-hnd single-def <System.Type>
-; V09 loc0 [V09 ] ( 2, 1.50) ubyte -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V10 loc1 [V10 ] ( 2, 2 ) ubyte -> [fp+0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V11 loc2 [V11 ] ( 2, 1.50) ref -> [fp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V12 loc3 [V12 ] ( 2, 1.50) ref -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
+; V09 loc0 [V09 ] ( 2, 2.48) ubyte -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V10 loc1 [V10 ] ( 2, 3.96) ubyte -> [fp+0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V11 loc2 [V11 ] ( 2, 2.48) ref -> [fp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
+; V12 loc3 [V12 ] ( 2, 2.48) ref -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
; V13 loc4 [V13,T02] ( 9, 10.50) int -> x27
-; V14 loc5 [V14,T11] ( 4, 6 ) ref -> x28 class-hnd exact single-def <System.Object[]>
-; V15 loc6 [V15,T41] ( 3, 2.50) ref -> x0 class-hnd single-def <System.Management.Automation.MethodInformation>
+; V14 loc5 [V14,T07] ( 4, 6.98) ref -> x28 class-hnd exact single-def <System.Object[]>
+; V15 loc6 [V15,T26] ( 3, 3.48) ref -> x0 class-hnd single-def <System.Management.Automation.MethodInformation>
; V16 loc7 [V16,T00] ( 12, 21.04) int -> [fp+0x3C]
; V17 loc8 [V17,T03] ( 6, 10 ) ref -> x2 class-hnd <System.Object>
-; V18 loc9 [V18,T07] ( 12, 6 ) ref -> x25 class-hnd single-def <<unknown class>>
-; V19 loc10 [V19,T05] ( 18, 9 ) ref -> x20 class-hnd <System.Linq.Expressions.Expression>
+; V18 loc9 [V18,T08] ( 12, 6 ) ref -> x25 class-hnd single-def <<unknown class>>
+; V19 loc10 [V19,T04] ( 18, 9 ) ref -> x20 class-hnd <System.Linq.Expressions.Expression>
;* V20 loc11 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
-; V21 loc12 [V21,T65] ( 3, 1.50) ref -> x23 class-hnd single-def <System.Linq.Expressions.ParameterExpression>
+; V21 loc12 [V21,T65] ( 3, 1.50) ref -> x22 class-hnd single-def <System.Linq.Expressions.ParameterExpression>
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V23 tmp1 [V23 ] ( 0, 0 ) ref -> zero-ref
;* V24 tmp2 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp3 [V25 ] ( 0, 0 ) ref -> zero-ref
;* V26 tmp4 [V26 ] ( 0, 0 ) int -> zero-ref
-; V27 tmp5 [V27,T06] ( 6, 8 ) ref -> x2
-; V28 tmp6 [V28,T09] ( 6, 6 ) ref -> x19 class-hnd exact single-def "dup spill" <System.Type[]>
+; V27 tmp5 [V27,T05] ( 6, 8 ) ref -> x2
+; V28 tmp6 [V28,T10] ( 6, 6 ) ref -> x19 class-hnd exact single-def "dup spill" <System.Type[]>
;* V29 tmp7 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
;* V30 tmp8 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
;* V31 tmp9 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
;* V32 tmp10 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
;* V33 tmp11 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V34 tmp12 [V34,T12] ( 5, 5 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Object[]>
-; V35 tmp13 [V35,T20] ( 4, 4 ) ref -> x23 class-hnd exact single-def "dup spill" <System.Object[]>
-; V36 tmp14 [V36,T29] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V37 tmp15 [V37,T30] ( 3, 3 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V34 tmp12 [V34,T14] ( 5, 5 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Object[]>
+; V35 tmp13 [V35,T20] ( 4, 4 ) ref -> x22 class-hnd exact single-def "dup spill" <System.Object[]>
+; V36 tmp14 [V36,T30] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V37 tmp15 [V37,T31] ( 3, 3 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
; V38 tmp16 [V38,T21] ( 4, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Type>
;* V39 tmp17 [V39 ] ( 0, 0 ) ref -> zero-ref single-def
-; V40 tmp18 [V40,T66] ( 3, 1.50) ref -> x23
-; V41 tmp19 [V41,T40] ( 5, 2.50) ref -> x23
-; V42 tmp20 [V42,T45] ( 2, 2 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V40 tmp18 [V40,T66] ( 3, 1.50) ref -> x22
+; V41 tmp19 [V41,T41] ( 5, 2.50) ref -> x22
+; V42 tmp20 [V42,T45] ( 2, 2 ) ref -> x23 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V43 tmp21 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Linq.Expressions.ConstantExpression>
; V44 tmp22 [V44,T46] ( 2, 2 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V45 tmp23 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Linq.Expressions.ConstantExpression>
@@ -61,12 +61,12 @@
;* V50 tmp28 [V50 ] ( 0, 0 ) ref -> zero-ref single-def
;* V51 tmp29 [V51 ] ( 0, 0 ) ref -> zero-ref single-def
; V52 tmp30 [V52,T42] ( 4, 2 ) ref -> x2
-; V53 tmp31 [V53,T26] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
+; V53 tmp31 [V53,T27] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
;* V54 tmp32 [V54,T71] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V55 tmp33 [V55,T31] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V56 tmp34 [V56,T27] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
+; V55 tmp33 [V55,T32] ( 3, 3 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V56 tmp34 [V56,T28] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
;* V57 tmp35 [V57,T72] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V58 tmp36 [V58,T32] ( 3, 3 ) ref -> x24 class-hnd exact single-def "dup spill" <System.Linq.Expressions.CatchBlock[]>
+; V58 tmp36 [V58,T33] ( 3, 3 ) ref -> x23 class-hnd exact single-def "dup spill" <System.Linq.Expressions.CatchBlock[]>
; V59 tmp37 [V59,T22] ( 4, 4 ) ref -> x28 class-hnd exact single-def "dup spill" <System.Linq.Expressions.Expression[]>
; V60 tmp38 [V60,T47] ( 2, 2 ) ref -> x27 class-hnd single-def "impAppendStmt" <System.Type>
; V61 tmp39 [V61,T48] ( 2, 2 ) ref -> [fp+0x28] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
@@ -76,16 +76,16 @@
; V65 tmp43 [V65,T50] ( 2, 2 ) ref -> x15 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
; V66 tmp44 [V66,T51] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.UnaryExpression>
; V67 tmp45 [V67,T52] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.CatchBlock>
-; V68 tmp46 [V68,T33] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V69 tmp47 [V69,T34] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V70 tmp48 [V70,T28] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
+; V68 tmp46 [V68,T34] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V69 tmp47 [V69,T35] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V70 tmp48 [V70,T29] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
;* V71 tmp49 [V71,T73] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V72 tmp50 [V72,T13] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V73 tmp51 [V73,T35] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
-; V74 tmp52 [V74,T36] ( 3, 3 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+; V72 tmp50 [V72,T15] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V73 tmp51 [V73,T36] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+; V74 tmp52 [V74,T37] ( 3, 3 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
; V75 tmp53 [V75,T53] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V76 tmp54 [V76,T67] ( 3, 1.50) ref -> x20 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression>
-; V77 tmp55 [V77,T10] ( 6, 6 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
+; V77 tmp55 [V77,T11] ( 6, 6 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
; V78 tmp56 [V78,T23] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type>
; V79 tmp57 [V79,T43] ( 4, 2 ) int -> x20 "Inline return value spill temp"
;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
@@ -98,29 +98,29 @@
;* V87 tmp65 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
;* V88 tmp66 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.Assembly>
; V89 tmp67 [V89,T70] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V90 tmp68 [V90,T37] ( 3, 3 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Attribute[]>
+; V90 tmp68 [V90,T38] ( 3, 3 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Attribute[]>
; V91 tmp69 [V91 ] ( 2, 1 ) int -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V92 tmp70 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V93 tmp71 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V94 tmp72 [V94,T54] ( 2, 2 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String>
-; V95 tmp73 [V95,T38] ( 3, 3 ) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+; V94 tmp72 [V94,T54] ( 2, 2 ) ref -> x24 class-hnd exact single-def "Inlining Arg" <System.String>
+; V95 tmp73 [V95,T39] ( 3, 3 ) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
;* V96 tmp74 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V97 tmp75 [V97,T55] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V98 tmp76 [V98,T56] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V99 tmp77 [V99,T57] ( 2, 2 ) ref -> x3 single-def "argument with side effect"
; V100 tmp78 [V100,T58] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V101 tmp79 [V101,T59] ( 2, 2 ) ref -> x0 single-def "arr expr"
-; V102 tmp80 [V102,T39] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V102 tmp80 [V102,T40] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; V103 tmp81 [V103,T60] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V104 tmp82 [V104,T61] ( 2, 2 ) ref -> x19 single-def "argument with side effect"
; V105 tmp83 [V105,T62] ( 2, 2 ) ref -> x5 single-def "argument with side effect"
; V106 tmp84 [V106,T63] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V107 tmp85 [V107,T64] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V108 cse0 [V108,T17] ( 4, 4.54) ref -> [fp+0x10] hoist multi-def "CSE - moderate"
-; V109 cse1 [V109,T25] ( 7, 3.50) long -> x22 "CSE - moderate"
-; V110 cse2 [V110,T44] ( 4, 2 ) long -> x24 "CSE - conservative"
+; V109 cse1 [V109,T25] ( 7, 3.50) long -> x24 "CSE - moderate"
+; V110 cse2 [V110,T44] ( 4, 2 ) long -> x23 "CSE - conservative"
; V111 cse3 [V111,T68] ( 3, 1.50) long -> x26 "CSE - conservative"
-; V112 cse4 [V112,T24] ( 7, 3.50) ref -> x23 multi-def "CSE - moderate"
+; V112 cse4 [V112,T24] ( 7, 3.50) ref -> x22 multi-def "CSE - moderate"
;
; Lcl frame size = 80
@@ -138,10 +138,10 @@ G_M1658_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp xzr, xzr, [x9, #0x20]
mov x25, x0
; gcrRegs +[x25]
- mov x22, x1
+ mov x24, x1
+ ; gcrRegs +[x24]
+ mov x22, x2
; gcrRegs +[x22]
- mov x23, x2
- ; gcrRegs +[x23]
mov w20, w3
mov x26, x4
; gcrRegs +[x26]
@@ -149,8 +149,8 @@ G_M1658_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
mov x21, x6
; gcrRegs +[x21]
- mov x24, x7
- ; gcrRegs +[x24]
+ mov x23, x7
+ ; gcrRegs +[x23]
;; size=76 bbWeight=1 PerfScore 13.50
G_M1658_IG02: ; bbWeight=1, gcrefRegs=7E80000 {x19 x21 x22 x23 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
ldr w27, [x19, #0x08]
@@ -223,14 +223,14 @@ G_M1658_IG07: ; bbWeight=3.96, gcrefRegs=17E80004 {x2 x19 x21 x22 x23 x24
cmp w1, w27
blt G_M1658_IG04
;; size=28 bbWeight=3.96 PerfScore 29.70
-G_M1658_IG08: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M1658_IG08: ; bbWeight=1.98, gcVars=00000000000000000000000000000000 {}, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V108}
b G_M1658_IG13
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M1658_IG09: ; bbWeight=0.04, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x08]
cmp w1, w0
- bhs G_M1658_IG41
+ bhs G_M1658_IG43
add x0, x19, #16
; byrRegs +[x0]
str w1, [fp, #0x3C] // [V16 loc7]
@@ -276,14 +276,14 @@ G_M1658_IG12: ; bbWeight=0.04, gcrefRegs=17E80004 {x2 x19 x21 x22 x23 x24
mov w1, w4
blt G_M1658_IG09
;; size=32 bbWeight=0.04 PerfScore 0.32
-G_M1658_IG13: ; bbWeight=1, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref, isz
+G_M1658_IG13: ; bbWeight=1.98, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref, isz
add x4, fp, #72 // [V11 loc2]
add x5, fp, #64 // [V12 loc3]
add x7, fp, #80 // [V10 loc1]
add x6, fp, #88 // [V09 loc0]
- mov x0, x24
+ mov x0, x23
; gcrRegs +[x0]
- mov x1, x23
+ mov x1, x22
; gcrRegs +[x1]
mov x3, x28
; gcrRegs +[x3]
@@ -293,16 +293,19 @@ G_M1658_IG13: ; bbWeight=1, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x
movk x8, #0xD1FFAB1E LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1 x3 x23-x24 x28]
+ ; gcrRegs -[x1 x3 x22-x23 x28]
ldrb w3, [fp, #0x50] // [V10 loc1]
- mov w1, #4
+ cbz w3, G_M1658_IG15
+ ;; size=60 bbWeight=1.98 PerfScore 24.75
+G_M1658_IG14: ; bbWeight=0.50, gcrefRegs=7280001 {x0 x19 x21 x24 x25 x26}, byrefRegs=0000 {}, byref
+ mov w3, #4
cmp w20, #3
- csel w1, w20, w1, eq
- cmp w3, #0
- csel w20, w20, w1, eq
- cbz x0, G_M1658_IG39
- ;; size=80 bbWeight=1 PerfScore 15.00
-G_M1658_IG14: ; bbWeight=0.50, gcrefRegs=4680001 {x0 x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+ csel w20, w20, w3, eq
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
+G_M1658_IG15: ; bbWeight=1, gcrefRegs=7280001 {x0 x19 x21 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
+ cbz x0, G_M1658_IG41
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M1658_IG16: ; bbWeight=0.50, gcrefRegs=5280001 {x0 x19 x21 x24 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
ldr x25, [x0, #0x08]
; gcrRegs +[x25]
@@ -329,7 +332,7 @@ G_M1658_IG14: ; bbWeight=0.50, gcrefRegs=4680001 {x0 x19 x21 x22 x26}, by
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- bne G_M1658_IG15
+ bne G_M1658_IG17
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -345,7 +348,7 @@ G_M1658_IG14: ; bbWeight=0.50, gcrefRegs=4680001 {x0 x19 x21 x22 x26}, by
mov x20, x0
...
+8 (+0.58%) : 12829.dasm - System.Collections.Concurrent.ConcurrentDictionary2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary
2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
@@ -9,8 +9,8 @@
; Final local variable assignments
;
; V00 this [V00,T34] ( 5, 8 ) ref -> [fp+0x40] this class-hnd EH-live single-def <System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]>
-; V01 arg1 [V01,T08] ( 11, 41 ) ref -> [fp+0x38] do-not-enreg[Z] class-hnd EH-live <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]>
-; V02 arg2 [V02,T19] ( 5, 20 ) struct ( 8) [fp+0x80] do-not-enreg[SHF] EH-live single-def <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters>
+; V01 arg1 [V01,T09] ( 11, 41 ) ref -> [fp+0x38] do-not-enreg[Z] class-hnd EH-live <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]>
+; V02 arg2 [V02,T11] ( 6, 36 ) struct ( 8) [fp+0x80] do-not-enreg[SHF] EH-live single-def <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters>
; V03 arg3 [V03,T42] ( 4, 4 ) struct ( 8) [fp+0x78] do-not-enreg[SF] single-def <System.Nullable`1[int]>
;* V04 arg4 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData>
; V05 arg5 [V05,T35] ( 3, 6 ) ubyte -> [fp+0x74] EH-live single-def
@@ -21,7 +21,7 @@
;* V10 loc2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
; V11 loc3 [V11,T20] ( 7, 20 ) ref -> [fp+0x28] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
; V12 loc4 [V12,T21] ( 5, 18 ) byref -> x19
-; V13 loc5 [V13,T18] ( 9, 22 ) int -> [fp+0x68] do-not-enreg[Z] ld-addr-op EH-live
+; V13 loc5 [V13,T19] ( 9, 22 ) int -> [fp+0x68] do-not-enreg[Z] ld-addr-op EH-live
; V14 loc6 [V14,T29] ( 5, 12 ) ubyte -> x20
;* V15 loc7 [V15,T41] ( 0, 0 ) ubyte -> zero-ref
; V16 loc8 [V16 ] ( 6, 22 ) ubyte -> [fp+0x60] do-not-enreg[X] addr-exposed ld-addr-op
@@ -40,11 +40,11 @@
;* V29 tmp6 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters>
;* V30 tmp7 [V30 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V31 tmp8 [V31 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V32 tmp9 [V32,T15] ( 3, 24 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V32 tmp9 [V32,T16] ( 3, 24 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V33 tmp10 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V35 tmp12 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V36 tmp13 [V36,T09] ( 5, 40 ) int -> x2 "Inline stloc first use temp"
+; V36 tmp13 [V36,T10] ( 5, 40 ) int -> x2 "Inline stloc first use temp"
; V37 tmp14 [V37,T24] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <System.Object>
; V38 tmp15 [V38,T26] ( 2, 16 ) ubyte -> x0 "Inlining Arg"
; V39 tmp16 [V39,T33] ( 3, 12 ) int -> registers "Inline return value spill temp"
@@ -67,24 +67,24 @@
; V56 tmp33 [V56,T55] ( 2, 2 ) int -> x11 "field V29.Components (fldOffset=0x4)" P-INDEP
; V57 tmp34 [V57,T37] ( 2, 8 ) int -> x1 "field V40.Radius (fldOffset=0x0)" P-INDEP
; V58 tmp35 [V58,T38] ( 2, 8 ) int -> x11 "field V40.Components (fldOffset=0x4)" P-INDEP
-; V59 tmp36 [V59,T10] ( 2, 32 ) int -> x1 "field V44.Radius (fldOffset=0x0)" P-INDEP
-; V60 tmp37 [V60,T11] ( 2, 32 ) int -> x2 "field V44.Components (fldOffset=0x4)" P-INDEP
+; V59 tmp36 [V59,T12] ( 2, 32 ) int -> x1 "field V44.Radius (fldOffset=0x0)" P-INDEP
+; V60 tmp37 [V60,T13] ( 2, 32 ) int -> x2 "field V44.Components (fldOffset=0x4)" P-INDEP
; V61 tmp38 [V61,T39] ( 2, 8 ) int -> x14 "field V48.Radius (fldOffset=0x0)" P-INDEP
; V62 tmp39 [V62,T40] ( 2, 8 ) int -> x15 "field V48.Components (fldOffset=0x4)" P-INDEP
-; V63 tmp40 [V63,T13] ( 7, 28 ) int -> [fp+0x58] do-not-enreg[Z] EH-live "V02.[000..004)"
-; V64 tmp41 [V64,T14] ( 7, 28 ) int -> [fp+0x54] do-not-enreg[Z] EH-live "V02.[004..008)"
+; V63 tmp40 [V63,T08] ( 8, 44 ) int -> [fp+0x58] do-not-enreg[Z] EH-live "V02.[000..004)"
+; V64 tmp41 [V64,T15] ( 7, 28 ) int -> [fp+0x54] do-not-enreg[Z] EH-live "V02.[004..008)"
; V65 tmp42 [V65,T44] ( 3, 6 ) byref -> x14 single-def "Spilling address for field-by-field copy"
-; V66 tmp43 [V66,T12] ( 6, 30 ) struct ( 8) [fp+0x48] do-not-enreg[SHF] EH-live "by-value struct argument" <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters>
+; V66 tmp43 [V66,T14] ( 6, 30 ) struct ( 8) [fp+0x48] do-not-enreg[SHF] EH-live "by-value struct argument" <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters>
;* V67 tmp44 [V67 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; V68 tmp45 [V68,T07] ( 3, 48 ) int -> x1 "fgMakeTemp is creating a new local variable"
; V69 tmp46 [V69,T45] ( 3, 6 ) ref -> x0 single-def "arr expr"
;* V70 tmp47 [V70,T57] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V71 PSPSym [V71,T58] ( 1, 1 ) long -> [fp+0x88] do-not-enreg[V] "PSPSym"
; V72 cse0 [V72,T51] ( 3, 3 ) int -> x1 "CSE - moderate"
-; V73 cse1 [V73,T16] ( 3, 24 ) ref -> x1 "CSE - aggressive"
+; V73 cse1 [V73,T17] ( 3, 24 ) ref -> x1 "CSE - aggressive"
; V74 cse2 [V74,T30] ( 3, 12 ) ref -> x11 "CSE - moderate"
; V75 cse3 [V75,T48] ( 2, 2 ) ref -> x0 "CSE - moderate"
-; V76 cse4 [V76,T17] ( 3, 24 ) int -> x3 "CSE - aggressive"
+; V76 cse4 [V76,T18] ( 3, 24 ) int -> x3 "CSE - aggressive"
; V77 cse5 [V77,T31] ( 3, 12 ) ref -> x1 "CSE - moderate"
; V78 cse6 [V78,T32] ( 3, 12 ) byref -> x11 "CSE - moderate"
; V79 cse7 [V79,T56] ( 2, 2 ) int -> x2 "CSE - moderate"
@@ -108,7 +108,7 @@ G_M33506_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr x19, [fp, #0xB0] // [V07 arg7]
; byrRegs +[x19]
;; size=48 bbWeight=1 PerfScore 12.00
-G_M33506_IG02: ; bbWeight=1, gcVars=0000000400C00100 {V00 V01 V51 V52}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
+G_M33506_IG02: ; bbWeight=1, gcVars=0000000400C00200 {V00 V01 V51 V52}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
ldr w1, [fp, #0x80] // [V02 arg2]
str w1, [fp, #0x58] // [V63 tmp40]
ldr w1, [fp, #0x84] // [V02 arg2+0x04]
@@ -195,7 +195,7 @@ G_M33506_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w20, wzr
str wzr, [fp, #0x60] // [V16 loc8]
;; size=112 bbWeight=8 PerfScore 412.00
-G_M33506_IG08: ; bbWeight=4, gcVars=0000000400D00108 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
+G_M33506_IG08: ; bbWeight=4, gcVars=0000000400D00208 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
; gcrRegs -[x0]
ldrb w7, [fp, #0x70] // [V06 arg6]
tst w7, #255
@@ -320,8 +320,10 @@ G_M33506_IG17: ; bbWeight=16, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
ldr x1, [fp, #0x30] // [V08 loc0]
; gcrRegs +[x1]
cbz x1, G_M33506_IG18
- ldr x1, [x22, #0x14]
+ ldr w1, [fp, #0x58] // [V63 tmp40]
; gcrRegs -[x1]
+ str w1, [fp, #0x80] // [V02 arg2]
+ ldr x1, [x22, #0x14]
ldr x0, [fp, #0x30] // [V08 loc0]
; gcrRegs +[x0]
ldr x2, [fp, #0x80] // [V02 arg2]
@@ -333,7 +335,7 @@ G_M33506_IG17: ; bbWeight=16, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
; gcrRegs -[x0]
; gcr arg pop 0
b G_M33506_IG21
- ;; size=44 bbWeight=16 PerfScore 264.00
+ ;; size=52 bbWeight=16 PerfScore 312.00
G_M33506_IG18: ; bbWeight=16, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
ldp w1, w2, [x22, #0x14]
ldr w3, [fp, #0x58] // [V63 tmp40]
@@ -558,7 +560,7 @@ G_M33506_IG29: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str wzr, [fp, #0x5C] // [V22 loc14]
b G_M33506_IG33
;; size=8 bbWeight=4 PerfScore 8.00
-G_M33506_IG30: ; bbWeight=1, gcVars=0000000400D00100 {V00 V01 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33506_IG30: ; bbWeight=1, gcVars=0000000400D00200 {V00 V01 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V08}
ldrb w1, [fp, #0x60] // [V16 loc8]
cbz w1, G_M33506_IG35
@@ -584,7 +586,7 @@ G_M33506_IG30: ; bbWeight=1, gcVars=0000000400D00100 {V00 V01 V11 V51 V52
; gcr arg pop 0
b G_M33506_IG35
;; size=52 bbWeight=1 PerfScore 21.00
-G_M33506_IG31: ; bbWeight=8, gcVars=0000000400D00108 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M33506_IG31: ; bbWeight=8, gcVars=0000000400D00208 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V03 V08 V11 V20}
ldr x0, [fp, #0x88] // [V71 PSPSym]
bl G_M33506_IG42
@@ -599,7 +601,7 @@ G_M33506_IG33: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M33506_IG34: ; bbWeight=1, nogc, extend
b G_M33506_IG38
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33506_IG35: ; bbWeight=1, gcVars=0000000400C00100 {V00 V01 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33506_IG35: ; bbWeight=1, gcVars=0000000400C00200 {V00 V01 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V03 V08 V11 V20}
cbz w20, G_M33506_IG36
ldp x1, x0, [fp, #0x38] // [V01 arg1], [V00 this]
@@ -659,15 +661,15 @@ G_M33506_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-G_M33506_IG42: ; bbWeight=1, gcVars=0000000400D00108 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V00 V01 V03 V08 V11 V20 V22 V51 V52}
+G_M33506_IG42: ; bbWeight=1, gcVars=0000000400D00208 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V00 V01 V03 V08 V09 V11 V20 V22 V51 V52}
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
add x3, fp, #176
str x3, [sp, #0x18]
;; size=20 bbWeight=1 PerfScore 4.50
-G_M33506_IG43: ; bbWeight=1, gcVars=0000000400D00108 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33506_IG43: ; bbWeight=1, gcVars=0000000400D00208 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x60] // [V16 loc8]
cbz w0, G_M33506_IG44
ldr w0, [fp, #0x68] // [V13 loc5]
@@ -686,7 +688,7 @@ G_M33506_IG43: ; bbWeight=1, gcVars=0000000400D00108 {V00 V01 V08 V11 V51
ldr x0, [x0, w1, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- ; GC ptr vars -{V03 V11 V20 V22}
+ ; GC ptr vars -{V03 V09 V11 V20 V22}
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
@@ -704,7 +706,7 @@ G_M33506_IG45: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1388, prolog size 48, PerfScore 2083.00, instruction count 347, allocated bytes for code 1388 (MethodHash=ac9a7d1d) for method System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
+; Total bytes of code 1396, prolog size 48, PerfScore 2131.00, instruction count 349, allocated bytes for code 1396 (MethodHash=ac9a7d1d) for method System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -715,7 +717,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 324 (0x00144) Actual length = 1296 (0x000510)
+ Function Length : 326 (0x00146) Actual length = 1304 (0x000518)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+0.79%) : 14286.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
@@ -16,8 +16,8 @@
; V05 arg5 [V05,T09] ( 8, 5.02) ref -> x23 class-hnd single-def <Microsoft.ML.Data.VBuffer`1[float][]>
; V06 arg6 [V06,T10] ( 8, 5.02) ref -> x24 class-hnd single-def <float[]>
; V07 arg7 [V07,T16] ( 4, 3 ) ubyte -> x27 single-def
-; V08 arg8 [V08,T25] ( 1, 0.50) ubyte -> [fp+0xA8] single-def
-; V09 arg9 [V09,T23] ( 3, 1.50) byref -> x28 single-def
+; V08 arg8 [V08,T23] ( 1, 1.98) ubyte -> x28 single-def
+; V09 arg9 [V09,T24] ( 3, 1.50) byref -> [fp+0xB0] single-def
; V10 arg10 [V10,T14] ( 7, 5 ) byref -> x26 single-def
; V11 loc0 [V11,T29] ( 3, 1.50) float -> [fp+0x3C] spill-single-def
; V12 loc1 [V12,T26] ( 9, 6.50) float -> d8
@@ -43,7 +43,7 @@
; V32 tmp12 [V32,T03] ( 6, 12 ) int -> registers "MD array shared temp"
; V33 cse0 [V33,T05] ( 3, 9.90) ref -> x4 "CSE - aggressive"
; V34 cse1 [V34,T12] ( 3, 5.94) int -> x0 "CSE - aggressive"
-; V35 cse2 [V35,T24] ( 3, 1.50) int -> x4 "CSE - moderate"
+; V35 cse2 [V35,T25] ( 3, 1.50) int -> x4 "CSE - moderate"
; V36 cse3 [V36,T13] ( 3, 5.94) long -> [fp+0x18] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 56
@@ -73,23 +73,24 @@ G_M52104_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x24, x6
; gcrRegs +[x24]
mov w27, w7
- ldp x28, x26, [fp, #0xB0] // [V09 arg9], [V10 arg10]
- ; byrRegs +[x26 x28]
- ;; size=84 bbWeight=1 PerfScore 18.00
-G_M52104_IG02: ; bbWeight=1, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+ ldr w28, [fp, #0xA8] // [V08 arg8]
+ ldr x26, [fp, #0xB8] // [V10 arg10]
+ ; byrRegs +[x26]
+ ;; size=88 bbWeight=1 PerfScore 19.00
+G_M52104_IG02: ; bbWeight=1, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
movn w0, #0
str w0, [x26]
cmn w21, #1
- beq G_M52104_IG27
+ beq G_M52104_IG28
;; size=16 bbWeight=1 PerfScore 3.00
-G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
mov x0, x25
; byrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.ML.Numeric.VectorUtils:NormSquared(byref):float
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
+ movz x2, #0xD1FFAB1E // code for Microsoft.ML.Numeric.VectorUtils:NormSquared(byref):float
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
; byrRegs -[x0]
; gcr arg pop 0
str s0, [fp, #0x3C] // [V11 loc0]
@@ -97,7 +98,7 @@ G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
cmp w21, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -108,7 +109,7 @@ G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
cmp w21, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -121,11 +122,11 @@ G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
movi v17.16b, #0
b G_M52104_IG05
;; size=108 bbWeight=0.50 PerfScore 20.75
-G_M52104_IG04: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+G_M52104_IG04: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
; byrRegs -[x1]
fmov s17, s16
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M52104_IG05: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG05: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
fcvt d16, s17
fsqrt d16, d16
fcvt s9, d16
@@ -133,7 +134,7 @@ G_M52104_IG05: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
cmp w22, w20
bge G_M52104_IG19
;; size=24 bbWeight=0.50 PerfScore 14.50
-G_M52104_IG06: ; bbWeight=0.25, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG06: ; bbWeight=0.25, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
cbz x23, G_M52104_IG15
cbz x24, G_M52104_IG15
orr w1, w22, w20
@@ -145,12 +146,12 @@ G_M52104_IG06: ; bbWeight=0.25, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
cmp w1, w20
blt G_M52104_IG15
;; size=40 bbWeight=0.25 PerfScore 3.12
-G_M52104_IG07: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG07: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
ldr x4, [x19, #0x20]
; gcrRegs +[x4]
cbz x4, G_M52104_IG14
;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
cmn w2, #1
beq G_M52104_IG13
sub w1, w3, w22
@@ -158,11 +159,11 @@ G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byref
sub w5, w1, w0
ldp w1, w0, [x4, #0x10]
cmp w5, w1
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
ldr w1, [x4, #0x1C]
sub w6, w2, w1
cmp w6, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
madd w1, w5, w0, w6
ubfiz x1, x1, #2, #32
add x1, x1, #32
@@ -171,7 +172,7 @@ G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byref
fcmp s16, s9
bgt G_M52104_IG10
;; size=76 bbWeight=1.98 PerfScore 52.47
-G_M52104_IG09: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG09: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x4]
str w3, [fp, #0x34] // [V16 loc5]
mov w4, w3
@@ -204,39 +205,39 @@ G_M52104_IG09: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
str w2, [x26]
mov w3, w2
;; size=100 bbWeight=1.98 PerfScore 59.40
-G_M52104_IG10: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG10: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; byrRegs -[x1]
add w3, w3, #1
cmp w3, w20
ldr w2, [fp, #0x38] // [V13 loc2]
blt G_M52104_IG07
;; size=16 bbWeight=3.96 PerfScore 15.84
-G_M52104_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=14000000 {x26 x28}, byref
+G_M52104_IG11: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=4000000 {x26}, byref
; gcrRegs -[x23-x24]
; byrRegs -[x25]
b G_M52104_IG19
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M52104_IG12: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M52104_IG12: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
; gcrRegs +[x23-x24]
; byrRegs +[x25]
ldr w3, [fp, #0x34] // [V16 loc5]
b G_M52104_IG10
;; size=8 bbWeight=0.99 PerfScore 2.97
-G_M52104_IG13: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+G_M52104_IG13: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
b G_M52104_IG09
;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M52104_IG14: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+G_M52104_IG14: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
b G_M52104_IG09
;; size=4 bbWeight=1.98 PerfScore 1.98
-G_M52104_IG15: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG15: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
- cbz x1, G_M52104_IG24
+ cbz x1, G_M52104_IG25
;; size=8 bbWeight=0.04 PerfScore 0.16
-G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x1]
cmn w2, #1
- beq G_M52104_IG23
+ beq G_M52104_IG24
ldr x4, [x19, #0x20]
; gcrRegs +[x4]
sub w1, w3, w22
@@ -244,11 +245,11 @@ G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
sub w1, w1, w0
ldp w0, w6, [x4, #0x10]
cmp w1, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
sub w0, w2, w5
ldr w5, [x4, #0x14]
cmp w0, w5
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
madd w1, w1, w6, w0
ubfiz x1, x1, #2, #32
add x1, x1, #32
@@ -257,11 +258,11 @@ G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
fcmp s16, s9
bgt G_M52104_IG18
;; size=80 bbWeight=0.02 PerfScore 0.59
-G_M52104_IG17: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG17: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x4]
ldr w1, [x23, #0x08]
cmp w3, w1
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
mov w1, #24
mov x0, #16
str w3, [fp, #0x34] // [V16 loc5]
@@ -282,38 +283,39 @@ G_M52104_IG17: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
ldr w4, [x24, #0x08]
ldr w7, [fp, #0x34] // [V16 loc5]
cmp w7, w4
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
add x4, x24, #16
; byrRegs +[x4]
ldr s17, [x4, w7, UXTW #2]
fadd s10, s16, s17
fcmp s8, s10
- blt G_M52104_IG22
+ blt G_M52104_IG23
fmov s8, s10
str w7, [x26]
mov w3, w7
;; size=112 bbWeight=0.02 PerfScore 0.77
-G_M52104_IG18: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG18: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; byrRegs -[x4]
add w3, w3, #1
cmp w3, w20
ldr w2, [fp, #0x38] // [V13 loc2]
blt G_M52104_IG15
;; size=16 bbWeight=0.04 PerfScore 0.16
-G_M52104_IG19: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=14000000 {x26 x28}, byref, isz
+G_M52104_IG19: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=4000000 {x26}, byref, isz
; gcrRegs -[x23-x24]
; byrRegs -[x25]
- ldrb w22, [fp, #0xA8] // [V08 arg8]
- tst w22, #255
- beq G_M52104_IG20
+ tst w28, #255
+ beq G_M52104_IG21
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M52104_IG20: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=4000000 {x26}, byref, isz
ldr w4, [x26]
...
+16 (+1.35%) : 17222.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 39,506 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
-; V01 TypeCtx [V01,T42] ( 7, 5.56) long -> x26 single-def
-; V02 arg1 [V02,T32] ( 4, 14 ) byref -> x24 single-def
-; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> x20 single-def
-; V04 arg3 [V04,T45] ( 3, 3 ) ref -> x4 class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
-; V05 arg4 [V05,T29] ( 6, 26 ) ref -> x21 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V06 arg5 [V06,T30] ( 6, 26 ) ref -> x22 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
-; V07 arg6 [V07,T31] ( 3, 18 ) ubyte -> x23 single-def
-; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> x25
-; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [fp+0x88] single-def
+; V00 this [V00,T00] ( 39,432 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
+; V01 TypeCtx [V01,T43] ( 7, 5.56) long -> x26 single-def
+; V02 arg1 [V02,T30] ( 4, 14 ) byref -> x22 single-def
+; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> x23 single-def
+; V04 arg3 [V04,T46] ( 3, 3 ) ref -> x4 class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
+; V05 arg4 [V05,T28] ( 6, 22 ) ref -> x21 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V06 arg5 [V06,T27] ( 6, 26 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
+; V07 arg6 [V07,T37] ( 3, 10 ) ubyte -> x24 single-def
+; V08 arg7 [V08,T38] ( 2, 10 ) ubyte -> x25
+; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [fp+0x88] single-def
;* V10 loc0 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+<>c__DisplayClass417_0`1[System.__Canon]>
-; V11 loc1 [V11 ] ( 7, 42 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V12 loc2 [V12,T17] ( 3, 52 ) int -> [fp+0x1C] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
+; V12 loc2 [V12,T16] ( 3, 34 ) int -> [fp+0x1C] ld-addr-op
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T47] ( 3, 4 ) long -> x1 "spilling helperCall"
+; V14 tmp1 [V14,T48] ( 3, 4 ) long -> x1 "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V17 tmp4 [V17,T48] ( 3, 4 ) long -> x1 "spilling helperCall"
+; V17 tmp4 [V17,T49] ( 3, 4 ) long -> x1 "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V19 tmp6 [V19 ] ( 0, 0 ) byref -> zero-ref
-; V20 tmp7 [V20,T26] ( 2, 32 ) byref -> [fp+0x10] spill-single-def
-; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> x1
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [fp+0x10] spill-single-def
+; V21 tmp8 [V21,T29] ( 3, 24 ) ref -> x1
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V23 tmp10 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
@@ -37,59 +37,60 @@
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V27 tmp14 [V27,T41] ( 2, 8 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> x1
-; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V31 tmp18 [V31,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V33 tmp20 [V33,T33] ( 2, 16 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> x1
-; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V34 tmp21 [V34,T33] ( 4, 14 ) ref -> x2
+; V35 tmp22 [V35,T36] ( 3, 12 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V38 tmp25 [V38,T07] ( 2, 64 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V39 tmp26 [V39,T12] ( 4, 56 ) ref -> x1
-; V40 tmp27 [V40,T19] ( 3, 48 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> x2
+; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp29 [V42,T34] ( 2, 16 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T42] ( 2, 8 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V44 tmp31 [V44,T08] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp32 [V45,T13] ( 4, 56 ) ref -> x2
-; V46 tmp33 [V46,T20] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V44 tmp31 [V44,T21] ( 2, 32 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V45 tmp32 [V45,T17] ( 4, 32 ) ref -> x2
+; V46 tmp33 [V46,T09] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V48 tmp35 [V48,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp35 [V48,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V50 tmp37 [V50,T09] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V51 tmp38 [V51,T14] ( 4, 56 ) ref -> x2
-; V52 tmp39 [V52,T21] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> x3
+; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V55 tmp42 [V55,T01] ( 2,256 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V56 tmp43 [V56,T02] ( 4,224 ) ref -> x2
-; V57 tmp44 [V57,T04] ( 3,192 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V55 tmp42 [V55,T01] ( 2,256 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V56 tmp43 [V56,T02] ( 4,224 ) ref -> x3
+; V57 tmp44 [V57,T03] ( 3,192 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V60 tmp47 [V60,T10] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> x2
-; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> x3
+; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V65 tmp52 [V65,T11] ( 2, 64 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> x1
-; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> x1
+; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V69 tmp56 [V69,T27] ( 2, 32 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
-;* V70 tmp57 [V70,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V71 tmp58 [V71,T06] ( 3, 80 ) int -> x0 "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
+;* V70 tmp57 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V71 tmp58 [V71,T13] ( 3, 48 ) int -> x0 "Inline stloc first use temp"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V10.<>4__this (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T03] ( 7,193 ) ref -> x28 single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
-;* V74 tmp61 [V74,T50] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> x28 single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
+;* V74 tmp61 [V74,T51] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> x27 single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "field V16._builder (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "field V24._builder (fldOffset=0x0)" P-INDEP
-; V79 rat0 [V79,T43] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V80 rat1 [V80,T44] ( 3, 5.60) long -> x0 "spilling expr"
-; V81 rat2 [V81,T46] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [fp+0x18] multi-def "CSE - moderate"
+; V80 rat0 [V80,T44] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V81 rat1 [V81,T45] ( 3, 5.60) long -> x0 "spilling expr"
+; V82 rat2 [V82,T47] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 32
@@ -105,17 +106,17 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
mov x26, x1
- mov x24, x2
- ; byrRegs +[x24]
- mov w20, w3
+ mov x22, x2
+ ; byrRegs +[x22]
+ mov w23, w3
mov x21, x5
; gcrRegs +[x21]
- mov x22, x6
- ; gcrRegs +[x22]
- mov w23, w7
+ mov x20, x6
+ ; gcrRegs +[x20]
+ mov w24, w7
ldr w25, [fp, #0x80] // [V08 arg7]
;; size=64 bbWeight=1 PerfScore 13.00
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=680010 {x4 x19 x21 x22}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=380010 {x4 x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs +[x4]
ldrb w27, [fp, #0x88] // [V09 arg8]
mov x28, x4
@@ -124,11 +125,11 @@ G_M39451_IG02: ; bbWeight=1, gcrefRegs=680010 {x4 x19 x21 x22}, byrefRegs
ldr x1, [x0, #0x10]
cbz x1, G_M39451_IG04
;; size=20 bbWeight=1 PerfScore 9.50
-G_M39451_IG03: ; bbWeight=0.80, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
+G_M39451_IG03: ; bbWeight=0.80, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x4]
b G_M39451_IG05
;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
mov x0, x26
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -136,7 +137,7 @@ G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=10680000 {x19 x21 x22 x28}, byr
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov x1, x0
;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
ldr x0, [x19, #0xD1FFAB1E]
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:AllocateSeparated[System.__Canon]():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]:this
@@ -147,12 +148,12 @@ G_M39451_IG05: ; bbWeight=1, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefR
blr x2
str x0, [fp, #0x20] // [V11 loc1]
;; size=32 bbWeight=1 PerfScore 12.50
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
tst w25, #255
bne G_M39451_IG16
;; size=8 bbWeight=8 PerfScore 12.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x19, #0x10]
; gcrRegs +[x1]
cbnz x1, G_M39451_IG08
@@ -174,78 +175,79 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefR
; gcrRegs -[x0 x15]
; byrRegs -[x14]
;; size=48 bbWeight=2 PerfScore 25.00
-G_M39451_IG08: ; bbWeight=2, gcrefRegs=10680002 {x1 x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG08: ; bbWeight=2, gcrefRegs=10380002 {x1 x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
ldrh w0, [x1, #0x0C]
- uxth w1, w20
+ uxth w1, w23
; gcrRegs -[x1]
+ str w1, [fp, #0x18] // [V79 cse0]
cmp w0, w1
- beq G_M39451_IG39
- ;; size=16 bbWeight=2 PerfScore 10.00
-G_M39451_IG09: ; bbWeight=4, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
- ldr x1, [x19, #0x10]
- ; gcrRegs +[x1]
- cbnz x1, G_M39451_IG11
+ beq G_M39451_IG33
+ ;; size=20 bbWeight=2 PerfScore 12.00
+G_M39451_IG09: ; bbWeight=4, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
+ ldr x2, [x19, #0x10]
+ ; gcrRegs +[x2]
+ cbnz x2, G_M39451_IG11
;; size=8 bbWeight=4 PerfScore 16.00
-G_M39451_IG10: ; bbWeight=2, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
- ; gcrRegs -[x1]
+G_M39451_IG10: ; bbWeight=2, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
+ ; gcrRegs -[x2]
mov x0, x19
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- mov x1, x0
- ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ mov x2, x0
+ ; gcrRegs +[x2]
add x14, x19, #16
; byrRegs +[x14]
- mov x15, x1
...
smoke_tests.nativeaot.linux.arm64.checked.mch
+0 (0.00%) : 5437.dasm - System.Reflection.Runtime.MethodInfos.RuntimeMethodHelpers:GetRuntimeParametersSystem.Reflection.Runtime.MethodInfos.NativeFormat.NativeFormatMethodCommon:System.Reflection.Runtime.ParameterInfos.RuntimeParameterInfo
@@ -9,12 +9,12 @@
;
; V00 arg0 [V00,T08] ( 4, 4 ) byref -> x20 single-def
; V01 arg1 [V01,T04] ( 6, 6.98) ref -> x19 class-hnd single-def <System.Reflection.MethodBase>
-; V02 arg2 [V02,T11] ( 3, 3 ) ref -> x21 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[]>
-; V03 arg3 [V03,T12] ( 3, 3 ) byref -> x22 single-def
+; V02 arg2 [V02,T12] ( 3, 3 ) ref -> x22 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[]>
+; V03 arg3 [V03,T09] ( 3, 3.98) byref -> x21 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret ld-addr-op single-def <System.Reflection.Runtime.General.TypeContext>
-; V05 loc1 [V05,T09] ( 5, 5.48) ref -> x21 class-hnd exact single-def <System.Reflection.Runtime.General.QSignatureTypeHandle[]>
+; V05 loc1 [V05,T10] ( 5, 5.48) ref -> x22 class-hnd exact single-def <System.Reflection.Runtime.General.QSignatureTypeHandle[]>
; V06 loc2 [V06,T05] ( 6, 8.46) int -> x25
-; V07 loc3 [V07 ] ( 10, 14.90) struct (16) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Runtime.MethodInfos.VirtualRuntimeParameterInfoArray>
+; V07 loc3 [V07 ] ( 10, 16.86) struct (16) [fp+0x10] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.Runtime.MethodInfos.VirtualRuntimeParameterInfoArray>
; V08 loc4 [V08,T01] ( 9, 24.76) int -> x20
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Reflection.Runtime.General.TypeContext>
@@ -41,9 +41,9 @@
;* V31 tmp22 [V31 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V32 tmp23 [V32 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
; V33 tmp24 [V33,T07] ( 5, 5.98) ref -> x23 single-def "field V04._genericTypeArguments (fldOffset=0x0)" P-INDEP
-; V34 tmp25 [V34,T10] ( 4, 4.98) ref -> x24 single-def "field V04._genericMethodArguments (fldOffset=0x8)" P-INDEP
-; V35 tmp26 [V35 ] ( 6, 7.96) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V07.<First>k__BackingField (fldOffset=0x0)" P-DEP
-; V36 tmp27 [V36 ] ( 7, 9.94) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V07.<Remainder>k__BackingField (fldOffset=0x8)" P-DEP
+; V34 tmp25 [V34,T11] ( 4, 4.98) ref -> x24 single-def "field V04._genericMethodArguments (fldOffset=0x8)" P-INDEP
+; V35 tmp26 [V35 ] ( 6, 8.94) ref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V07.<First>k__BackingField (fldOffset=0x0)" P-DEP
+; V36 tmp27 [V36 ] ( 7, 10.92) ref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V07.<Remainder>k__BackingField (fldOffset=0x8)" P-DEP
;* V37 tmp28 [V37 ] ( 0, 0 ) ref -> zero-ref "field V10._genericTypeArguments (fldOffset=0x0)" P-DEP
;* V38 tmp29 [V38 ] ( 0, 0 ) ref -> zero-ref "field V10._genericMethodArguments (fldOffset=0x8)" P-DEP
; V39 tmp30 [V39,T13] ( 2, 3.96) ref -> x27 "field V27._reader (fldOffset=0x0)" P-INDEP
@@ -69,12 +69,12 @@ G_M35875_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- mov x21, x2
- ; gcrRegs +[x21]
- mov x22, x3
- ; byrRegs +[x22]
+ mov x22, x2
+ ; gcrRegs +[x22]
+ mov x21, x3
+ ; byrRegs +[x21]
;; size=48 bbWeight=1 PerfScore 9.50
-G_M35875_IG02: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=500000 {x20 x22}, byref, isz
+G_M35875_IG02: ; bbWeight=1, gcrefRegs=480000 {x19 x22}, byrefRegs=300000 {x20 x21}, byref, isz
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x19]
@@ -85,7 +85,7 @@ G_M35875_IG02: ; bbWeight=1, gcrefRegs=280000 {x19 x21}, byrefRegs=500000
; gcrRegs +[x23]
cbz x23, G_M35875_IG07
;; size=24 bbWeight=1 PerfScore 9.00
-G_M35875_IG03: ; bbWeight=0.25, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=500000 {x20 x22}, byref, isz
+G_M35875_IG03: ; bbWeight=0.25, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=300000 {x20 x21}, byref, isz
; gcrRegs -[x0]
ldr x0, [x23]
adrp x1, [HIGH RELOC #0xD1FFAB1E] // System.RuntimeType
@@ -93,7 +93,7 @@ G_M35875_IG03: ; bbWeight=0.25, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs
cmp x0, x1
bne G_M35875_IG07
;; size=20 bbWeight=0.25 PerfScore 1.38
-G_M35875_IG04: ; bbWeight=0.50, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=500000 {x20 x22}, byref, isz
+G_M35875_IG04: ; bbWeight=0.50, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=300000 {x20 x21}, byref, isz
ldr x0, [x23, #0x10]
cbz x0, G_M35875_IG05
bl <unknown method>
@@ -102,7 +102,7 @@ G_M35875_IG04: ; bbWeight=0.50, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs
cbz x0, G_M35875_IG05
b G_M35875_IG06
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M35875_IG05: ; bbWeight=0.50, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=500000 {x20 x22}, byref
+G_M35875_IG05: ; bbWeight=0.50, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=300000 {x20 x21}, byref
; gcrRegs -[x0]
mov x0, x23
; gcrRegs +[x0]
@@ -110,10 +110,10 @@ G_M35875_IG05: ; bbWeight=0.50, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs
; gcrRegs -[x23]
; gcr arg pop 0
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M35875_IG06: ; bbWeight=0.50, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=500000 {x20 x22}, byref
+G_M35875_IG06: ; bbWeight=0.50, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=300000 {x20 x21}, byref
b G_M35875_IG08
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M35875_IG07: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=500000 {x20 x22}, byref
+G_M35875_IG07: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=300000 {x20 x21}, byref
; gcrRegs -[x0]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
@@ -127,7 +127,7 @@ G_M35875_IG07: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=500
mov x0, xzr
; gcrRegs +[x0]
;; size=24 bbWeight=0.50 PerfScore 1.75
-G_M35875_IG08: ; bbWeight=1, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=500000 {x20 x22}, byref, isz
+G_M35875_IG08: ; bbWeight=1, gcrefRegs=480001 {x0 x19 x22}, byrefRegs=300000 {x20 x21}, byref, isz
ldr x1, [x0]
ldr x1, [x1, #0xD1FFAB1E]
blr x1
@@ -137,22 +137,22 @@ G_M35875_IG08: ; bbWeight=1, gcrefRegs=280001 {x0 x19 x21}, byrefRegs=500
; gcrRegs +[x23]
mov x24, x1
; gcrRegs +[x24]
- mov x24, x21
+ mov x24, x22
mov x0, x20
; gcrRegs -[x0]
; byrRegs +[x0]
bl <unknown method>
- ; gcrRegs -[x1 x21] +[x0]
+ ; gcrRegs -[x1 x22] +[x0]
; byrRegs -[x0]
; gcr arg pop 0
- mov x21, x0
- ; gcrRegs +[x21]
- ldr w25, [x21, #0x08]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ ldr w25, [x22, #0x08]
stp xzr, xzr, [fp, #0x10]
cmp w25, #0
bgt G_M35875_IG10
;; size=52 bbWeight=1 PerfScore 16.00
-G_M35875_IG09: ; bbWeight=0.50, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=500000 {x20 x22}, byref
+G_M35875_IG09: ; bbWeight=0.50, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=300000 {x20 x21}, byref
; gcrRegs -[x0]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
@@ -164,13 +164,13 @@ G_M35875_IG09: ; bbWeight=0.50, gcrefRegs=1A80000 {x19 x21 x23 x24}, byre
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 1.50
-G_M35875_IG10: ; bbWeight=1, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=500000 {x20 x22}, byref, isz
+G_M35875_IG10: ; bbWeight=1, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=300000 {x20 x21}, byref, isz
add x26, fp, #16 // [V07 loc3]
; byrRegs +[x26]
cmp w25, #1
beq G_M35875_IG12
;; size=12 bbWeight=1 PerfScore 2.00
-G_M35875_IG11: ; bbWeight=0.50, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=4500000 {x20 x22 x26}, byref
+G_M35875_IG11: ; bbWeight=0.50, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=4300000 {x20 x21 x26}, byref
sub w1, w25, #1
sxtw x1, w1
adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Reflection.Runtime.ParameterInfos.RuntimeParameterInfo[]
@@ -180,13 +180,13 @@ G_M35875_IG11: ; bbWeight=0.50, gcrefRegs=1A80000 {x19 x21 x23 x24}, byre
; gcr arg pop 0
b G_M35875_IG13
;; size=24 bbWeight=0.50 PerfScore 2.00
-G_M35875_IG12: ; bbWeight=0.50, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=4500000 {x20 x22 x26}, byref
+G_M35875_IG12: ; bbWeight=0.50, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=4300000 {x20 x21 x26}, byref
; gcrRegs -[x0]
adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
; gcrRegs +[x0]
;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M35875_IG13: ; bbWeight=1, gcrefRegs=1A80001 {x0 x19 x21 x23 x24}, byrefRegs=4500000 {x20 x22 x26}, byref, isz
+G_M35875_IG13: ; bbWeight=1, gcrefRegs=1C80001 {x0 x19 x22 x23 x24}, byrefRegs=4300000 {x20 x21 x26}, byref, isz
str x0, [x26, #0x08]
mov x4, x23
; gcrRegs +[x4]
@@ -196,7 +196,7 @@ G_M35875_IG13: ; bbWeight=1, gcrefRegs=1A80001 {x0 x19 x21 x23 x24}, byre
mov x0, x20
; gcrRegs -[x0]
; byrRegs +[x0]
- mov x2, x21
+ mov x2, x22
; gcrRegs +[x2]
mov x3, x19
; gcrRegs +[x3]
@@ -208,13 +208,13 @@ G_M35875_IG13: ; bbWeight=1, gcrefRegs=1A80001 {x0 x19 x21 x23 x24}, byre
cmp w25, #0
ble G_M35875_IG22
;; size=44 bbWeight=1 PerfScore 7.00
-G_M35875_IG14: ; bbWeight=0.50, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=400000 {x22}, byref
- ldr wzr, [x21, #0x08]
+G_M35875_IG14: ; bbWeight=0.50, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=200000 {x21}, byref
+ ldr wzr, [x22, #0x08]
;; size=4 bbWeight=0.50 PerfScore 1.50
-G_M35875_IG15: ; bbWeight=3.96, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=400000 {x22}, byref, isz
+G_M35875_IG15: ; bbWeight=3.96, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=200000 {x21}, byref, isz
cbz w20, G_M35875_IG17
;; size=4 bbWeight=3.96 PerfScore 3.96
-G_M35875_IG16: ; bbWeight=1.98, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=400000 {x22}, byref, isz
+G_M35875_IG16: ; bbWeight=1.98, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=200000 {x21}, byref, isz
sub w26, w20, #1
ldr x0, [fp, #0x18] // [V36 tmp27]
; gcrRegs +[x0]
@@ -232,19 +232,19 @@ G_M35875_IG16: ; bbWeight=1.98, gcrefRegs=1A80000 {x19 x21 x23 x24}, byre
; byrRegs -[x0]
b G_M35875_IG18
;; size=36 bbWeight=1.98 PerfScore 26.73
-G_M35875_IG17: ; bbWeight=1.98, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=400000 {x22}, byref
+G_M35875_IG17: ; bbWeight=1.98, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x0]
ldr x0, [fp, #0x10] // [V35 tmp26]
; gcrRegs +[x0]
;; size=4 bbWeight=1.98 PerfScore 3.96
-G_M35875_IG18: ; bbWeight=3.96, gcrefRegs=1A80001 {x0 x19 x21 x23 x24}, byrefRegs=400000 {x22}, byref, isz
+G_M35875_IG18: ; bbWeight=3.96, gcrefRegs=1C80001 {x0 x19 x22 x23 x24}, byrefRegs=200000 {x21}, byref, isz
cbnz x0, G_M35875_IG21
;; size=4 bbWeight=3.96 PerfScore 3.96
-G_M35875_IG19: ; bbWeight=1.98, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=400000 {x22}, byref, isz
+G_M35875_IG19: ; bbWeight=1.98, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x0]
ubfiz x0, x20, #4, #32
add x0, x0, #16
- add x0, x21, x0
+ add x0, x22, x0
; byrRegs +[x0]
ldr x27, [x0]
; gcrRegs +[x27]
@@ -292,7 +292,7 @@ G_M35875_IG19: ; bbWeight=1.98, gcrefRegs=1A80000 {x19 x21 x23 x24}, byre
str x2, [fp, #0x10] // [V35 tmp26]
b G_M35875_IG21
;; size=108 bbWeight=1.98 PerfScore 47.52
-G_M35875_IG20: ; bbWeight=1.98, gcrefRegs=1A80004 {x2 x19 x21 x23 x24}, byrefRegs=400000 {x22}, byref
+G_M35875_IG20: ; bbWeight=1.98, gcrefRegs=1C80004 {x2 x19 x22 x23 x24}, byrefRegs=200000 {x21}, byref
sxtw x1, w26
ldr x0, [fp, #0x18] // [V36 tmp27]
; gcrRegs +[x0]
@@ -300,24 +300,24 @@ G_M35875_IG20: ; bbWeight=1.98, gcrefRegs=1A80004 {x2 x19 x21 x23 x24}, b
; gcrRegs -[x0 x2]
; gcr arg pop 0
;; size=12 bbWeight=1.98 PerfScore 6.93
-G_M35875_IG21: ; bbWeight=3.96, gcrefRegs=1A80000 {x19 x21 x23 x24}, byrefRegs=400000 {x22}, byref, isz
+G_M35875_IG21: ; bbWeight=3.96, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=200000 {x21}, byref, isz
add w20, w20, #1
cmp w20, w25
blt G_M35875_IG15
;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M35875_IG22: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x19 x21 x23-x24]
+G_M35875_IG22: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ ; gcrRegs -[x19 x22-x24]
ldr x15, [fp, #0x10] // [V35 tmp26]
; gcrRegs +[x15]
- mov x14, x22
+ mov x14, x21
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x15]
- ; byrRegs -[x14 x22]
+ ; byrRegs -[x14 x21]
ldr x0, [fp, #0x18] // [V36 tmp27]
; gcrRegs +[x0]
- ;; size=16 bbWeight=1 PerfScore 5.50
-G_M35875_IG23: ; bbWeight=1, epilog, nogc, extend
+ ;; size=16 bbWeight=1.98 PerfScore 10.89
+G_M35875_IG23: ; bbWeight=1.98, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
...
+0 (0.00%) : 5893.dasm - Internal.Reflection.Core.Execution.ExecutionEnvironment:GetMethodInvoker(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.Reflection.Runtime.General.QMethodDefinition,System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[],System.Reflection.MemberInfo,byref):Internal.Reflection.Core.Execution.MethodBaseInvoker:this (FullOpts)
@@ -7,24 +7,24 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00,T10] ( 3, 2.50) ref -> x22 this class-hnd exact single-def <Internal.Reflection.Execution.ExecutionEnvironmentImplementation>
-; V01 arg1 [V01,T06] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo>
+; V00 this [V00,T08] ( 3, 3.98) ref -> x20 this class-hnd exact single-def <Internal.Reflection.Execution.ExecutionEnvironmentImplementation>
+; V01 arg1 [V01,T07] ( 5, 4.50) ref -> x19 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Reflection.Runtime.General.QMethodDefinition>
-; V03 arg3 [V03,T09] ( 6, 3.04) ref -> x21 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[]>
-; V04 arg4 [V04,T11] ( 3, 2.50) ref -> x23 class-hnd single-def <System.Reflection.MemberInfo>
-; V05 arg5 [V05,T07] ( 4, 3.50) byref -> x20 single-def
+; V03 arg3 [V03,T10] ( 6, 3.04) ref -> x22 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[]>
+; V04 arg4 [V04,T13] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Reflection.MemberInfo>
+; V05 arg5 [V05,T09] ( 4, 3.50) byref -> x21 single-def
;* V06 loc0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref <System.RuntimeTypeHandle>
-; V07 loc1 [V07,T08] ( 6, 5.29) ref -> x26 class-hnd exact single-def <System.RuntimeTypeHandle[]>
-; V08 loc2 [V08,T14] ( 3, 1.50) ref -> x19 class-hnd single-def <Internal.Reflection.Core.Execution.MethodBaseInvoker>
+; V07 loc1 [V07,T06] ( 6, 6.77) ref -> x26 class-hnd exact single-def <System.RuntimeTypeHandle[]>
+; V08 loc2 [V08,T14] ( 3, 4.46) ref -> x19 class-hnd single-def <Internal.Reflection.Core.Execution.MethodBaseInvoker>
; V09 loc3 [V09,T02] ( 5, 16.50) int -> x26
; V10 loc4 [V10,T01] ( 12, 20.54) int -> x28
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Reflection.Runtime.MethodInfos.OpenMethodInvoker>
;* V13 tmp2 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "Strict ordering of exceptions for Array store" <System.RuntimeTypeHandle>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Reflection.Runtime.MethodInfos.OpenMethodInvoker>
-; V15 tmp4 [V15,T12] ( 2, 1.50) ref -> x24 single-def "field V02._reader (fldOffset=0x0)" P-INDEP
-; V16 tmp5 [V16,T13] ( 2, 1.50) int -> x25 single-def "field V02._handle (fldOffset=0x8)" P-INDEP
-; V17 tmp6 [V17,T15] ( 2, 1 ) long -> x19 "field V06._value (fldOffset=0x0)" P-INDEP
+; V15 tmp4 [V15,T11] ( 2, 2.98) ref -> x23 single-def "field V02._reader (fldOffset=0x0)" P-INDEP
+; V16 tmp5 [V16,T12] ( 2, 2.98) int -> x24 single-def "field V02._handle (fldOffset=0x8)" P-INDEP
+; V17 tmp6 [V17,T15] ( 2, 2.48) long -> x19 "field V06._value (fldOffset=0x0)" P-INDEP
; V18 tmp7 [V18,T05] ( 4, 8 ) long -> x0 "field V13._value (fldOffset=0x0)" P-INDEP
; V19 tmp8 [V19,T00] ( 3, 24 ) ref -> x0 "argument with side effect"
; V20 cse0 [V20,T03] ( 8, 10.25) int -> x27 "CSE - aggressive"
@@ -40,22 +40,22 @@ G_M64832_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0x40]
stp x27, x28, [sp, #0x50]
mov fp, sp
- mov x22, x0
- ; gcrRegs +[x22]
+ mov x20, x0
+ ; gcrRegs +[x20]
mov x19, x1
; gcrRegs +[x19]
- mov x24, x2
- ; gcrRegs +[x24]
- mov w25, w3
- mov x21, x4
- ; gcrRegs +[x21]
- mov x23, x5
+ mov x23, x2
; gcrRegs +[x23]
- mov x20, x6
- ; byrRegs +[x20]
+ mov w24, w3
+ mov x22, x4
+ ; gcrRegs +[x22]
+ mov x25, x5
+ ; gcrRegs +[x25]
+ mov x21, x6
+ ; byrRegs +[x21]
;; size=56 bbWeight=1 PerfScore 10.00
-G_M64832_IG02: ; bbWeight=1, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=100000 {x20}, byref, isz
- str xzr, [x20]
+G_M64832_IG02: ; bbWeight=1, gcrefRegs=2D80000 {x19 x20 x22 x23 x25}, byrefRegs=200000 {x21}, byref, isz
+ str xzr, [x21]
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x19]
@@ -65,8 +65,8 @@ G_M64832_IG02: ; bbWeight=1, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byr
cbz w0, G_M64832_IG05
;; size=24 bbWeight=1 PerfScore 9.50
G_M64832_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19 x21-x24]
- ; byrRegs -[x20]
+ ; gcrRegs -[x19-x20 x22-x23 x25]
+ ; byrRegs -[x21]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Reflection.Runtime.MethodInfos.OpenMethodInvoker
add x0, x0, [LOW RELOC #0xD1FFAB1E]
bl CORINFO_HELP_NEWSFAST
@@ -81,19 +81,19 @@ G_M64832_IG04: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M64832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=100000 {x20}, gcvars, byref, isz
- ; gcrRegs -[x0] +[x19 x21-x24]
- ; byrRegs +[x20]
+G_M64832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2D80000 {x19 x20 x22 x23 x25}, byrefRegs=200000 {x21}, gcvars, byref, isz
+ ; gcrRegs -[x0] +[x19-x20 x22-x23 x25]
+ ; byrRegs +[x21]
mov w26, wzr
- ldr w27, [x21, #0x08]
+ ldr w27, [x22, #0x08]
cmp w27, #0
ble G_M64832_IG08
;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M64832_IG06: ; bbWeight=0.25, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=100000 {x20}, byref
- add x28, x21, #16
+G_M64832_IG06: ; bbWeight=0.25, gcrefRegs=2D80000 {x19 x20 x22 x23 x25}, byrefRegs=200000 {x21}, byref
+ add x28, x22, #16
; byrRegs +[x28]
;; size=4 bbWeight=0.25 PerfScore 0.12
-G_M64832_IG07: ; bbWeight=4, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=10100000 {x20 x28}, byref, isz
+G_M64832_IG07: ; bbWeight=4, gcrefRegs=2D80000 {x19 x20 x22 x23 x25}, byrefRegs=10200000 {x21 x28}, byref, isz
ldr x0, [x28, w26, UXTW #3]
; gcrRegs +[x0]
ldr x1, [x0]
@@ -105,7 +105,7 @@ G_M64832_IG07: ; bbWeight=4, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byr
cmp w27, w26
bgt G_M64832_IG07
;; size=32 bbWeight=4 PerfScore 52.00
-G_M64832_IG08: ; bbWeight=0.50, gcrefRegs=1E80000 {x19 x21 x22 x23 x24}, byrefRegs=100000 {x20}, byref, isz
+G_M64832_IG08: ; bbWeight=0.50, gcrefRegs=2D80000 {x19 x20 x22 x23 x25}, byrefRegs=200000 {x21}, byref, isz
; byrRegs -[x28]
mov x0, x19
; gcrRegs +[x0]
@@ -123,20 +123,20 @@ G_M64832_IG08: ; bbWeight=0.50, gcrefRegs=1E80000 {x19 x21 x22 x23 x24},
cmp w27, #0
ble G_M64832_IG13
;; size=44 bbWeight=0.50 PerfScore 3.50
-G_M64832_IG09: ; bbWeight=0.25, gcrefRegs=5E00000 {x21 x22 x23 x24 x26}, byrefRegs=100000 {x20}, byref, isz
+G_M64832_IG09: ; bbWeight=0.25, gcrefRegs=6D00000 {x20 x22 x23 x25 x26}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x0]
ldr w0, [x26, #0x08]
cmp w0, w27
blt G_M64832_IG12
- add x0, x21, #16
+ add x0, x22, #16
; byrRegs +[x0]
- mov x21, x0
- ; gcrRegs -[x21]
- ; byrRegs +[x21]
+ mov x22, x0
+ ; gcrRegs -[x22]
+ ; byrRegs +[x22]
;; size=20 bbWeight=0.25 PerfScore 1.38
-G_M64832_IG10: ; bbWeight=3.96, gcrefRegs=5C00000 {x22 x23 x24 x26}, byrefRegs=300000 {x20 x21}, byref, isz
+G_M64832_IG10: ; bbWeight=3.96, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=600000 {x21 x22}, byref, isz
; byrRegs -[x0]
- ldr x0, [x21, w28, UXTW #3]
+ ldr x0, [x22, w28, UXTW #3]
; gcrRegs +[x0]
ldr wzr, [x0]
bl System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:get_TypeHandle():System.RuntimeTypeHandle:this
@@ -148,13 +148,13 @@ G_M64832_IG10: ; bbWeight=3.96, gcrefRegs=5C00000 {x22 x23 x24 x26}, byre
cmp w27, w28
bgt G_M64832_IG10
;; size=36 bbWeight=3.96 PerfScore 45.54
-G_M64832_IG11: ; bbWeight=0.50, gcrefRegs=5C00000 {x22 x23 x24 x26}, byrefRegs=100000 {x20}, byref
- ; byrRegs -[x21]
+G_M64832_IG11: ; bbWeight=1.98, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=200000 {x21}, byref
+ ; byrRegs -[x22]
b G_M64832_IG13
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M64832_IG12: ; bbWeight=0.04, gcrefRegs=5E00000 {x21 x22 x23 x24 x26}, byrefRegs=100000 {x20}, byref, isz
- ; gcrRegs +[x21]
- add x0, x21, #16
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M64832_IG12: ; bbWeight=0.04, gcrefRegs=6D00000 {x20 x22 x23 x25 x26}, byrefRegs=200000 {x21}, byref, isz
+ ; gcrRegs +[x22]
+ add x0, x22, #16
; byrRegs +[x0]
ldr x0, [x0, w28, UXTW #3]
; gcrRegs +[x0]
@@ -164,7 +164,7 @@ G_M64832_IG12: ; bbWeight=0.04, gcrefRegs=5E00000 {x21 x22 x23 x24 x26},
; gcrRegs -[x0]
ldr w2, [x26, #0x08]
cmp w28, w2
- bhs G_M64832_IG16
+ bhs G_M64832_IG17
ubfiz x2, x28, #3, #32
add x2, x2, #16
str x0, [x26, x2]
@@ -172,47 +172,49 @@ G_M64832_IG12: ; bbWeight=0.04, gcrefRegs=5E00000 {x21 x22 x23 x24 x26},
cmp w27, w28
bgt G_M64832_IG12
;; size=52 bbWeight=0.04 PerfScore 0.66
-G_M64832_IG13: ; bbWeight=0.50, gcrefRegs=5C00000 {x22 x23 x24 x26}, byrefRegs=100000 {x20}, byref, isz
- ; gcrRegs -[x21]
- mov x2, x24
+G_M64832_IG13: ; bbWeight=1.98, gcrefRegs=6900000 {x20 x23 x25 x26}, byrefRegs=200000 {x21}, byref, isz
+ ; gcrRegs -[x22]
+ mov x2, x23
; gcrRegs +[x2]
- mov w3, w25
- mov x0, x22
+ mov w3, w24
+ mov x0, x20
; gcrRegs +[x0]
mov x1, x19
mov x4, x26
; gcrRegs +[x4]
ldr wzr, [x0]
bl Internal.Reflection.Execution.ExecutionEnvironmentImplementation:TryGetMethodInvoker(System.RuntimeTypeHandle,System.Reflection.Runtime.General.QMethodDefinition,System.RuntimeTypeHandle[]):Internal.Reflection.Core.Execution.MethodBaseInvoker:this
- ; gcrRegs -[x2 x4 x22 x24 x26]
+ ; gcrRegs -[x2 x4 x20 x23 x26]
mov x19, x0
; gcrRegs +[x19]
- cbnz x19, G_M64832_IG14
- adrp x0, [HIGH RELOC #0xD1FFAB1E]
+ cbnz x19, G_M64832_IG15
+ ;; size=36 bbWeight=1.98 PerfScore 15.84
+G_M64832_IG14: ; bbWeight=0.50, gcrefRegs=2080000 {x19 x25}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x0]
+ adrp x0, [HIGH RELOC #0xD1FFAB1E]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
add x0, x0, #8
ldar x0, [x0]
; gcrRegs +[x0]
- mov x1, x23
+ mov x1, x25
; gcrRegs +[x1]
ldr wzr, [x0]
bl <unknown method>
- ; gcrRegs -[x1 x23]
+ ; gcrRegs -[x1 x25]
mov x15, x0
; gcrRegs +[x15]
- mov x14, x20
+ mov x14, x21
; byrRegs +[x14]
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
- ; byrRegs -[x14 x20]
- ;; size=80 bbWeight=0.50 PerfScore 11.00
-G_M64832_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x14 x21]
+ ;; size=44 bbWeight=0.50 PerfScore 7.00
+G_M64832_IG15: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov x0, x19
; gcrRegs +[x0]
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M64832_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M64832_IG16: ; bbWeight=0.50, epilog, nogc, extend
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
@@ -221,13 +223,13 @@ G_M64832_IG15: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
ret lr
;; size=28 bbWeight=0.50 PerfScore 3.50
-G_M64832_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M64832_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x19]
bl CORINFO_HELP_RNGCHKFAIL
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
...
+0 (0.00%) : 10309.dasm - System.Runtime.CompilerServices.ClassConstructorRunner:ToHexStringUnsignedLong(ulong,ubyte,int):System.String (FullOpts)
@@ -7,19 +7,19 @@
; fully interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 10, 16 ) long -> x19
-; V01 arg1 [V01,T04] ( 4, 6 ) ubyte -> x20 single-def
-; V02 arg2 [V02,T06] ( 5, 5 ) int -> x21 single-def
-; V03 loc0 [V03,T05] ( 7, 7.54) ref -> x0 class-hnd exact single-def <<unknown class>>
-; V04 loc1 [V04,T00] ( 17, 25.54) int -> x22
-; V05 loc2 [V05,T09] ( 2, 2 ) ref -> x0 class-hnd exact single-def <System.String>
+; V00 arg0 [V00,T04] ( 10, 16 ) long -> x19
+; V01 arg1 [V01,T09] ( 4, 6 ) ubyte -> x21 single-def
+; V02 arg2 [V02,T07] ( 5, 8.95) int -> x20 single-def
+; V03 loc0 [V03,T06] ( 7, 15.44) ref -> x0 class-hnd exact single-def <<unknown class>>
+; V04 loc1 [V04,T00] ( 17, 37.39) int -> x22
+; V05 loc2 [V05,T08] ( 2, 9.90) ref -> x0 class-hnd exact single-def <System.String>
;* V06 loc3 [V06 ] ( 0, 0 ) long -> zero-ref
-; V07 loc4 [V07 ] ( 3, 3 ) byref -> [fp+0x18] must-init pinned
+; V07 loc4 [V07 ] ( 3, 14.85) byref -> [fp+0x18] must-init pinned
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T03] ( 6, 16 ) int -> x2 "Strict ordering of exceptions for Array store"
+; V09 tmp1 [V09,T05] ( 6, 16 ) int -> x2 "Strict ordering of exceptions for Array store"
; V10 tmp2 [V10,T01] ( 8, 24 ) int -> x2 "Inlining Arg"
-; V11 tmp3 [V11,T07] ( 2, 4 ) long -> x0 "Cast away GC"
-; V12 tmp4 [V12,T08] ( 2, 4 ) long -> x0 "argument with side effect"
+; V11 tmp3 [V11,T02] ( 2, 19.80) long -> x0 "Cast away GC"
+; V12 tmp4 [V12,T03] ( 2, 19.80) long -> x0 "argument with side effect"
;
; Lcl frame size = 16
@@ -30,23 +30,23 @@ G_M51810_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov fp, sp
str xzr, [fp, #0x18] // [V07 loc4]
mov x19, x0
- mov w20, w1
- mov w21, w2
+ mov w21, w1
+ mov w20, w2
;; size=32 bbWeight=1 PerfScore 6.00
G_M51810_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sxtw x1, w21
+ sxtw x1, w20
adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class>
add x0, x0, [LOW RELOC #0xD1FFAB1E]
bl CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[x0]
; gcr arg pop 0
- sub w22, w21, #1
- tbnz w22, #31, G_M51810_IG17
+ sub w22, w20, #1
+ tbnz w22, #31, G_M51810_IG16
;; size=24 bbWeight=1 PerfScore 4.00
G_M51810_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
cmp w2, w22
- ble G_M51810_IG11
+ ble G_M51810_IG10
;; size=12 bbWeight=0.50 PerfScore 2.25
G_M51810_IG04: ; bbWeight=3.96, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov w2, w19
@@ -68,60 +68,58 @@ G_M51810_IG07: ; bbWeight=3.96, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b
; byrRegs +[x1]
strh w2, [x1, w22, UXTW #2]
lsr x19, x19, #4
- cbz w22, G_M51810_IG17
- tst w20, #255
+ cbz w22, G_M51810_IG16
+ tst w21, #255
bne G_M51810_IG09
;; size=24 bbWeight=3.96 PerfScore 19.80
G_M51810_IG08: ; bbWeight=1.98, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x1]
- cbz x19, G_M51810_IG17
+ cbz x19, G_M51810_IG16
;; size=4 bbWeight=1.98 PerfScore 1.98
G_M51810_IG09: ; bbWeight=3.96, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
sub w22, w22, #1
tbz w22, #31, G_M51810_IG04
- ;; size=8 bbWeight=3.96 PerfScore 5.94
-G_M51810_IG10: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
- b G_M51810_IG17
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M51810_IG11: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ b G_M51810_IG16
+ ;; size=12 bbWeight=3.96 PerfScore 9.90
+G_M51810_IG10: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
mov w2, w19
and w2, w2, #15
cmp w2, #10
- bhs G_M51810_IG13
+ bhs G_M51810_IG12
;; size=16 bbWeight=0.04 PerfScore 0.10
-G_M51810_IG12: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M51810_IG11: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add w2, w2, #48
uxth w2, w2
- b G_M51810_IG14
+ b G_M51810_IG13
;; size=12 bbWeight=0.02 PerfScore 0.04
-G_M51810_IG13: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
+G_M51810_IG12: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref
add w2, w2, #87
uxth w2, w2
;; size=8 bbWeight=0.02 PerfScore 0.02
-G_M51810_IG14: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M51810_IG13: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w1, [x0, #0x08]
cmp w22, w1
- bhs G_M51810_IG19
+ bhs G_M51810_IG18
add x1, x0, #16
; byrRegs +[x1]
strh w2, [x1, w22, UXTW #2]
lsr x19, x19, #4
- cbz w22, G_M51810_IG17
- tst w20, #255
- bne G_M51810_IG16
+ cbz w22, G_M51810_IG16
+ tst w21, #255
+ bne G_M51810_IG15
;; size=36 bbWeight=0.04 PerfScore 0.38
-G_M51810_IG15: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M51810_IG14: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x1]
- cbz x19, G_M51810_IG17
+ cbz x19, G_M51810_IG16
;; size=4 bbWeight=0.02 PerfScore 0.02
-G_M51810_IG16: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M51810_IG15: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
sub w22, w22, #1
- tbz w22, #31, G_M51810_IG11
+ tbz w22, #31, G_M51810_IG10
;; size=8 bbWeight=0.04 PerfScore 0.06
-G_M51810_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+G_M51810_IG16: ; bbWeight=4.95, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
ldr w2, [x0, #0x08]
cmp w22, w2
- bhs G_M51810_IG19
+ bhs G_M51810_IG18
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -129,28 +127,28 @@ G_M51810_IG17: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre
add x0, x0, x2
str x0, [fp, #0x18] // [V07 loc4]
ldr x0, [fp, #0x18] // [V07 loc4]
- sub w2, w21, w22
+ sub w2, w20, w22
mov w1, wzr
bl <unknown method>
; gcrRegs +[x0]
; byrRegs -[x0]
; gcr arg pop 0
str xzr, [fp, #0x18] // [V07 loc4]
- ;; size=48 bbWeight=1 PerfScore 12.50
-G_M51810_IG18: ; bbWeight=1, epilog, nogc, extend
+ ;; size=48 bbWeight=4.95 PerfScore 61.88
+G_M51810_IG17: ; bbWeight=4.95, epilog, nogc, extend
ldp x21, x22, [sp, #0x30]
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=16 bbWeight=1 PerfScore 4.00
-G_M51810_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=4.95 PerfScore 19.80
+G_M51810_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 300, prolog size 32, PerfScore 73.93, instruction count 75, allocated bytes for code 300 (MethodHash=4e8e359d) for method System.Runtime.CompilerServices.ClassConstructorRunner:ToHexStringUnsignedLong(ulong,ubyte,int):System.String (FullOpts)
+; Total bytes of code 300, prolog size 32, PerfScore 142.06, instruction count 75, allocated bytes for code 300 (MethodHash=4e8e359d) for method System.Runtime.CompilerServices.ClassConstructorRunner:ToHexStringUnsignedLong(ulong,ubyte,int):System.String (FullOpts)
; ============================================================
Cfi Info:
+0 (0.00%) : 8176.dasm - System.Threading.WaitSubsystem+WaitableObject:Wait(System.Threading.WaitSubsystem+WaitableObject[],int,ubyte,System.Threading.WaitSubsystem+ThreadWaitInfo,int,ubyte,ubyte):int (FullOpts)
@@ -8,29 +8,29 @@
; Final local variable assignments
;
; V00 arg0 [V00,T11] ( 27, 11.54) ref -> [fp+0x18] do-not-enreg[Z] class-hnd EH-live <System.Threading.WaitSubsystem+WaitableObject[]>
-; V01 arg1 [V01,T01] ( 25, 23.51) int -> [fp+0x2C] EH-live single-def
-; V02 arg2 [V02,T16] ( 4, 3.50) ubyte -> x22 single-def
+; V01 arg1 [V01,T01] ( 25, 24.99) int -> [fp+0x2C] EH-live single-def
+; V02 arg2 [V02,T17] ( 4, 3.50) ubyte -> x22 single-def
; V03 arg3 [V03,T09] ( 16, 14 ) ref -> x20 class-hnd exact single-def <System.Threading.WaitSubsystem+ThreadWaitInfo>
-; V04 arg4 [V04,T15] ( 5, 4 ) int -> x21 single-def
-; V05 arg5 [V05,T17] ( 4, 3.50) ubyte -> x23 single-def
+; V04 arg4 [V04,T13] ( 5, 5.48) int -> x21 single-def
+; V05 arg5 [V05,T18] ( 4, 3.50) ubyte -> x23 single-def
; V06 arg6 [V06,T20] ( 3, 2.50) ubyte -> x24 single-def
; V07 loc0 [V07 ] ( 8, 2.50) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Threading.WaitSubsystem+LockHolder>
; V08 loc1 [V08,T03] ( 13, 18.04) int -> x25
; V09 loc2 [V09,T02] ( 12, 19 ) ref -> x27 class-hnd exact <System.Threading.WaitSubsystem+WaitableObject>
; V10 loc3 [V10,T31] ( 2, 1 ) ubyte -> x28
-; V11 loc4 [V11,T26] ( 6, 3.50) int -> x25
-; V12 loc5 [V12,T18] ( 6, 5 ) ref -> x28 class-hnd exact <<unknown class>>
+; V11 loc4 [V11,T21] ( 6, 4.48) int -> x25
+; V12 loc5 [V12,T19] ( 6, 5 ) ref -> x28 class-hnd exact <<unknown class>>
;* V13 loc6 [V13,T32] ( 0, 0 ) ubyte -> zero-ref
-; V14 loc7 [V14,T19] ( 6, 5 ) ubyte -> x27
-; V15 loc8 [V15,T07] ( 10, 16.54) int -> x25
-; V16 loc9 [V16,T04] ( 12, 18 ) ref -> x28 class-hnd exact <System.Threading.WaitSubsystem+WaitableObject>
-; V17 loc10 [V17,T13] ( 6, 6 ) ref -> x28 class-hnd exact <<unknown class>>
-; V18 loc11 [V18,T08] ( 10, 16.54) int -> x21
-; V19 loc12 [V19,T10] ( 10, 14 ) ref -> x24 class-hnd exact <System.Threading.WaitSubsystem+WaitableObject>
-; V20 loc13 [V20,T14] ( 6, 6 ) ref -> x22 class-hnd exact <<unknown class>>
-; V21 loc14 [V21,T05] ( 20, 16.58) int -> x4
+; V14 loc7 [V14,T14] ( 6, 6.48) ubyte -> x27
+; V15 loc8 [V15,T08] ( 10, 16.54) int -> x25
+; V16 loc9 [V16,T05] ( 12, 18 ) ref -> x28 class-hnd exact <System.Threading.WaitSubsystem+WaitableObject>
+; V17 loc10 [V17,T15] ( 6, 6 ) ref -> x28 class-hnd exact <<unknown class>>
+; V18 loc11 [V18,T04] ( 10, 18.02) int -> x25
+; V19 loc12 [V19,T10] ( 10, 14 ) ref -> x21 class-hnd exact <System.Threading.WaitSubsystem+WaitableObject>
+; V20 loc13 [V20,T16] ( 6, 6 ) ref -> x22 class-hnd exact <<unknown class>>
+; V21 loc14 [V21,T06] ( 20, 16.58) int -> x4
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V23 tmp1 [V23,T22] ( 2, 4 ) ref -> x26 class-hnd exact single-def "impAppendStmt" <System.Threading.Thread>
+; V23 tmp1 [V23,T23] ( 2, 4 ) ref -> x26 class-hnd exact single-def "impAppendStmt" <System.Threading.Thread>
;* V24 tmp2 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Threading.Thread>
; V25 tmp3 [V25,T33] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <<unknown class>>
;* V26 tmp4 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.Threading.Thread>
@@ -39,13 +39,13 @@
; V29 tmp7 [V29,T35] ( 3, 0 ) ref -> x20 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V30 tmp8 [V30,T36] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V31 tmp9 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Threading.LowLevelLock>
-; V32 tmp10 [V32,T23] ( 2, 4 ) ref -> x26 class-hnd exact single-def "impAppendStmt" <System.Threading.Thread>
-; V33 tmp11 [V33,T24] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Threading.Thread>
+; V32 tmp10 [V32,T24] ( 2, 4 ) ref -> x26 class-hnd exact single-def "impAppendStmt" <System.Threading.Thread>
+; V33 tmp11 [V33,T25] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Threading.Thread>
; V34 tmp12 [V34,T27] ( 4, 3.50) ref -> x0
;* V35 tmp13 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp14 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp15 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V38 tmp16 [V38,T25] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Threading.Thread>
+; V38 tmp16 [V38,T26] ( 2, 4 ) ref -> x0 class-hnd exact single-def "dup spill" <System.Threading.Thread>
; V39 tmp17 [V39,T28] ( 4, 3.50) ref -> x0
;* V40 tmp18 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp19 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -64,8 +64,8 @@
;* V54 tmp32 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V55 tmp33 [V55 ] ( 8, 2.50) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V07._lock (fldOffset=0x0)" P-DEP
; V56 cse0 [V56,T29] ( 3, 3 ) byref -> x27 "CSE - moderate"
-; V57 cse1 [V57,T06] ( 12, 16.58) byref -> x26 hoist multi-def "CSE - aggressive"
-; V58 cse2 [V58,T21] ( 4, 4.29) byref -> x0 hoist multi-def "CSE - moderate"
+; V57 cse1 [V57,T07] ( 12, 16.58) byref -> x26 hoist multi-def "CSE - aggressive"
+; V58 cse2 [V58,T22] ( 4, 4.29) byref -> x0 hoist multi-def "CSE - moderate"
; V59 cse3 [V59,T30] ( 3, 3 ) long -> x25 "CSE - moderate"
; V60 cse4 [V60,T00] ( 45, 34.50) ref -> x1 multi-def "CSE - aggressive"
;
@@ -266,11 +266,11 @@ G_M45755_IG24: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
bl System.Threading.WaitSubsystem+ThreadWaitInfo:get_CheckAndResetPendingInterrupt():ubyte:this
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M45755_IG73
+ cbnz w0, G_M45755_IG75
;; size=12 bbWeight=0.50 PerfScore 1.25
G_M45755_IG25: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
tst w22, #255
- bne G_M45755_IG41
+ bne G_M45755_IG42
;; size=8 bbWeight=1 PerfScore 1.50
G_M45755_IG26: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
mov w25, wzr
@@ -283,7 +283,7 @@ G_M45755_IG27: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w19
- blt G_M45755_IG34
+ blt G_M45755_IG35
ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0]
add x26, x0, #16
@@ -312,7 +312,7 @@ G_M45755_IG30: ; bbWeight=3.96, gcrefRegs=8100000 {x20 x27}, byrefRegs=40
bl System.Threading.WaitSubsystem+WaitableObject:get_IsSignaled():ubyte:this
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M45755_IG39
+ cbnz w0, G_M45755_IG40
mov x0, x27
; gcrRegs +[x0]
bl System.Threading.WaitSubsystem+WaitableObject:get_IsMutex():ubyte:this
@@ -332,7 +332,7 @@ G_M45755_IG31: ; bbWeight=1.98, gcrefRegs=8100000 {x20 x27}, byrefRegs=40
ldr x1, [x20, #0x08]
; gcrRegs +[x1]
cmp x0, x1
- beq G_M45755_IG40
+ beq G_M45755_IG41
;; size=28 bbWeight=1.98 PerfScore 23.76
G_M45755_IG32: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=4000000 {x26}, byref, isz
; gcrRegs -[x0-x1 x28]
@@ -340,28 +340,32 @@ G_M45755_IG32: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=4000000
cmp w25, w19
blt G_M45755_IG28
;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M45755_IG33: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M45755_IG33: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x26]
- cbnz w21, G_M45755_IG76
+ cbnz w21, G_M45755_IG78
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M45755_IG34: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x20]
mov w25, #0xD1FFAB1E
- b G_M45755_IG77
- ;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M45755_IG34: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ b G_M45755_IG79
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M45755_IG35: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x20]
ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w25, w0
- bhs G_M45755_IG72
+ bhs G_M45755_IG74
ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0]
add x26, x0, #16
; byrRegs +[x26]
ldr x27, [x26, w25, UXTW #3]
; gcrRegs +[x27]
- cbnz x27, G_M45755_IG36
+ cbnz x27, G_M45755_IG37
;; size=32 bbWeight=0.04 PerfScore 0.52
-G_M45755_IG35: ; bbWeight=0.02, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref
+G_M45755_IG36: ; bbWeight=0.02, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
; byrRegs -[x26]
adrp x1, [HIGH RELOC #0xD1FFAB1E]
@@ -373,22 +377,22 @@ G_M45755_IG35: ; bbWeight=0.02, gcrefRegs=8100000 {x20 x27}, byrefRegs=00
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=16 bbWeight=0.02 PerfScore 0.05
-G_M45755_IG36: ; bbWeight=0.04, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref, isz
+G_M45755_IG37: ; bbWeight=0.04, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref, isz
mov x0, x27
; gcrRegs +[x0]
ldr wzr, [x0]
bl System.Threading.WaitSubsystem+WaitableObject:get_IsSignaled():ubyte:this
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M45755_IG39
+ cbnz w0, G_M45755_IG40
mov x0, x27
; gcrRegs +[x0]
bl System.Threading.WaitSubsystem+WaitableObject:get_IsMutex():ubyte:this
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M45755_IG38
+ cbz w0, G_M45755_IG39
;; size=28 bbWeight=0.04 PerfScore 0.32
-G_M45755_IG37: ; bbWeight=0.02, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref, isz
+G_M45755_IG38: ; bbWeight=0.02, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref, isz
ldr x28, [x27, #0x10]
; gcrRegs +[x28]
mov x0, x28
@@ -400,16 +404,16 @@ G_M45755_IG37: ; bbWeight=0.02, gcrefRegs=8100000 {x20 x27}, byrefRegs=00
ldr x1, [x20, #0x08]
; gcrRegs +[x1]
cmp x0, x1
- beq G_M45755_IG40
+ beq G_M45755_IG41
;; size=28 bbWeight=0.02 PerfScore 0.24
-G_M45755_IG38: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M45755_IG39: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1 x28]
add w25, w25, #1
cmp w25, w19
- blt G_M45755_IG34
+ blt G_M45755_IG35
b G_M45755_IG33
;; size=16 bbWeight=0.04 PerfScore 0.12
-G_M45755_IG39: ; bbWeight=0.50, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref
+G_M45755_IG40: ; bbWeight=0.50, gcrefRegs=8100000 {x20 x27}, byrefRegs=0000 {}, byref
; gcrRegs +[x27]
mov x0, x27
; gcrRegs +[x0]
@@ -427,48 +431,48 @@ G_M45755_IG39: ; bbWeight=0.50, gcrefRegs=8100000 {x20 x27}, byrefRegs=00
add w0, w25, #128
cmp w28, #0
csel w25, w25, w0, eq
- b G_M45755_IG77
+ b G_M45755_IG79
;; size=40 bbWeight=0.50 PerfScore 3.25
-G_M45755_IG40: ; bbWeight=0.50, gcrefRegs=10000000 {x28}, byrefRegs=0000 {}, byref, isz
+G_M45755_IG41: ; bbWeight=0.50, gcrefRegs=10000000 {x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x28]
mov x0, x28
; gcrRegs +[x0]
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
- cbz w0, G_M45755_IG74
+ cbz w0, G_M45755_IG76
mov x0, x28
; gcrRegs +[x0]
bl <unknown method>
; gcrRegs -[x0 x28]
; gcr arg pop 0
- b G_M45755_IG77
+ b G_M45755_IG79
;; size=24 bbWeight=0.50 PerfScore 2.50
-G_M45755_IG41: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M45755_IG42: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
mov w27, wzr
mov w25, wzr
cmp w19, #0
- ble G_M45755_IG56
+ ble G_M45755_IG57
;; size=16 bbWeight=0.50 PerfScore 1.25
-G_M45755_IG42: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M45755_IG43: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x18] // [V00 arg0]
; gcrRegs +[x0]
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w19
- blt G_M45755_IG50
+ blt G_M45755_IG51
;; size=16 bbWeight=0.25 PerfScore 1.62
-G_M45755_IG43: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M45755_IG44: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [fp, #0x18] // [V00 arg0]
...
+0 (0.00%) : 12972.dasm - System.Linq.Expressions.Expression:ValidateLambdaArgs(System.Type,byref,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.String) (FullOpts)
@@ -12,7 +12,7 @@
; V02 arg2 [V02,T07] ( 5, 6.96) ref -> x20 class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression]>
; V03 arg3 [V03,T13] ( 3, 2 ) ref -> x22 class-hnd exact single-def <System.String>
; V04 loc0 [V04,T17] ( 3, 2.50) ref -> x22 class-hnd exact single-def <<unknown class>>
-; V05 loc1 [V05 ] ( 12, 7 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.MethodInfo>
+; V05 loc1 [V05 ] ( 12, 8.96) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Reflection.MethodInfo>
; V06 loc2 [V06,T14] ( 6, 3.50) ref -> x19 class-hnd single-def <System.Reflection.ParameterInfo[]>
; V07 loc3 [V07,T11] ( 2, 4.46) ref -> x22 class-hnd exact single-def <<unknown class>>
; V08 loc4 [V08,T00] ( 8, 24.26) int -> x23
@@ -256,7 +256,7 @@ G_M3606_IG10: ; bbWeight=3.96, gcrefRegs=6500000 {x20 x22 x25 x26}, byref
cmp w23, w24
blt G_M3606_IG08
;; size=56 bbWeight=3.96 PerfScore 49.50
-G_M3606_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
+G_M3606_IG11: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x20 x22 x25]
; byrRegs -[x19]
ldr x0, [fp, #0x18] // [V05 loc1]
@@ -267,14 +267,14 @@ G_M3606_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, by
; gcrRegs -[x1]
ldr x1, [x1, #0xD0]
blr x1
- adrp x11, [HIGH RELOC #0xD1FFAB1E]
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ; gcrRegs +[x11]
- cmp x0, x11
+ adrp x1, [HIGH RELOC #0xD1FFAB1E]
+ add x1, x1, [LOW RELOC #0xD1FFAB1E]
+ ; gcrRegs +[x1]
+ cmp x0, x1
beq G_M3606_IG13
- ;; size=36 bbWeight=1 PerfScore 12.00
+ ;; size=36 bbWeight=1.98 PerfScore 23.76
G_M3606_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs -[x0 x11]
+ ; gcrRegs -[x0-x1]
ldr x0, [fp, #0x18] // [V05 loc1]
; gcrRegs +[x0]
mov x1, x0
@@ -446,7 +446,7 @@ G_M3606_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, by
brk_unix #0
;; size=60 bbWeight=0 PerfScore 0.00
-; Total bytes of code 920, prolog size 32, PerfScore 314.09, instruction count 230, allocated bytes for code 920 (MethodHash=af09f1e9) for method System.Linq.Expressions.Expression:ValidateLambdaArgs(System.Type,byref,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.String) (FullOpts)
+; Total bytes of code 920, prolog size 32, PerfScore 325.85, instruction count 230, allocated bytes for code 920 (MethodHash=af09f1e9) for method System.Linq.Expressions.Expression:ValidateLambdaArgs(System.Type,byref,System.Collections.ObjectModel.ReadOnlyCollection`1[System.Linq.Expressions.ParameterExpression],System.String) (FullOpts)
; ============================================================
Cfi Info:
+0 (0.00%) : 15348.dasm - System.Uri:CheckAuthorityHelper(ulong,int,int,byref,byref,System.UriParser,byref):int:this (FullOpts)
@@ -12,14 +12,14 @@
; V02 arg2 [V02,T02] ( 20, 55 ) int -> [fp+0x3C] do-not-enreg[Z] EH-live
; V03 arg3 [V03,T05] ( 11, 32 ) int -> x21 single-def
; V04 arg4 [V04,T16] ( 10, 8 ) byref -> [fp+0x18] EH-live single-def
-; V05 arg5 [V05,T04] ( 43, 43 ) byref -> x20 single-def
+; V05 arg5 [V05,T04] ( 43, 45 ) byref -> x20 single-def
; V06 arg6 [V06,T13] ( 13, 13 ) ref -> x23 class-hnd exact single-def <<unknown class>>
; V07 arg7 [V07,T11] ( 20, 20 ) byref -> x22 single-def
; V08 loc0 [V08 ] ( 38,118 ) int -> [fp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V09 loc1 [V09,T17] ( 8, 8 ) ushort -> x28
; V10 loc2 [V10,T32] ( 5, 5 ) int -> x24
; V11 loc3 [V11,T00] ( 29, 64 ) int -> x25
-; V12 loc4 [V12,T14] ( 11, 11 ) ubyte -> x26
+; V12 loc4 [V12,T14] ( 11, 13 ) ubyte -> x26
; V13 loc5 [V13,T35] ( 4, 4 ) int -> x27
; V14 loc6 [V14 ] ( 5, 5 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc7 [V15,T10] ( 5, 26 ) int -> x4
@@ -306,7 +306,7 @@ G_M46231_IG05: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=100000 {x2
mov x2, #0xD1FFAB1E
orr x2, x6, x2
str x2, [x20]
- b G_M46231_IG53
+ b G_M46231_IG55
;; size=48 bbWeight=1 PerfScore 18.50
G_M46231_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x23]
@@ -315,7 +315,7 @@ G_M46231_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x6, [fp, #0x18] // [V04 arg4]
; byrRegs +[x6]
str w2, [x6]
- b G_M46231_IG53
+ b G_M46231_IG55
;; size=16 bbWeight=1 PerfScore 4.50
G_M46231_IG07: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x20 x22}, byref, isz
; gcrRegs +[x23]
@@ -391,7 +391,7 @@ G_M46231_IG11: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x2
ldr x6, [fp, #0x18] // [V04 arg4]
; byrRegs +[x6]
str w1, [x6]
- b G_M46231_IG53
+ b G_M46231_IG55
;; size=100 bbWeight=1 PerfScore 28.00
G_M46231_IG12: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x20 x22}, byref
; byrRegs -[x6]
@@ -439,7 +439,7 @@ G_M46231_IG14: ; bbWeight=1, gcrefRegs=800001 {x0 x23}, byrefRegs=500000
G_M46231_IG15: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500001 {x0 x20 x22}, byref, isz
ldr w2, [fp, #0x30] // [V08 loc0]
sub w3, w2, w25
- tbnz w3, #31, G_M46231_IG55
+ tbnz w3, #31, G_M46231_IG57
sbfiz x2, x25, #1, #32
add x27, x19, x2
mov x2, x27
@@ -519,7 +519,7 @@ G_M46231_IG20: ; bbWeight=1, gcrefRegs=800001 {x0 x23}, byrefRegs=500000
G_M46231_IG21: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500001 {x0 x20 x22}, byref, isz
ldr w2, [fp, #0x30] // [V08 loc0]
sub w3, w2, w25
- tbnz w3, #31, G_M46231_IG55
+ tbnz w3, #31, G_M46231_IG57
sbfiz x2, x25, #1, #32
add x27, x19, x2
mov x2, x27
@@ -544,7 +544,7 @@ G_M46231_IG22: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x2
tbnz w3, #28, G_M46231_IG23
ldr w3, [fp, #0x30] // [V08 loc0]
sub w1, w3, w25
- tbnz w1, #31, G_M46231_IG55
+ tbnz w1, #31, G_M46231_IG57
sbfiz x3, x25, #1, #32
add x3, x19, x3
mov x28, x3
@@ -566,7 +566,7 @@ G_M46231_IG22: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x2
orr x0, x0, #0xD1FFAB1E
str x0, [x20]
ldr w3, [fp, #0x28] // [V14 loc6]
- tbnz w3, #31, G_M46231_IG55
+ tbnz w3, #31, G_M46231_IG57
mov x0, x28
; byrRegs +[x0]
mov w1, #65
@@ -592,7 +592,7 @@ G_M46231_IG23: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x2
G_M46231_IG24: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x20 x22}, byref, isz
ldr w3, [fp, #0x30] // [V08 loc0]
sub w1, w3, w25
- tbnz w1, #31, G_M46231_IG55
+ tbnz w1, #31, G_M46231_IG57
sbfiz x3, x25, #1, #32
add x28, x19, x3
mov x0, x28
@@ -668,7 +668,7 @@ G_M46231_IG26: ; bbWeight=1, gcrefRegs=800001 {x0 x23}, byrefRegs=500000
G_M46231_IG27: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500001 {x0 x20 x22}, byref, isz
ldr w2, [fp, #0x30] // [V08 loc0]
sub w3, w2, w25
- tbnz w3, #31, G_M46231_IG55
+ tbnz w3, #31, G_M46231_IG57
sbfiz x2, x25, #1, #32
add x28, x19, x2
mov x2, x28
@@ -707,7 +707,7 @@ G_M46231_IG28: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x2
orr x6, x1, #0xD1FFAB1E
; byrRegs -[x6]
str x6, [x20]
- b G_M46231_IG52
+ b G_M46231_IG54
;; size=80 bbWeight=1 PerfScore 28.50
G_M46231_IG29: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x20 x22}, byref, isz
cmp w0, #58
@@ -764,7 +764,7 @@ G_M46231_IG33: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
ldr x6, [fp, #0x18] // [V04 arg4]
; byrRegs +[x6]
str w4, [x6]
- b G_M46231_IG53
+ b G_M46231_IG55
;; size=16 bbWeight=1 PerfScore 4.50
G_M46231_IG34: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x20 x22}, byref, isz
; gcrRegs +[x23]
@@ -805,7 +805,7 @@ G_M46231_IG36: ; bbWeight=1, gcrefRegs=800001 {x0 x23}, byrefRegs=500000
G_M46231_IG37: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500001 {x0 x20 x22}, byref, isz
ldr w2, [fp, #0x3C] // [V02 arg2]
sub w3, w2, w5
- tbnz w3, #31, G_M46231_IG55
+ tbnz w3, #31, G_M46231_IG57
add x2, x19, x28, LSL #1
bl System.String:Concat(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):System.String
; gcrRegs +[x0]
@@ -828,12 +828,12 @@ G_M46231_IG38: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x2
G_M46231_IG39: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=500000 {x20 x22}, byref, isz
ldr w2, [x20]
tst w2, #0xD1FFAB1E
- bne G_M46231_IG52
+ bne G_M46231_IG54
ldr x2, [x20]
and x2, x2, #0xD1FFAB1E
str x2, [x20]
ldr w25, [x23, #0x10]
- tbz w25, #12, G_M46231_IG43
+ tbz w25, #12, G_M46231_IG44
ldr x2, [x20]
mov x0, #0xD1FFAB1E
orr x2, x2, x0
@@ -862,8 +862,10 @@ G_M46231_IG40: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, b
cmp w2, w21
blt G_M46231_IG40
;; size=56 bbWeight=8 PerfScore 128.00
-G_M46231_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
- cbz w26, G_M46231_IG52
+G_M46231_IG41: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
+ cbz w26, G_M46231_IG54
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M46231_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
ldr w2, [fp, #0x30] // [V08 loc0]
sub w2, w2, w24
mov x0, x19
@@ -871,8 +873,8 @@ G_M46231_IG41: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, b
bl <unknown method>
; gcrRegs +[x0]
; gcr arg pop 0
- ;; size=24 bbWeight=1 PerfScore 5.50
-G_M46231_IG42: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
+ ;; size=20 bbWeight=1 PerfScore 4.50
+G_M46231_IG43: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22}, byref
ldr x25, [x22]
; gcrRegs +[x25]
mov w1, #1
@@ -892,68 +894,70 @@ G_M46231_IG42: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=400000 {x22},
bl CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14 x22]
- b G_M46231_IG52
+ b G_M46231_IG54
;; size=44 bbWeight=1 PerfScore 12.50
-G_M46231_IG43: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref, isz
+G_M46231_IG44: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref, isz
; byrRegs +[x20 x22]
- tbz w25, #16, G_M46231_IG51
+ tbz w25, #16, G_M46231_IG53
ldr w1, [fp, #0x3C] // [V02 arg2]
mov w2, w1
str w2, [fp, #0x30] // [V08 loc0]
ldr w2, [fp, #0x30] // [V08 loc0]
cmp w2, w21
- bge G_M46231_IG48
+ bge G_M46231_IG49
;; size=28 bbWeight=1 PerfScore 8.00
-G_M46231_IG44: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref
- b G_M46231_IG47
+G_M46231_IG45: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref
+ b G_M46231_IG48
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M46231_IG45: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref, isz
- cbz w2, G_M46231_IG47
+G_M46231_IG46: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref, isz
+ cbz w2, G_M46231_IG48
;; size=4 bbWeight=8 PerfScore 8.00
-G_M46231_IG46: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref, isz
+G_M46231_IG47: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref, isz
ldr w2, [fp, #0x30] // [V08 loc0]
ldrh w2, [x19, w2, SXTW #2]
cmp w2, #47
- beq G_M46231_IG48
+ beq G_M46231_IG49
mov w0, #35
cmp w2, #63
ccmp w2, w0, z, ne
- beq G_M46231_IG48
+ beq G_M46231_IG49
;; size=32 bbWeight=4 PerfScore 36.00
-G_M46231_IG47: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref, isz
+G_M46231_IG48: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref, isz
ldr w2, [fp, #0x30] // [V08 loc0]
ldr w0, [fp, #0x3C] // [V02 arg2]
add w0, w0, #2
cmp w2, w0
- bge G_M46231_IG49
+ bge G_M46231_IG51
ldr w2, [fp, #0x30] // [V08 loc0]
ldrh w2, [x19, w2, SXTW #2]
cmp w2, #46
- bne G_M46231_IG49
+ bne G_M46231_IG51
mov w2, #1
ldr w0, [fp, #0x30] // [V08 loc0]
add w0, w0, #1
str w0, [fp, #0x30] // [V08 loc0]
ldr w0, [fp, #0x30] // [V08 loc0]
cmp w0, w21
- blt G_M46231_IG45
+ blt G_M46231_IG46
;; size=64 bbWeight=8 PerfScore 160.00
-G_M46231_IG48: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref, isz
+G_M46231_IG49: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=500000 {x20 x22}, byref, isz
ldr x2, [x20]
mov x0, #0xD1FFAB1E
orr x2, x2, x0
str x2, [x20]
- cbz w26, G_M46231_IG52
+ cbz w26, G_M46231_IG54
+ ;; size=20 bbWeight=2 PerfScore 12.00
+G_M46231_IG50: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+ ; byrRegs -[x20]
ldr w2, [fp, #0x30] // [V08 loc0]
sub w2, w2, w1
mov x0, x19
bl <unknown method>
; gcrRegs +[x0]
- ; byrRegs -[x20]
; gcr arg pop 0
- b G_M46231_IG50
- ;; size=40 bbWeight=1 PerfScore 11.00
-G_M46231_IG49: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.arm64.checked.mch |
72 |
4 |
11 |
57 |
-28 |
+80 |
benchmarks.run_pgo.linux.arm64.checked.mch |
1,943 |
690 |
252 |
1,001 |
-9,532 |
+1,572 |
benchmarks.run_tiered.linux.arm64.checked.mch |
25 |
2 |
5 |
18 |
-20 |
+24 |
coreclr_tests.run.linux.arm64.checked.mch |
4,031 |
152 |
181 |
3,698 |
-1,416 |
+1,288 |
libraries.crossgen2.linux.arm64.checked.mch |
253 |
8 |
19 |
226 |
-88 |
+256 |
libraries.pmi.linux.arm64.checked.mch |
367 |
36 |
47 |
284 |
-348 |
+484 |
libraries_tests.run.linux.arm64.Release.mch |
680 |
232 |
94 |
354 |
-1,196 |
+1,000 |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
510 |
94 |
115 |
301 |
-828 |
+1,128 |
realworld.run.linux.arm64.checked.mch |
93 |
8 |
6 |
79 |
-124 |
+84 |
smoke_tests.nativeaot.linux.arm64.checked.mch |
20 |
0 |
0 |
20 |
-0 |
+0 |
|
7,994 |
1,226 |
730 |
6,038 |
-13,580 |
+5,916 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.arm64.checked.mch |
28,842 |
1,210 |
27,632 |
50 (0.17%) |
50 (0.17%) |
benchmarks.run_pgo.linux.arm64.checked.mch |
125,945 |
51,761 |
74,184 |
54 (0.04%) |
54 (0.04%) |
benchmarks.run_tiered.linux.arm64.checked.mch |
57,979 |
43,144 |
14,835 |
47 (0.08%) |
47 (0.08%) |
coreclr_tests.run.linux.arm64.checked.mch |
393,725 |
185,167 |
208,558 |
148 (0.04%) |
148 (0.04%) |
libraries.crossgen2.linux.arm64.checked.mch |
264,355 |
15 |
264,340 |
553 (0.21%) |
553 (0.21%) |
libraries.pmi.linux.arm64.checked.mch |
295,798 |
6 |
295,792 |
74 (0.03%) |
74 (0.03%) |
libraries_tests.run.linux.arm64.Release.mch |
88,388 |
65,551 |
22,837 |
9 (0.01%) |
9 (0.01%) |
librariestestsnotieredcompilation.run.linux.arm64.Release.mch |
302,974 |
21,620 |
281,354 |
2,287 (0.75%) |
2,287 (0.75%) |
realworld.run.linux.arm64.checked.mch |
33,408 |
163 |
33,245 |
10 (0.03%) |
10 (0.03%) |
smoke_tests.nativeaot.linux.arm64.checked.mch |
18,858 |
7 |
18,851 |
196 (1.03%) |
196 (1.03%) |
|
1,610,272 |
368,644 |
1,241,628 |
3,428 (0.21%) |
3,428 (0.21%) |
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: 13063296 (overridden on cmd)
Total bytes of diff: 13063348 (overridden on cmd)
Total bytes of delta: 52 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
16 : 7101.dasm (0.80 % of base)
12 : 3818.dasm (1.84 % of base)
8 : 15003.dasm (0.39 % of base)
8 : 5591.dasm (0.17 % of base)
8 : 13341.dasm (1.12 % of base)
8 : 1944.dasm (0.29 % of base)
4 : 21114.dasm (0.09 % of base)
4 : 12313.dasm (0.17 % of base)
4 : 12880.dasm (0.17 % of base)
4 : 21133.dasm (0.09 % of base)
4 : 8874.dasm (0.28 % of base)
Top file improvements (bytes):
-12 : 5190.dasm (-1.23 % of base)
-8 : 18557.dasm (-0.14 % of base)
-4 : 18249.dasm (-0.12 % of base)
-4 : 26624.dasm (-0.76 % of base)
15 total files with Code Size differences (4 improved, 11 regressed), 37 unchanged.
Top method regressions (bytes):
16 (0.80 % of base) : 7101.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):this (FullOpts)
12 (1.84 % of base) : 3818.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
8 (0.29 % of base) : 1944.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
8 (0.39 % of base) : 15003.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
8 (1.12 % of base) : 13341.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
8 (0.17 % of base) : 5591.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
4 (0.28 % of base) : 8874.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (FullOpts)
4 (0.17 % of base) : 12313.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
4 (0.09 % of base) : 21114.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 21133.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.17 % of base) : 12880.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
Top method improvements (bytes):
-12 (-1.23 % of base) : 5190.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-8 (-0.14 % of base) : 18557.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.12 % of base) : 18249.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-4 (-0.76 % of base) : 26624.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
Top method regressions (percentages):
12 (1.84 % of base) : 3818.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
8 (1.12 % of base) : 13341.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
16 (0.80 % of base) : 7101.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):this (FullOpts)
8 (0.39 % of base) : 15003.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
8 (0.29 % of base) : 1944.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
4 (0.28 % of base) : 8874.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (FullOpts)
8 (0.17 % of base) : 5591.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
4 (0.17 % of base) : 12313.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
4 (0.17 % of base) : 12880.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
4 (0.09 % of base) : 21114.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 21133.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-12 (-1.23 % of base) : 5190.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-4 (-0.76 % of base) : 26624.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
-8 (-0.14 % of base) : 18557.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.12 % of base) : 18249.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):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: 65248964 (overridden on cmd)
Total bytes of diff: 65241004 (overridden on cmd)
Total bytes of delta: -7960 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
44 : 123887.dasm (0.99 % of base)
44 : 35194.dasm (0.99 % of base)
44 : 95096.dasm (1.01 % of base)
36 : 93049.dasm (5.00 % of base)
28 : 45439.dasm (0.66 % of base)
28 : 97732.dasm (0.65 % of base)
24 : 84700.dasm (0.78 % of base)
24 : 97114.dasm (0.52 % of base)
20 : 42874.dasm (0.43 % of base)
16 : 111936.dasm (1.39 % of base)
16 : 113696.dasm (0.32 % of base)
16 : 123145.dasm (1.39 % of base)
16 : 68334.dasm (2.04 % of base)
16 : 92770.dasm (1.59 % of base)
16 : 98122.dasm (0.68 % of base)
16 : 80121.dasm (1.59 % of base)
16 : 120903.dasm (0.32 % of base)
16 : 50164.dasm (0.79 % of base)
12 : 105239.dasm (2.44 % of base)
12 : 53095.dasm (2.44 % of base)
Top file improvements (bytes):
-52 : 42922.dasm (-1.21 % of base)
-40 : 90002.dasm (-14.49 % of base)
-32 : 105211.dasm (-2.17 % of base)
-32 : 53058.dasm (-2.15 % of base)
-32 : 123653.dasm (-2.15 % of base)
-32 : 87968.dasm (-2.15 % of base)
-32 : 116248.dasm (-2.17 % of base)
-32 : 22081.dasm (-2.17 % of base)
-32 : 79556.dasm (-2.17 % of base)
-28 : 92029.dasm (-0.82 % of base)
-24 : 22181.dasm (-3.02 % of base)
-24 : 47977.dasm (-1.96 % of base)
-24 : 53105.dasm (-3.02 % of base)
-24 : 18901.dasm (-3.02 % of base)
-24 : 20729.dasm (-1.96 % of base)
-24 : 25141.dasm (-3.02 % of base)
-24 : 51241.dasm (-3.02 % of base)
-24 : 51881.dasm (-3.02 % of base)
-24 : 53873.dasm (-3.02 % of base)
-24 : 4941.dasm (-1.96 % of base)
84 total files with Code Size differences (47 improved, 37 regressed), 20 unchanged.
Top method regressions (bytes):
44 (0.99 % of base) : 123887.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
44 (0.99 % of base) : 35194.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
44 (1.01 % of base) : 95096.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
36 (5.00 % of base) : 93049.dasm - Benchstone.BenchF.Regula:Test():ubyte:this (Tier1-OSR)
28 (0.66 % of base) : 45439.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
28 (0.65 % of base) : 97732.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
24 (0.52 % of base) : 97114.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
24 (0.78 % of base) : 84700.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (0.43 % of base) : 42874.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
16 (0.68 % of base) : 98122.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
16 (0.32 % of base) : 120903.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[System.__Canon]:MoveNext():this (Tier1-OSR)
16 (0.32 % of base) : 113696.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
16 (0.79 % of base) : 50164.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
16 (1.39 % of base) : 111936.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int) (Tier1)
16 (1.39 % of base) : 123145.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int) (Tier1)
16 (1.59 % of base) : 92770.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:IntroSort(System.Span`1[System.Collections.IntStruct],int) (Tier1)
16 (1.59 % of base) : 80121.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:IntroSort(System.Span`1[System.Collections.IntStruct],int) (Tier1)
16 (2.04 % of base) : 68334.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerDoWork(System.Threading.PortableThreadPool,byref) (Tier1)
12 (2.44 % of base) : 105239.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.44 % of base) : 53095.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
Top method improvements (bytes):
-52 (-1.21 % of base) : 42922.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
-40 (-14.49 % of base) : 90002.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-32 (-2.17 % of base) : 105211.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.15 % of base) : 53058.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.15 % of base) : 123653.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.15 % of base) : 87968.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 116248.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 22081.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 79556.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-28 (-0.82 % of base) : 92029.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:IntroSort(System.Span`1[System.Collections.IntStruct],int,System.Comparison`1[System.Collections.IntStruct]) (Tier1)
-24 (-1.96 % of base) : 47977.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-24 (-1.96 % of base) : 20729.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-24 (-1.96 % of base) : 4941.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-24 (-3.02 % of base) : 22181.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-24 (-3.02 % of base) : 53105.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-24 (-3.02 % of base) : 18901.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-24 (-3.02 % of base) : 25141.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-24 (-3.02 % of base) : 51241.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-24 (-3.02 % of base) : 51881.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-24 (-3.02 % of base) : 53873.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
Top method regressions (percentages):
36 (5.00 % of base) : 93049.dasm - Benchstone.BenchF.Regula:Test():ubyte:this (Tier1-OSR)
8 (4.08 % of base) : 54903.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (4.08 % of base) : 54918.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (3.85 % of base) : 22338.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 35124.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 91911.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.64 % of base) : 110742.dasm - Benchstone.MDBenchI.MDLogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (3.64 % of base) : 110730.dasm - Benchstone.MDBenchI.MDLogicArray:Inner(byref):ubyte (Tier1-OSR)
4 (2.50 % of base) : 104354.dasm - BenchmarksGame.ByteString:Equals(BenchmarksGame.ByteString):ubyte:this (Tier1)
12 (2.44 % of base) : 105239.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.44 % of base) : 53095.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.44 % of base) : 116284.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.44 % of base) : 123684.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.44 % of base) : 79576.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.44 % of base) : 87989.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.44 % of base) : 22157.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.42 % of base) : 118986.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.42 % of base) : 124594.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.42 % of base) : 105952.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.42 % of base) : 91887.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
Top method improvements (percentages):
-16 (-15.38 % of base) : 95314.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
-40 (-14.49 % of base) : 90002.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-16 (-8.33 % of base) : 107671.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 108231.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 51209.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 86591.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 119110.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 62969.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 96252.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-20 (-7.81 % of base) : 53109.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-20 (-7.25 % of base) : 96277.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-8 (-6.06 % of base) : 88653.dasm - BenchmarksGame.BinaryTrees_6+TreeNode:Check():int:this (Tier1)
-12 (-4.29 % of base) : 104360.dasm - BenchmarksGame.KNucleotide:KFrequency(int,int):this (Tier1-OSR)
-20 (-4.07 % of base) : 53069.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 119101.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 29733.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 95977.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 73981.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 85445.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 91877.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
benchmarks.run_tiered.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 20463492 (overridden on cmd)
Total bytes of diff: 20463496 (overridden on cmd)
Total bytes of delta: 4 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
8 : 28572.dasm (0.29 % of base)
4 : 16676.dasm (0.30 % of base)
4 : 41176.dasm (0.09 % of base)
4 : 41415.dasm (0.09 % of base)
4 : 53811.dasm (0.28 % of base)
Top file improvements (bytes):
-12 : 25493.dasm (-1.23 % of base)
-8 : 31509.dasm (-1.01 % of base)
7 total files with Code Size differences (2 improved, 5 regressed), 18 unchanged.
Top method regressions (bytes):
8 (0.29 % of base) : 28572.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
4 (0.28 % of base) : 53811.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
4 (0.30 % of base) : 16676.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
4 (0.09 % of base) : 41176.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 41415.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-12 (-1.23 % of base) : 25493.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
-8 (-1.01 % of base) : 31509.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
Top method regressions (percentages):
4 (0.30 % of base) : 16676.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
8 (0.29 % of base) : 28572.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
4 (0.28 % of base) : 53811.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
4 (0.09 % of base) : 41176.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 41415.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-12 (-1.23 % of base) : 25493.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
-8 (-1.01 % of base) : 31509.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
7 total methods with Code Size differences (2 improved, 5 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: 301232224 (overridden on cmd)
Total bytes of diff: 301232096 (overridden on cmd)
Total bytes of delta: -128 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
28 : 150651.dasm (0.82 % of base)
28 : 154645.dasm (2.44 % of base)
28 : 154669.dasm (2.21 % of base)
28 : 154687.dasm (2.39 % of base)
28 : 203916.dasm (6.54 % of base)
28 : 150644.dasm (0.82 % of base)
28 : 150658.dasm (0.82 % of base)
28 : 154639.dasm (2.21 % of base)
28 : 154663.dasm (2.42 % of base)
28 : 154681.dasm (2.33 % of base)
28 : 154651.dasm (2.33 % of base)
28 : 154657.dasm (2.39 % of base)
28 : 154693.dasm (2.42 % of base)
24 : 294112.dasm (4.69 % of base)
24 : 295842.dasm (4.69 % of base)
24 : 154326.dasm (0.72 % of base)
24 : 154318.dasm (0.72 % of base)
12 : 354232.dasm (1.27 % of base)
12 : 314216.dasm (2.31 % of base)
12 : 337180.dasm (6.25 % of base)
Top file improvements (bytes):
-80 : 349171.dasm (-7.25 % of base)
-24 : 345974.dasm (-2.00 % of base)
-24 : 354903.dasm (-4.08 % of base)
-24 : 379739.dasm (-2.00 % of base)
-24 : 389129.dasm (-2.00 % of base)
-20 : 321194.dasm (-3.40 % of base)
-20 : 386581.dasm (-3.40 % of base)
-20 : 336017.dasm (-9.62 % of base)
-16 : 173214.dasm (-2.13 % of base)
-16 : 319285.dasm (-7.84 % of base)
-16 : 319429.dasm (-7.84 % of base)
-16 : 321145.dasm (-7.84 % of base)
-16 : 337657.dasm (-7.84 % of base)
-16 : 350250.dasm (-7.84 % of base)
-16 : 353573.dasm (-7.84 % of base)
-16 : 361382.dasm (-7.84 % of base)
-16 : 369293.dasm (-7.84 % of base)
-16 : 370370.dasm (-7.84 % of base)
-16 : 371634.dasm (-7.84 % of base)
-16 : 382898.dasm (-7.84 % of base)
58 total files with Code Size differences (29 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
28 (6.54 % of base) : 203916.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
28 (2.21 % of base) : 154639.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Byte:RunReflectionScenario():this (FullOpts)
28 (2.44 % of base) : 154645.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Double:RunReflectionScenario():this (FullOpts)
28 (2.33 % of base) : 154651.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int16:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 154657.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int32:RunReflectionScenario():this (FullOpts)
28 (2.42 % of base) : 154663.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int64:RunReflectionScenario():this (FullOpts)
28 (2.21 % of base) : 154669.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256SByte:RunReflectionScenario():this (FullOpts)
28 (2.33 % of base) : 154681.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt16:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 154687.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt32:RunReflectionScenario():this (FullOpts)
28 (2.42 % of base) : 154693.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt64:RunReflectionScenario():this (FullOpts)
28 (0.82 % of base) : 150644.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementDouble0:RunReflectionScenario(int,ubyte):this (FullOpts)
28 (0.82 % of base) : 150651.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementDouble1:RunReflectionScenario(int,ubyte):this (FullOpts)
28 (0.82 % of base) : 150658.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementDouble3:RunReflectionScenario(int,ubyte):this (FullOpts)
24 (4.69 % of base) : 294112.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (4.69 % of base) : 295842.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (0.72 % of base) : 154318.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithElement__GetAndWithElementDouble0:RunReflectionScenario(int,ubyte):this (FullOpts)
24 (0.72 % of base) : 154326.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithElement__GetAndWithElementDouble1:RunReflectionScenario(int,ubyte):this (FullOpts)
12 (2.31 % of base) : 314216.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
12 (6.25 % of base) : 337180.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
12 (1.27 % of base) : 354232.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
Top method improvements (bytes):
-80 (-7.25 % of base) : 349171.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (Tier0-FullOpts)
-24 (-4.08 % of base) : 354903.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-24 (-2.00 % of base) : 345974.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-24 (-2.00 % of base) : 379739.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-24 (-2.00 % of base) : 389129.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-20 (-3.40 % of base) : 321194.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-3.40 % of base) : 386581.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-9.62 % of base) : 336017.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-2.13 % of base) : 173214.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorCreate__CreateScalarSingle:ValidateResult(float[],float,System.String):this (FullOpts)
-16 (-7.84 % of base) : 319285.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 319429.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 321145.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 337657.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 350250.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 353573.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 361382.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 369293.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 370370.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 371634.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 382898.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
Top method regressions (percentages):
28 (6.54 % of base) : 203916.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
12 (6.25 % of base) : 337180.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
24 (4.69 % of base) : 294112.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (4.69 % of base) : 295842.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
8 (3.92 % of base) : 369400.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 382324.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 378541.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 379249.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 390409.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.64 % of base) : 381995.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
28 (2.44 % of base) : 154645.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Double:RunReflectionScenario():this (FullOpts)
28 (2.42 % of base) : 154663.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int64:RunReflectionScenario():this (FullOpts)
28 (2.42 % of base) : 154693.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt64:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 154657.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int32:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 154687.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt32:RunReflectionScenario():this (FullOpts)
4 (2.38 % of base) : 344585.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
28 (2.33 % of base) : 154651.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int16:RunReflectionScenario():this (FullOpts)
28 (2.33 % of base) : 154681.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt16:RunReflectionScenario():this (FullOpts)
4 (2.33 % of base) : 354389.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
4 (2.33 % of base) : 344260.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
Top method improvements (percentages):
-20 (-9.62 % of base) : 336017.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 319285.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 319429.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 321145.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 337657.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 350250.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 353573.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 361382.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 369293.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 370370.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 371634.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 382898.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 349913.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 365534.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 366841.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 372746.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 374906.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 375573.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 378466.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 393493.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
libraries.crossgen2.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 63420392 (overridden on cmd)
Total bytes of diff: 63420560 (overridden on cmd)
Total bytes of delta: 168 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
84 : 214331.dasm (1.36 % of base)
48 : 223350.dasm (0.18 % of base)
16 : 225041.dasm (0.17 % of base)
12 : 182501.dasm (5.88 % of base)
12 : 37352.dasm (1.87 % of base)
12 : 4248.dasm (5.88 % of base)
8 : 201732.dasm (1.21 % of base)
8 : 237862.dasm (1.28 % of base)
8 : 43682.dasm (0.77 % of base)
8 : 50666.dasm (0.38 % of base)
8 : 174124.dasm (0.16 % of base)
4 : 144487.dasm (0.59 % of base)
4 : 89607.dasm (0.26 % of base)
4 : 105893.dasm (0.56 % of base)
4 : 230512.dasm (0.55 % of base)
4 : 40783.dasm (0.19 % of base)
4 : 86048.dasm (0.12 % of base)
4 : 219771.dasm (0.26 % of base)
4 : 99491.dasm (1.01 % of base)
Top file improvements (bytes):
-24 : 84404.dasm (-0.45 % of base)
-20 : 24510.dasm (-2.23 % of base)
-16 : 145042.dasm (-2.16 % of base)
-12 : 202592.dasm (-0.79 % of base)
-4 : 106349.dasm (-0.18 % of base)
-4 : 86079.dasm (-0.12 % of base)
-4 : 106361.dasm (-0.09 % of base)
-4 : 106370.dasm (-0.26 % of base)
27 total files with Code Size differences (8 improved, 19 regressed), 32 unchanged.
Top method regressions (bytes):
84 (1.36 % of base) : 214331.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
48 (0.18 % of base) : 223350.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)
16 (0.17 % of base) : 225041.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
12 (5.88 % of base) : 182501.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (5.88 % of base) : 4248.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (1.87 % of base) : 37352.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
8 (0.77 % of base) : 43682.dasm - Microsoft.FSharp.Control.FSharpEvent`2[System.__Canon,System.__Canon]:.cctor() (FullOpts)
8 (0.16 % of base) : 174124.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
8 (1.28 % of base) : 237862.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
8 (0.38 % of base) : 50666.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
8 (1.21 % of base) : 201732.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (0.12 % of base) : 86048.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
4 (0.26 % of base) : 89607.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:DetermineDefaultPropertyName(System.Collections.Generic.Dictionary`2[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.String:this (FullOpts)
4 (1.01 % of base) : 99491.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContextExtensions:MatchEndElement(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContext],Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameSyntax):int (FullOpts)
4 (0.56 % of base) : 105893.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
4 (0.59 % of base) : 144487.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
4 (0.19 % of base) : 40783.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:objectValueWithPropertiesL(int,System.Type,System.Object):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
4 (0.55 % of base) : 230512.dasm - System.Data.ProviderBase.DbConnectionPool:PoolCreateRequest(System.Object):this (FullOpts)
4 (0.26 % of base) : 219771.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
Top method improvements (bytes):
-24 (-0.45 % of base) : 84404.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)
-20 (-2.23 % of base) : 24510.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-16 (-2.16 % of base) : 145042.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
-12 (-0.79 % of base) : 202592.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-4 (-0.12 % of base) : 86079.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindLateBoundInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-4 (-0.26 % of base) : 106370.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CombineCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,int,System.Collections.Immutable.ImmutableArray`1[System.String],byref) (FullOpts)
-4 (-0.09 % of base) : 106361.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
-4 (-0.18 % of base) : 106349.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ShadowBasedOnInferenceLevel(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref,byref) (FullOpts)
Top method regressions (percentages):
12 (5.88 % of base) : 182501.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (5.88 % of base) : 4248.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (1.87 % of base) : 37352.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
84 (1.36 % of base) : 214331.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
8 (1.28 % of base) : 237862.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
8 (1.21 % of base) : 201732.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (1.01 % of base) : 99491.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContextExtensions:MatchEndElement(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContext],Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameSyntax):int (FullOpts)
8 (0.77 % of base) : 43682.dasm - Microsoft.FSharp.Control.FSharpEvent`2[System.__Canon,System.__Canon]:.cctor() (FullOpts)
4 (0.59 % of base) : 144487.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
4 (0.56 % of base) : 105893.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
4 (0.55 % of base) : 230512.dasm - System.Data.ProviderBase.DbConnectionPool:PoolCreateRequest(System.Object):this (FullOpts)
8 (0.38 % of base) : 50666.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
4 (0.26 % of base) : 89607.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:DetermineDefaultPropertyName(System.Collections.Generic.Dictionary`2[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.String:this (FullOpts)
4 (0.26 % of base) : 219771.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
4 (0.19 % of base) : 40783.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:objectValueWithPropertiesL(int,System.Type,System.Object):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
48 (0.18 % of base) : 223350.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)
16 (0.17 % of base) : 225041.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
8 (0.16 % of base) : 174124.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
4 (0.12 % of base) : 86048.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
Top method improvements (percentages):
-20 (-2.23 % of base) : 24510.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-16 (-2.16 % of base) : 145042.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
-12 (-0.79 % of base) : 202592.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-24 (-0.45 % of base) : 84404.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.26 % of base) : 106370.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CombineCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,int,System.Collections.Immutable.ImmutableArray`1[System.String],byref) (FullOpts)
-4 (-0.18 % of base) : 106349.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ShadowBasedOnInferenceLevel(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref,byref) (FullOpts)
-4 (-0.12 % of base) : 86079.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindLateBoundInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-4 (-0.09 % of base) : 106361.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
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: 76198412 (overridden on cmd)
Total bytes of diff: 76198548 (overridden on cmd)
Total bytes of delta: 136 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
64 : 198648.dasm (0.22 % of base)
48 : 114888.dasm (0.87 % of base)
44 : 261547.dasm (3.15 % of base)
24 : 151738.dasm (2.27 % of base)
24 : 176740.dasm (4.69 % of base)
16 : 158663.dasm (2.55 % of base)
16 : 182933.dasm (1.20 % of base)
12 : 18569.dasm (6.25 % of base)
12 : 206034.dasm (2.31 % of base)
12 : 143574.dasm (2.29 % of base)
12 : 176213.dasm (0.16 % of base)
12 : 205262.dasm (0.99 % of base)
12 : 213340.dasm (6.25 % of base)
8 : 185362.dasm (1.12 % of base)
8 : 40280.dasm (0.19 % of base)
8 : 459.dasm (0.34 % of base)
8 : 185002.dasm (0.40 % of base)
8 : 38203.dasm (0.37 % of base)
8 : 89452.dasm (0.29 % of base)
8 : 162206.dasm (1.15 % of base)
Top file improvements (bytes):
-44 : 276052.dasm (-2.84 % of base)
-24 : 151694.dasm (-1.25 % of base)
-24 : 165313.dasm (-3.31 % of base)
-20 : 214892.dasm (-2.00 % of base)
-16 : 151453.dasm (-1.32 % of base)
-16 : 91684.dasm (-0.78 % of base)
-12 : 117998.dasm (-0.29 % of base)
-12 : 221778.dasm (-0.28 % of base)
-12 : 142107.dasm (-0.32 % of base)
-12 : 2659.dasm (-11.11 % of base)
-12 : 2671.dasm (-12.00 % of base)
-12 : 28196.dasm (-0.28 % of base)
-8 : 118056.dasm (-0.16 % of base)
-8 : 183251.dasm (-2.13 % of base)
-8 : 188842.dasm (-0.38 % of base)
-8 : 210624.dasm (-0.38 % of base)
-8 : 271990.dasm (-0.73 % of base)
-8 : 276988.dasm (-1.18 % of base)
-8 : 15615.dasm (-0.38 % of base)
-8 : 293649.dasm (-1.18 % of base)
54 total files with Code Size differences (27 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
64 (0.22 % of base) : 198648.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)
48 (0.87 % of base) : 114888.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
44 (3.15 % of base) : 261547.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
24 (4.69 % of base) : 176740.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (2.27 % of base) : 151738.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeMultidimensionalArray(Newtonsoft.Json.JsonWriter,System.Array,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,int,int[]):this (FullOpts)
16 (1.20 % of base) : 182933.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteSwitchExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
16 (2.55 % of base) : 158663.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
12 (0.16 % of base) : 176213.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
12 (2.31 % of base) : 206034.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
12 (0.99 % of base) : 205262.dasm - Microsoft.Build.Shared.ResourceUtilities:ExtractMessageCode(ubyte,System.String,byref):System.String (FullOpts)
12 (6.25 % of base) : 18569.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (6.25 % of base) : 213340.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (2.29 % of base) : 143574.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
8 (0.19 % of base) : 40280.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:EvaluateSideEffectingArgumentsToTemps(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
8 (0.37 % of base) : 38203.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
8 (0.34 % of base) : 459.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
8 (1.87 % of base) : 261752.dasm - System.Net.HttpEndPointListener:AddSpecial(System.Collections.Generic.List`1[System.Net.ListenerPrefix],System.Net.ListenerPrefix) (FullOpts)
8 (0.29 % of base) : 89452.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
8 (1.15 % of base) : 162206.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
8 (0.40 % of base) : 185002.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
Top method improvements (bytes):
-44 (-2.84 % of base) : 276052.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-24 (-1.25 % of base) : 151694.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:PopulateMultidimensionalArray(System.Collections.IList,Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,System.String):System.Object:this (FullOpts)
-24 (-3.31 % of base) : 165313.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-20 (-2.00 % of base) : 214892.dasm - Microsoft.CodeAnalysis.Text.SourceText:ContentEqualsImpl(Microsoft.CodeAnalysis.Text.SourceText):ubyte:this (FullOpts)
-16 (-0.78 % of base) : 91684.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-16 (-1.32 % of base) : 151453.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-12 (-0.28 % of base) : 221778.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesAndTokensIntoTrivia>d__175:MoveNext():ubyte:this (FullOpts)
-12 (-0.28 % of base) : 28196.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesAndTokensIntoTrivia>d__175:MoveNext():ubyte:this (FullOpts)
-12 (-0.29 % of base) : 117998.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
-12 (-0.32 % of base) : 142107.dasm - System.Data.XMLDiffLoader:ReadOldRowData(System.Data.DataSet,byref,byref,System.Xml.XmlReader):int:this (FullOpts)
-12 (-11.11 % of base) : 2659.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-12 (-12.00 % of base) : 2671.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-8 (-0.38 % of base) : 210624.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):this (FullOpts)
-8 (-0.38 % of base) : 15615.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):this (FullOpts)
-8 (-0.13 % of base) : 91878.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
-8 (-0.16 % of base) : 118056.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
-8 (-2.13 % of base) : 183251.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
-8 (-0.73 % of base) : 271990.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-8 (-1.18 % of base) : 276988.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
-8 (-1.18 % of base) : 293649.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
Top method regressions (percentages):
12 (6.25 % of base) : 18569.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (6.25 % of base) : 213340.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
24 (4.69 % of base) : 176740.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
44 (3.15 % of base) : 261547.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
16 (2.55 % of base) : 158663.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
12 (2.31 % of base) : 206034.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
12 (2.29 % of base) : 143574.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
24 (2.27 % of base) : 151738.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeMultidimensionalArray(Newtonsoft.Json.JsonWriter,System.Array,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,int,int[]):this (FullOpts)
8 (1.87 % of base) : 261752.dasm - System.Net.HttpEndPointListener:AddSpecial(System.Collections.Generic.List`1[System.Net.ListenerPrefix],System.Net.ListenerPrefix) (FullOpts)
4 (1.27 % of base) : 106038.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContextExtensions:MatchEndElement(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContext],Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameSyntax):int (FullOpts)
16 (1.20 % of base) : 182933.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteSwitchExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
8 (1.15 % of base) : 162206.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (1.12 % of base) : 271655.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
8 (1.12 % of base) : 185362.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
12 (0.99 % of base) : 205262.dasm - Microsoft.Build.Shared.ResourceUtilities:ExtractMessageCode(ubyte,System.String,byref):System.String (FullOpts)
4 (0.99 % of base) : 167241.dasm - System.Xml.Serialization.AccessorMapping:ElementsMatch(System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.ElementAccessor[]):ubyte (FullOpts)
48 (0.87 % of base) : 114888.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
4 (0.86 % of base) : 165488.dasm - System.Xml.Xsl.Runtime.XmlQueryNodeSequence:.ctor(System.Collections.Generic.IList`1[System.Xml.XPath.XPathNavigator]):this (FullOpts)
4 (0.69 % of base) : 165204.dasm - System.Xml.Xsl.Runtime.XmlILStorageConverter:ItemsToNavigators(System.Collections.Generic.IList`1[System.Xml.XPath.XPathItem]):System.Collections.Generic.IList`1[System.Xml.XPath.XPathNavigator] (FullOpts)
4 (0.67 % of base) : 114427.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
Top method improvements (percentages):
-12 (-12.00 % of base) : 2671.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-12 (-11.11 % of base) : 2659.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-24 (-3.31 % of base) : 165313.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-44 (-2.84 % of base) : 276052.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-8 (-2.13 % of base) : 183251.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
-20 (-2.00 % of base) : 214892.dasm - Microsoft.CodeAnalysis.Text.SourceText:ContentEqualsImpl(Microsoft.CodeAnalysis.Text.SourceText):ubyte:this (FullOpts)
-4 (-1.67 % of base) : 193470.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
-16 (-1.32 % of base) : 151453.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-4 (-1.30 % of base) : 205282.dasm - Microsoft.Build.Shared.TypeLoader:IsPartialTypeNameMatch(System.String,System.String):ubyte (FullOpts)
-24 (-1.25 % of base) : 151694.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:PopulateMultidimensionalArray(System.Collections.IList,Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,System.String):System.Object:this (FullOpts)
-8 (-1.18 % of base) : 276988.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
-8 (-1.18 % of base) : 293649.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
-4 (-1.04 % of base) : 183164.dasm - System.Dynamic.ExpandoObject+ValueCollection:Contains(System.Object):ubyte:this (FullOpts)
-4 (-0.85 % of base) : 36524.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetParameterSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this (FullOpts)
-16 (-0.78 % of base) : 91684.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-8 (-0.73 % of base) : 271990.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-4 (-0.71 % of base) : 274267.dasm - System.Diagnostics.Activity+TagsLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.Object]):this (FullOpts)
-4 (-0.46 % of base) : 143020.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],ubyte):this (FullOpts)
-8 (-0.38 % of base) : 210624.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):this (FullOpts)
-8 (-0.38 % of base) : 15615.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):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: 38229644 (overridden on cmd)
Total bytes of diff: 38229448 (overridden on cmd)
Total bytes of delta: -196 (-0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
20 : 15620.dasm (1.03 % of base)
12 : 14652.dasm (1.42 % of base)
12 : 19824.dasm (1.42 % of base)
12 : 38224.dasm (1.42 % of base)
12 : 39504.dasm (1.42 % of base)
12 : 4148.dasm (1.42 % of base)
12 : 14788.dasm (1.42 % of base)
12 : 49680.dasm (1.42 % of base)
12 : 70963.dasm (1.42 % of base)
12 : 73163.dasm (1.42 % of base)
12 : 78412.dasm (1.42 % of base)
12 : 78472.dasm (1.42 % of base)
12 : 13736.dasm (1.42 % of base)
12 : 36472.dasm (1.42 % of base)
12 : 39268.dasm (1.42 % of base)
12 : 4016.dasm (1.42 % of base)
12 : 42591.dasm (1.42 % of base)
12 : 43311.dasm (1.42 % of base)
12 : 53955.dasm (1.42 % of base)
12 : 67183.dasm (1.42 % of base)
Top file improvements (bytes):
-24 : 15914.dasm (-2.01 % of base)
-20 : 14651.dasm (-2.51 % of base)
-20 : 4145.dasm (-2.51 % of base)
-20 : 57074.dasm (-2.37 % of base)
-20 : 39426.dasm (-2.51 % of base)
-20 : 44798.dasm (-2.10 % of base)
-16 : 80074.dasm (-1.52 % of base)
-16 : 6783.dasm (-7.84 % of base)
-12 : 15624.dasm (-2.38 % of base)
-12 : 32260.dasm (-3.09 % of base)
-8 : 28161.dasm (-0.76 % of base)
-8 : 28713.dasm (-0.76 % of base)
-8 : 34141.dasm (-1.60 % of base)
-8 : 43316.dasm (-2.08 % of base)
-8 : 49622.dasm (-1.60 % of base)
-8 : 81205.dasm (-1.60 % of base)
-8 : 14817.dasm (-0.76 % of base)
-8 : 15754.dasm (-1.60 % of base)
-8 : 19877.dasm (-2.08 % of base)
-8 : 30768.dasm (-2.08 % of base)
65 total files with Code Size differences (27 improved, 38 regressed), 20 unchanged.
Top method regressions (bytes):
20 (1.03 % of base) : 15620.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
12 (1.42 % of base) : 14652.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 19824.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 38224.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 39504.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 4148.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 14788.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 49680.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 70963.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 73163.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 78412.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 78472.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 13736.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 36472.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 39268.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 4016.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 42591.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 43311.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 53955.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 67183.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method improvements (bytes):
-24 (-2.01 % of base) : 15914.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-20 (-2.51 % of base) : 14651.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-20 (-2.51 % of base) : 4145.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-20 (-2.51 % of base) : 39426.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-20 (-2.10 % of base) : 44798.dasm - System.Linq.Enumerable+SelectEnumerableIterator`2[int,int]:ToArray():int[]:this (Tier1-OSR)
-20 (-2.37 % of base) : 57074.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[ushort]:ToArray():ushort[]:this (Tier1-OSR)
-16 (-1.52 % of base) : 80074.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-16 (-7.84 % of base) : 6783.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-12 (-2.38 % of base) : 15624.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
-12 (-3.09 % of base) : 32260.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-8 (-0.76 % of base) : 28161.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-8 (-0.76 % of base) : 28713.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-8 (-0.76 % of base) : 14817.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-8 (-1.60 % of base) : 34141.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-8 (-1.60 % of base) : 49622.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-8 (-1.60 % of base) : 81205.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-8 (-1.60 % of base) : 31981.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-8 (-1.60 % of base) : 51777.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-8 (-1.60 % of base) : 15754.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-8 (-1.63 % of base) : 6737.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
Top method regressions (percentages):
8 (3.92 % of base) : 20724.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 22666.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 25246.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 32351.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 37579.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 39605.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 47947.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 11465.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 45938.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 46150.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 71015.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 26488.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 31461.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 39350.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 49715.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 15558.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 19292.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
4 (2.13 % of base) : 37124.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
12 (1.42 % of base) : 14652.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
12 (1.42 % of base) : 19824.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
Top method improvements (percentages):
-16 (-7.84 % of base) : 6783.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-12 (-3.09 % of base) : 32260.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-20 (-2.51 % of base) : 14651.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-20 (-2.51 % of base) : 4145.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-20 (-2.51 % of base) : 39426.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-12 (-2.38 % of base) : 15624.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
-20 (-2.37 % of base) : 57074.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[ushort]:ToArray():ushort[]:this (Tier1-OSR)
-20 (-2.10 % of base) : 44798.dasm - System.Linq.Enumerable+SelectEnumerableIterator`2[int,int]:ToArray():int[]:this (Tier1-OSR)
-8 (-2.08 % of base) : 43316.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-8 (-2.08 % of base) : 19877.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-8 (-2.08 % of base) : 30768.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-4 (-2.04 % of base) : 16014.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-24 (-2.01 % of base) : 15914.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-8 (-1.63 % of base) : 6737.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-8 (-1.60 % of base) : 34141.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-8 (-1.60 % of base) : 49622.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-8 (-1.60 % of base) : 81205.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-8 (-1.60 % of base) : 31981.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-8 (-1.60 % of base) : 51777.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-8 (-1.60 % of base) : 15754.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (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: 161788104 (overridden on cmd)
Total bytes of diff: 161788404 (overridden on cmd)
Total bytes of delta: 300 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
148 : 59372.dasm (0.52 % of base)
44 : 148574.dasm (3.15 % of base)
40 : 281188.dasm (2.62 % of base)
36 : 281011.dasm (2.18 % of base)
36 : 279670.dasm (2.65 % of base)
36 : 280693.dasm (1.80 % of base)
36 : 281000.dasm (2.40 % of base)
36 : 280727.dasm (1.67 % of base)
28 : 139907.dasm (0.73 % of base)
24 : 279658.dasm (1.38 % of base)
16 : 4331.dasm (1.35 % of base)
16 : 49729.dasm (0.57 % of base)
16 : 92107.dasm (2.56 % of base)
12 : 17779.dasm (0.87 % of base)
12 : 142239.dasm (0.86 % of base)
12 : 281079.dasm (0.87 % of base)
12 : 90208.dasm (2.29 % of base)
12 : 276434.dasm (1.04 % of base)
12 : 278358.dasm (1.03 % of base)
12 : 278362.dasm (1.01 % of base)
Top file improvements (bytes):
-36 : 278614.dasm (-0.97 % of base)
-28 : 278612.dasm (-0.79 % of base)
-24 : 170356.dasm (-3.31 % of base)
-24 : 13628.dasm (-0.40 % of base)
-20 : 277014.dasm (-1.34 % of base)
-16 : 289366.dasm (-0.64 % of base)
-16 : 271313.dasm (-0.63 % of base)
-16 : 291056.dasm (-0.67 % of base)
-12 : 271291.dasm (-0.67 % of base)
-12 : 271293.dasm (-0.65 % of base)
-12 : 271294.dasm (-0.65 % of base)
-12 : 271301.dasm (-0.65 % of base)
-12 : 271305.dasm (-0.65 % of base)
-12 : 277037.dasm (-0.72 % of base)
-12 : 286997.dasm (-0.72 % of base)
-12 : 287003.dasm (-0.71 % of base)
-12 : 43008.dasm (-0.82 % of base)
-12 : 49133.dasm (-0.82 % of base)
-12 : 91930.dasm (-0.33 % of base)
-12 : 12169.dasm (-0.29 % of base)
60 total files with Code Size differences (31 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
148 (0.52 % of base) : 59372.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)
44 (3.15 % of base) : 148574.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
40 (2.62 % of base) : 281188.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3847_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (2.65 % of base) : 279670.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3294_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (1.80 % of base) : 280693.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3459_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (1.67 % of base) : 280727.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3478_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (2.40 % of base) : 281000.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3681_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (2.18 % of base) : 281011.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3687_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
28 (0.73 % of base) : 139907.dasm - System.Linq.Tests.TakeTests:ElementAtOfLazySkipTakeChain(int[],int,int,int[],int[]):this (FullOpts)
24 (1.38 % of base) : 279658.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3293_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (0.57 % of base) : 49729.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:LoadAndValidateAttributes(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],byref,short,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte]):ubyte:this (FullOpts)
16 (1.35 % of base) : 4331.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)
16 (2.56 % of base) : 92107.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
12 (0.87 % of base) : 17779.dasm - IntrinsicsInSystemPrivateCoreLib.IntrinsicsInSystemPrivateCoreLibAnalyzer:<AnalyzeOperation>g__HandleConditionalCase|32_0(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,byref):ubyte (FullOpts)
12 (2.29 % of base) : 90208.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
12 (0.86 % of base) : 142239.dasm - System.SpanTests.IndexOfAnyExceptTests_String:SearchingNulls(System.String[],System.String[],int):this (FullOpts)
12 (1.04 % of base) : 276434.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1069_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (0.42 % of base) : 277011.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2084_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (1.03 % of base) : 278358.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2950_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (1.01 % of base) : 278362.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2953_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-36 (-0.97 % of base) : 278614.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4363_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-28 (-0.79 % of base) : 278612.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4361_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-24 (-0.40 % of base) : 13628.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)
-24 (-3.31 % of base) : 170356.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-20 (-1.34 % of base) : 277014.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2086_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-16 (-0.67 % of base) : 291056.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33203_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-16 (-0.63 % of base) : 271313.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex665_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-16 (-0.64 % of base) : 289366.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
-12 (-0.82 % of base) : 43008.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-12 (-0.82 % of base) : 49133.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-12 (-0.29 % of base) : 12169.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesAndTokensIntoTrivia>d__175:MoveNext():ubyte:this (FullOpts)
-12 (-0.33 % of base) : 91930.dasm - System.Data.XMLDiffLoader:ReadOldRowData(System.Data.DataSet,byref,byref,System.Xml.XmlReader):int:this (FullOpts)
-12 (-0.72 % of base) : 277037.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2115_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.42 % of base) : 280881.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3597_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.72 % of base) : 286997.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5387_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.69 % of base) : 286998.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5389_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.72 % of base) : 287002.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5393_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.71 % of base) : 287003.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5395_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.68 % of base) : 271290.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex642_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.67 % of base) : 271291.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex643_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method regressions (percentages):
44 (3.15 % of base) : 148574.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
36 (2.65 % of base) : 279670.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3294_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
40 (2.62 % of base) : 281188.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3847_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (2.56 % of base) : 92107.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
36 (2.40 % of base) : 281000.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3681_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (2.29 % of base) : 90208.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
36 (2.18 % of base) : 281011.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3687_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 (1.87 % of base) : 148026.dasm - System.Net.HttpEndPointListener:AddSpecial(System.Collections.Generic.List`1[System.Net.ListenerPrefix],System.Net.ListenerPrefix) (FullOpts)
36 (1.80 % of base) : 280693.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3459_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (1.67 % of base) : 280727.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3478_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (1.38 % of base) : 279658.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3293_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (1.35 % of base) : 4331.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.25 % of base) : 171707.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (1.12 % of base) : 126749.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
8 (1.12 % of base) : 101204.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
12 (1.04 % of base) : 276434.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1069_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (1.03 % of base) : 278358.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2950_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (1.01 % of base) : 278362.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2953_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.99 % of base) : 164906.dasm - System.Xml.Serialization.AccessorMapping:ElementsMatch(System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.ElementAccessor[]):ubyte (FullOpts)
12 (0.98 % of base) : 278438.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3038_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-24 (-3.31 % of base) : 170356.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-8 (-2.11 % of base) : 25503.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
-20 (-1.34 % of base) : 277014.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2086_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-36 (-0.97 % of base) : 278614.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4363_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.85 % of base) : 14204.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetParameterSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this (FullOpts)
-8 (-0.84 % of base) : 157716.dasm - System.Numerics.Tensors.Tests.TensorPrimitivesTests`1[System.UInt128]:<Divide_TwoTensors>b__140_0(int):this (FullOpts)
-12 (-0.82 % of base) : 43008.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-12 (-0.82 % of base) : 49133.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-28 (-0.79 % of base) : 278612.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4361_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.76 % of base) : 39840.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
-12 (-0.72 % of base) : 277037.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2115_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.72 % of base) : 286997.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5387_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.72 % of base) : 287002.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5393_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.71 % of base) : 53567.dasm - System.Diagnostics.Activity+TagsLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.Object]):this (FullOpts)
-12 (-0.71 % of base) : 287003.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5395_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.69 % of base) : 286998.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5389_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.68 % of base) : 271290.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex642_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.67 % of base) : 271291.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex643_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.67 % of base) : 271300.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex652_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-16 (-0.67 % of base) : 291056.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33203_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 15927560 (overridden on cmd)
Total bytes of diff: 15927520 (overridden on cmd)
Total bytes of delta: -40 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
44 : 14446.dasm (0.51 % of base)
16 : 17222.dasm (1.35 % of base)
8 : 14286.dasm (0.79 % of base)
8 : 12829.dasm (0.58 % of base)
4 : 14230.dasm (0.24 % of base)
4 : 22146.dasm (0.22 % of base)
Top file improvements (bytes):
-64 : 7034.dasm (-0.06 % of base)
-24 : 22871.dasm (-0.40 % of base)
-12 : 2793.dasm (-1.23 % of base)
-8 : 21074.dasm (-0.14 % of base)
-4 : 24441.dasm (-0.11 % of base)
-4 : 27727.dasm (-0.12 % of base)
-4 : 20559.dasm (-0.12 % of base)
-4 : 32350.dasm (-0.14 % of base)
14 total files with Code Size differences (8 improved, 6 regressed), 40 unchanged.
Top method regressions (bytes):
44 (0.51 % of base) : 14446.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
16 (1.35 % of base) : 17222.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 (0.79 % of base) : 14286.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
8 (0.58 % of base) : 12829.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
4 (0.22 % of base) : 22146.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeArguments(Microsoft.CodeAnalysis.ISymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]]):this (FullOpts)
4 (0.24 % of base) : 14230.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
Top method improvements (bytes):
-64 (-0.06 % of base) : 7034.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
-24 (-0.40 % of base) : 22871.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)
-12 (-1.23 % of base) : 2793.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-8 (-0.14 % of base) : 21074.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.11 % of base) : 24441.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.12 % of base) : 27727.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.12 % of base) : 20559.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-4 (-0.14 % of base) : 32350.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
Top method regressions (percentages):
16 (1.35 % of base) : 17222.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 (0.79 % of base) : 14286.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
8 (0.58 % of base) : 12829.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
44 (0.51 % of base) : 14446.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
4 (0.24 % of base) : 14230.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
4 (0.22 % of base) : 22146.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeArguments(Microsoft.CodeAnalysis.ISymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]]):this (FullOpts)
Top method improvements (percentages):
-12 (-1.23 % of base) : 2793.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-24 (-0.40 % of base) : 22871.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.14 % of base) : 32350.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
-8 (-0.14 % of base) : 21074.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.12 % of base) : 20559.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-4 (-0.12 % of base) : 27727.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.11 % of base) : 24441.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-64 (-0.06 % of base) : 7034.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
smoke_tests.nativeaot.linux.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 2805868 (overridden on cmd)
Total bytes of diff: 2805868 (overridden on cmd)
Total bytes of delta: 0 (0.00 % of base)
Detail diffs
0 total files with Code Size differences (0 improved, 0 regressed), 20 unchanged.
0 total methods with Code Size differences (0 improved, 0 regressed).
linux x64
Diffs are based on 1,620,764 contexts (360,162 MinOpts, 1,260,602 FullOpts).
MISSED contexts: 3,086 (0.19%)
Overall (-19,189 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
11,931,108 |
-21 |
benchmarks.run_pgo.linux.x64.checked.mch |
57,210,207 |
-14,603 |
benchmarks.run_tiered.linux.x64.checked.mch |
18,554,062 |
-79 |
coreclr_tests.run.linux.x64.checked.mch |
247,129,711 |
-4,514 |
libraries.crossgen2.linux.x64.checked.mch |
44,465,520 |
+333 |
libraries.pmi.linux.x64.checked.mch |
60,382,760 |
-681 |
libraries_tests.run.linux.x64.Release.mch |
31,730,046 |
-608 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
130,006,275 |
+974 |
realworld.run.linux.x64.checked.mch |
13,217,933 |
+51 |
smoke_tests.nativeaot.linux.x64.checked.mch |
4,173,941 |
-41 |
FullOpts (-19,189 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.linux.x64.checked.mch |
11,761,406 |
-21 |
benchmarks.run_pgo.linux.x64.checked.mch |
39,463,695 |
-14,603 |
benchmarks.run_tiered.linux.x64.checked.mch |
3,498,316 |
-79 |
coreclr_tests.run.linux.x64.checked.mch |
106,762,830 |
-4,514 |
libraries.crossgen2.linux.x64.checked.mch |
44,464,322 |
+333 |
libraries.pmi.linux.x64.checked.mch |
60,269,903 |
-681 |
libraries_tests.run.linux.x64.Release.mch |
15,802,229 |
-608 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
119,422,420 |
+974 |
realworld.run.linux.x64.checked.mch |
12,829,397 |
+51 |
smoke_tests.nativeaot.linux.x64.checked.mch |
4,172,992 |
-41 |
Example diffs
benchmarks.run.linux.x64.checked.mch
-35 (-1.72%) : 59.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
@@ -8,102 +8,103 @@
; 0 inlinees with PGO data; 26 single block inlinees; 41 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 64, 8825 ) long -> r15
-; V01 arg1 [V01,T39] ( 15, 10.50) int -> r13
-; V02 arg2 [V02,T01] ( 61, 9700 ) long -> rbx
-; V03 arg3 [V03,T03] ( 47, 7988 ) int -> r14
-; V04 arg4 [V04,T42] ( 4, 3 ) byref -> r12 single-def
-; V05 arg5 [V05,T43] ( 4, 3 ) byref -> [rbp-0x60] single-def
-; V06 loc0 [V06,T04] ( 11, 1629.50) long -> [rbp-0x30] spill-single-def
-; V07 loc1 [V07,T52] ( 2, 64.50) simd16 -> [rbp-0x40] ld-addr-op spill-single-def <System.Runtime.Intrinsics.Vector128`1[short]>
-; V08 loc2 [V08,T27] ( 4, 72.50) long -> [rbp-0x48]
-; V09 loc3 [V09,T00] ( 50,17618.50) int -> [rbp-0x4C]
-; V10 loc4 [V10,T40] ( 12, 6 ) int -> rax
-; V11 loc5 [V11,T46] ( 5, 2.50) int -> rax
-; V12 loc6 [V12,T41] ( 6, 5 ) long -> rax
-;* V13 loc7 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref
-; V15 loc9 [V15,T36] ( 3, 24 ) int -> rsi
-; V16 loc10 [V16,T26] ( 3, 80 ) int -> rdi
-; V17 loc11 [V17,T28] ( 9, 66 ) long -> [rbp-0x58]
-; V18 loc12 [V18,T23] ( 6, 216 ) int -> rdx
-; V19 loc13 [V19,T51] ( 11, 294 ) simd16 -> mm1 <System.Runtime.Intrinsics.Vector128`1[short]>
-;* V20 loc14 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V21 loc15 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V22 loc16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V23 loc17 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V24 loc18 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V25 loc19 [V25 ] ( 0, 0 ) int -> zero-ref
-;* V26 loc20 [V26 ] ( 0, 0 ) int -> zero-ref
-;* V27 loc21 [V27 ] ( 0, 0 ) int -> zero-ref
-;# V28 OutArgs [V28 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V29 tmp1 [V29,T49] ( 2, 1 ) int -> rdi
-; V30 tmp2 [V30,T50] ( 2, 1 ) int -> rdi
-;* V31 tmp3 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V32 tmp4 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V33 tmp5 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp6 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V35 tmp7 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V36 tmp8 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V37 tmp9 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V38 tmp10 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp11 [V39,T47] ( 2, 2 ) int -> rdx "Inline return value spill temp"
-;* V40 tmp12 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V41 tmp13 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V42 tmp14 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V43 tmp15 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V44 tmp16 [V44,T37] ( 3, 24 ) long -> rsi "Inline return value spill temp"
-; V45 tmp17 [V45,T33] ( 3, 48 ) long -> rdi "Inlining Arg"
-; V46 tmp18 [V46,T34] ( 3, 48 ) long -> rsi "Inlining Arg"
-;* V47 tmp19 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V48 tmp20 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V49 tmp21 [V49,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V50 tmp22 [V50,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V51 tmp23 [V51,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp24 [V52,T15] ( 2, 256 ) int -> rdi
-;* V53 tmp25 [V53,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V54 tmp26 [V54,T17] ( 2, 256 ) ubyte -> rdi "Inline return value spill temp"
-;* V55 tmp27 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V56 tmp28 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V57 tmp29 [V57,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V58 tmp30 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V59 tmp31 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V60 tmp32 [V60,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V61 tmp33 [V61,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V62 tmp34 [V62,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V63 tmp35 [V63,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V64 tmp36 [V64,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V65 tmp37 [V65,T10] ( 0, 0 ) int -> zero-ref
-;* V66 tmp38 [V66,T12] ( 0, 0 ) int -> zero-ref
-;* V67 tmp39 [V67 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V68 tmp40 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V69 tmp41 [V69,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V70 tmp42 [V70,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V71 tmp43 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V72 tmp44 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V73 tmp45 [V73,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V74 tmp46 [V74,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V75 tmp47 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V76 tmp48 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V77 tmp49 [V77,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V78 tmp50 [V78,T21] ( 0, 0 ) int -> zero-ref
-;* V79 tmp51 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V80 tmp52 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V81 tmp53 [V81,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V82 tmp54 [V82,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V83 tmp55 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V84 tmp56 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V85 tmp57 [V85,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V86 tmp58 [V86,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V87 tmp59 [V87,T44] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V88 tmp60 [V88,T38] ( 5, 20 ) int -> rdi "Inlining Arg"
-;* V89 tmp61 [V89 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V90 tmp62 [V90 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V91 tmp63 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V92 tmp64 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V93 tmp65 [V93,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V94 rat0 [V94,T35] ( 3, 48 ) long -> rdi "ReplaceWithLclVar is creating a new local variable"
-; V95 rat1 [V95,T45] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
+; V00 arg0 [V00,T02] ( 64,1223 ) long -> r15
+; V01 arg1 [V01,T34] ( 15, 10.50) int -> r13
+; V02 arg2 [V02,T01] ( 61,1294 ) long -> rbx
+; V03 arg3 [V03,T03] ( 47,1052 ) int -> r14
+; V04 arg4 [V04,T43] ( 4, 3 ) byref -> r12 single-def
+; V05 arg5 [V05,T44] ( 4, 3 ) byref -> [rbp-0x60] single-def
+; V06 loc0 [V06,T05] ( 11, 231.50) long -> [rbp-0x30] spill-single-def
+; V07 loc1 [V07,T53] ( 2, 16.50) simd16 -> [rbp-0x40] ld-addr-op spill-single-def <System.Runtime.Intrinsics.Vector128`1[short]>
+; V08 loc2 [V08,T38] ( 4, 10.50) long -> [rbp-0x48]
+; V09 loc3 [V09,T00] ( 50,2260.50) int -> [rbp-0x4C]
+; V10 loc4 [V10,T39] ( 12, 6 ) int -> rax
+; V11 loc5 [V11,T47] ( 5, 2.50) int -> rax
+; V12 loc6 [V12,T42] ( 6, 5 ) long -> rax
+;* V13 loc7 [V13 ] ( 0, 0 ) int -> zero-ref
+;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref
+; V15 loc9 [V15,T40] ( 3, 6 ) int -> rsi
+; V16 loc10 [V16,T28] ( 3, 20 ) int -> rdi
+; V17 loc11 [V17,T29] ( 9, 18 ) long -> [rbp-0x58]
+; V18 loc12 [V18,T24] ( 6, 54 ) int -> rdx
+; V19 loc13 [V19,T52] ( 11, 78 ) simd16 -> mm1 <System.Runtime.Intrinsics.Vector128`1[short]>
+;* V20 loc14 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V21 loc15 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V22 loc16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V23 loc17 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V24 loc18 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V25 loc19 [V25 ] ( 0, 0 ) int -> zero-ref
+;* V26 loc20 [V26 ] ( 0, 0 ) int -> zero-ref
+;* V27 loc21 [V27 ] ( 0, 0 ) int -> zero-ref
+;# V28 OutArgs [V28 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V29 tmp1 [V29,T50] ( 2, 1 ) int -> rdi
+; V30 tmp2 [V30,T51] ( 2, 1 ) int -> rdi
+;* V31 tmp3 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V32 tmp4 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V33 tmp5 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V34 tmp6 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V35 tmp7 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V36 tmp8 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V37 tmp9 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp10 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V39 tmp11 [V39,T48] ( 2, 2 ) int -> rdx "Inline return value spill temp"
+;* V40 tmp12 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V41 tmp13 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V42 tmp14 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V43 tmp15 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V44 tmp16 [V44,T41] ( 3, 6 ) long -> rsi "Inline return value spill temp"
+; V45 tmp17 [V45,T35] ( 3, 12 ) long -> rdi "Inlining Arg"
+; V46 tmp18 [V46,T36] ( 3, 12 ) long -> rsi "Inlining Arg"
+;* V47 tmp19 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V48 tmp20 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V49 tmp21 [V49,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V50 tmp22 [V50,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V51 tmp23 [V51,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V52 tmp24 [V52,T09] ( 2, 64 ) int -> rdi
+;* V53 tmp25 [V53,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V54 tmp26 [V54,T15] ( 2, 64 ) ubyte -> rdi "Inline return value spill temp"
+;* V55 tmp27 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V56 tmp28 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V57 tmp29 [V57,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V58 tmp30 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V59 tmp31 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V60 tmp32 [V60,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V61 tmp33 [V61,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V62 tmp34 [V62,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V63 tmp35 [V63,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V64 tmp36 [V64,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V65 tmp37 [V65,T12] ( 0, 0 ) int -> zero-ref
+;* V66 tmp38 [V66,T21] ( 0, 0 ) int -> zero-ref
+;* V67 tmp39 [V67 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V68 tmp40 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V69 tmp41 [V69,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V70 tmp42 [V70,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V71 tmp43 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V72 tmp44 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V73 tmp45 [V73,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V74 tmp46 [V74,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V75 tmp47 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V76 tmp48 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V77 tmp49 [V77,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V78 tmp50 [V78,T19] ( 0, 0 ) int -> zero-ref
+;* V79 tmp51 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V80 tmp52 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V81 tmp53 [V81,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V82 tmp54 [V82,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V83 tmp55 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V84 tmp56 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V85 tmp57 [V85,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V86 tmp58 [V86,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V87 tmp59 [V87,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V88 tmp60 [V88,T27] ( 5, 20 ) int -> rdi "Inlining Arg"
+;* V89 tmp61 [V89 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V90 tmp62 [V90 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V91 tmp63 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V92 tmp64 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V93 tmp65 [V93,T49] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V94 cse0 [V94,T04] ( 29, 351.50) ref -> rsi multi-def "CSE - aggressive"
+; V95 rat0 [V95,T37] ( 3, 12 ) long -> rdi "ReplaceWithLclVar is creating a new local variable"
+; V96 rat1 [V96,T46] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 56
@@ -126,7 +127,7 @@ G_M33313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r12, r8
; byrRegs +[r12]
;; size=41 bbWeight=1 PerfScore 10.00
-G_M33313_IG02: ; bbWeight=1, gcVars=0000080000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
+G_M33313_IG02: ; bbWeight=1, gcVars=0000100000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
test r13d, r13d
jge SHORT G_M33313_IG04
;; size=5 bbWeight=1 PerfScore 1.25
@@ -217,11 +218,11 @@ G_M33313_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M33313_IG13: ; bbWeight=0.50, gcVars=0000080000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
+G_M33313_IG13: ; bbWeight=0.50, gcVars=0000100000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
sub r13d, eax
sub r14d, eax
cmp r13d, 2
- jl G_M33313_IG58
+ jl G_M33313_IG57
mov edi, r13d
lea rax, [r15+2*rdi-0x04]
mov qword ptr [rbp-0x30], rax
@@ -231,23 +232,23 @@ G_M33313_IG13: ; bbWeight=0.50, gcVars=0000080000000000 {V05}, gcrefRegs=
mov qword ptr [rbp-0x48], rcx
cmp r15, rax
jbe SHORT G_M33313_IG14
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
; gcr arg pop 0
- ;; size=78 bbWeight=0.50 PerfScore 7.00
+ ;; size=71 bbWeight=0.50 PerfScore 7.00
G_M33313_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
mov edx, dword ptr [r15]
mov dword ptr [rbp-0x4C], edx
;; size=6 bbWeight=4 PerfScore 12.00
-G_M33313_IG15: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
+G_M33313_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
cmp qword ptr [rbp-0x48], r15
jb SHORT G_M33313_IG17
- ;; size=6 bbWeight=32 PerfScore 96.00
-G_M33313_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
+ ;; size=6 bbWeight=4 PerfScore 12.00
+G_M33313_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
...
-29 (-0.68%) : 21369.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V06 loc4 [V06,T10] ( 18, 41 ) int -> [rbp-0x34]
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref single-def
-; V08 loc6 [V08,T01] ( 71,167 ) int -> [rbp-0x38]
+; V08 loc6 [V08,T01] ( 71,167.75) int -> [rbp-0x38]
; V09 loc7 [V09,T83] ( 8, 4 ) int -> [rbp-0x3C] spill-single-def
; V10 loc8 [V10,T64] ( 4, 10.50) int -> [rbp-0x40] spill-single-def
; V11 loc9 [V11,T82] ( 3, 5 ) int -> [rbp-0x44] spill-single-def
@@ -33,10 +33,10 @@
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V23 tmp1 [V23,T95] ( 3, 3 ) ref -> rdi single-def "MemoryMarshal.GetArrayDataReference array"
; V24 tmp2 [V24,T96] ( 3, 3 ) ref -> rdi class-hnd single-def "updating class info" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> r10 class-hnd "impAppendStmt" <<unknown class>>
-; V26 tmp4 [V26,T50] ( 2, 16 ) int -> r14 "Strict ordering of exceptions for Array store"
-; V27 tmp5 [V27,T23] ( 3, 24 ) ref -> rsi "MemoryMarshal.GetArrayDataReference array"
-; V28 tmp6 [V28,T24] ( 3, 24 ) ref -> rsi class-hnd "updating class info" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
+; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> rsi class-hnd "impAppendStmt" <<unknown class>>
+; V26 tmp4 [V26,T50] ( 2, 16 ) int -> r9 "Strict ordering of exceptions for Array store"
+; V27 tmp5 [V27,T23] ( 3, 24 ) ref -> rdi "MemoryMarshal.GetArrayDataReference array"
+; V28 tmp6 [V28,T24] ( 3, 24 ) ref -> rdi class-hnd "updating class info" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
;* V29 tmp7 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V30 tmp8 [V30,T67] ( 6, 8 ) int -> [rbp-0x68] spill-single-def "Inlining Arg"
; V31 tmp9 [V31,T88] ( 3, 4 ) byref -> [rbp-0xF0] spill-single-def "Inlining Arg"
@@ -93,7 +93,7 @@
;* V82 tmp60 [V82 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V83 tmp61 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V84 tmp62 [V84,T59] ( 3, 12 ) int -> rdi "Inline stloc first use temp"
-; V85 tmp63 [V85,T41] ( 4, 16 ) int -> r10 "Inline stloc first use temp"
+; V85 tmp63 [V85,T41] ( 4, 16 ) int -> r9 "Inline stloc first use temp"
; V86 tmp64 [V86,T25] ( 3, 24 ) ref -> rdi class-hnd "impAppendStmt" <<unknown class>>
;* V87 tmp65 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
; V88 tmp66 [V88,T26] ( 3, 24 ) byref -> rdi "dup spill"
@@ -116,22 +116,22 @@
; V105 tmp83 [V105,T16] ( 4, 28 ) int -> [rbp-0xAC] "Inlining Arg"
; V106 tmp84 [V106,T13] ( 5, 36 ) int -> [rbp-0xB0] "Inlining Arg"
;* V107 tmp85 [V107 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V108 tmp86 [V108,T42] ( 4, 16 ) int -> r8 "Inline stloc first use temp"
+; V108 tmp86 [V108,T42] ( 4, 16 ) int -> r9 "Inline stloc first use temp"
; V109 tmp87 [V109,T27] ( 3, 24 ) ref -> rdi class-hnd "impAppendStmt" <<unknown class>>
;* V110 tmp88 [V110 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V111 tmp89 [V111,T114] ( 3, 3 ) int -> [rbp-0xB4] spill-single-def "Inlining Arg"
; V112 tmp90 [V112,T130] ( 2, 2 ) byref -> [rbp-0x158] spill-single-def "Inlining Arg"
;* V113 tmp91 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V114 tmp92 [V114 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V115 tmp93 [V115,T60] ( 3, 12 ) int -> r8 "Inline stloc first use temp"
-; V116 tmp94 [V116,T43] ( 4, 16 ) int -> r9 "Inline stloc first use temp"
-; V117 tmp95 [V117,T28] ( 3, 24 ) ref -> r8 class-hnd "impAppendStmt" <<unknown class>>
+; V115 tmp93 [V115,T60] ( 3, 12 ) int -> r9 "Inline stloc first use temp"
+; V116 tmp94 [V116,T43] ( 4, 16 ) int -> r10 "Inline stloc first use temp"
+; V117 tmp95 [V117,T28] ( 3, 24 ) ref -> r9 class-hnd "impAppendStmt" <<unknown class>>
;* V118 tmp96 [V118 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V119 tmp97 [V119,T29] ( 3, 24 ) byref -> r8 "dup spill"
+; V119 tmp97 [V119,T29] ( 3, 24 ) byref -> r9 "dup spill"
; V120 tmp98 [V120,T86] ( 4, 4 ) int -> [rbp-0xB8] "Inlining Arg"
; V121 tmp99 [V121,T79] ( 5, 5 ) int -> [rbp-0xBC] "Inlining Arg"
;* V122 tmp100 [V122 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V123 tmp101 [V123,T118] ( 4, 2 ) int -> r10 "Inline stloc first use temp"
+; V123 tmp101 [V123,T118] ( 4, 2 ) int -> r11 "Inline stloc first use temp"
; V124 tmp102 [V124,T99] ( 3, 3 ) ref -> rdi class-hnd "impAppendStmt" <<unknown class>>
; V125 tmp103 [V125,T17] ( 4, 28 ) int -> [rbp-0xC0] "Inlining Arg"
; V126 tmp104 [V126,T18] ( 4, 28 ) int -> [rbp-0xC4] "Inlining Arg"
@@ -216,8 +216,8 @@
;* V205 tmp183 [V205 ] ( 0, 0 ) int -> zero-ref single-def "field V68._length (fldOffset=0x8)" P-INDEP
; V206 tmp184 [V206,T138] ( 2, 1 ) byref -> rax single-def "field V71._reference (fldOffset=0x0)" P-INDEP
; V207 tmp185 [V207,T145] ( 2, 1 ) int -> rcx single-def "field V71._length (fldOffset=0x8)" P-INDEP
-; V208 tmp186 [V208,T139] ( 2, 1 ) byref -> r8 "field V79._reference (fldOffset=0x0)" P-INDEP
-; V209 tmp187 [V209,T146] ( 2, 1 ) int -> r9 "field V79._length (fldOffset=0x8)" P-INDEP
+; V208 tmp186 [V208,T139] ( 2, 1 ) byref -> rax "field V79._reference (fldOffset=0x0)" P-INDEP
+; V209 tmp187 [V209,T146] ( 2, 1 ) int -> rdx "field V79._length (fldOffset=0x8)" P-INDEP
;* V210 tmp188 [V210 ] ( 0, 0 ) byref -> zero-ref "field V89._reference (fldOffset=0x0)" P-INDEP
;* V211 tmp189 [V211 ] ( 0, 0 ) int -> zero-ref "field V89._length (fldOffset=0x8)" P-INDEP
;* V212 tmp190 [V212 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-INDEP
@@ -226,10 +226,10 @@
;* V215 tmp193 [V215 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
;* V216 tmp194 [V216 ] ( 0, 0 ) byref -> zero-ref "field V95._reference (fldOffset=0x0)" P-INDEP
;* V217 tmp195 [V217 ] ( 0, 0 ) int -> zero-ref "field V95._length (fldOffset=0x8)" P-INDEP
-; V218 tmp196 [V218,T71] ( 2, 8 ) byref -> rcx "field V100._reference (fldOffset=0x0)" P-INDEP
-; V219 tmp197 [V219,T73] ( 2, 8 ) int -> rax "field V100._length (fldOffset=0x8)" P-INDEP
-; V220 tmp198 [V220,T140] ( 2, 1 ) byref -> rcx "field V110._reference (fldOffset=0x0)" P-INDEP
-; V221 tmp199 [V221,T147] ( 2, 1 ) int -> rdx "field V110._length (fldOffset=0x8)" P-INDEP
+; V218 tmp196 [V218,T71] ( 2, 8 ) byref -> rdx "field V100._reference (fldOffset=0x0)" P-INDEP
+; V219 tmp197 [V219,T73] ( 2, 8 ) int -> rcx "field V100._length (fldOffset=0x8)" P-INDEP
+; V220 tmp198 [V220,T140] ( 2, 1 ) byref -> rdx "field V110._reference (fldOffset=0x0)" P-INDEP
+; V221 tmp199 [V221,T147] ( 2, 1 ) int -> r8 "field V110._length (fldOffset=0x8)" P-INDEP
; V222 tmp200 [V222,T90] ( 2, 4 ) byref -> r11 "field V131._reference (fldOffset=0x0)" P-INDEP
; V223 tmp201 [V223,T93] ( 2, 4 ) int -> r10 "field V131._length (fldOffset=0x8)" P-INDEP
; V224 tmp202 [V224,T72] ( 2, 8 ) byref -> rax "field V136._reference (fldOffset=0x0)" P-INDEP
@@ -239,18 +239,18 @@
; V228 tmp206 [V228,T91] ( 2, 4 ) byref -> rdx "field V156._reference (fldOffset=0x0)" P-INDEP
; V229 tmp207 [V229,T94] ( 2, 4 ) int -> rcx "field V156._length (fldOffset=0x8)" P-INDEP
; V230 tmp208 [V230,T05] ( 3, 96 ) ref -> r10 "arr expr"
-; V231 tmp209 [V231,T33] ( 3, 24 ) ref -> r10 "arr expr"
-; V232 tmp210 [V232,T34] ( 3, 24 ) ref -> rsi "arr expr"
+; V231 tmp209 [V231,T33] ( 3, 24 ) ref -> r9 "arr expr"
+; V232 tmp210 [V232,T34] ( 3, 24 ) ref -> rdi "arr expr"
; V233 tmp211 [V233,T101] ( 3, 3 ) ref -> rdi "arr expr"
; V234 tmp212 [V234,T102] ( 3, 3 ) ref -> rdi "arr expr"
-; V235 tmp213 [V235,T35] ( 3, 24 ) ref -> r9 "arr expr"
+; V235 tmp213 [V235,T35] ( 3, 24 ) ref -> r10 "arr expr"
; V236 tmp214 [V236,T57] ( 3, 12 ) ref -> rcx "arr expr"
; V237 cse0 [V237,T133] ( 3, 1.50) byref -> [rbp-0x180] spill-single-def "CSE - conservative"
; V238 cse1 [V238,T11] ( 4, 40 ) ref -> rdi "CSE - moderate"
; V239 cse2 [V239,T65] ( 4, 9 ) ref -> rsi "CSE - conservative"
; V240 cse3 [V240,T66] ( 4, 9 ) ref -> rdi "CSE - conservative"
; V241 cse4 [V241,T75] ( 3, 7.75) ref -> rax hoist "CSE - conservative"
-; V242 cse5 [V242,T58] ( 3, 12 ) ref -> rsi "CSE - conservative"
+; V242 cse5 [V242,T58] ( 3, 12 ) ref -> rdi "CSE - conservative"
; V243 cse6 [V243,T12] ( 30, 37.50) ref -> rsi multi-def "CSE - moderate"
;
; Lcl frame size = 344
@@ -279,7 +279,7 @@ G_M14182_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
xor ecx, ecx
mov dword ptr [rbp-0x34], ecx
cmp eax, r12d
- ja G_M14182_IG102
+ ja G_M14182_IG98
mov edi, eax
lea rdx, bword ptr [r13+2*rdi]
; byrRegs +[rdx]
@@ -289,7 +289,7 @@ G_M14182_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
sub r8d, eax
mov dword ptr [rbp-0x68], r8d
test r8d, r8d
- jge G_M14182_IG25
+ jge G_M14182_IG21
;; size=59 bbWeight=1 PerfScore 12.00
G_M14182_IG03: ; bbWeight=0.50, gcVars=000000000000000000000000010000000000000000000000 {V31}, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, gcvars, byref
; byrRegs -[rdx rsi]
@@ -304,7 +304,7 @@ G_M14182_IG03: ; bbWeight=0.50, gcVars=0000000000000000000000000100000000
;; size=23 bbWeight=0.50 PerfScore 2.25
G_M14182_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
cmp dword ptr [rbp-0x2C], 0
- jne G_M14182_IG95
+ jne G_M14182_IG91
;; size=10 bbWeight=1 PerfScore 3.00
G_M14182_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
mov rdi, gword ptr [rbx+0x78]
@@ -312,7 +312,7 @@ G_M14182_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
cmp byte ptr [rdi], dil
mov rdi, gword ptr [rdi+0x10]
test rdi, rdi
- je G_M14182_IG101
+ je G_M14182_IG97
lea rdx, bword ptr [rdi+0x08]
; byrRegs +[rdx]
mov rdi, bword ptr [rbp-0xF0]
@@ -327,9 +327,9 @@ G_M14182_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
mov eax, dword ptr [rbp-0x68]
cmovl edi, eax
test edi, edi
- jle G_M14182_IG95
+ jle G_M14182_IG91
cmp edi, eax
- ja G_M14182_IG102
+ ja G_M14182_IG98
mov esi, edi
mov rcx, bword ptr [rbp-0xF0]
; byrRegs +[rcx]
@@ -371,7 +371,7 @@ G_M14182_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
dec r9d
mov dword ptr [rbx+0x58], r9d
cmp r9d, dword ptr [r8+0x08]
- jae G_M14182_IG100
+ jae G_M14182_IG96
mov dword ptr [r8+4*r9+0x10], 1
mov esi, dword ptr [rbp-0x70]
mov edx, dword ptr [rbp-0x74]
@@ -385,15 +385,15 @@ G_M14182_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
; gcrRegs -[rdi r8]
; gcr arg pop 0
cmp dword ptr [rbp-0x6C], 0
- je G_M14182_IG95
+ je G_M14182_IG91
mov rdi, bword ptr [rbp-0xF8]
; byrRegs +[rdi]
cmp word ptr [rdi], 64
- jne G_M14182_IG95
+ jne G_M14182_IG91
mov eax, dword ptr [rbp-0x38]
inc eax
cmp eax, r12d
- ja G_M14182_IG102
+ ja G_M14182_IG98
mov edi, eax
; byrRegs -[rdi]
lea rcx, bword ptr [r13+2*rdi]
@@ -424,18 +424,18 @@ G_M14182_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
sub eax, dword ptr [rbx+0x58]
mov dword ptr [rbp-0x44], eax
cmp dword ptr [rbp-0x78], 0
- je G_M14182_IG26
+ je G_M14182_IG20
mov rdi, bword ptr [rbp-0x100]
; byrRegs +[rdi]
cmp word ptr [rdi], 91
- jne G_M14182_IG26
+ jne G_M14182_IG19
lea edi, [rcx+0x01]
; byrRegs -[rdi]
mov esi, edi
cmp esi, r12d
;; size=206 bbWeight=0.50 PerfScore 31.25
G_M14182_IG08: ; bbWeight=0.50, isz, extend
- ja G_M14182_IG102
+ ja G_M14182_IG98
mov edi, esi
lea r8, bword ptr [r13+2*rdi]
; byrRegs +[r8]
@@ -479,12 +479,14 @@ G_M14182_IG08: ; bbWeight=0.50, isz, extend
cmp edi, 10
cmovb edx, esi
;; size=126 bbWeight=0.50 PerfScore 13.75
-G_M14182_IG09: ; bbWeight=0.50, gcVars=000000000000002000000000000000000000000000000000 {V237}, gcrefRegs=0008 {rbx}, byrefRegs=2001 {rax r13}, gcvars, byref, isz
+G_M14182_IG09: ; bbWeight=0.75, gcVars=000000000000002000000000000000000000000000000000 {V237}, gcrefRegs=0008 {rbx}, byrefRegs=2001 {rax r13}, gcvars, byref
; GC ptr vars -{V55}
test edx, edx
- jle G_M14182_IG24
+ jle G_M14182_IG22
+ ;; size=8 bbWeight=0.75 PerfScore 0.94
+G_M14182_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2001 {rax r13}, byref, isz
cmp edx, ecx
- ja G_M14182_IG102
+ ja G_M14182_IG98
mov edi, edx
lea rax, bword ptr [rax+2*rdi]
mov bword ptr [rbp-0x110], rax
@@ -503,14 +505,14 @@ G_M14182_IG09: ; bbWeight=0.50, gcVars=0000000000000020000000000000000000
add esi, dword ptr [rbp-0x30]
mov ecx, esi
cmp dword ptr [rbp-0x80], 0
- je G_M14182_IG23
+ je G_M14182_IG22
mov rdi, bword ptr [rbp-0x110]
; byrRegs +[rdi]
cmp word ptr [rdi], 46
jne G_M14182_IG22
inc ecx
cmp ecx, r12d
- ja G_M14182_IG102
+ ja G_M14182_IG98
mov edi, ecx
; byrRegs -[rdi]
lea rax, bword ptr [r13+2*rdi]
@@ -534,35 +536,37 @@ G_M14182_IG09: ; bbWeight=0.50, gcVars=0000000000000020000000000000000000
xor edi, edi
xor edx, edx
test ecx, ecx
- jbe SHORT G_M14182_IG11
+ jbe SHORT G_M14182_IG12
...
-29 (-0.65%) : 20286.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -16,7 +16,7 @@
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V06 loc4 [V06,T10] ( 18, 41 ) int -> [rbp-0x34]
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref single-def
-; V08 loc6 [V08,T05] ( 70, 95 ) int -> [rbp-0x38]
+; V08 loc6 [V08,T05] ( 70, 95.75) int -> [rbp-0x38]
; V09 loc7 [V09,T83] ( 8, 4 ) int -> [rbp-0x3C] spill-single-def
; V10 loc8 [V10,T64] ( 4, 10.50) int -> [rbp-0x40] spill-single-def
; V11 loc9 [V11,T82] ( 3, 5 ) int -> [rbp-0x44] spill-single-def
@@ -33,10 +33,10 @@
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V23 tmp1 [V23,T95] ( 3, 3 ) ref -> rdi single-def "MemoryMarshal.GetArrayDataReference array"
; V24 tmp2 [V24,T96] ( 3, 3 ) ref -> rdi class-hnd single-def "updating class info" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
-; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> r10 class-hnd "impAppendStmt" <<unknown class>>
-; V26 tmp4 [V26,T50] ( 2, 16 ) int -> r14 "Strict ordering of exceptions for Array store"
-; V27 tmp5 [V27,T23] ( 3, 24 ) ref -> rsi "MemoryMarshal.GetArrayDataReference array"
-; V28 tmp6 [V28,T24] ( 3, 24 ) ref -> rsi class-hnd "updating class info" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
+; V25 tmp3 [V25,T22] ( 3, 24 ) ref -> rsi class-hnd "impAppendStmt" <<unknown class>>
+; V26 tmp4 [V26,T50] ( 2, 16 ) int -> r9 "Strict ordering of exceptions for Array store"
+; V27 tmp5 [V27,T23] ( 3, 24 ) ref -> rdi "MemoryMarshal.GetArrayDataReference array"
+; V28 tmp6 [V28,T24] ( 3, 24 ) ref -> rdi class-hnd "updating class info" <System.Buffers.AsciiCharSearchValues`1[System.Buffers.IndexOfAnyAsciiSearcher+Default]>
;* V29 tmp7 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V30 tmp8 [V30,T67] ( 6, 8 ) int -> [rbp-0x68] spill-single-def "Inlining Arg"
; V31 tmp9 [V31,T88] ( 3, 4 ) byref -> [rbp-0xF0] spill-single-def "Inlining Arg"
@@ -93,7 +93,7 @@
;* V82 tmp60 [V82 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V83 tmp61 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V84 tmp62 [V84,T59] ( 3, 12 ) int -> rdi "Inline stloc first use temp"
-; V85 tmp63 [V85,T41] ( 4, 16 ) int -> r10 "Inline stloc first use temp"
+; V85 tmp63 [V85,T41] ( 4, 16 ) int -> r9 "Inline stloc first use temp"
; V86 tmp64 [V86,T25] ( 3, 24 ) ref -> rdi class-hnd "impAppendStmt" <<unknown class>>
;* V87 tmp65 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
; V88 tmp66 [V88,T26] ( 3, 24 ) byref -> rdi "dup spill"
@@ -116,22 +116,22 @@
; V105 tmp83 [V105,T16] ( 4, 28 ) int -> [rbp-0xAC] "Inlining Arg"
; V106 tmp84 [V106,T13] ( 5, 36 ) int -> [rbp-0xB0] "Inlining Arg"
;* V107 tmp85 [V107 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V108 tmp86 [V108,T42] ( 4, 16 ) int -> r8 "Inline stloc first use temp"
+; V108 tmp86 [V108,T42] ( 4, 16 ) int -> r9 "Inline stloc first use temp"
; V109 tmp87 [V109,T27] ( 3, 24 ) ref -> rdi class-hnd "impAppendStmt" <<unknown class>>
;* V110 tmp88 [V110 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V111 tmp89 [V111,T114] ( 3, 3 ) int -> [rbp-0xB4] spill-single-def "Inlining Arg"
; V112 tmp90 [V112,T130] ( 2, 2 ) byref -> [rbp-0x158] spill-single-def "Inlining Arg"
;* V113 tmp91 [V113 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V114 tmp92 [V114 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V115 tmp93 [V115,T60] ( 3, 12 ) int -> r8 "Inline stloc first use temp"
-; V116 tmp94 [V116,T43] ( 4, 16 ) int -> r9 "Inline stloc first use temp"
-; V117 tmp95 [V117,T28] ( 3, 24 ) ref -> r8 class-hnd "impAppendStmt" <<unknown class>>
+; V115 tmp93 [V115,T60] ( 3, 12 ) int -> r9 "Inline stloc first use temp"
+; V116 tmp94 [V116,T43] ( 4, 16 ) int -> r10 "Inline stloc first use temp"
+; V117 tmp95 [V117,T28] ( 3, 24 ) ref -> r9 class-hnd "impAppendStmt" <<unknown class>>
;* V118 tmp96 [V118 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V119 tmp97 [V119,T29] ( 3, 24 ) byref -> r8 "dup spill"
+; V119 tmp97 [V119,T29] ( 3, 24 ) byref -> r9 "dup spill"
; V120 tmp98 [V120,T86] ( 4, 4 ) int -> [rbp-0xB8] "Inlining Arg"
; V121 tmp99 [V121,T79] ( 5, 5 ) int -> [rbp-0xBC] "Inlining Arg"
;* V122 tmp100 [V122 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V123 tmp101 [V123,T118] ( 4, 2 ) int -> r10 "Inline stloc first use temp"
+; V123 tmp101 [V123,T118] ( 4, 2 ) int -> r11 "Inline stloc first use temp"
; V124 tmp102 [V124,T99] ( 3, 3 ) ref -> rdi class-hnd "impAppendStmt" <<unknown class>>
; V125 tmp103 [V125,T17] ( 4, 28 ) int -> [rbp-0xC0] "Inlining Arg"
; V126 tmp104 [V126,T18] ( 4, 28 ) int -> [rbp-0xC4] "Inlining Arg"
@@ -216,8 +216,8 @@
;* V205 tmp183 [V205 ] ( 0, 0 ) int -> zero-ref single-def "field V68._length (fldOffset=0x8)" P-INDEP
; V206 tmp184 [V206,T138] ( 2, 1 ) byref -> rax single-def "field V71._reference (fldOffset=0x0)" P-INDEP
; V207 tmp185 [V207,T145] ( 2, 1 ) int -> rcx single-def "field V71._length (fldOffset=0x8)" P-INDEP
-; V208 tmp186 [V208,T139] ( 2, 1 ) byref -> r8 "field V79._reference (fldOffset=0x0)" P-INDEP
-; V209 tmp187 [V209,T146] ( 2, 1 ) int -> r9 "field V79._length (fldOffset=0x8)" P-INDEP
+; V208 tmp186 [V208,T139] ( 2, 1 ) byref -> rax "field V79._reference (fldOffset=0x0)" P-INDEP
+; V209 tmp187 [V209,T146] ( 2, 1 ) int -> rdx "field V79._length (fldOffset=0x8)" P-INDEP
;* V210 tmp188 [V210 ] ( 0, 0 ) byref -> zero-ref "field V89._reference (fldOffset=0x0)" P-INDEP
;* V211 tmp189 [V211 ] ( 0, 0 ) int -> zero-ref "field V89._length (fldOffset=0x8)" P-INDEP
;* V212 tmp190 [V212 ] ( 0, 0 ) byref -> zero-ref "field V90._reference (fldOffset=0x0)" P-INDEP
@@ -226,10 +226,10 @@
;* V215 tmp193 [V215 ] ( 0, 0 ) int -> zero-ref "field V91._length (fldOffset=0x8)" P-INDEP
;* V216 tmp194 [V216 ] ( 0, 0 ) byref -> zero-ref "field V95._reference (fldOffset=0x0)" P-INDEP
;* V217 tmp195 [V217 ] ( 0, 0 ) int -> zero-ref "field V95._length (fldOffset=0x8)" P-INDEP
-; V218 tmp196 [V218,T71] ( 2, 8 ) byref -> rcx "field V100._reference (fldOffset=0x0)" P-INDEP
-; V219 tmp197 [V219,T73] ( 2, 8 ) int -> rax "field V100._length (fldOffset=0x8)" P-INDEP
-; V220 tmp198 [V220,T140] ( 2, 1 ) byref -> rcx "field V110._reference (fldOffset=0x0)" P-INDEP
-; V221 tmp199 [V221,T147] ( 2, 1 ) int -> rdx "field V110._length (fldOffset=0x8)" P-INDEP
+; V218 tmp196 [V218,T71] ( 2, 8 ) byref -> rdx "field V100._reference (fldOffset=0x0)" P-INDEP
+; V219 tmp197 [V219,T73] ( 2, 8 ) int -> rcx "field V100._length (fldOffset=0x8)" P-INDEP
+; V220 tmp198 [V220,T140] ( 2, 1 ) byref -> rdx "field V110._reference (fldOffset=0x0)" P-INDEP
+; V221 tmp199 [V221,T147] ( 2, 1 ) int -> r8 "field V110._length (fldOffset=0x8)" P-INDEP
; V222 tmp200 [V222,T90] ( 2, 4 ) byref -> r11 "field V131._reference (fldOffset=0x0)" P-INDEP
; V223 tmp201 [V223,T93] ( 2, 4 ) int -> r10 "field V131._length (fldOffset=0x8)" P-INDEP
; V224 tmp202 [V224,T72] ( 2, 8 ) byref -> rax "field V136._reference (fldOffset=0x0)" P-INDEP
@@ -239,18 +239,18 @@
; V228 tmp206 [V228,T91] ( 2, 4 ) byref -> rdx "field V156._reference (fldOffset=0x0)" P-INDEP
; V229 tmp207 [V229,T94] ( 2, 4 ) int -> rcx "field V156._length (fldOffset=0x8)" P-INDEP
; V230 tmp208 [V230,T04] ( 3, 96 ) ref -> r10 "arr expr"
-; V231 tmp209 [V231,T33] ( 3, 24 ) ref -> r10 "arr expr"
-; V232 tmp210 [V232,T34] ( 3, 24 ) ref -> rsi "arr expr"
+; V231 tmp209 [V231,T33] ( 3, 24 ) ref -> r9 "arr expr"
+; V232 tmp210 [V232,T34] ( 3, 24 ) ref -> rdi "arr expr"
; V233 tmp211 [V233,T101] ( 3, 3 ) ref -> rdi "arr expr"
; V234 tmp212 [V234,T102] ( 3, 3 ) ref -> rdi "arr expr"
-; V235 tmp213 [V235,T35] ( 3, 24 ) ref -> r9 "arr expr"
+; V235 tmp213 [V235,T35] ( 3, 24 ) ref -> r10 "arr expr"
; V236 tmp214 [V236,T57] ( 3, 12 ) ref -> rcx "arr expr"
; V237 cse0 [V237,T133] ( 3, 1.50) byref -> [rbp-0x180] spill-single-def "CSE - conservative"
; V238 cse1 [V238,T11] ( 4, 40 ) ref -> rdi "CSE - moderate"
; V239 cse2 [V239,T65] ( 4, 9 ) ref -> rsi "CSE - conservative"
; V240 cse3 [V240,T66] ( 4, 9 ) ref -> rdi "CSE - conservative"
; V241 cse4 [V241,T75] ( 3, 7.75) ref -> rax hoist "CSE - conservative"
-; V242 cse5 [V242,T58] ( 3, 12 ) ref -> rsi "CSE - conservative"
+; V242 cse5 [V242,T58] ( 3, 12 ) ref -> rdi "CSE - conservative"
; V243 cse6 [V243,T12] ( 30, 37.50) ref -> rsi multi-def "CSE - moderate"
;
; Lcl frame size = 344
@@ -279,7 +279,7 @@ G_M14182_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
xor ecx, ecx
mov dword ptr [rbp-0x34], ecx
cmp eax, r12d
- ja G_M14182_IG107
+ ja G_M14182_IG103
mov edi, eax
lea rdx, bword ptr [r13+2*rdi]
; byrRegs +[rdx]
@@ -289,7 +289,7 @@ G_M14182_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi},
sub r8d, eax
mov dword ptr [rbp-0x68], r8d
test r8d, r8d
- jge G_M14182_IG25
+ jge G_M14182_IG21
;; size=59 bbWeight=1 PerfScore 12.00
G_M14182_IG03: ; bbWeight=0.50, gcVars=000000000000000000000000010000000000000000000000 {V31}, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, gcvars, byref
; byrRegs -[rdx rsi]
@@ -304,7 +304,7 @@ G_M14182_IG03: ; bbWeight=0.50, gcVars=0000000000000000000000000100000000
;; size=23 bbWeight=0.50 PerfScore 2.25
G_M14182_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref
cmp dword ptr [rbp-0x2C], 0
- jne G_M14182_IG100
+ jne G_M14182_IG96
;; size=10 bbWeight=1 PerfScore 3.00
G_M14182_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13}, byref, isz
mov rdi, gword ptr [rbx+0x78]
@@ -312,7 +312,7 @@ G_M14182_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
cmp byte ptr [rdi], dil
mov rdi, gword ptr [rdi+0x10]
test rdi, rdi
- je G_M14182_IG106
+ je G_M14182_IG102
lea rdx, bword ptr [rdi+0x08]
; byrRegs +[rdx]
mov rdi, bword ptr [rbp-0xF0]
@@ -327,9 +327,9 @@ G_M14182_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
mov eax, dword ptr [rbp-0x68]
cmovl edi, eax
test edi, edi
- jle G_M14182_IG100
+ jle G_M14182_IG96
cmp edi, eax
- ja G_M14182_IG107
+ ja G_M14182_IG103
mov esi, edi
mov rcx, bword ptr [rbp-0xF0]
; byrRegs +[rcx]
@@ -371,7 +371,7 @@ G_M14182_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
dec r9d
mov dword ptr [rbx+0x58], r9d
cmp r9d, dword ptr [r8+0x08]
- jae G_M14182_IG105
+ jae G_M14182_IG101
mov dword ptr [r8+4*r9+0x10], 1
mov esi, dword ptr [rbp-0x70]
mov edx, dword ptr [rbp-0x74]
@@ -385,15 +385,15 @@ G_M14182_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
; gcrRegs -[rdi r8]
; gcr arg pop 0
cmp dword ptr [rbp-0x6C], 0
- je G_M14182_IG100
+ je G_M14182_IG96
mov rdi, bword ptr [rbp-0xF8]
; byrRegs +[rdi]
cmp word ptr [rdi], 64
- jne G_M14182_IG100
+ jne G_M14182_IG96
mov eax, dword ptr [rbp-0x38]
inc eax
cmp eax, r12d
- ja G_M14182_IG107
+ ja G_M14182_IG103
mov edi, eax
; byrRegs -[rdi]
lea rcx, bword ptr [r13+2*rdi]
@@ -424,18 +424,18 @@ G_M14182_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2000 {r13
sub eax, dword ptr [rbx+0x58]
mov dword ptr [rbp-0x44], eax
cmp dword ptr [rbp-0x78], 0
- je G_M14182_IG26
+ je G_M14182_IG20
mov rdi, bword ptr [rbp-0x100]
; byrRegs +[rdi]
cmp word ptr [rdi], 91
- jne G_M14182_IG26
+ jne G_M14182_IG19
lea edi, [rcx+0x01]
; byrRegs -[rdi]
mov esi, edi
cmp esi, r12d
;; size=206 bbWeight=0.50 PerfScore 31.25
G_M14182_IG08: ; bbWeight=0.50, isz, extend
- ja G_M14182_IG107
+ ja G_M14182_IG103
mov edi, esi
lea r8, bword ptr [r13+2*rdi]
; byrRegs +[r8]
@@ -479,12 +479,14 @@ G_M14182_IG08: ; bbWeight=0.50, isz, extend
cmp edi, 10
cmovb edx, esi
;; size=126 bbWeight=0.50 PerfScore 13.75
-G_M14182_IG09: ; bbWeight=0.50, gcVars=000000000000002000000000000000000000000000000000 {V237}, gcrefRegs=0008 {rbx}, byrefRegs=2001 {rax r13}, gcvars, byref, isz
+G_M14182_IG09: ; bbWeight=0.75, gcVars=000000000000002000000000000000000000000000000000 {V237}, gcrefRegs=0008 {rbx}, byrefRegs=2001 {rax r13}, gcvars, byref
; GC ptr vars -{V55}
test edx, edx
- jle G_M14182_IG24
+ jle G_M14182_IG22
+ ;; size=8 bbWeight=0.75 PerfScore 0.94
+G_M14182_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=2001 {rax r13}, byref, isz
cmp edx, ecx
- ja G_M14182_IG107
+ ja G_M14182_IG103
mov edi, edx
lea rax, bword ptr [rax+2*rdi]
mov bword ptr [rbp-0x110], rax
@@ -501,14 +503,14 @@ G_M14182_IG09: ; bbWeight=0.50, gcVars=0000000000000020000000000000000000
mov eax, dword ptr [rbp-0x30]
add eax, dword ptr [rbp-0x38]
cmp dword ptr [rbp-0x80], 0
- je G_M14182_IG23
+ je G_M14182_IG22
mov rdi, bword ptr [rbp-0x110]
; byrRegs +[rdi]
cmp word ptr [rdi], 46
jne G_M14182_IG22
inc eax
cmp eax, r12d
- ja G_M14182_IG107
+ ja G_M14182_IG103
mov edi, eax
; byrRegs -[rdi]
lea rcx, bword ptr [r13+2*rdi]
@@ -531,35 +533,37 @@ G_M14182_IG09: ; bbWeight=0.50, gcVars=0000000000000020000000000000000000
mov ecx, dword ptr [rbp-0x84]
xor edx, edx
test ecx, ecx
- jbe SHORT G_M14182_IG11
+ jbe SHORT G_M14182_IG12
...
+22 (+0.86%) : 3044.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
@@ -18,9 +18,9 @@
; V07 arg7 [V07,T12] ( 7, 19.29) ref -> r14 class-hnd single-def <System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[]>
; V08 arg8 [V08,T35] ( 6, 6 ) ref -> [rbp+0x28] class-hnd single-def <System.Security.Cryptography.AsymmetricAlgorithm[]>
; V09 arg9 [V09,T11] ( 8, 20.99) int -> r15 single-def
-; V10 loc0 [V10,T10] ( 19, 22.06) int -> [rbp-0x2C]
+; V10 loc0 [V10,T06] ( 19, 27.92) int -> [rbp-0x2C]
; V11 loc1 [V11 ] ( 6, 12 ) struct (16) [rbp-0x40] do-not-enreg[SFAR] multireg-arg multireg-ret must-init <System.ReadOnlyMemory`1[ubyte]>
-; V12 loc2 [V12,T07] ( 6, 24 ) ref -> rsi class-hnd <System.Security.Cryptography.Asn1.AttributeAsn[]>
+; V12 loc2 [V12,T08] ( 6, 24 ) ref -> rsi class-hnd <System.Security.Cryptography.Asn1.AttributeAsn[]>
; V13 loc3 [V13,T02] ( 10, 68 ) int -> rdi
;* V14 loc4 [V14 ] ( 0, 0 ) struct (16) zero-ref <System.Security.Cryptography.Asn1.AttributeAsn>
; V15 loc5 [V15 ] ( 24, 24 ) struct (16) [rbp-0x50] do-not-enreg[SBR] multireg-ret must-init ld-addr-op <System.ReadOnlyMemory`1[ubyte]>
@@ -28,7 +28,7 @@
; V17 loc7 [V17,T15] ( 5, 18 ) ref -> [rbp-0xB8] class-hnd exact <System.String>
; V18 loc8 [V18,T16] ( 5, 18 ) ref -> [rbp-0xC0] class-hnd <<unknown class>>
; V19 loc9 [V19,T17] ( 5, 18 ) ref -> [rbp-0xC8] class-hnd <<unknown class>>
-; V20 loc10 [V20,T01] ( 18, 68.32) int -> [rbp-0x54]
+; V20 loc10 [V20,T01] ( 18, 74.18) int -> [rbp-0x54]
; V21 OutArgs [V21 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V22 tmp1 [V22,T19] ( 4, 16 ) ref -> rsi class-hnd exact "dup spill" <System.Security.Cryptography.Asn1.AttributeAsn[]>
; V23 tmp2 [V23,T22] ( 8, 14 ) ref -> rsi
@@ -65,7 +65,7 @@
; V54 tmp33 [V54,T26] ( 6, 12 ) int -> [rbp-0x38] do-not-enreg[] "field V11._index (fldOffset=0x8)" P-DEP
; V55 tmp34 [V55,T27] ( 6, 12 ) int -> [rbp-0x34] do-not-enreg[] "field V11._length (fldOffset=0xc)" P-DEP
; V56 tmp35 [V56,T03] ( 10, 52 ) ref -> registers "field V14.AttrType (fldOffset=0x0)" P-INDEP
-; V57 tmp36 [V57,T06] ( 7, 26.02) ref -> registers "field V14.AttrValues (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T07] ( 7, 26.02) ref -> registers "field V14.AttrValues (fldOffset=0x8)" P-INDEP
; V58 tmp37 [V58,T13] ( 18, 18 ) ref -> [rbp-0x50] do-not-enreg[] "field V15._object (fldOffset=0x0)" P-DEP
; V59 tmp38 [V59,T44] ( 4, 4 ) int -> [rbp-0x48] do-not-enreg[] "field V15._index (fldOffset=0x8)" P-DEP
; V60 tmp39 [V60,T37] ( 6, 6 ) int -> [rbp-0x44] do-not-enreg[] "field V15._length (fldOffset=0xc)" P-DEP
@@ -83,13 +83,13 @@
;* V72 tmp51 [V72 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
; V73 tmp52 [V73,T00] ( 6, 96 ) byref -> registers "BlockOp address local"
; V74 tmp53 [V74,T28] ( 6, 12 ) struct (16) [rbp-0x70] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
-; V75 tmp54 [V75,T08] ( 6, 24 ) struct (16) [rbp-0x80] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
+; V75 tmp54 [V75,T09] ( 6, 24 ) struct (16) [rbp-0x80] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
; V76 tmp55 [V76,T53] ( 2, 0 ) ref -> rsi "argument with side effect"
; V77 cse0 [V77,T38] ( 3, 5.94) ref -> rsi "CSE - moderate"
; V78 cse1 [V78,T49] ( 3, 0.06) ref -> rsi "CSE - conservative"
; V79 cse2 [V79,T48] ( 4, 0.12) byref -> [rbp-0xE0] spill-single-def "CSE - conservative"
; V80 cse3 [V80,T23] ( 5, 13.86) long -> [rbp-0x88] spill-single-def "CSE - moderate"
-; V81 cse4 [V81,T09] ( 3, 23.76) int -> rdx "CSE - moderate"
+; V81 cse4 [V81,T10] ( 3, 23.76) int -> rdx "CSE - moderate"
; V82 cse5 [V82,T14] ( 18, 18 ) ref -> rsi multi-def "CSE - moderate"
; V83 cse6 [V83,T41] ( 5, 4.02) int -> [rbp-0x8C] multi-def "CSE - moderate"
; V84 cse7 [V84,T47] ( 3, 0.24) int -> [rbp-0x90] spill-single-def "CSE - conservative"
@@ -137,17 +137,17 @@ G_M36482_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=114 bbWeight=1 PerfScore 27.33
G_M36482_IG02: ; bbWeight=1, gcVars=0000008000000000 {V51}, gcrefRegs=7003 {rax rcx r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
dec ebx
- js G_M36482_IG65
+ js G_M36482_IG67
;; size=8 bbWeight=1 PerfScore 1.25
G_M36482_IG03: ; bbWeight=0.50, gcrefRegs=7003 {rax rcx r12 r13 r14}, byrefRegs=0000 {}, byref
test rcx, rcx
- je G_M36482_IG37
+ je G_M36482_IG39
test rax, rax
- je G_M36482_IG37
+ je G_M36482_IG39
test r12, r12
- je G_M36482_IG37
+ je G_M36482_IG39
cmp dword ptr [rcx+0x08], ebx
- jle G_M36482_IG37
+ jle G_M36482_IG39
mov gword ptr [rbp-0xA0], rax
; GC ptr vars +{V02}
cmp dword ptr [rax+0x08], ebx
@@ -228,13 +228,13 @@ G_M36482_IG12: ; bbWeight=0.25, gcVars=0000008020000000 {V02 V51}, gcrefR
; GC ptr vars -{V03}
mov rax, gword ptr [rbp-0xA0]
; gcrRegs +[rax]
- jmp G_M36482_IG37
+ jmp G_M36482_IG39
;; size=12 bbWeight=0.25 PerfScore 0.75
G_M36482_IG13: ; bbWeight=0.25, gcrefRegs=7002 {rcx r12 r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rax, gword ptr [rbp-0xA0]
; gcrRegs +[rax]
- jmp G_M36482_IG37
+ jmp G_M36482_IG39
;; size=12 bbWeight=0.25 PerfScore 0.75
G_M36482_IG14: ; bbWeight=1.98, gcVars=0000008060000000 {V02 V03 V51}, gcrefRegs=7400 {r10 r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref, nogc
; gcrRegs -[rax rcx] +[r10]
@@ -333,7 +333,7 @@ G_M36482_IG19: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0
add rsi, rdi
mov ecx, ecx
cmp rsi, rcx
- ja G_M36482_IG67
+ ja G_M36482_IG69
add rax, rdi
mov bword ptr [rbp-0xD0], rax
; GC ptr vars +{V34}
@@ -417,11 +417,11 @@ G_M36482_IG24: ; bbWeight=3.96, extend
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
cmp dword ptr [rbp-0x2C], -1
- jne G_M36482_IG32
+ jne G_M36482_IG30
;; size=94 bbWeight=3.96 PerfScore 99.99
G_M36482_IG25: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
test r15d, r15d
- jle G_M36482_IG32
+ jle G_M36482_IG29
mov rcx, qword ptr [rbp-0x88]
mov rdx, gword ptr [r12+rcx+0x10]
; gcrRegs +[rdx]
@@ -452,11 +452,11 @@ G_M36482_IG25: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0
; gcr arg pop 0
xor r8d, r8d
test r14, r14
- je SHORT G_M36482_IG29
+ je SHORT G_M36482_IG31
;; size=106 bbWeight=1.98 PerfScore 41.08
G_M36482_IG26: ; bbWeight=0.99, gcrefRegs=7001 {rax r12 r13 r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r14+0x08], r15d
- jl SHORT G_M36482_IG29
+ jl SHORT G_M36482_IG31
;; size=6 bbWeight=0.99 PerfScore 3.96
G_M36482_IG27: ; bbWeight=15.68, gcrefRegs=7001 {rax r12 r13 r14}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x54], r8d
@@ -477,24 +477,33 @@ G_M36482_IG27: ; bbWeight=15.68, gcrefRegs=7001 {rax r12 r13 r14}, byrefR
; byrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M36482_IG31
+ jne G_M36482_IG33
mov r8d, dword ptr [rbp-0x54]
inc r8d
cmp r8d, r15d
mov rax, gword ptr [rbp-0xC8]
; gcrRegs +[rax]
jl SHORT G_M36482_IG27
- ;; size=69 bbWeight=15.68 PerfScore 215.62
+ ;; size=73 bbWeight=15.68 PerfScore 215.62
G_M36482_IG28: ; bbWeight=3.96, gcVars=0000008060000000 {V02 V03 V51}, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
; GC ptr vars -{V17 V18 V19}
- jmp SHORT G_M36482_IG32
- ;; size=2 bbWeight=3.96 PerfScore 7.92
-G_M36482_IG29: ; bbWeight=0.16, gcVars=0000008060018000 {V02 V03 V17 V18 V51}, gcrefRegs=7001 {rax r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov r8d, dword ptr [rbp-0x2C]
+ jmp SHORT G_M36482_IG34
+ ;; size=6 bbWeight=3.96 PerfScore 11.88
+G_M36482_IG29: ; bbWeight=0.99, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+ mov r8d, dword ptr [rbp-0x2C]
+ jmp SHORT G_M36482_IG34
+ ;; size=6 bbWeight=0.99 PerfScore 2.97
+G_M36482_IG30: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+ mov r8d, dword ptr [rbp-0x2C]
+ jmp SHORT G_M36482_IG34
+ ;; size=6 bbWeight=1.98 PerfScore 5.94
+G_M36482_IG31: ; bbWeight=0.16, gcVars=0000008060018000 {V02 V03 V17 V18 V51}, gcrefRegs=7001 {rax r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax]
; GC ptr vars +{V16 V17 V18}
cmp r8d, dword ptr [r14+0x08]
- jae G_M36482_IG66
+ jae G_M36482_IG68
mov dword ptr [rbp-0x54], r8d
mov ecx, r8d
shl rcx, 6
@@ -514,58 +523,57 @@ G_M36482_IG29: ; bbWeight=0.16, gcVars=0000008060018000 {V02 V03 V17 V18
; byrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M36482_IG31
+ jne SHORT G_M36482_IG33
mov eax, dword ptr [rbp-0x54]
inc eax
cmp eax, r15d
mov r8d, eax
- jl SHORT G_M36482_IG30
- jmp SHORT G_M36482_IG32
- ;; size=75 bbWeight=0.16 PerfScore 3.01
-G_M36482_IG30: ; bbWeight=0.08, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M36482_IG32
+ mov r8d, dword ptr [rbp-0x2C]
+ jmp SHORT G_M36482_IG34
+ ;; size=79 bbWeight=0.16 PerfScore 3.17
+G_M36482_IG32: ; bbWeight=0.08, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbp-0xC8]
; gcrRegs +[rax]
- jmp SHORT G_M36482_IG29
+ jmp SHORT G_M36482_IG31
;; size=9 bbWeight=0.08 PerfScore 0.24
-G_M36482_IG31: ; bbWeight=1.98, gcVars=0000008060000000 {V02 V03 V51}, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
+G_M36482_IG33: ; bbWeight=7.84, gcVars=0000008060000000 {V02 V03 V51}, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
; GC ptr vars -{V17 V18 V19}
mov eax, dword ptr [rbp-0x54]
mov r8d, eax
- mov dword ptr [rbp-0x2C], r8d
- ;; size=10 bbWeight=1.98 PerfScore 4.46
-G_M36482_IG32: ; bbWeight=3.96, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref
- mov eax, dword ptr [rbp-0x2C]
- cmp eax, -1
- je G_M36482_IG35
- ;; size=12 bbWeight=3.96 PerfScore 8.91
-G_M36482_IG33: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
- mov r8, gword ptr [rbp+0x28]
- ; gcrRegs +[r8]
- mov r9d, dword ptr [r8+0x08]
- cmp eax, r9d
- jae G_M36482_IG66
- mov edx, eax
+ ;; size=6 bbWeight=7.84 PerfScore 9.80
+G_M36482_IG34: ; bbWeight=3.96, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref
+ cmp r8d, -1
+ je G_M36482_IG37
+ ;; size=10 bbWeight=3.96 PerfScore 4.95
+G_M36482_IG35: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+ mov r9, gword ptr [rbp+0x28]
+ ; gcrRegs +[r9]
+ mov r10d, dword ptr [r9+0x08]
+ cmp r8d, r10d
+ jae G_M36482_IG68
+ mov edx, r8d
mov qword ptr [rbp-0x98], rdx
- mov gword ptr [rbp+0x28], r8
- mov rsi, gword ptr [r8+8*rdx+0x10]
+ mov gword ptr [rbp+0x28], r9
+ mov rsi, gword ptr [r9+8*rdx+0x10]
; gcrRegs +[rsi]
test rsi, rsi
- jne G_M36482_IG34
+ jne G_M36482_IG36
cmp byte ptr [r13+0x24], 0
- je G_M36482_IG68
- mov r10, qword ptr [rbp-0x88]
- lea rdi, bword ptr [r12+r10+0x18]
+ je G_M36482_IG70
+ mov r11, qword ptr [rbp-0x88]
+ lea rdi, bword ptr [r12+r11+0x18]
; byrRegs +[rdi]
mov bword ptr [rbp-0xE8], rdi
- mov r11, gword ptr [rbp+0x18]
- ; gcrRegs +[r11]
- cmp eax, dword ptr [r11+0x08]
- jae G_M36482_IG66
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp r8d, dword ptr [rcx+0x08]
+ jae G_M36482_IG68
shl rdx, 5
add rdx, 16
- mov gword ptr [rbp+0x18], r11
- add rdx, r11
+ mov gword ptr [rbp+0x18], rcx
+ add rdx, rcx
...
+7 (+1.97%) : 14249.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
@@ -8,25 +8,25 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 4, 3.50) ref -> rdi this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
-; V01 arg1 [V01,T07] ( 4, 3 ) ref -> r15 class-hnd single-def <System.Object>
-; V02 arg2 [V02,T08] ( 4, 3 ) ref -> r14 class-hnd single-def <System.Object>
-; V03 arg3 [V03,T10] ( 4, 3 ) int -> r12 single-def
-; V04 arg4 [V04,T09] ( 4, 3 ) ref -> r13 class-hnd single-def <System.Reflection.Binder>
-; V05 arg5 [V05,T03] ( 6, 7.50) ref -> rbx class-hnd single-def <System.Object[]>
-; V06 arg6 [V06,T13] ( 2, 1 ) ref -> [rbp+0x10] class-hnd single-def <System.Globalization.CultureInfo>
-; V07 loc0 [V07,T12] ( 3, 2.50) ref -> [rbp-0x38] class-hnd exact spill-single-def <System.Reflection.RuntimeMethodInfo>
-; V08 loc1 [V08,T05] ( 8, 6.29) ref -> [rbp-0x40] class-hnd exact spill-single-def <System.Object[]>
+; V00 this [V00,T10] ( 4, 3.50) ref -> rdi this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
+; V01 arg1 [V01,T06] ( 4, 4.48) ref -> r15 class-hnd single-def <System.Object>
+; V02 arg2 [V02,T07] ( 4, 4.48) ref -> r14 class-hnd single-def <System.Object>
+; V03 arg3 [V03,T09] ( 4, 4.48) int -> r12 single-def
+; V04 arg4 [V04,T08] ( 4, 4.48) ref -> r13 class-hnd single-def <System.Reflection.Binder>
+; V05 arg5 [V05,T05] ( 6, 7.50) ref -> rbx class-hnd single-def <System.Object[]>
+; V06 arg6 [V06,T13] ( 2, 2.48) ref -> [rbp+0x10] class-hnd single-def <System.Globalization.CultureInfo>
+; V07 loc0 [V07,T11] ( 3, 3.98) ref -> [rbp-0x38] class-hnd exact spill-single-def <System.Reflection.RuntimeMethodInfo>
+; V08 loc1 [V08,T03] ( 8, 10.73) ref -> [rbp-0x40] class-hnd exact spill-single-def <System.Object[]>
; V09 loc2 [V09,T00] ( 11, 16.58) int -> [rbp-0x2C]
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> rsi class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V12 tmp2 [V12,T15] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp3 [V13,T11] ( 4, 2.50) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
+; V13 tmp3 [V13,T12] ( 4, 2.50) ref -> rdi class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
;* V14 tmp4 [V14,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;* V16 tmp6 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp7 [V17,T16] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V18 cse0 [V18,T04] ( 8, 6.75) int -> [rbp-0x30] spill-single-def "CSE - aggressive"
+; V18 cse0 [V18,T04] ( 8, 9.71) int -> [rbp-0x30] spill-single-def "CSE - aggressive"
; V19 cse1 [V19,T02] ( 3, 11.88) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 24
@@ -49,33 +49,35 @@ G_M50642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r13]
mov rbx, r9
; gcrRegs +[rbx]
- ;; size=34 bbWeight=1 PerfScore 8.00
-G_M50642_IG02: ; bbWeight=1, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov rax, gword ptr [rbp+0x10]
+ ; gcrRegs +[rax]
+ ;; size=38 bbWeight=1 PerfScore 9.00
+G_M50642_IG02: ; bbWeight=1, gcrefRegs=E089 {rax rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdi]
cmp gword ptr [rdi+0x20], 0
jne SHORT G_M50642_IG04
;; size=7 bbWeight=1 PerfScore 4.00
-G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdi]
xor rdi, rdi
; gcrRegs +[rdi]
jmp SHORT G_M50642_IG05
;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M50642_IG04: ; bbWeight=0.50, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M50642_IG04: ; bbWeight=0.50, gcrefRegs=E089 {rax rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rdi+0x20]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M50642_IG05: ; bbWeight=1, gcrefRegs=E088 {rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rax, rdi
- ; gcrRegs +[rax]
- mov gword ptr [rbp-0x38], rax
+G_M50642_IG05: ; bbWeight=1, gcrefRegs=E089 {rax rbx rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r10, rdi
+ ; gcrRegs +[r10]
+ mov gword ptr [rbp-0x38], r10
; GC ptr vars +{V07}
- test rax, rax
+ test r10, r10
je G_M50642_IG18
test rbx, rbx
jne SHORT G_M50642_IG08
;; size=21 bbWeight=1 PerfScore 3.75
-G_M50642_IG06: ; bbWeight=0.50, gcrefRegs=E080 {rdi r13 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rax rbx]
+G_M50642_IG06: ; bbWeight=0.50, gcrefRegs=E081 {rax rdi r13 r14 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx r10]
; GC ptr vars -{V07}
mov rsi, r15
; gcrRegs +[rsi]
@@ -84,9 +86,9 @@ G_M50642_IG06: ; bbWeight=0.50, gcrefRegs=E080 {rdi r13 r14 r15}, byrefRe
; gcrRegs +[rcx]
mov r8, r14
; gcrRegs +[r8]
- mov r9, gword ptr [rbp+0x10]
+ mov r9, rax
; gcrRegs +[r9]
- ;; size=16 bbWeight=0.50 PerfScore 1.00
+ ;; size=15 bbWeight=0.50 PerfScore 0.62
G_M50642_IG07: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24
pop rbx
@@ -98,16 +100,16 @@ G_M50642_IG07: ; bbWeight=0.50, epilog, nogc, extend
tail.jmp [System.Reflection.RuntimeMethodInfo:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this]
; gcr arg pop 0
;; size=20 bbWeight=0.50 PerfScore 2.62
-G_M50642_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V07}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M50642_IG08: ; bbWeight=0.50, gcVars=0000000000000800 {V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx rsi rdi r8-r9] +[rbx]
- ; GC ptr vars +{V07 V12}
+ ; GC ptr vars +{V07 V11}
+ mov gword ptr [rbp+0x10], rax
mov ecx, dword ptr [rbx+0x08]
mov dword ptr [rbp-0x30], ecx
lea esi, [rcx+0x01]
movsxd rsi, esi
mov rdi, 0xD1FFAB1E ; System.Object[]
call CORINFO_HELP_NEWARR_1_OBJ
- ; gcrRegs +[rax]
; gcr arg pop 0
mov gword ptr [rbp-0x40], rax
; GC ptr vars +{V08}
@@ -115,9 +117,9 @@ G_M50642_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V07}, gcrefRegs=
mov edx, dword ptr [rbp-0x30]
test edx, edx
jle SHORT G_M50642_IG14
- ;; size=40 bbWeight=0.50 PerfScore 4.25
-G_M50642_IG09: ; bbWeight=0.25, gcVars=0000000000001020 {V07 V08}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V12}
+ ;; size=44 bbWeight=0.50 PerfScore 4.75
+G_M50642_IG09: ; bbWeight=0.25, gcVars=0000000000000808 {V07 V08}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V11}
cmp dword ptr [rax+0x08], edx
jl SHORT G_M50642_IG12
;; size=5 bbWeight=0.25 PerfScore 1.00
@@ -138,11 +140,11 @@ G_M50642_IG10: ; bbWeight=3.96, gcrefRegs=E009 {rax rbx r13 r14 r15}, byr
; gcrRegs +[rax]
jg SHORT G_M50642_IG10
;; size=34 bbWeight=3.96 PerfScore 41.58
-G_M50642_IG11: ; bbWeight=0.50, gcrefRegs=E001 {rax r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG11: ; bbWeight=1.98, gcrefRegs=E001 {rax r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
mov edx, dword ptr [rbp-0x30]
jmp SHORT G_M50642_IG14
- ;; size=5 bbWeight=0.50 PerfScore 1.50
+ ;; size=5 bbWeight=1.98 PerfScore 5.94
G_M50642_IG12: ; bbWeight=0.04, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
mov edi, ecx
@@ -169,7 +171,7 @@ G_M50642_IG13: ; bbWeight=0.02, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0
mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
;; size=6 bbWeight=0.02 PerfScore 0.03
-G_M50642_IG14: ; bbWeight=0.50, gcrefRegs=E001 {rax r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG14: ; bbWeight=1.98, gcrefRegs=E001 {rax r13 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp edx, dword ptr [rax+0x08]
jae SHORT G_M50642_IG17
mov edi, edx
@@ -196,8 +198,8 @@ G_M50642_IG14: ; bbWeight=0.50, gcrefRegs=E001 {rax r13 r14 r15}, byrefRe
; gcrRegs -[rcx rsi rdi r8-r9 r13 r15] +[rax]
; gcr arg pop 0
nop
- ;; size=48 bbWeight=0.50 PerfScore 6.75
-G_M50642_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=48 bbWeight=1.98 PerfScore 26.73
+G_M50642_IG15: ; bbWeight=1.98, epilog, nogc, extend
add rsp, 24
pop rbx
pop r12
@@ -206,10 +208,10 @@ G_M50642_IG15: ; bbWeight=0.50, epilog, nogc, extend
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M50642_IG16: ; bbWeight=0.02, gcVars=0000000000001020 {V07 V08}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=15 bbWeight=1.98 PerfScore 8.42
+G_M50642_IG16: ; bbWeight=0.02, gcVars=0000000000000808 {V07 V08}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] +[rbx r13-r15]
- ; GC ptr vars +{V05 V07 V08 V12}
+ ; GC ptr vars +{V03 V07 V08 V11}
mov ecx, edi
mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
@@ -217,7 +219,7 @@ G_M50642_IG16: ; bbWeight=0.02, gcVars=0000000000001020 {V07 V08}, gcrefR
;; size=8 bbWeight=0.02 PerfScore 0.07
G_M50642_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx r13-r15]
- ; GC ptr vars -{V05 V07 V08 V12}
+ ; GC ptr vars -{V03 V07 V08 V11}
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
@@ -245,7 +247,7 @@ G_M50642_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=45 bbWeight=0 PerfScore 0.00
-; Total bytes of code 356, prolog size 34, PerfScore 79.32, instruction count 113, allocated bytes for code 356 (MethodHash=cb793a2d) for method System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
+; Total bytes of code 363, prolog size 38, PerfScore 111.15, instruction count 115, allocated bytes for code 363 (MethodHash=cb793a2d) for method System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
; ============================================================
Unwind Info:
+18 (+4.13%) : 11659.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
@@ -8,23 +8,23 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T13] ( 3, 2.50) ref -> [rbp-0x38] this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
-; V01 arg1 [V01,T01] ( 14, 15 ) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator>
+; V00 this [V00,T12] ( 3, 3.98) ref -> r12 this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
+; V01 arg1 [V01,T01] ( 14, 16.48) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator>
; V02 arg2 [V02,T07] ( 6, 7.50) ref -> r15 class-hnd single-def <System.Xml.XmlDictionaryString[]>
; V03 arg3 [V03,T08] ( 7, 7.04) ref -> r14 class-hnd single-def <System.Xml.XmlDictionaryString[]>
-; V04 arg4 [V04,T11] ( 5, 4 ) int -> r13 single-def
-; V05 arg5 [V05,T12] ( 4, 3 ) int -> r12 single-def
-; V06 arg6 [V06,T14] ( 1, 0.50) ref -> [rbp+0x10] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
-; V07 loc0 [V07,T00] ( 16, 19.62) int -> [rbp-0x2C]
+; V04 arg4 [V04,T11] ( 5, 5.48) int -> r13 single-def
+; V05 arg5 [V05,T13] ( 4, 3 ) int -> [rbp-0x2C] single-def
+; V06 arg6 [V06,T14] ( 1, 1.98) ref -> [rbp+0x10] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
+; V07 loc0 [V07,T00] ( 16, 19.62) int -> [rbp-0x30]
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T09] ( 6, 6 ) ubyte -> rax "Inline return value spill temp"
+; V09 tmp1 [V09,T10] ( 6, 6 ) ubyte -> rax "Inline return value spill temp"
; V10 tmp2 [V10,T02] ( 6, 16 ) ref -> rsi class-hnd "Inlining Arg" <System.Xml.XmlDictionaryString>
; V11 tmp3 [V11,T03] ( 6, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.Xml.XmlDictionaryString>
;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
; V14 tmp6 [V14,T04] ( 6, 12 ) ref -> rdi "argument with side effect"
; V15 tmp7 [V15,T05] ( 6, 12 ) ref -> rdi "argument with side effect"
-; V16 cse0 [V16,T10] ( 7, 7.04) int -> [rbp-0x30] spill-single-def "CSE - moderate"
+; V16 cse0 [V16,T09] ( 7, 8.52) int -> [rbp-0x34] spill-single-def "CSE - moderate"
; V17 cse1 [V17,T06] ( 3, 11.88) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 24
@@ -38,8 +38,9 @@ G_M11155_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
- mov gword ptr [rbp-0x38], rdi
- ; GC ptr vars +{V00}
+ mov dword ptr [rbp-0x2C], r9d
+ mov r12, rdi
+ ; gcrRegs +[r12]
mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
@@ -47,169 +48,160 @@ G_M11155_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r14, rcx
; gcrRegs +[r14]
mov r13d, r8d
- mov r12d, r9d
;; size=38 bbWeight=1 PerfScore 9.00
-G_M11155_IG02: ; bbWeight=1, gcVars=0000000000002000 {V00}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- lea ecx, [r13+0x01]
- mov r8d, dword ptr [r15+0x08]
- mov dword ptr [rbp-0x30], r8d
- cmp r8d, ecx
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
+G_M11155_IG02: ; bbWeight=1, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ lea r8d, [r13+0x01]
+ mov r9d, dword ptr [r15+0x08]
+ mov dword ptr [rbp-0x34], r9d
+ cmp r9d, r8d
+ mov rcx, gword ptr [rbp+0x10]
+ ; gcrRegs +[rcx]
jle SHORT G_M11155_IG07
;; size=21 bbWeight=1 PerfScore 5.75
-G_M11155_IG03: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
+G_M11155_IG03: ; bbWeight=0.50, gcrefRegs=D00A {rcx rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
test r14, r14
je G_M11155_IG12
- test ecx, ecx
+ test r8d, r8d
jl G_M11155_IG12
- cmp dword ptr [r14+0x08], r8d
+ cmp dword ptr [r14+0x08], r9d
jl SHORT G_M11155_IG06
- ;; size=23 bbWeight=0.50 PerfScore 3.25
-G_M11155_IG04: ; bbWeight=3.96, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rbp-0x2C], ecx
- mov edi, ecx
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M11155_IG04: ; bbWeight=3.96, gcrefRegs=D00A {rcx rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rbp-0x30], r8d
+ mov edi, r8d
mov rsi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rsi]
mov rdx, gword ptr [r14+8*rdi+0x10]
; gcrRegs +[rdx]
cmp gword ptr [rbx+0x10], 0
jne SHORT G_M11155_IG08
- ;; size=22 bbWeight=3.96 PerfScore 36.63
-G_M11155_IG05: ; bbWeight=1.98, gcrefRegs=C04D {rax rdx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=3.96 PerfScore 36.63
+G_M11155_IG05: ; bbWeight=1.98, gcrefRegs=D04E {rcx rdx rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x18], 0
jne SHORT G_M11155_IG10
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V00}
+ mov gword ptr [rbp+0x10], rcx
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, gword ptr [rsi+0x10]
mov rdx, gword ptr [rdx+0x10]
- mov r9, qword ptr [rdi]
- mov r9, qword ptr [r9+0xA0]
- call [r9+0x28]<unknown method>
- ; gcrRegs -[rax rdx rsi rdi]
+ mov r10, qword ptr [rdi]
+ mov r10, qword ptr [r10+0xA0]
+ call [r10+0x28]<unknown method>
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0
jmp SHORT G_M11155_IG09
;; size=38 bbWeight=1.98 PerfScore 39.60
-G_M11155_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax]
- ; GC ptr vars -{V00}
- mov r8d, dword ptr [rbp-0x30]
+G_M11155_IG06: ; bbWeight=0.25, gcrefRegs=D00A {rcx rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx]
+ mov r9d, dword ptr [rbp-0x34]
jmp SHORT G_M11155_IG12
;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M11155_IG07: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M11155_IG07: ; bbWeight=0.50, gcrefRegs=100A {rcx rbx r12}, byrefRegs=0000 {}, byref
; gcrRegs -[r14-r15]
jmp G_M11155_IG17
;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M11155_IG08: ; bbWeight=1.98, gcrefRegs=C04D {rax rdx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M11155_IG08: ; bbWeight=1.98, gcrefRegs=D04E {rcx rdx rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx rsi r14-r15]
cmp byte ptr [rbx+0x18], 0
jne SHORT G_M11155_IG10
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V00}
+ mov gword ptr [rbp+0x10], rcx
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
- mov r9, qword ptr [rdi]
- mov r9, qword ptr [r9+0xD0]
- call [r9+0x30]<unknown method>
- ; gcrRegs -[rax rdx rsi rdi]
+ mov r10, qword ptr [rdi]
+ mov r10, qword ptr [r10+0xD0]
+ call [r10+0x30]<unknown method>
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0
;; size=28 bbWeight=1.98 PerfScore 27.72
-G_M11155_IG09: ; bbWeight=1.98, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M11155_IG09: ; bbWeight=1.98, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
test eax, eax
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
+ mov rcx, gword ptr [rbp+0x10]
+ ; gcrRegs +[rcx]
jne G_M11155_IG20
;; size=12 bbWeight=1.98 PerfScore 4.46
-G_M11155_IG10: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- mov ecx, dword ptr [rbp-0x2C]
- inc ecx
+G_M11155_IG10: ; bbWeight=3.96, gcrefRegs=D00A {rcx rbx r12 r14 r15}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [rbp-0x30]
- cmp r8d, ecx
- jg SHORT G_M11155_IG04
- ;; size=14 bbWeight=3.96 PerfScore 13.86
-G_M11155_IG11: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ inc r8d
+ mov r9d, dword ptr [rbp-0x34]
+ cmp r9d, r8d
+ jg G_M11155_IG04
+ ;; size=20 bbWeight=3.96 PerfScore 13.86
+G_M11155_IG11: ; bbWeight=1.98, gcrefRegs=100A {rcx rbx r12}, byrefRegs=0000 {}, byref
; gcrRegs -[r14-r15]
jmp G_M11155_IG17
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M11155_IG12: ; bbWeight=0.04, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=5 bbWeight=1.98 PerfScore 3.96
+G_M11155_IG12: ; bbWeight=0.04, gcrefRegs=D00A {rcx rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r14-r15]
- cmp ecx, r8d
+ cmp r8d, r9d
jae G_M11155_IG23
- mov edi, ecx
+ mov edi, r8d
mov rsi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rsi]
- cmp ecx, dword ptr [r14+0x08]
+ cmp r8d, dword ptr [r14+0x08]
jae G_M11155_IG23
- mov dword ptr [rbp-0x2C], ecx
- mov edi, ecx
+ mov dword ptr [rbp-0x30], r8d
+ mov edi, r8d
mov rdx, gword ptr [r14+8*rdi+0x10]
; gcrRegs +[rdx]
cmp gword ptr [rbx+0x10], 0
jne SHORT G_M11155_IG14
- ;; size=43 bbWeight=0.04 PerfScore 0.59
-G_M11155_IG13: ; bbWeight=0.02, gcrefRegs=C04D {rax rdx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=0.04 PerfScore 0.59
+G_M11155_IG13: ; bbWeight=0.02, gcrefRegs=D04E {rcx rdx rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x18], 0
jne SHORT G_M11155_IG16
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V00}
+ mov gword ptr [rbp+0x10], rcx
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, gword ptr [rsi+0x10]
mov rdx, gword ptr [rdx+0x10]
- mov r9, qword ptr [rdi]
- mov r9, qword ptr [r9+0xA0]
- call [r9+0x28]<unknown method>
- ; gcrRegs -[rax rdx rsi rdi]
+ mov r10, qword ptr [rdi]
+ mov r10, qword ptr [r10+0xA0]
+ call [r10+0x28]<unknown method>
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0
jmp SHORT G_M11155_IG15
;; size=38 bbWeight=0.02 PerfScore 0.40
-G_M11155_IG14: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=C04D {rax rdx rbx rsi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax rdx rsi]
- ; GC ptr vars -{V00}
+G_M11155_IG14: ; bbWeight=0.02, gcrefRegs=D04E {rcx rdx rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx rdx rsi]
cmp byte ptr [rbx+0x18], 0
jne SHORT G_M11155_IG16
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V00}
+ mov gword ptr [rbp+0x10], rcx
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
- mov r9, qword ptr [rdi]
- mov r9, qword ptr [r9+0xD0]
- call [r9+0x30]<unknown method>
- ; gcrRegs -[rax rdx rsi rdi]
+ mov r10, qword ptr [rdi]
+ mov r10, qword ptr [r10+0xD0]
+ call [r10+0x30]<unknown method>
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0
;; size=28 bbWeight=0.02 PerfScore 0.28
-G_M11155_IG15: ; bbWeight=0.02, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M11155_IG15: ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
test eax, eax
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
...
benchmarks.run_pgo.linux.x64.checked.mch
-15 (-22.06%) : 98648.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
@@ -10,10 +10,10 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Lowering.InstructionReplacement>
-; V01 loc0 [V01,T02] ( 5,100.25) int -> rcx
-; V02 loc1 [V02,T01] ( 8,299.99) int -> registers
+; V01 loc0 [V01,T02] ( 4,100.26) int -> rcx
+; V02 loc1 [V02,T01] ( 5,299.99) int -> registers
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 9,600.00) int -> rax "impSpillLclRefs"
+; V04 tmp1 [V04,T00] ( 6,600.00) int -> rax "impSpillLclRefs"
;
; Lcl frame size = 0
@@ -27,39 +27,32 @@ G_M4100_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
G_M4100_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea edx, [rax+0x01]
cmp eax, 0xD1FFAB1E
- jge SHORT G_M4100_IG07
+ jge SHORT G_M4100_IG05
;; size=10 bbWeight=0.01 PerfScore 0.02
G_M4100_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
bt edx, ecx
- jae SHORT G_M4100_IG06
- ;; size=5 bbWeight=99.99 PerfScore 149.98
-G_M4100_IG04: ; bbWeight=99.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jae SHORT G_M4100_IG07
+ ;; size=5 bbWeight=99.99 PerfScore 149.99
+G_M4100_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, edx
lea edx, [rax+0x01]
cmp eax, 0xD1FFAB1E
- jge SHORT G_M4100_IG07
- ;; size=12 bbWeight=99.86 PerfScore 199.72
-G_M4100_IG05: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- bt edx, ecx
- jb SHORT G_M4100_IG04
- ;; size=5 bbWeight=0.00 PerfScore 0.01
-G_M4100_IG06: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- inc ecx
- mov eax, edx
- lea edx, [rax+0x01]
- cmp eax, 0xD1FFAB1E
- jl SHORT G_M4100_IG05
- ;; size=14 bbWeight=0.13 PerfScore 0.29
-G_M4100_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jl SHORT G_M4100_IG03
+ ;; size=12 bbWeight=99.99 PerfScore 199.98
+G_M4100_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ecx
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M4100_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=2 bbWeight=0.01 PerfScore 0.00
+G_M4100_IG06: ; bbWeight=0.01, epilog, nogc, extend
add rsp, 96
pop rbp
ret
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=0.01 PerfScore 0.02
+G_M4100_IG07: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ inc ecx
+ jmp SHORT G_M4100_IG04
+ ;; size=4 bbWeight=0.13 PerfScore 0.29
-; Total bytes of code 68, prolog size 14, PerfScore 350.09, instruction count 25, allocated bytes for code 68 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
+; Total bytes of code 53, prolog size 14, PerfScore 350.36, instruction count 20, allocated bytes for code 53 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
-30 (-12.66%) : 55267.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)
@@ -11,16 +11,16 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> r15
+; V01 loc0 [V01,T02] ( 5,199.99) ubyte -> r15
; V02 loc1 [V02,T04] ( 4,199.98) ref -> r14 class-hnd <<unknown class>>
; V03 loc2 [V03,T07] ( 3,100 ) ref -> r13 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> rbx
+; V04 loc3 [V04,T00] ( 11,400.98) int -> rbx
; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> rdi "Inline return value spill temp"
+; V07 tmp1 [V07,T03] ( 6,199.98) ubyte -> rdi "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T05] ( 4,199.98) byref -> rax "Inline stloc first use temp"
-; V10 cse0 [V10,T06] ( 7,101.01) int -> r12 "CSE - aggressive"
+; V10 cse0 [V10,T06] ( 5,101.01) int -> r12 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -41,87 +41,16 @@ G_M16914_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[r13]
mov ebx, dword ptr [rbp+0x24]
;; size=66 bbWeight=0.01 PerfScore 0.17
-G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
+G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
mov r12d, dword ptr [r13+0x08]
cmp r12d, ebx
- jle G_M16914_IG09
- ;; size=13 bbWeight=0.01 PerfScore 0.03
-G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- test ebx, ebx
- jl SHORT G_M16914_IG05
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M16914_IG04: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- mov edi, ebx
- mov rsi, gword ptr [r13+8*rdi+0x10]
- ; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b
- mov rdi, r14
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ; byrRegs +[rax]
- test rax, rax
- jne SHORT G_M16914_IG07
- xor edi, edi
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jle SHORT G_M16914_IG09
- jmp SHORT G_M16914_IG04
- ;; size=42 bbWeight=98.99 PerfScore 1385.86
-G_M16914_IG05: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rax]
- cmp ebx, r12d
- jae SHORT G_M16914_IG06
- mov edi, ebx
- mov rsi, gword ptr [r13+8*rdi+0x10]
- ; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b
- mov rdi, r14
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ; byrRegs +[rax]
- test rax, rax
- jne SHORT G_M16914_IG08
- xor edi, edi
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jle SHORT G_M16914_IG09
- jmp SHORT G_M16914_IG05
- ;; size=47 bbWeight=1.00 PerfScore 15.25
-G_M16914_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13-r14]
- ; byrRegs -[rax]
- call CORINFO_HELP_RNGCHKFAIL
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r13-r14]
- mov edi, 1
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jg SHORT G_M16914_IG04
- jmp SHORT G_M16914_IG09
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M16914_IG08: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- mov edi, 1
- mov eax, r15d
- xor eax, edi
- movzx r15, al
- inc ebx
- cmp r12d, ebx
jg SHORT G_M16914_IG05
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M16914_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=9 bbWeight=0.01 PerfScore 0.03
+G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r13-r14]
mov eax, r15d
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
+ ;; size=3 bbWeight=0.01 PerfScore 0.00
+G_M16914_IG04: ; bbWeight=0.01, epilog, nogc, extend
add rsp, 120
pop rbx
pop r12
@@ -130,9 +59,82 @@ G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0.01 PerfScore 0.04
+G_M16914_IG05: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r13-r14]
+ test ebx, ebx
+ jl SHORT G_M16914_IG09
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ mov edi, ebx
+ mov rsi, gword ptr [r13+8*rdi+0x10]
+ ; gcrRegs +[rsi]
+ cmp byte ptr [r14], r14b
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; byrRegs +[rax]
+ test rax, rax
+ jne SHORT G_M16914_IG13
+ xor edi, edi
+ ;; size=26 bbWeight=98.99 PerfScore 989.90
+G_M16914_IG07: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax]
+ xor edi, r15d
+ movzx r15, dil
+ inc ebx
+ cmp r12d, ebx
+ jg SHORT G_M16914_IG06
+ ;; size=14 bbWeight=98.99 PerfScore 197.98
+G_M16914_IG08: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r13-r14]
+ jmp SHORT G_M16914_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r13-r14]
+ cmp ebx, r12d
+ jae SHORT G_M16914_IG12
+ mov edi, ebx
+ mov rsi, gword ptr [r13+8*rdi+0x10]
+ ; gcrRegs +[rsi]
+ cmp byte ptr [r14], r14b
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; byrRegs +[rax]
+ test rax, rax
+ jne SHORT G_M16914_IG14
+ xor edi, edi
+ ;; size=31 bbWeight=1.00 PerfScore 11.25
+G_M16914_IG10: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax]
+ mov eax, r15d
+ xor eax, edi
+ movzx r15, al
+ inc ebx
+ cmp r12d, ebx
+ jg SHORT G_M16914_IG09
+ ;; size=16 bbWeight=1.00 PerfScore 2.25
+G_M16914_IG11: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r13-r14]
+ jmp SHORT G_M16914_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M16914_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M16914_IG13: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r13-r14]
+ mov edi, 1
+ jmp SHORT G_M16914_IG07
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M16914_IG14: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ mov edi, 1
+ jmp SHORT G_M16914_IG10
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 51, PerfScore 1401.32, instruction count 72, allocated bytes for code 237 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 207, prolog size 51, PerfScore 1201.68, instruction count 63, allocated bytes for code 207 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
-30 (-12.66%) : 61259.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)
@@ -11,16 +11,16 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> r15
+; V01 loc0 [V01,T02] ( 5,199.99) ubyte -> r15
; V02 loc1 [V02,T04] ( 4,199.98) ref -> r14 class-hnd <<unknown class>>
; V03 loc2 [V03,T07] ( 3,100.00) ref -> r13 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> rbx
+; V04 loc3 [V04,T00] ( 11,400.98) int -> rbx
; V05 loc4 [V05,T08] ( 1, 1 ) ref -> [rbp+0x18] ld-addr-op class-hnd tier0-frame <<unknown class>>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T03] ( 8,199.98) ubyte -> rdi "Inline return value spill temp"
+; V07 tmp1 [V07,T03] ( 6,199.98) ubyte -> rdi "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 4,399.96) ref -> rsi class-hnd exact "Inlining Arg" <<unknown class>>
; V09 tmp3 [V09,T05] ( 4,199.98) byref -> rax "Inline stloc first use temp"
-; V10 cse0 [V10,T06] ( 7,101.01) int -> r12 "CSE - aggressive"
+; V10 cse0 [V10,T06] ( 5,101.01) int -> r12 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -41,87 +41,16 @@ G_M16914_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[r13]
mov ebx, dword ptr [rbp+0x24]
;; size=66 bbWeight=0.01 PerfScore 0.17
-G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
+G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
mov r12d, dword ptr [r13+0x08]
cmp r12d, ebx
- jle G_M16914_IG09
- ;; size=13 bbWeight=0.01 PerfScore 0.03
-G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- test ebx, ebx
- jl SHORT G_M16914_IG05
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M16914_IG04: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- mov edi, ebx
- mov rsi, gword ptr [r13+8*rdi+0x10]
- ; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b
- mov rdi, r14
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ; byrRegs +[rax]
- test rax, rax
- jne SHORT G_M16914_IG07
- xor edi, edi
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jle SHORT G_M16914_IG09
- jmp SHORT G_M16914_IG04
- ;; size=42 bbWeight=98.99 PerfScore 1385.86
-G_M16914_IG05: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rax]
- cmp ebx, r12d
- jae SHORT G_M16914_IG06
- mov edi, ebx
- mov rsi, gword ptr [r13+8*rdi+0x10]
- ; gcrRegs +[rsi]
- cmp byte ptr [r14], r14b
- mov rdi, r14
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ; byrRegs +[rax]
- test rax, rax
- jne SHORT G_M16914_IG08
- xor edi, edi
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jle SHORT G_M16914_IG09
- jmp SHORT G_M16914_IG05
- ;; size=47 bbWeight=1.00 PerfScore 15.25
-G_M16914_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13-r14]
- ; byrRegs -[rax]
- call CORINFO_HELP_RNGCHKFAIL
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M16914_IG07: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r13-r14]
- mov edi, 1
- xor edi, r15d
- movzx r15, dil
- inc ebx
- cmp r12d, ebx
- jg SHORT G_M16914_IG04
- jmp SHORT G_M16914_IG09
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M16914_IG08: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- mov edi, 1
- mov eax, r15d
- xor eax, edi
- movzx r15, al
- inc ebx
- cmp r12d, ebx
jg SHORT G_M16914_IG05
- ;; size=21 bbWeight=0 PerfScore 0.00
-G_M16914_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=9 bbWeight=0.01 PerfScore 0.03
+G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r13-r14]
mov eax, r15d
- ;; size=3 bbWeight=0 PerfScore 0.00
-G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
+ ;; size=3 bbWeight=0.01 PerfScore 0.00
+G_M16914_IG04: ; bbWeight=0.01, epilog, nogc, extend
add rsp, 120
pop rbx
pop r12
@@ -130,9 +59,82 @@ G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend
pop r15
pop rbp
ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=0.01 PerfScore 0.04
+G_M16914_IG05: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r13-r14]
+ test ebx, ebx
+ jl SHORT G_M16914_IG09
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M16914_IG06: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ mov edi, ebx
+ mov rsi, gword ptr [r13+8*rdi+0x10]
+ ; gcrRegs +[rsi]
+ cmp byte ptr [r14], r14b
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; byrRegs +[rax]
+ test rax, rax
+ jne SHORT G_M16914_IG13
+ xor edi, edi
+ ;; size=26 bbWeight=98.99 PerfScore 989.90
+G_M16914_IG07: ; bbWeight=98.99, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax]
+ xor edi, r15d
+ movzx r15, dil
+ inc ebx
+ cmp r12d, ebx
+ jg SHORT G_M16914_IG06
+ ;; size=14 bbWeight=98.99 PerfScore 197.98
+G_M16914_IG08: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r13-r14]
+ jmp SHORT G_M16914_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r13-r14]
+ cmp ebx, r12d
+ jae SHORT G_M16914_IG12
+ mov edi, ebx
+ mov rsi, gword ptr [r13+8*rdi+0x10]
+ ; gcrRegs +[rsi]
+ cmp byte ptr [r14], r14b
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; byrRegs +[rax]
+ test rax, rax
+ jne SHORT G_M16914_IG14
+ xor edi, edi
+ ;; size=31 bbWeight=1.00 PerfScore 11.25
+G_M16914_IG10: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[rax]
+ mov eax, r15d
+ xor eax, edi
+ movzx r15, al
+ inc ebx
+ cmp r12d, ebx
+ jg SHORT G_M16914_IG09
+ ;; size=16 bbWeight=1.00 PerfScore 2.25
+G_M16914_IG11: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[r13-r14]
+ jmp SHORT G_M16914_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M16914_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M16914_IG13: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r13-r14]
+ mov edi, 1
+ jmp SHORT G_M16914_IG07
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M16914_IG14: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+ mov edi, 1
+ jmp SHORT G_M16914_IG10
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 237, prolog size 51, PerfScore 1401.32, instruction count 72, allocated bytes for code 237 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
+; Total bytes of code 207, prolog size 51, PerfScore 1201.68, instruction count 63, allocated bytes for code 207 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================
Unwind Info:
+18 (+5.11%) : 124024.dasm - System.Text.RegularExpressions.Tests.PerfRegexCache:CreatePatterns(int,int):System.String
@@ -10,24 +10,24 @@
; 0 inlinees with PGO data; 5 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 9,102.02) int -> rbx single-def
+; V00 arg0 [V00,T04] ( 10,102.03) int -> rbx single-def
; V01 arg1 [V01,T05] ( 4,101.99) int -> r15 single-def
; V02 loc0 [V02,T03] ( 13,201.00) ref -> r13 class-hnd exact <System.String[]>
-; V03 loc1 [V03,T12] ( 2, 0 ) ref -> r15 class-hnd exact <System.Random>
+; V03 loc1 [V03,T11] ( 2, 0.01) ref -> r15 class-hnd exact <System.Random>
; V04 loc2 [V04,T00] ( 14,501.97) int -> r14 ld-addr-op
;* V05 loc3 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Text.StringBuilder>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String>
;* V07 loc5 [V07 ] ( 0, 0 ) int -> zero-ref
; V08 loc6 [V08,T08] ( 1, 1 ) ushort -> [rbp+0x78] ld-addr-op tier0-frame
-; V09 loc7 [V09,T09] ( 8, 0 ) int -> r14
-; V10 loc8 [V10,T10] ( 4, 0 ) int -> r12
+; V09 loc7 [V09,T10] ( 9, 0.02) int -> r14
+; V10 loc8 [V10,T12] ( 4, 0 ) int -> r12
; V11 loc9 [V11,T13] ( 2, 0 ) ref -> [rbp+0x68] class-hnd exact spill-single-def tier0-frame <System.String>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Text.StringBuilder>
;* V14 tmp2 [V14 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
; V16 tmp4 [V16,T01] ( 4,399.96) ref -> rsi class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
-; V17 tmp5 [V17,T11] ( 3, 0 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Random>
+; V17 tmp5 [V17,T09] ( 3, 0.06) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Random>
; V18 tmp6 [V18,T14] ( 2, 0 ) ref -> rsi class-hnd exact "Strict ordering of exceptions for Array store" <System.String>
;* V19 tmp7 [V19 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V20 tmp8 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.String>
@@ -55,10 +55,10 @@ G_M12758_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[r13]
mov r14d, dword ptr [rbp+0x98]
;; size=81 bbWeight=0.01 PerfScore 0.17
-G_M12758_IG02: ; bbWeight=0.01, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+G_M12758_IG02: ; bbWeight=0.01, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
cmp r14d, ebx
- jge SHORT G_M12758_IG09
- ;; size=5 bbWeight=0.01 PerfScore 0.01
+ jge G_M12758_IG07
+ ;; size=9 bbWeight=0.01 PerfScore 0.01
G_M12758_IG03: ; bbWeight=0.01, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
test r13, r13
je SHORT G_M12758_IG06
@@ -74,7 +74,7 @@ G_M12758_IG04: ; bbWeight=98.99, gcrefRegs=2000 {r13}, byrefRegs=0000 {},
cdq
idiv edx:eax, r15d
cmp edx, r12d
- jae SHORT G_M12758_IG08
+ jae G_M12758_IG11
mov edi, edx
mov rsi, gword ptr [r13+8*rdi+0x10]
; gcrRegs +[rsi]
@@ -87,9 +87,9 @@ G_M12758_IG04: ; bbWeight=98.99, gcrefRegs=2000 {r13}, byrefRegs=0000 {},
inc r14d
cmp r14d, ebx
jl SHORT G_M12758_IG04
- ;; size=40 bbWeight=98.99 PerfScore 3365.66
+ ;; size=44 bbWeight=98.99 PerfScore 3365.66
G_M12758_IG05: ; bbWeight=0.01, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M12758_IG09
+ jmp SHORT G_M12758_IG07
;; size=2 bbWeight=0.01 PerfScore 0.02
G_M12758_IG06: ; bbWeight=1.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
mov eax, r14d
@@ -97,12 +97,12 @@ G_M12758_IG06: ; bbWeight=1.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {},
idiv edx:eax, r15d
mov r12d, dword ptr [r13+0x08]
cmp edx, r12d
- jae SHORT G_M12758_IG08
+ jae G_M12758_IG11
mov edi, edx
mov rsi, gword ptr [r13+8*rdi+0x10]
; gcrRegs +[rsi]
cmp r14d, r12d
- jae SHORT G_M12758_IG08
+ jae G_M12758_IG11
mov edi, r14d
lea rdi, bword ptr [r13+8*rdi+0x10]
; byrRegs +[rdi]
@@ -111,18 +111,9 @@ G_M12758_IG06: ; bbWeight=1.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {},
; byrRegs -[rdi]
inc r14d
cmp r14d, ebx
- jge SHORT G_M12758_IG09
- ;; size=49 bbWeight=1.00 PerfScore 37.25
-G_M12758_IG07: ; bbWeight=0.00, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M12758_IG06
- ;; size=2 bbWeight=0.00 PerfScore 0.00
-G_M12758_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r13]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M12758_IG09: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r13]
+ jl SHORT G_M12758_IG06
+ ;; size=57 bbWeight=1.00 PerfScore 37.25
+G_M12758_IG07: ; bbWeight=0.01, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
mov rdi, 0xD1FFAB1E ; System.Random
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -136,9 +127,10 @@ G_M12758_IG09: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byr
; gcrRegs -[rax rdi]
; gcr arg pop 0
xor r14d, r14d
- jmp SHORT G_M12758_IG11
- ;; size=37 bbWeight=0 PerfScore 0.00
-G_M12758_IG10: ; bbWeight=0, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
+ cmp r14d, ebx
+ jge SHORT G_M12758_IG09
+ ;; size=40 bbWeight=0.01 PerfScore 0.07
+G_M12758_IG08: ; bbWeight=0, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, r15
; gcrRegs +[rdi]
mov esi, r14d
@@ -149,14 +141,14 @@ G_M12758_IG10: ; bbWeight=0, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {},
mov r12d, eax
mov edi, dword ptr [r13+0x08]
cmp r14d, edi
- jae SHORT G_M12758_IG08
+ jae SHORT G_M12758_IG11
mov esi, r14d
mov rax, gword ptr [r13+8*rsi+0x10]
; gcrRegs +[rax]
mov gword ptr [rbp+0x68], rax
; GC ptr vars +{V11}
cmp r12d, edi
- jae SHORT G_M12758_IG08
+ jae SHORT G_M12758_IG11
mov edi, r12d
mov rsi, gword ptr [r13+8*rdi+0x10]
; gcrRegs +[rsi]
@@ -176,14 +168,15 @@ G_M12758_IG10: ; bbWeight=0, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {},
; gcrRegs -[rsi]
; byrRegs -[rdi]
inc r14d
- ;; size=84 bbWeight=0 PerfScore 0.00
-G_M12758_IG11: ; bbWeight=0, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref, isz
cmp r14d, ebx
- jl SHORT G_M12758_IG10
+ jl SHORT G_M12758_IG08
+ ;; size=89 bbWeight=0 PerfScore 0.00
+G_M12758_IG09: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
mov rax, r13
; gcrRegs +[rax]
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M12758_IG12: ; bbWeight=0, epilog, nogc, extend
+ ;; size=3 bbWeight=0 PerfScore 0.00
+G_M12758_IG10: ; bbWeight=0, epilog, nogc, extend
add rsp, 232
pop rbx
pop r12
@@ -193,8 +186,14 @@ G_M12758_IG12: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=0 PerfScore 0.00
+G_M12758_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r13]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ int3
+ ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 81, PerfScore 3403.17, instruction count 97, allocated bytes for code 352 (MethodHash=340cce29) for method System.Text.RegularExpressions.Tests.Perf_Regex_Cache:CreatePatterns(int,int):System.String[] (Tier1-OSR)
+; Total bytes of code 370, prolog size 81, PerfScore 3403.23, instruction count 98, allocated bytes for code 370 (MethodHash=340cce29) for method System.Text.RegularExpressions.Tests.Perf_Regex_Cache:CreatePatterns(int,int):System.String[] (Tier1-OSR)
; ============================================================
Unwind Info:
+29 (+5.64%) : 8053.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
@@ -9,22 +9,22 @@
; 2 inlinees with PGO data; 36 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 13, 3 ) byref -> r15 single-def
-; V01 arg1 [V01,T03] ( 9, 3 ) short -> r14 single-def
-; V02 arg2 [V02,T00] ( 16, 7.20) int -> rbx
+; V00 arg0 [V00,T03] ( 13, 3 ) byref -> r15 single-def
+; V01 arg1 [V01,T04] ( 9, 3 ) short -> r14 single-def
+; V02 arg2 [V02,T00] ( 16, 27 ) int -> rbx
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
-; V04 loc1 [V04,T07] ( 14, 0.60) long -> rax
+; V04 loc1 [V04,T01] ( 14, 20.40) long -> rax
;* V05 loc2 [V05 ] ( 0, 0 ) simd64 -> zero-ref <System.Runtime.Intrinsics.Vector512`1[short]>
;* V06 loc3 [V06 ] ( 0, 0 ) simd64 -> zero-ref <System.Runtime.Intrinsics.Vector512`1[short]>
;* V07 loc4 [V07 ] ( 0, 0 ) byref -> zero-ref
;* V08 loc5 [V08 ] ( 0, 0 ) byref -> zero-ref
; V09 loc6 [V09,T09] ( 8, 4.80) simd32 -> mm1 <System.Runtime.Intrinsics.Vector256`1[short]>
; V10 loc7 [V10,T10] ( 3, 2.20) simd32 -> mm0 <System.Runtime.Intrinsics.Vector256`1[short]>
-; V11 loc8 [V11,T01] ( 7, 5.20) byref -> rax
-; V12 loc9 [V12,T04] ( 4, 2.20) byref -> r13 single-def
+; V11 loc8 [V11,T02] ( 7, 5.20) byref -> rax
+; V12 loc9 [V12,T05] ( 4, 2.20) byref -> r13 single-def
; V13 loc10 [V13,T11] ( 8, 1.20) simd16 -> mm1 <System.Runtime.Intrinsics.Vector128`1[short]>
; V14 loc11 [V14,T12] ( 3, 0.60) simd16 -> mm0 <System.Runtime.Intrinsics.Vector128`1[short]>
-; V15 loc12 [V15,T05] ( 7, 1.20) byref -> rax
+; V15 loc12 [V15,T06] ( 7, 1.20) byref -> rax
; V16 loc13 [V16,T08] ( 4, 0.60) byref -> r12 single-def
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -67,7 +67,7 @@
;* V55 tmp38 [V55 ] ( 0, 0 ) simd16 -> zero-ref "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[short]>
;* V56 tmp39 [V56 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V57 tmp40 [V57 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V58 tmp41 [V58,T06] ( 9, 0.80) int -> rax "Single return block return value"
+; V58 tmp41 [V58,T07] ( 9, 0.80) int -> rax "Single return block return value"
;
; Lcl frame size = 8
@@ -88,16 +88,16 @@ G_M46731_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=27 bbWeight=1 PerfScore 9.25
G_M46731_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
test ebx, ebx
- jl G_M46731_IG21
+ jl G_M46731_IG23
;; size=8 bbWeight=1 PerfScore 1.25
-G_M46731_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+G_M46731_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
cmp ebx, 8
- jl G_M46731_IG12
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M46731_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
- cmp ebx, 16
jl SHORT G_M46731_IG10
- ;; size=5 bbWeight=0.80 PerfScore 1.00
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M46731_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+ cmp ebx, 16
+ jl G_M46731_IG14
+ ;; size=9 bbWeight=0.80 PerfScore 1.00
G_M46731_IG05: ; bbWeight=0.60, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
movsx rax, r14w
vpbroadcastw ymm0, eax
@@ -111,7 +111,7 @@ G_M46731_IG05: ; bbWeight=0.60, gcrefRegs=0000 {}, byrefRegs=8000 {r15},
G_M46731_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A001 {rax r13 r15}, byref, isz
vpcmpeqw ymm1, ymm0, ymmword ptr [rax]
vptest ymm1, ymm1
- jne G_M46731_IG23
+ jne G_M46731_IG20
add rax, 32
cmp rax, r13
jbe SHORT G_M46731_IG06
@@ -123,7 +123,7 @@ G_M46731_IG07: ; bbWeight=0.60, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r1
je SHORT G_M46731_IG08
vpcmpeqw ymm1, ymm0, ymmword ptr [r13]
vptest ymm1, ymm1
- jne G_M46731_IG22
+ jne G_M46731_IG19
;; size=23 bbWeight=0.60 PerfScore 6.30
G_M46731_IG08: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r13 r15]
@@ -140,51 +140,24 @@ G_M46731_IG09: ; bbWeight=0.80, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=0.80 PerfScore 4.20
-G_M46731_IG10: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+G_M46731_IG10: ; bbWeight=20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs +[r15]
- movsx rax, r14w
- vpbroadcastw xmm0, eax
- mov rax, r15
- ; byrRegs +[rax]
- lea edi, [rbx-0x08]
- movsxd rdi, edi
- lea r12, bword ptr [rax+2*rdi]
- ; byrRegs +[r12]
- ;; size=23 bbWeight=0.20 PerfScore 0.55
-G_M46731_IG11: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=9001 {rax r12 r15}, byref, isz
- vpcmpeqw xmm1, xmm0, xmmword ptr [rax]
- vptest xmm1, xmm1
- jne G_M46731_IG25
- add rax, 16
- cmp rax, r12
- jbe SHORT G_M46731_IG11
- mov eax, ebx
- ; byrRegs -[rax]
- test al, 7
- je SHORT G_M46731_IG08
- vpcmpeqw xmm1, xmm0, xmmword ptr [r12]
- vptest xmm1, xmm1
- jne G_M46731_IG24
- jmp SHORT G_M46731_IG08
- ;; size=49 bbWeight=0.20 PerfScore 3.80
-G_M46731_IG12: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
- ; byrRegs -[r12]
xor eax, eax
cmp ebx, 4
- jge SHORT G_M46731_IG16
- ;; size=7 bbWeight=0.20 PerfScore 0.30
-G_M46731_IG13: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ jge G_M46731_IG24
+ ;; size=11 bbWeight=20 PerfScore 30.00
+G_M46731_IG11: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
test ebx, ebx
jle SHORT G_M46731_IG08
;; size=4 bbWeight=0.20 PerfScore 0.25
-G_M46731_IG14: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M46731_IG12: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
dec ebx
movsx rdi, word ptr [r15+2*rax]
movsx rsi, r14w
cmp edi, esi
- jne SHORT G_M46731_IG17
- ;; size=15 bbWeight=0.20 PerfScore 1.15
-G_M46731_IG15: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jne G_M46731_IG25
+ ;; size=19 bbWeight=0.20 PerfScore 1.15
+G_M46731_IG13: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r15]
vzeroupper
add rsp, 8
@@ -196,60 +169,48 @@ G_M46731_IG15: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
pop rbp
ret
;; size=18 bbWeight=0.20 PerfScore 1.05
-G_M46731_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M46731_IG14: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs +[r15]
- add ebx, -4
- movsx rcx, word ptr [r15+2*rax]
- movsx rdx, r14w
- cmp ecx, edx
- je SHORT G_M46731_IG15
- movsx rcx, word ptr [r15+2*rax+0x02]
- movsx rdx, r14w
- cmp ecx, edx
- je SHORT G_M46731_IG20
- movsx rcx, word ptr [r15+2*rax+0x04]
- movsx rdx, r14w
- cmp ecx, edx
- je SHORT G_M46731_IG19
- movsx rcx, word ptr [r15+2*rax+0x06]
- movsx rdx, r14w
- cmp ecx, edx
- je SHORT G_M46731_IG18
- add rax, 4
- test ebx, ebx
- jle G_M46731_IG08
- jmp SHORT G_M46731_IG14
- ;; size=72 bbWeight=0 PerfScore 0.00
-G_M46731_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
- inc rax
+ movsx rax, r14w
+ vpbroadcastw xmm0, eax
+ mov rax, r15
+ ; byrRegs +[rax]
+ lea edi, [rbx-0x08]
+ movsxd rdi, edi
+ lea r12, bword ptr [rax+2*rdi]
+ ; byrRegs +[r12]
+ ;; size=23 bbWeight=0.20 PerfScore 0.55
+G_M46731_IG15: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=9001 {rax r12 r15}, byref, isz
+ vpcmpeqw xmm1, xmm0, xmmword ptr [rax]
+ vptest xmm1, xmm1
+ jne G_M46731_IG22
+ add rax, 16
+ cmp rax, r12
+ jbe SHORT G_M46731_IG15
+ mov eax, ebx
+ ; byrRegs -[rax]
+ test al, 7
+ je SHORT G_M46731_IG08
+ vpcmpeqw xmm1, xmm0, xmmword ptr [r12]
+ vptest xmm1, xmm1
+ jne SHORT G_M46731_IG21
+ jmp G_M46731_IG08
+ ;; size=48 bbWeight=0.20 PerfScore 3.80
+G_M46731_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r12 r15]
+ add eax, 3
+ jmp SHORT G_M46731_IG13
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M46731_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ add eax, 2
jmp SHORT G_M46731_IG13
;; size=5 bbWeight=0 PerfScore 0.00
G_M46731_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[r15]
- add eax, 3
- jmp SHORT G_M46731_IG15
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M46731_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add eax, 2
- jmp SHORT G_M46731_IG15
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M46731_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
inc eax
- jmp SHORT G_M46731_IG15
+ jmp SHORT G_M46731_IG13
;; size=4 bbWeight=0 PerfScore 0.00
-G_M46731_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
- ; byrRegs +[r15]
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ; gcr arg pop 0
- jmp G_M46731_IG03
- ;; size=31 bbWeight=0 PerfScore 0.00
-G_M46731_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
- ; byrRegs +[r13]
+G_M46731_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15}, byref
+ ; byrRegs +[r13 r15]
sub r13, r15
; byrRegs -[r13]
shr r13, 1
@@ -258,9 +219,9 @@ G_M46731_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=A000 {r13 r15},
vpmovmskb eax, xmm0
tzcnt eax, eax
add eax, r13d
- jmp G_M46731_IG15
+ jmp G_M46731_IG13
;; size=37 bbWeight=0 PerfScore 0.00
-G_M46731_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8001 {rax r15}, byref
+G_M46731_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=8001 {rax r15}, byref
; byrRegs +[rax]
sub rax, r15
; byrRegs -[rax]
...
+15 (+8.02%) : 12368.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
@@ -25,7 +25,7 @@
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <ubyte[]>
;* V13 tmp3 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <ubyte[]>
;* V14 tmp4 [V14 ] ( 0, 0 ) int -> zero-ref
-; V15 tmp5 [V15,T03] ( 7, 0 ) ref -> rbx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V15 tmp5 [V15,T03] ( 7, 0.10) ref -> rbx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V16 tmp6 [V16 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V17 tmp7 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V18 tmp8 [V18 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -34,9 +34,9 @@
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V24 tmp14 [V24,T05] ( 3, 0 ) ref -> rdi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V25 tmp15 [V25,T04] ( 4, 0 ) int -> rsi single-def "Inline stloc first use temp"
-; V26 tmp16 [V26,T06] ( 3, 0 ) ref -> rdx class-hnd single-def "Inlining Arg" <ubyte[]>
+; V24 tmp14 [V24,T05] ( 3, 0.02) ref -> rdi class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V25 tmp15 [V25,T04] ( 4, 0.02) int -> r15 single-def "Inline stloc first use temp"
+; V26 tmp16 [V26,T06] ( 3, 0.02) ref -> rdx class-hnd single-def "Inlining Arg" <ubyte[]>
;* V27 tmp17 [V27 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V28 tmp18 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
@@ -45,51 +45,26 @@
;* V32 tmp22 [V32 ] ( 0, 0 ) ref -> zero-ref "arr expr"
; V33 cse0 [V33,T01] ( 5,101.01) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M51213_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
sub rsp, 16
- mov qword ptr [rsp+0xC8], rbx
+ mov qword ptr [rsp+0xC8], r15
+ mov qword ptr [rsp+0xC0], rbx
lea rbp, [rsp+0x10]
mov rsi, gword ptr [rbp+0x70]
; gcrRegs +[rsi]
mov edi, dword ptr [rbp+0x6C]
- ;; size=29 bbWeight=0.01 PerfScore 0.09
+ ;; size=37 bbWeight=0.01 PerfScore 0.10
G_M51213_IG02: ; bbWeight=0.01, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rsi+0x08]
cmp eax, edi
- jle SHORT G_M51213_IG07
+ jg SHORT G_M51213_IG05
;; size=7 bbWeight=0.01 PerfScore 0.03
-G_M51213_IG03: ; bbWeight=0.01, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- test edi, edi
- jl SHORT G_M51213_IG05
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M51213_IG04: ; bbWeight=98.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov ecx, edi
- mov byte ptr [rsi+rcx+0x10], 255
- inc edi
- cmp eax, edi
- jle SHORT G_M51213_IG07
- jmp SHORT G_M51213_IG04
- ;; size=15 bbWeight=98.99 PerfScore 470.20
-G_M51213_IG05: ; bbWeight=1.00, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- cmp edi, eax
- jae SHORT G_M51213_IG06
- mov ecx, edi
- mov byte ptr [rsi+rcx+0x10], 255
- inc edi
- cmp eax, edi
- jle SHORT G_M51213_IG07
- jmp SHORT G_M51213_IG05
- ;; size=19 bbWeight=1.00 PerfScore 6.00
-G_M51213_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51213_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51213_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor edi, edi
mov dword ptr [(reloc)], edi
mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
@@ -99,24 +74,64 @@ G_M51213_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov esi, 50
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
; gcr arg pop 0
- mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rdx, gword ptr [rsi]
+ mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov rdx, gword ptr [rdi]
; gcrRegs +[rdx]
inc dword ptr [rbx+0x14]
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
- mov esi, dword ptr [rbx+0x10]
- cmp dword ptr [rdi+0x08], esi
- jbe SHORT G_M51213_IG08
- lea eax, [rsi+0x01]
- mov dword ptr [rbx+0x10], eax
- movsxd rsi, esi
+ mov r15d, dword ptr [rbx+0x10]
+ cmp dword ptr [rdi+0x08], r15d
+ jbe SHORT G_M51213_IG12
+ ;; size=71 bbWeight=0.01 PerfScore 0.18
+G_M51213_IG04: ; bbWeight=0, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M51213_IG11
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M51213_IG05: ; bbWeight=0.01, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx rbx rdi] +[rsi]
+ test edi, edi
+ jl SHORT G_M51213_IG08
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M51213_IG06: ; bbWeight=98.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ mov ecx, edi
+ mov byte ptr [rsi+rcx+0x10], 255
+ inc edi
+ cmp eax, edi
+ jg SHORT G_M51213_IG06
+ ;; size=13 bbWeight=98.99 PerfScore 272.22
+G_M51213_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ jmp SHORT G_M51213_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M51213_IG08: ; bbWeight=1.00, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rsi]
+ cmp edi, eax
+ jae SHORT G_M51213_IG10
+ mov ecx, edi
+ mov byte ptr [rsi+rcx+0x10], 255
+ inc edi
+ cmp eax, edi
+ jg SHORT G_M51213_IG08
+ ;; size=17 bbWeight=1.00 PerfScore 4.00
+G_M51213_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ jmp SHORT G_M51213_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M51213_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51213_IG11: ; bbWeight=0, gcrefRegs=008C {rdx rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdx rbx rdi]
+ lea esi, [r15+0x01]
+ mov dword ptr [rbx+0x10], esi
+ movsxd rsi, r15d
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[rdx rbx rdi]
; gcr arg pop 0
- jmp SHORT G_M51213_IG09
- ;; size=85 bbWeight=0 PerfScore 0.00
-G_M51213_IG08: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M51213_IG13
+ ;; size=17 bbWeight=0 PerfScore 0.00
+G_M51213_IG12: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx rbx]
mov rdi, rbx
; gcrRegs +[rdi]
@@ -126,17 +141,18 @@ G_M51213_IG08: ; bbWeight=0, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {},
; gcrRegs -[rdx rbx rsi rdi]
; gcr arg pop 0
;; size=12 bbWeight=0 PerfScore 0.00
-G_M51213_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51213_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M51213_IG10: ; bbWeight=0, epilog, nogc, extend
- add rsp, 200
+G_M51213_IG14: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 192
pop rbx
+ pop r15
pop rbp
ret
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 187, prolog size 29, PerfScore 476.33, instruction count 54, allocated bytes for code 187 (MethodHash=998837f2) for method BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
+; Total bytes of code 202, prolog size 37, PerfScore 276.59, instruction count 57, allocated bytes for code 202 (MethodHash=998837f2) for method BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -144,12 +160,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x11
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x19
+ CountOfUnwindCodes: 9
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x11 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ CodeOffset: 0x19 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 24 * 8 = 192 = 0x000C0
+ CodeOffset: 0x11 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: r15 (15)
Scaled Small Offset: 25 * 8 = 200 = 0x000C8
CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
benchmarks.run_tiered.linux.x64.checked.mch
-18 (-2.88%) : 12141.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
@@ -9,16 +9,16 @@
; 0 inlinees with PGO data; 11 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T14] ( 6, 6 ) byref -> [rbp+0x110] single-def tier0-frame
+; V00 RetBuf [V00,T14] ( 6, 9.92) byref -> [rbp+0x110] single-def tier0-frame
; V01 arg0 [V01,T17] ( 5, 3.02) struct (16) [rbp+0x100] do-not-enreg[SFA] multireg-arg ld-addr-op single-def tier0-frame <System.Span`1[int]>
;* V02 arg1 [V02 ] ( 0, 0 ) ubyte -> zero-ref single-def
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
-; V04 loc1 [V04,T28] ( 1, 1 ) long -> [rbp+0xF0] tier0-frame
-; V05 loc2 [V05,T27] ( 1, 1 ) ref -> [rbp+0xE8] class-hnd tier0-frame <int[]>
-; V06 loc3 [V06,T25] ( 3, 1.02) struct (16) [rbp+0xD8] do-not-enreg[SF] ld-addr-op tier0-frame <System.Span`1[int]>
-; V07 loc4 [V07,T26] ( 3, 1.02) struct (16) [rbp+0xC8] do-not-enreg[SF] ld-addr-op tier0-frame <System.Span`1[int]>
-; V08 loc5 [V08,T06] ( 5, 33 ) ref -> r15 class-hnd exact <int[]>
-; V09 loc6 [V09,T20] ( 4, 4 ) ref -> [rbp+0xB8] class-hnd exact tier0-frame <System.Collections.Frozen.FrozenHashTable+Bucket[]>
+; V04 loc1 [V04,T26] ( 1, 1.98) long -> [rbp+0xF0] tier0-frame
+; V05 loc2 [V05,T25] ( 1, 1.98) ref -> [rbp+0xE8] class-hnd tier0-frame <int[]>
+; V06 loc3 [V06,T27] ( 3, 1.02) struct (16) [rbp+0xD8] do-not-enreg[SF] ld-addr-op tier0-frame <System.Span`1[int]>
+; V07 loc4 [V07,T28] ( 3, 1.02) struct (16) [rbp+0xC8] do-not-enreg[SF] ld-addr-op tier0-frame <System.Span`1[int]>
+; V08 loc5 [V08,T06] ( 5, 33.98) ref -> r15 class-hnd exact <int[]>
+; V09 loc6 [V09,T18] ( 4, 4.98) ref -> [rbp+0xB8] class-hnd exact tier0-frame <System.Collections.Frozen.FrozenHashTable+Bucket[]>
; V10 loc7 [V10,T01] ( 12, 82 ) int -> [rbp+0xB4] tier0-frame
;* V11 loc8 [V11 ] ( 0, 0 ) int -> zero-ref
;* V12 loc9 [V12 ] ( 0, 0 ) int -> zero-ref
@@ -48,11 +48,11 @@
;* V36 tmp16 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V37 tmp17 [V37 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V38 tmp18 [V38 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
-; V39 tmp19 [V39,T16] ( 6, 6 ) int -> r13 "field V23.StartIndex (fldOffset=0x0)" P-INDEP
-; V40 tmp20 [V40,T21] ( 4, 4 ) int -> r12 "field V23.EndIndex (fldOffset=0x4)" P-INDEP
-; V41 tmp21 [V41,T22] ( 2, 2 ) ref -> rsi single-def "field V24._buckets (fldOffset=0x0)" P-INDEP
-; V42 tmp22 [V42,T23] ( 2, 2 ) ref -> r15 single-def "field V24.<HashCodes>k__BackingField (fldOffset=0x8)" P-INDEP
-; V43 tmp23 [V43,T24] ( 2, 2 ) long -> r14 "field V24._fastModMultiplier (fldOffset=0x10)" P-INDEP
+; V39 tmp19 [V39,T16] ( 6, 6 ) int -> rax "field V23.StartIndex (fldOffset=0x0)" P-INDEP
+; V40 tmp20 [V40,T21] ( 4, 4 ) int -> r13 "field V23.EndIndex (fldOffset=0x4)" P-INDEP
+; V41 tmp21 [V41,T22] ( 2, 3.96) ref -> rsi single-def "field V24._buckets (fldOffset=0x0)" P-INDEP
+; V42 tmp22 [V42,T23] ( 2, 3.96) ref -> r15 single-def "field V24.<HashCodes>k__BackingField (fldOffset=0x8)" P-INDEP
+; V43 tmp23 [V43,T24] ( 2, 3.96) long -> r14 "field V24._fastModMultiplier (fldOffset=0x10)" P-INDEP
;* V44 tmp24 [V44 ] ( 0, 0 ) byref -> zero-ref "field V25._reference (fldOffset=0x0)" P-INDEP
;* V45 tmp25 [V45 ] ( 0, 0 ) int -> zero-ref "field V25._length (fldOffset=0x8)" P-INDEP
;* V46 tmp26 [V46 ] ( 0, 0 ) byref -> zero-ref "field V26._reference (fldOffset=0x0)" P-INDEP
@@ -63,13 +63,13 @@
;* V51 tmp31 [V51 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
; V52 tmp32 [V52,T08] ( 3, 16.01) byref -> rdi single-def "V01.[000..008)"
; V53 tmp33 [V53,T10] ( 3, 16.01) int -> rdx "V01.[008..012)"
-; V54 tmp34 [V54,T18] ( 3, 4.01) byref -> [rbp-0x38] spill-single-def "V06.[000..008)"
-; V55 tmp35 [V55,T19] ( 3, 4.01) int -> [rbp-0x2C] spill-single-def "V06.[008..012)"
+; V54 tmp34 [V54,T19] ( 3, 4.01) byref -> [rbp-0x38] spill-single-def "V06.[000..008)"
+; V55 tmp35 [V55,T20] ( 3, 4.01) int -> [rbp-0x2C] spill-single-def "V06.[008..012)"
; V56 tmp36 [V56,T09] ( 3, 16.01) byref -> r8 single-def "V07.[000..008)"
; V57 tmp37 [V57,T11] ( 3, 16.01) int -> r9 "V07.[008..012)"
-; V58 tmp38 [V58,T13] ( 6, 12 ) byref -> r14 "BlockOp address local"
+; V58 tmp38 [V58,T13] ( 6, 12 ) byref -> r12 "BlockOp address local"
; V59 cse0 [V59,T15] ( 5, 6.02) int -> [rbp-0x30] spill-single-def "CSE - moderate"
-; V60 cse1 [V60,T04] ( 3, 47.52) long -> rax "CSE - aggressive"
+; V60 cse1 [V60,T04] ( 3, 47.52) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 24
@@ -88,7 +88,7 @@ G_M19183_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov r14, gword ptr [rbp+0xB8]
; gcrRegs +[r14]
;; size=68 bbWeight=0.01 PerfScore 0.13
-G_M19183_IG02: ; bbWeight=0.01, gcVars=0000000008004000 {V00 V05}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M19183_IG02: ; bbWeight=0.01, gcVars=0000000002004000 {V00 V05}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V05}
mov rdi, bword ptr [rbp+0x100]
; byrRegs +[rdi]
@@ -112,7 +112,7 @@ G_M19183_IG02: ; bbWeight=0.01, gcVars=0000000008004000 {V00 V05}, gcrefR
cmp r10d, r11d
jle G_M19183_IG15
;; size=85 bbWeight=0.01 PerfScore 0.15
-G_M19183_IG03: ; bbWeight=0.50, gcVars=0000000008140000 {V05 V09 V54}, gcrefRegs=8000 {r15}, byrefRegs=0189 {rax rbx rdi r8}, gcvars, byref
+G_M19183_IG03: ; bbWeight=0.50, gcVars=00000000020C0000 {V05 V09 V54}, gcrefRegs=8000 {r15}, byrefRegs=0189 {rax rbx rdi r8}, gcvars, byref
; gcrRegs -[r14]
; GC ptr vars -{V00}
test r11d, r11d
@@ -130,66 +130,64 @@ G_M19183_IG05: ; bbWeight=1.98, gcrefRegs=8000 {r15}, byrefRegs=0188 {rbx
; byrRegs -[rax]
xor r12d, r12d
mov esi, dword ptr [rbp+0xB4]
- mov r14d, esi
+ mov eax, esi
mov bword ptr [rbp+0x110], rbx
; GC ptr vars +{V00}
- ;; size=19 bbWeight=1.98 PerfScore 4.95
-G_M19183_IG06: ; bbWeight=15.84, gcVars=0000000008144000 {V00 V05 V09 V54}, gcrefRegs=8000 {r15}, byrefRegs=0180 {rdi r8}, gcvars, byref, isz
+ ;; size=18 bbWeight=1.98 PerfScore 4.95
+G_M19183_IG06: ; bbWeight=15.84, gcVars=00000000020C4000 {V00 V05 V09 V54}, gcrefRegs=8000 {r15}, byrefRegs=0180 {rdi r8}, gcvars, byref, isz
; byrRegs -[rbx]
cmp r13d, edx
jae G_M19183_IG17
- mov eax, r13d
- lea rcx, bword ptr [rdi+4*rax]
- ; byrRegs +[rcx]
- mov ebx, dword ptr [rcx]
+ mov ecx, r13d
+ lea r14, bword ptr [rdi+4*rcx]
+ ; byrRegs +[r14]
+ mov r10d, dword ptr [r14]
cmp esi, dword ptr [r15+0x08]
jae G_M19183_IG17
- mov r10d, esi
- mov dword ptr [r15+4*r10+0x10], ebx
- mov dword ptr [rcx], esi
+ mov ebx, esi
+ mov dword ptr [r15+4*rbx+0x10], r10d
+ mov dword ptr [r14], esi
inc esi
inc r12d
cmp r13d, r9d
jae G_M19183_IG17
- mov r13d, dword ptr [r8+4*rax]
+ mov r13d, dword ptr [r8+4*rcx]
test r13d, r13d
jge SHORT G_M19183_IG06
- ;; size=61 bbWeight=15.84 PerfScore 241.56
+ ;; size=62 bbWeight=15.84 PerfScore 241.56
G_M19183_IG07: ; bbWeight=1.98, gcrefRegs=8000 {r15}, byrefRegs=0180 {rdi r8}, byref
- ; byrRegs -[rcx]
+ ; byrRegs -[r14]
mov rbx, bword ptr [rbp+0x110]
; byrRegs +[rbx]
- mov r13d, r14d
- lea r12d, [r13+r12-0x01]
- mov r14d, r11d
- mov rax, gword ptr [rbp+0xB8]
- ; gcrRegs +[rax]
- lea r14, bword ptr [rax+8*r14+0x10]
- ; byrRegs +[r14]
- mov dword ptr [r14], r13d
- mov dword ptr [r14+0x04], r12d
+ lea r13d, [rax+r12-0x01]
+ mov r12d, r11d
+ mov r14, gword ptr [rbp+0xB8]
+ ; gcrRegs +[r14]
+ lea r12, bword ptr [r14+8*r12+0x10]
+ ; byrRegs +[r12]
+ mov dword ptr [r12], eax
+ mov dword ptr [r12+0x04], r13d
mov dword ptr [rbp+0xB4], esi
- ;; size=43 bbWeight=1.98 PerfScore 16.83
-G_M19183_IG08: ; bbWeight=3.96, gcVars=0000000008140000 {V05 V09 V54}, gcrefRegs=8000 {r15}, byrefRegs=0188 {rbx rdi r8}, gcvars, byref
- ; gcrRegs -[rax]
- ; byrRegs -[r14]
+ ;; size=42 bbWeight=1.98 PerfScore 14.36
+G_M19183_IG08: ; bbWeight=3.96, gcVars=00000000020C0000 {V05 V09 V54}, gcrefRegs=8000 {r15}, byrefRegs=0188 {rbx rdi r8}, gcvars, byref
+ ; gcrRegs -[r14]
+ ; byrRegs -[r12]
; GC ptr vars -{V00}
inc r11d
- mov r10d, dword ptr [rbp-0x30]
- cmp r10d, r11d
+ cmp dword ptr [rbp-0x30], r11d
mov rax, bword ptr [rbp-0x38]
; byrRegs +[rax]
mov ecx, dword ptr [rbp-0x2C]
jg G_M19183_IG04
- ;; size=23 bbWeight=3.96 PerfScore 17.82
-G_M19183_IG09: ; bbWeight=1, gcVars=0000000008100000 {V05 V09}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
+ ;; size=20 bbWeight=3.96 PerfScore 20.79
+G_M19183_IG09: ; bbWeight=1.98, gcVars=0000000002040000 {V05 V09}, gcrefRegs=8000 {r15}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rax rdi r8]
; GC ptr vars -{V54}
jmp G_M19183_IG15
- ;; size=5 bbWeight=1 PerfScore 2.00
-G_M19183_IG10: ; bbWeight=0.04, gcVars=0000000008140000 {V05 V09 V54}, gcrefRegs=8000 {r15}, byrefRegs=0189 {rax rbx rdi r8}, gcvars, byref
+ ;; size=5 bbWeight=1.98 PerfScore 3.96
+G_M19183_IG10: ; bbWeight=0.04, gcVars=00000000020C0000 {V05 V09 V54}, gcrefRegs=8000 {r15}, byrefRegs=0189 {rax rbx rdi r8}, gcvars, byref
; byrRegs +[rax rdi r8]
- ; GC ptr vars +{V18 V54}
+ ; GC ptr vars +{V19 V54}
cmp r11d, ecx
jae G_M19183_IG17
mov r13d, r11d
@@ -202,56 +200,48 @@ G_M19183_IG11: ; bbWeight=0.02, gcrefRegs=8000 {r15}, byrefRegs=0188 {rbx
; byrRegs -[rax]
xor r12d, r12d
mov esi, dword ptr [rbp+0xB4]
- mov r14d, esi
- mov bword ptr [rbp+0x110], rbx
- ; GC ptr vars +{V00}
- ;; size=19 bbWeight=0.02 PerfScore 0.05
-G_M19183_IG12: ; bbWeight=0.16, gcVars=0000000008144000 {V00 V05 V09 V54}, gcrefRegs=8000 {r15}, byrefRegs=0180 {rdi r8}, gcvars, byref, isz
- ; byrRegs -[rbx]
- ; GC ptr vars -{V18}
+ mov eax, esi
+ ;; size=11 bbWeight=0.02 PerfScore 0.03
+G_M19183_IG12: ; bbWeight=0.16, gcrefRegs=8000 {r15}, byrefRegs=0188 {rbx rdi r8}, byref, isz
cmp r13d, edx
jae G_M19183_IG17
- mov eax, r13d
- lea rax, bword ptr [rdi+4*rax]
- ; byrRegs +[rax]
- mov ecx, dword ptr [rax]
+ mov ecx, r13d
+ lea rcx, bword ptr [rdi+4*rcx]
+ ; byrRegs +[rcx]
+ mov r14d, dword ptr [rcx]
cmp esi, dword ptr [r15+0x08]
jae G_M19183_IG17
- mov ebx, esi
- mov dword ptr [r15+4*rbx+0x10], ecx
- mov dword ptr [rax], esi
+ mov r10d, esi
+ mov dword ptr [r15+4*r10+0x10], r14d
+ mov dword ptr [rcx], esi
inc esi
inc r12d
cmp r13d, r9d
jae G_M19183_IG17
- mov eax, r13d
- ; byrRegs -[rax]
- mov r13d, dword ptr [r8+4*rax]
+ mov ecx, r13d
+ ; byrRegs -[rcx]
+ mov r13d, dword ptr [r8+4*rcx]
test r13d, r13d
jge SHORT G_M19183_IG12
- ;; size=63 bbWeight=0.16 PerfScore 2.48
-G_M19183_IG13: ; bbWeight=0.02, gcrefRegs=8000 {r15}, byrefRegs=0180 {rdi r8}, byref
- mov rbx, bword ptr [rbp+0x110]
- ; byrRegs +[rbx]
- mov r13d, r14d
- lea r12d, [r13+r12-0x01]
+ ;; size=65 bbWeight=0.16 PerfScore 2.48
+G_M19183_IG13: ; bbWeight=0.02, gcrefRegs=8000 {r15}, byrefRegs=0188 {rbx rdi r8}, byref
+ lea r13d, [rax+r12-0x01]
mov r10d, dword ptr [rbp-0x30]
cmp r11d, r10d
jae G_M19183_IG17
- mov r14d, r11d
- mov rax, gword ptr [rbp+0xB8]
- ; gcrRegs +[rax]
- lea r14, bword ptr [rax+8*r14+0x10]
- ; byrRegs +[r14]
- mov dword ptr [r14], r13d
- mov dword ptr [r14+0x04], r12d
+ mov r12d, r11d
+ mov r14, gword ptr [rbp+0xB8]
+ ; gcrRegs +[r14]
+ lea r12, bword ptr [r14+8*r12+0x10]
+ ; byrRegs +[r12]
+ mov dword ptr [r12], eax
+ mov dword ptr [r12+0x04], r13d
mov dword ptr [rbp+0xB4], esi
- mov gword ptr [rbp+0xB8], rax
- ;; size=63 bbWeight=0.02 PerfScore 0.24
-G_M19183_IG14: ; bbWeight=0.04, gcVars=0000000008140000 {V05 V09 V54}, gcrefRegs=8000 {r15}, byrefRegs=0188 {rbx rdi r8}, gcvars, byref
- ; gcrRegs -[rax]
...
-35 (-1.72%) : 687.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
@@ -8,102 +8,103 @@
; 0 inlinees with PGO data; 26 single block inlinees; 41 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 64, 8825 ) long -> r15
-; V01 arg1 [V01,T39] ( 15, 10.50) int -> r13
-; V02 arg2 [V02,T01] ( 61, 9700 ) long -> rbx
-; V03 arg3 [V03,T03] ( 47, 7988 ) int -> r14
-; V04 arg4 [V04,T42] ( 4, 3 ) byref -> r12 single-def
-; V05 arg5 [V05,T43] ( 4, 3 ) byref -> [rbp-0x60] single-def
-; V06 loc0 [V06,T04] ( 11, 1629.50) long -> [rbp-0x30] spill-single-def
-; V07 loc1 [V07,T52] ( 2, 64.50) simd16 -> [rbp-0x40] ld-addr-op spill-single-def <System.Runtime.Intrinsics.Vector128`1[short]>
-; V08 loc2 [V08,T27] ( 4, 72.50) long -> [rbp-0x48]
-; V09 loc3 [V09,T00] ( 50,17618.50) int -> [rbp-0x4C]
-; V10 loc4 [V10,T40] ( 12, 6 ) int -> rax
-; V11 loc5 [V11,T46] ( 5, 2.50) int -> rax
-; V12 loc6 [V12,T41] ( 6, 5 ) long -> rax
-;* V13 loc7 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref
-; V15 loc9 [V15,T36] ( 3, 24 ) int -> rsi
-; V16 loc10 [V16,T26] ( 3, 80 ) int -> rdi
-; V17 loc11 [V17,T28] ( 9, 66 ) long -> [rbp-0x58]
-; V18 loc12 [V18,T23] ( 6, 216 ) int -> rdx
-; V19 loc13 [V19,T51] ( 11, 294 ) simd16 -> mm1 <System.Runtime.Intrinsics.Vector128`1[short]>
-;* V20 loc14 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V21 loc15 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V22 loc16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V23 loc17 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V24 loc18 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V25 loc19 [V25 ] ( 0, 0 ) int -> zero-ref
-;* V26 loc20 [V26 ] ( 0, 0 ) int -> zero-ref
-;* V27 loc21 [V27 ] ( 0, 0 ) int -> zero-ref
-;# V28 OutArgs [V28 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V29 tmp1 [V29,T49] ( 2, 1 ) int -> rdi
-; V30 tmp2 [V30,T50] ( 2, 1 ) int -> rdi
-;* V31 tmp3 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V32 tmp4 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V33 tmp5 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp6 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V35 tmp7 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V36 tmp8 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V37 tmp9 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V38 tmp10 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp11 [V39,T47] ( 2, 2 ) int -> rdx "Inline return value spill temp"
-;* V40 tmp12 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V41 tmp13 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V42 tmp14 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V43 tmp15 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V44 tmp16 [V44,T37] ( 3, 24 ) long -> rsi "Inline return value spill temp"
-; V45 tmp17 [V45,T33] ( 3, 48 ) long -> rdi "Inlining Arg"
-; V46 tmp18 [V46,T34] ( 3, 48 ) long -> rsi "Inlining Arg"
-;* V47 tmp19 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V48 tmp20 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V49 tmp21 [V49,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V50 tmp22 [V50,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V51 tmp23 [V51,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp24 [V52,T15] ( 2, 256 ) int -> rdi
-;* V53 tmp25 [V53,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V54 tmp26 [V54,T17] ( 2, 256 ) ubyte -> rdi "Inline return value spill temp"
-;* V55 tmp27 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V56 tmp28 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V57 tmp29 [V57,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V58 tmp30 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V59 tmp31 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V60 tmp32 [V60,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V61 tmp33 [V61,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V62 tmp34 [V62,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V63 tmp35 [V63,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V64 tmp36 [V64,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V65 tmp37 [V65,T10] ( 0, 0 ) int -> zero-ref
-;* V66 tmp38 [V66,T12] ( 0, 0 ) int -> zero-ref
-;* V67 tmp39 [V67 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V68 tmp40 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V69 tmp41 [V69,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V70 tmp42 [V70,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V71 tmp43 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V72 tmp44 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V73 tmp45 [V73,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V74 tmp46 [V74,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V75 tmp47 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V76 tmp48 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V77 tmp49 [V77,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V78 tmp50 [V78,T21] ( 0, 0 ) int -> zero-ref
-;* V79 tmp51 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V80 tmp52 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V81 tmp53 [V81,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V82 tmp54 [V82,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V83 tmp55 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V84 tmp56 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V85 tmp57 [V85,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V86 tmp58 [V86,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V87 tmp59 [V87,T44] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V88 tmp60 [V88,T38] ( 5, 20 ) int -> rdi "Inlining Arg"
-;* V89 tmp61 [V89 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V90 tmp62 [V90 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V91 tmp63 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V92 tmp64 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V93 tmp65 [V93,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V94 rat0 [V94,T35] ( 3, 48 ) long -> rdi "ReplaceWithLclVar is creating a new local variable"
-; V95 rat1 [V95,T45] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
+; V00 arg0 [V00,T02] ( 64,1223 ) long -> r15
+; V01 arg1 [V01,T34] ( 15, 10.50) int -> r13
+; V02 arg2 [V02,T01] ( 61,1294 ) long -> rbx
+; V03 arg3 [V03,T03] ( 47,1052 ) int -> r14
+; V04 arg4 [V04,T43] ( 4, 3 ) byref -> r12 single-def
+; V05 arg5 [V05,T44] ( 4, 3 ) byref -> [rbp-0x60] single-def
+; V06 loc0 [V06,T05] ( 11, 231.50) long -> [rbp-0x30] spill-single-def
+; V07 loc1 [V07,T53] ( 2, 16.50) simd16 -> [rbp-0x40] ld-addr-op spill-single-def <System.Runtime.Intrinsics.Vector128`1[short]>
+; V08 loc2 [V08,T38] ( 4, 10.50) long -> [rbp-0x48]
+; V09 loc3 [V09,T00] ( 50,2260.50) int -> [rbp-0x4C]
+; V10 loc4 [V10,T39] ( 12, 6 ) int -> rax
+; V11 loc5 [V11,T47] ( 5, 2.50) int -> rax
+; V12 loc6 [V12,T42] ( 6, 5 ) long -> rax
+;* V13 loc7 [V13 ] ( 0, 0 ) int -> zero-ref
+;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref
+; V15 loc9 [V15,T40] ( 3, 6 ) int -> rsi
+; V16 loc10 [V16,T28] ( 3, 20 ) int -> rdi
+; V17 loc11 [V17,T29] ( 9, 18 ) long -> [rbp-0x58]
+; V18 loc12 [V18,T24] ( 6, 54 ) int -> rdx
+; V19 loc13 [V19,T52] ( 11, 78 ) simd16 -> mm1 <System.Runtime.Intrinsics.Vector128`1[short]>
+;* V20 loc14 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V21 loc15 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V22 loc16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V23 loc17 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V24 loc18 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V25 loc19 [V25 ] ( 0, 0 ) int -> zero-ref
+;* V26 loc20 [V26 ] ( 0, 0 ) int -> zero-ref
+;* V27 loc21 [V27 ] ( 0, 0 ) int -> zero-ref
+;# V28 OutArgs [V28 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V29 tmp1 [V29,T50] ( 2, 1 ) int -> rdi
+; V30 tmp2 [V30,T51] ( 2, 1 ) int -> rdi
+;* V31 tmp3 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V32 tmp4 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V33 tmp5 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V34 tmp6 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V35 tmp7 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V36 tmp8 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V37 tmp9 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp10 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V39 tmp11 [V39,T48] ( 2, 2 ) int -> rdx "Inline return value spill temp"
+;* V40 tmp12 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V41 tmp13 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V42 tmp14 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V43 tmp15 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V44 tmp16 [V44,T41] ( 3, 6 ) long -> rsi "Inline return value spill temp"
+; V45 tmp17 [V45,T35] ( 3, 12 ) long -> rdi "Inlining Arg"
+; V46 tmp18 [V46,T36] ( 3, 12 ) long -> rsi "Inlining Arg"
+;* V47 tmp19 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V48 tmp20 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V49 tmp21 [V49,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V50 tmp22 [V50,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V51 tmp23 [V51,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V52 tmp24 [V52,T09] ( 2, 64 ) int -> rdi
+;* V53 tmp25 [V53,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V54 tmp26 [V54,T15] ( 2, 64 ) ubyte -> rdi "Inline return value spill temp"
+;* V55 tmp27 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V56 tmp28 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V57 tmp29 [V57,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V58 tmp30 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V59 tmp31 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V60 tmp32 [V60,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V61 tmp33 [V61,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V62 tmp34 [V62,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V63 tmp35 [V63,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V64 tmp36 [V64,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V65 tmp37 [V65,T12] ( 0, 0 ) int -> zero-ref
+;* V66 tmp38 [V66,T21] ( 0, 0 ) int -> zero-ref
+;* V67 tmp39 [V67 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V68 tmp40 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V69 tmp41 [V69,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V70 tmp42 [V70,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V71 tmp43 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V72 tmp44 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V73 tmp45 [V73,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V74 tmp46 [V74,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V75 tmp47 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V76 tmp48 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V77 tmp49 [V77,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V78 tmp50 [V78,T19] ( 0, 0 ) int -> zero-ref
+;* V79 tmp51 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V80 tmp52 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V81 tmp53 [V81,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V82 tmp54 [V82,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V83 tmp55 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V84 tmp56 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V85 tmp57 [V85,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V86 tmp58 [V86,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V87 tmp59 [V87,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V88 tmp60 [V88,T27] ( 5, 20 ) int -> rdi "Inlining Arg"
+;* V89 tmp61 [V89 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V90 tmp62 [V90 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V91 tmp63 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V92 tmp64 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V93 tmp65 [V93,T49] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V94 cse0 [V94,T04] ( 29, 351.50) ref -> rsi multi-def "CSE - aggressive"
+; V95 rat0 [V95,T37] ( 3, 12 ) long -> rdi "ReplaceWithLclVar is creating a new local variable"
+; V96 rat1 [V96,T46] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 56
@@ -126,7 +127,7 @@ G_M33313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r12, r8
; byrRegs +[r12]
;; size=41 bbWeight=1 PerfScore 10.00
-G_M33313_IG02: ; bbWeight=1, gcVars=0000080000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
+G_M33313_IG02: ; bbWeight=1, gcVars=0000100000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
test r13d, r13d
jge SHORT G_M33313_IG04
;; size=5 bbWeight=1 PerfScore 1.25
@@ -217,11 +218,11 @@ G_M33313_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M33313_IG13: ; bbWeight=0.50, gcVars=0000080000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
+G_M33313_IG13: ; bbWeight=0.50, gcVars=0000100000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
sub r13d, eax
sub r14d, eax
cmp r13d, 2
- jl G_M33313_IG58
+ jl G_M33313_IG57
mov edi, r13d
lea rax, [r15+2*rdi-0x04]
mov qword ptr [rbp-0x30], rax
@@ -231,23 +232,23 @@ G_M33313_IG13: ; bbWeight=0.50, gcVars=0000080000000000 {V05}, gcrefRegs=
mov qword ptr [rbp-0x48], rcx
cmp r15, rax
jbe SHORT G_M33313_IG14
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
; gcr arg pop 0
- ;; size=78 bbWeight=0.50 PerfScore 7.00
+ ;; size=71 bbWeight=0.50 PerfScore 7.00
G_M33313_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
mov edx, dword ptr [r15]
mov dword ptr [rbp-0x4C], edx
;; size=6 bbWeight=4 PerfScore 12.00
-G_M33313_IG15: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
+G_M33313_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
cmp qword ptr [rbp-0x48], r15
jb SHORT G_M33313_IG17
- ;; size=6 bbWeight=32 PerfScore 96.00
-G_M33313_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
+ ;; size=6 bbWeight=4 PerfScore 12.00
+G_M33313_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
...
-7 (-0.91%) : 37389.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
@@ -8,29 +8,29 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T11] ( 18, 10.64) ref -> rdi class-hnd single-def <double[][]>
-; V01 arg1 [V01,T05] ( 12, 31.97) int -> rsi single-def
+; V00 arg0 [V00,T09] ( 18, 14.52) ref -> rdi class-hnd single-def <double[][]>
+; V01 arg1 [V01,T07] ( 12, 31.97) int -> rsi single-def
; V02 arg2 [V02,T12] ( 4, 6 ) ref -> rdx class-hnd single-def <int[]>
-; V03 arg3 [V03,T03] ( 19, 46.04) ref -> rcx class-hnd single-def <double[]>
-; V04 loc0 [V04,T01] ( 42, 87.66) int -> r8
-; V05 loc1 [V05,T00] ( 38, 92.03) int -> registers
-; V06 loc2 [V06,T13] ( 4, 8 ) int -> rax
+; V03 arg3 [V03,T03] ( 19, 49.92) ref -> rcx class-hnd single-def <double[]>
+; V04 loc0 [V04,T00] ( 42,103.18) int -> rax
+; V05 loc1 [V05,T01] ( 38, 92.03) int -> registers
+; V06 loc2 [V06,T13] ( 4, 8 ) int -> r8
; V07 loc3 [V07,T16] ( 3, 4.50) int -> r9
-; V08 loc4 [V08,T19] ( 17, 60 ) double -> mm0
+; V08 loc4 [V08,T19] ( 17, 63.88) double -> mm0
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T21] ( 2, 8 ) double -> mm1 "Strict ordering of exceptions for Array store"
-; V11 tmp2 [V11,T20] ( 4, 16 ) double -> mm1 "Strict ordering of exceptions for Array store"
-; V12 tmp3 [V12,T09] ( 5, 16.08) ref -> r11 "arr expr"
+; V11 tmp2 [V11,T20] ( 4, 31.52) double -> mm1 "Strict ordering of exceptions for Array store"
+; V12 tmp3 [V12,T10] ( 5, 16.08) ref -> r11 "arr expr"
; V13 tmp4 [V13,T02] ( 8, 64.64) ref -> rbx "arr expr"
-; V14 tmp5 [V14,T07] ( 6, 24 ) ref -> rdx "arr expr"
-; V15 cse0 [V15,T17] ( 4, 0.25) ref -> rdx hoist multi-def "CSE - conservative"
-; V16 cse1 [V16,T06] ( 8, 26.74) ref -> rdx hoist multi-def "CSE - aggressive"
+; V14 tmp5 [V14,T04] ( 6, 47.28) ref -> r11 "arr expr"
+; V15 cse0 [V15,T17] ( 4, 0.25) ref -> r11 hoist multi-def "CSE - conservative"
+; V16 cse1 [V16,T06] ( 8, 34.50) ref -> r11 hoist multi-def "CSE - aggressive"
; V17 cse2 [V17,T15] ( 6, 5.54) ref -> r10 multi-def "CSE - moderate"
-; V18 cse3 [V18,T10] ( 13, 15.93) int -> registers hoist multi-def "CSE - aggressive"
-; V19 cse4 [V19,T14] ( 4, 6 ) int -> rax "CSE - moderate"
-; V20 cse5 [V20,T08] ( 7, 20.80) long -> r11 "CSE - aggressive"
-; V21 cse6 [V21,T04] ( 3, 47.04) long -> r15 "CSE - aggressive"
-; V22 cse7 [V22,T18] ( 6, 0.21) long -> r11 "CSE - conservative"
+; V18 cse3 [V18,T11] ( 13, 15.93) int -> registers hoist multi-def "CSE - aggressive"
+; V19 cse4 [V19,T14] ( 4, 6 ) int -> rdx "CSE - moderate"
+; V20 cse5 [V20,T08] ( 7, 32.44) long -> r8 "CSE - aggressive"
+; V21 cse6 [V21,T05] ( 3, 47.04) long -> r15 "CSE - aggressive"
+; V22 cse7 [V22,T18] ( 6, 0.21) long -> r8 "CSE - conservative"
;
; Lcl frame size = 0
@@ -49,8 +49,8 @@ G_M64421_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[rdx]
mov rcx, gword ptr [rbp+0x48]
; gcrRegs +[rcx]
- mov r8d, dword ptr [rbp+0x44]
- mov eax, dword ptr [rbp+0x40]
+ mov eax, dword ptr [rbp+0x44]
+ mov r8d, dword ptr [rbp+0x40]
mov r9d, dword ptr [rbp+0x38]
vmovsd xmm0, qword ptr [rbp+0x30]
;; size=64 bbWeight=0.01 PerfScore 0.25
@@ -62,81 +62,81 @@ G_M64421_IG03: ; bbWeight=1, gcrefRegs=0086 {rcx rdx rdi}, byrefRegs=0000
jmp SHORT G_M64421_IG06
;; size=6 bbWeight=1 PerfScore 4.00
G_M64421_IG04: ; bbWeight=2, gcrefRegs=0086 {rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
- cmp r8d, dword ptr [rdx+0x08]
- jae G_M64421_IG31
- mov eax, r8d
- mov eax, dword ptr [rdx+4*rax+0x10]
- cmp eax, r10d
- jae G_M64421_IG31
- mov r11d, eax
- vmovsd xmm0, qword ptr [rcx+8*r11+0x10]
+ cmp eax, dword ptr [rdx+0x08]
+ jae G_M64421_IG30
+ mov r8d, eax
+ mov r8d, dword ptr [rdx+4*r8+0x10]
cmp r8d, r10d
- jae G_M64421_IG31
+ jae G_M64421_IG30
mov r11d, r8d
+ vmovsd xmm0, qword ptr [rcx+8*r11+0x10]
+ cmp eax, r10d
+ jae G_M64421_IG30
+ mov r11d, eax
vmovsd xmm1, qword ptr [rcx+8*r11+0x10]
- vmovsd qword ptr [rcx+8*rax+0x10], xmm1
+ vmovsd qword ptr [rcx+8*r8+0x10], xmm1
cmp r9d, -1
jne G_M64421_IG24
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jp SHORT G_M64421_IG05
je SHORT G_M64421_IG06
- ;; size=83 bbWeight=2 PerfScore 49.67
+ ;; size=84 bbWeight=2 PerfScore 49.67
G_M64421_IG05: ; bbWeight=2, gcrefRegs=0086 {rcx rdx rdi}, byrefRegs=0000 {}, byref
- mov r9d, r8d
+ mov r9d, eax
;; size=3 bbWeight=2 PerfScore 0.50
G_M64421_IG06: ; bbWeight=8, gcrefRegs=0086 {rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
- cmp r8d, r10d
- jae G_M64421_IG31
- mov eax, r8d
- vmovsd qword ptr [rcx+8*rax+0x10], xmm0
- inc r8d
- cmp r8d, esi
+ cmp eax, r10d
+ jae G_M64421_IG30
+ mov r8d, eax
+ vmovsd qword ptr [rcx+8*r8+0x10], xmm0
+ inc eax
+ cmp eax, esi
jl SHORT G_M64421_IG04
- ;; size=26 bbWeight=8 PerfScore 40.00
+ ;; size=25 bbWeight=8 PerfScore 40.00
G_M64421_IG07: ; bbWeight=1, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
- lea eax, [rsi-0x01]
- mov r8d, eax
- test r8d, r8d
+ lea edx, [rsi-0x01]
+ mov eax, edx
+ test eax, eax
jl G_M64421_IG23
- ;; size=15 bbWeight=1 PerfScore 2.00
+ ;; size=13 bbWeight=1 PerfScore 2.00
G_M64421_IG08: ; bbWeight=0.50, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
test rdi, rdi
je G_M64421_IG18
- cmp r10d, r8d
+ cmp r10d, eax
jle G_M64421_IG18
- cmp dword ptr [rdi+0x08], r8d
+ cmp dword ptr [rdi+0x08], eax
jle G_M64421_IG18
- ;; size=28 bbWeight=0.50 PerfScore 3.25
+ ;; size=27 bbWeight=0.50 PerfScore 3.25
G_M64421_IG09: ; bbWeight=3.96, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
- mov r11d, r8d
- vmovsd xmm0, qword ptr [rcx+8*r11+0x10]
- cmp r8d, eax
+ mov r8d, eax
+ vmovsd xmm0, qword ptr [rcx+8*r8+0x10]
+ cmp eax, edx
je G_M64421_IG16
- ;; size=19 bbWeight=3.96 PerfScore 21.78
+ ;; size=18 bbWeight=3.96 PerfScore 21.78
G_M64421_IG10: ; bbWeight=1.98, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
- lea r9d, [r8+0x01]
+ lea r9d, [rax+0x01]
cmp r9d, esi
jge G_M64421_IG16
;; size=13 bbWeight=1.98 PerfScore 3.46
G_M64421_IG11: ; bbWeight=0.99, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rdi+0x08], r8d
+ cmp dword ptr [rdi+0x08], eax
jbe SHORT G_M64421_IG14
- mov rdx, gword ptr [rdi+8*r11+0x10]
- ; gcrRegs +[rdx]
- test rdx, rdx
+ mov r11, gword ptr [rdi+8*r8+0x10]
+ ; gcrRegs +[r11]
+ test r11, r11
je SHORT G_M64421_IG14
mov ebx, r9d
or ebx, esi
jl SHORT G_M64421_IG14
- cmp dword ptr [rdx+0x08], esi
+ cmp dword ptr [r11+0x08], esi
jl SHORT G_M64421_IG14
cmp r10d, esi
jl SHORT G_M64421_IG14
;; size=33 bbWeight=0.99 PerfScore 13.86
-G_M64421_IG12: ; bbWeight=15.68, gcrefRegs=0086 {rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
- mov rbx, rdx
+G_M64421_IG12: ; bbWeight=15.68, gcrefRegs=0882 {rcx rdi r11}, byrefRegs=0000 {}, byref, isz
+ mov rbx, r11
; gcrRegs +[rbx]
mov r15d, r9d
vmovsd xmm1, qword ptr [rbx+8*r15+0x10]
@@ -146,23 +146,23 @@ G_M64421_IG12: ; bbWeight=15.68, gcrefRegs=0086 {rcx rdx rdi}, byrefRegs=
cmp r9d, esi
jl SHORT G_M64421_IG12
;; size=32 bbWeight=15.68 PerfScore 235.22
-G_M64421_IG13: ; bbWeight=3.96, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx rbx]
+G_M64421_IG13: ; bbWeight=7.84, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbx r11]
jmp SHORT G_M64421_IG16
- ;; size=2 bbWeight=3.96 PerfScore 7.92
+ ;; size=2 bbWeight=7.84 PerfScore 15.68
G_M64421_IG14: ; bbWeight=0.01, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
- mov rdx, gword ptr [rdi+8*r11+0x10]
- ; gcrRegs +[rdx]
+ mov r11, gword ptr [rdi+8*r8+0x10]
+ ; gcrRegs +[r11]
;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M64421_IG15: ; bbWeight=0.16, gcrefRegs=0086 {rcx rdx rdi}, byrefRegs=0000 {}, byref, isz
- mov rbx, rdx
+G_M64421_IG15: ; bbWeight=0.16, gcrefRegs=0882 {rcx rdi r11}, byrefRegs=0000 {}, byref, isz
+ mov rbx, r11
; gcrRegs +[rbx]
cmp r9d, dword ptr [rbx+0x08]
- jae G_M64421_IG31
+ jae G_M64421_IG30
mov r15d, r9d
vmovsd xmm1, qword ptr [rbx+8*r15+0x10]
cmp r9d, r10d
- jae G_M64421_IG31
+ jae G_M64421_IG30
mov ebx, r9d
; gcrRegs -[rbx]
vmulsd xmm1, xmm1, qword ptr [rcx+8*rbx+0x10]
@@ -171,51 +171,51 @@ G_M64421_IG15: ; bbWeight=0.16, gcrefRegs=0086 {rcx rdx rdi}, byrefRegs=0
cmp r9d, esi
jl SHORT G_M64421_IG15
;; size=53 bbWeight=0.16 PerfScore 3.25
-G_M64421_IG16: ; bbWeight=3.96, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdx]
- mov rdx, gword ptr [rdi+8*r11+0x10]
- ; gcrRegs +[rdx]
- cmp r8d, dword ptr [rdx+0x08]
- jae G_M64421_IG31
- vdivsd xmm1, xmm0, qword ptr [rdx+8*r11+0x10]
- vmovsd qword ptr [rcx+8*r11+0x10], xmm1
- dec r8d
+G_M64421_IG16: ; bbWeight=7.84, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r11]
+ mov r11, gword ptr [rdi+8*r8+0x10]
+ ; gcrRegs +[r11]
+ cmp eax, dword ptr [r11+0x08]
+ jae G_M64421_IG30
+ vdivsd xmm1, xmm0, qword ptr [r11+8*r8+0x10]
+ vmovsd qword ptr [rcx+8*r8+0x10], xmm1
+ dec eax
jns G_M64421_IG09
- ;; size=38 bbWeight=3.96 PerfScore 96.03
-G_M64421_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx rdx rdi]
+ ;; size=37 bbWeight=7.84 PerfScore 190.14
+G_M64421_IG17: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rdi r11]
jmp G_M64421_IG23
- ;; size=5 bbWeight=1 PerfScore 2.00
+ ;; size=5 bbWeight=1.98 PerfScore 3.96
G_M64421_IG18: ; bbWeight=0.04, gcrefRegs=0082 {rcx rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdi]
- cmp r8d, r10d
- jae G_M64421_IG31
- mov r11d, r8d
- vmovsd xmm0, qword ptr [rcx+8*r11+0x10]
- cmp r8d, eax
...
+2 (+0.08%) : 12582.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
@@ -8,17 +8,17 @@
; 0 inlinees with PGO data; 65 single block inlinees; 43 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 27, 32 ) ref -> [rbp-0x78] do-not-enreg[Z] class-hnd EH-live <System.String>
-; V01 loc0 [V01,T09] ( 8, 8 ) int -> rsi
-; V02 loc1 [V02,T18] ( 6, 6 ) ref -> [rbp-0x80] do-not-enreg[M] class-hnd EH-live <System.String>
+; V00 arg0 [V00,T04] ( 27, 32 ) ref -> [rbp-0x78] do-not-enreg[Z] class-hnd EH-live <System.String>
+; V01 loc0 [V01,T11] ( 8, 8 ) int -> rsi
+; V02 loc1 [V02,T19] ( 6, 6 ) ref -> [rbp-0x80] do-not-enreg[M] class-hnd EH-live <System.String>
; V03 loc2 [V03 ] ( 4, 4 ) ushort -> [rbp-0x30] do-not-enreg[X] addr-exposed ld-addr-op
-; V04 loc3 [V04,T17] ( 7, 6.50) ref -> rbx class-hnd <System.String>
+; V04 loc3 [V04,T18] ( 7, 6.50) ref -> rbx class-hnd <System.String>
; V05 loc4 [V05,T28] ( 6, 5.50) ref -> [rbp-0x88] do-not-enreg[M] class-hnd EH-live <System.String>
; V06 loc5 [V06,T67] ( 3, 3 ) ref -> r14 class-hnd <System.String>
-; V07 loc6 [V07,T05] ( 11, 11 ) int -> [rbp-0x34] do-not-enreg[Z] EH-live
+; V07 loc6 [V07,T05] ( 11, 24.84) int -> [rbp-0x34] do-not-enreg[Z] EH-live
;* V08 loc7 [V08 ] ( 0, 0 ) int -> zero-ref
-; V09 loc8 [V09,T08] ( 8, 8 ) ref -> [rbp-0x90] do-not-enreg[M] class-hnd EH-live <System.String>
-; V10 loc9 [V10,T01] ( 13, 35.58) int -> r13
+; V09 loc8 [V09,T10] ( 8, 8 ) ref -> [rbp-0x90] do-not-enreg[M] class-hnd EH-live <System.String>
+; V10 loc9 [V10,T01] ( 13, 42.50) int -> r13
;* V11 loc10 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.UriBuilder>
; V12 loc11 [V12,T29] ( 5, 5 ) ref -> r14 class-hnd <System.Uri>
;* V13 loc12 [V13 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[System.Range]>
@@ -42,12 +42,12 @@
; V31 tmp8 [V31,T42] ( 2, 4 ) int -> rax "spilling unroll qmark"
;* V32 tmp9 [V32 ] ( 0, 0 ) ref -> zero-ref single-def "spilling varStr"
; V33 tmp10 [V33,T43] ( 2, 4 ) int -> rdi "spilling unroll qmark"
-; V34 tmp11 [V34,T03] ( 8, 16 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.UriBuilder>
+; V34 tmp11 [V34,T07] ( 8, 16 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.UriBuilder>
;* V35 tmp12 [V35 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Span`1[System.Range]>
;* V36 tmp13 [V36 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.DefaultInterpolatedStringHandler>
;* V37 tmp14 [V37 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V38 tmp15 [V38 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V39 tmp16 [V39,T23] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Uri>
+; V39 tmp16 [V39,T24] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <System.Uri>
;* V40 tmp17 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
;* V41 tmp18 [V41 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V42 tmp19 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
@@ -73,8 +73,8 @@
;* V62 tmp39 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V63 tmp40 [V63 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V64 tmp41 [V64 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V65 tmp42 [V65,T24] ( 3, 6 ) int -> rdi "Inlining Arg"
-; V66 tmp43 [V66,T11] ( 4, 8 ) int -> r13 "Inlining Arg"
+; V65 tmp42 [V65,T03] ( 3, 33.68) int -> rdi "Inlining Arg"
+; V66 tmp43 [V66,T02] ( 4, 35.68) int -> r13 "Inlining Arg"
;* V67 tmp44 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V68 tmp45 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V69 tmp46 [V69,T46] ( 2, 4 ) byref -> r15 single-def "Inlining Arg"
@@ -93,7 +93,7 @@
;* V82 tmp59 [V82,T88] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V83 tmp60 [V83,T63] ( 2, 4 ) long -> rbx "Inlining Arg"
;* V84 tmp61 [V84 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V85 tmp62 [V85,T10] ( 4, 8 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
+; V85 tmp62 [V85,T12] ( 4, 8 ) ref -> rax class-hnd exact single-def "Inlining Arg" <System.String>
;* V86 tmp63 [V86 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V87 tmp64 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
; V88 tmp65 [V88,T64] ( 2, 4 ) int -> r13 "Inlining Arg"
@@ -105,17 +105,17 @@
;* V94 tmp71 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[System.String]>
;* V95 tmp72 [V95 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V96 tmp73 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V97 tmp74 [V97,T06] ( 5, 10 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
+; V97 tmp74 [V97,T08] ( 5, 10 ) ref -> rax class-hnd single-def "dup spill" <ushort[]>
;* V98 tmp75 [V98 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <ushort[]>
;* V99 tmp76 [V99 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V100 tmp77 [V100 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V101 tmp78 [V101,T15] ( 7, 7 ) int -> rdi "Inline stloc first use temp"
+; V101 tmp78 [V101,T16] ( 7, 7 ) int -> rdi "Inline stloc first use temp"
; V102 tmp79 [V102,T35] ( 5, 5 ) int -> rax "Inline stloc first use temp"
;* V103 tmp80 [V103 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V104 tmp81 [V104,T50] ( 2, 4 ) byref -> r12 single-def "Inlining Arg"
;* V105 tmp82 [V105 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V106 tmp83 [V106 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V107 tmp84 [V107,T12] ( 4, 8 ) int -> rdi "Inlining Arg"
+; V107 tmp84 [V107,T13] ( 4, 8 ) int -> rdi "Inlining Arg"
;* V108 tmp85 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V109 tmp86 [V109,T25] ( 3, 6 ) int -> [rbp-0x68] spill-single-def "Inlining Arg"
; V110 tmp87 [V110,T51] ( 2, 4 ) byref -> [rbp-0x98] spill-single-def "Inlining Arg"
@@ -126,7 +126,7 @@
; V115 tmp92 [V115,T65] ( 2, 4 ) long -> rdx "Inlining Arg"
;* V116 tmp93 [V116 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V117 tmp94 [V117 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V118 tmp95 [V118,T13] ( 4, 8 ) int -> rdi "Inlining Arg"
+; V118 tmp95 [V118,T14] ( 4, 8 ) int -> rdi "Inlining Arg"
;* V119 tmp96 [V119 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V120 tmp97 [V120,T26] ( 3, 6 ) int -> r12 "Inlining Arg"
; V121 tmp98 [V121,T52] ( 2, 4 ) byref -> r14 single-def "Inlining Arg"
@@ -134,13 +134,13 @@
;* V123 tmp100 [V123 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
;* V124 tmp101 [V124 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
; V125 tmp102 [V125,T53] ( 2, 4 ) byref -> rdi single-def "Inlining Arg"
-; V126 tmp103 [V126,T16] ( 7, 7 ) int -> rdi "Inline stloc first use temp"
+; V126 tmp103 [V126,T17] ( 7, 7 ) int -> rdi "Inline stloc first use temp"
; V127 tmp104 [V127,T36] ( 5, 5 ) int -> rax "Inline stloc first use temp"
;* V128 tmp105 [V128 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
; V129 tmp106 [V129,T54] ( 2, 4 ) byref -> r15 single-def "Inlining Arg"
;* V130 tmp107 [V130 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V131 tmp108 [V131 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]>
-; V132 tmp109 [V132,T14] ( 4, 8 ) int -> rdi "Inlining Arg"
+; V132 tmp109 [V132,T15] ( 4, 8 ) int -> rdi "Inlining Arg"
;* V133 tmp110 [V133 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
; V134 tmp111 [V134,T27] ( 3, 6 ) int -> r12 "Inlining Arg"
; V135 tmp112 [V135,T55] ( 2, 4 ) byref -> r13 single-def "Inlining Arg"
@@ -156,10 +156,10 @@
;* V145 tmp122 [V145 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-INDEP
;* V146 tmp123 [V146 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP
;* V147 tmp124 [V147 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V148 tmp125 [V148,T20] ( 6, 6 ) int -> r14 "field V17.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
-; V149 tmp126 [V149,T21] ( 6, 6 ) int -> r12 "field V17.<End>k__BackingField (fldOffset=0x4)" P-INDEP
+; V148 tmp125 [V148,T21] ( 6, 6 ) int -> r14 "field V17.<Start>k__BackingField (fldOffset=0x0)" P-INDEP
+; V149 tmp126 [V149,T22] ( 6, 6 ) int -> r12 "field V17.<End>k__BackingField (fldOffset=0x4)" P-INDEP
;* V150 tmp127 [V150 ] ( 0, 0 ) int -> zero-ref "field V21._value (fldOffset=0x0)" P-INDEP
-; V151 tmp128 [V151,T19] ( 6, 6 ) byref -> rbx single-def "field V35._reference (fldOffset=0x0)" P-INDEP
+; V151 tmp128 [V151,T20] ( 6, 6 ) byref -> rbx single-def "field V35._reference (fldOffset=0x0)" P-INDEP
;* V152 tmp129 [V152,T90] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V153 tmp130 [V153 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V154 tmp131 [V154 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
@@ -178,7 +178,7 @@
;* V167 tmp144 [V167 ] ( 0, 0 ) byref -> zero-ref "field V68._reference (fldOffset=0x0)" P-INDEP
;* V168 tmp145 [V168 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP
; V169 tmp146 [V169,T32] ( 5, 5 ) byref -> r15 "field V84._reference (fldOffset=0x0)" P-INDEP
-; V170 tmp147 [V170,T07] ( 9, 9 ) int -> r13 "field V84._length (fldOffset=0x8)" P-INDEP
+; V170 tmp147 [V170,T09] ( 9, 9 ) int -> r13 "field V84._length (fldOffset=0x8)" P-INDEP
; V171 tmp148 [V171,T75] ( 2, 2 ) byref -> r15 single-def "field V86._reference (fldOffset=0x0)" P-INDEP
; V172 tmp149 [V172,T83] ( 2, 2 ) int -> r13 "field V86._length (fldOffset=0x8)" P-INDEP
;* V173 tmp150 [V173 ] ( 0, 0 ) byref -> zero-ref single-def "field V87._reference (fldOffset=0x0)" P-INDEP
@@ -234,8 +234,8 @@
; V223 GsCookie [V223 ] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[X] addr-exposed "GSSecurityCookie"
; V224 PSPSym [V224,T93] ( 1, 1 ) long -> [rbp-0xB0] do-not-enreg[V] "PSPSym"
; V225 cse0 [V225,T98] ( 3, 3 ) simd16 -> mm1 "CSE - conservative"
-; V226 cse1 [V226,T04] ( 8, 13.08) int -> r15 "CSE - aggressive"
-; V227 cse2 [V227,T22] ( 6, 6 ) int -> rdi "CSE - moderate"
+; V226 cse1 [V226,T06] ( 8, 20 ) int -> r15 "CSE - aggressive"
+; V227 cse2 [V227,T23] ( 6, 6 ) int -> rdi "CSE - moderate"
; V228 rat0 [V228,T94] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; V229 rat1 [V229,T95] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; V230 rat2 [V230,T96] ( 3, 6 ) simd16 -> mm0 "ReplaceWithLclVar is creating a new local variable"
@@ -263,7 +263,7 @@ G_M22230_IG01: ; bbWeight=1, gcVars=00000000000000000000000000000000 {},
mov gword ptr [rbp-0x78], rdi
; GC ptr vars +{V00}
;; size=72 bbWeight=1 PerfScore 14.58
-G_M22230_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000004 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M22230_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000010 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [rbp-0x78], 0
je SHORT G_M22230_IG04
mov rax, gword ptr [rbp-0x78]
@@ -279,7 +279,7 @@ G_M22230_IG02: ; bbWeight=1, gcVars=00000000000000000000000000000004 {V00
cmp edi, 7
jl SHORT G_M22230_IG09
;; size=46 bbWeight=1 PerfScore 11.00
-G_M22230_IG03: ; bbWeight=0.50, gcVars=00000000000000000000000000040004 {V00 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M22230_IG03: ; bbWeight=0.50, gcVars=00000000000000000000000000080010 {V00 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
jmp SHORT G_M22230_IG07
;; size=2 bbWeight=0.50 PerfScore 1.00
@@ -308,9 +308,9 @@ G_M22230_IG06: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=1 PerfScore 4.50
-G_M22230_IG07: ; bbWeight=0.50, gcVars=00000000000000000000000000040004 {V00 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M22230_IG07: ; bbWeight=0.50, gcVars=00000000000000000000000000080010 {V00 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- ; GC ptr vars +{V00 V02 V18}
+ ; GC ptr vars +{V00 V02 V04}
mov rax, gword ptr [rbp-0x78]
; gcrRegs +[rax]
mov rcx, 0xD1FFAB1E
@@ -431,16 +431,15 @@ G_M22230_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M22230_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp-0x78]
; gcrRegs +[rdi]
- ; GC ptr vars -{V00 V02 V18}
+ ; GC ptr vars -{V00 V04}
call [System.String:Substring(int):System.String:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
mov gword ptr [rbp-0x78], rax
; GC ptr vars +{V00}
;; size=14 bbWeight=1 PerfScore 5.00
-G_M22230_IG15: ; bbWeight=1, gcVars=00000000000000000000000000040004 {V00 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M22230_IG15: ; bbWeight=1, gcVars=00000000000000000000000000080010 {V00 V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
- ; GC ptr vars +{V02}
xor rbx, rbx
; gcrRegs +[rbx]
xor rdi, rdi
@@ -472,7 +471,7 @@ G_M22230_IG15: ; bbWeight=1, gcVars=00000000000000000000000000040004 {V00
mov gword ptr [rbp-0x90], rax
; GC ptr vars +{V09}
;; size=72 bbWeight=1 PerfScore 19.25
-G_M22230_IG16: ; bbWeight=1, gcVars=00000000000000000000000010040104 {V00 V02 V05 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M22230_IG16: ; bbWeight=1, gcVars=00000000000000000000000010080410 {V00 V02 V05 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
mov rdi, gword ptr [rbp-0x90]
; gcrRegs +[rdi]
@@ -487,7 +486,7 @@ G_M22230_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
inc esi
mov rdi, gword ptr [rbp-0x78]
; gcrRegs +[rdi]
- ; GC ptr vars -{V00 V02}
+ ; GC ptr vars -{V00}
call [System.String:Substring(int):System.String:this]
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
@@ -503,7 +502,6 @@ G_M22230_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov edx, dword ptr [rsi+0x08]
mov esi, 58
; gcrRegs -[rsi]
- ; GC ptr vars +{V02}
call [<unknown method>]
; gcrRegs -[rax]
; byrRegs -[rdi]
@@ -515,7 +513,7 @@ G_M22230_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[rbx]
jmp SHORT G_M22230_IG19
;; size=69 bbWeight=1 PerfScore 18.25
-G_M22230_IG18: ; bbWeight=1, gcVars=00000000000000000000000000040104 {V00 V02 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M22230_IG18: ; bbWeight=1, gcVars=00000000000000000000000000080410 {V00 V02 V09}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rbx]
; GC ptr vars -{V05}
mov rdi, gword ptr [rbp-0x90]
@@ -537,7 +535,7 @@ G_M22230_IG18: ; bbWeight=1, gcVars=00000000000000000000000000040104 {V00
mov gword ptr [rbp-0x88], rax
; GC ptr vars +{V05}
;; size=45 bbWeight=1 PerfScore 10.25
-G_M22230_IG19: ; bbWeight=1, gcVars=00000000000000000000000010040004 {V00 V02 V05}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M22230_IG19: ; bbWeight=1, gcVars=00000000000000000000000010080010 {V00 V02 V05}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
mov rdi, gword ptr [rbp-0x78]
; gcrRegs +[rdi]
@@ -591,12 +589,12 @@ G_M22230_IG21: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov r13d, dword ptr [rbp-0x34]
inc r13d
cmp r15d, r13d
- jle SHORT G_M22230_IG32
+ jle SHORT G_M22230_IG31
;; size=30 bbWeight=1 PerfScore 8.00
G_M22230_IG22: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
test r13d, r13d
- jl SHORT G_M22230_IG28
+ jl SHORT G_M22230_IG27
;; size=5 bbWeight=0.50 PerfScore 0.62
G_M22230_IG23: ; bbWeight=7.92, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbp-0x78]
@@ -610,24 +608,22 @@ G_M22230_IG23: ; bbWeight=7.92, gcrefRegs=4008 {rbx r14}, byrefRegs=0000
G_M22230_IG24: ; bbWeight=3.96, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
...
+15 (+0.51%) : 37387.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
@@ -9,117 +9,118 @@
; Final local variable assignments
;
; V00 arg0 [V00,T08] ( 43,191.46) ref -> rdi class-hnd single-def <double[][]>
-; V01 arg1 [V01,T11] ( 30, 95.27) int -> rsi single-def
-; V02 arg2 [V02,T45] ( 7, 6.54) ref -> [rbp+0x80] class-hnd single-def tier0-frame <int[]>
-; V03 arg3 [V03,T51] ( 6, 6 ) byref -> [rbp+0x78] single-def tier0-frame
-; V04 loc0 [V04,T66] ( 15, 66 ) double -> mm0
-; V05 loc1 [V05,T64] ( 31,336.00) double -> mm2
-; V06 loc2 [V06,T65] ( 24, 94.00) double -> mm2
-; V07 loc3 [V07,T04] ( 94,378.83) int -> registers
-; V08 loc4 [V08,T01] ( 95,433.43) int -> rax
+; V01 arg1 [V01,T14] ( 30,103.03) int -> rsi single-def
+; V02 arg2 [V02,T50] ( 7, 6.54) ref -> [rbp+0x80] class-hnd single-def tier0-frame <int[]>
+; V03 arg3 [V03,T42] ( 6, 17.72) byref -> rcx single-def
+; V04 loc0 [V04,T66] ( 15, 85.25) double -> mm0
+; V05 loc1 [V05,T64] ( 31,382.10) double -> mm2
+; V06 loc2 [V06,T65] ( 24,136.46) double -> mm2
+; V07 loc3 [V07,T02] ( 94,463.43) int -> registers
+; V08 loc4 [V08,T01] ( 95,479.92) int -> rax
; V09 loc5 [V09,T00] ( 87,747.51) int -> registers
-; V10 loc6 [V10,T32] ( 23, 24.68) int -> r9
+; V10 loc6 [V10,T28] ( 23, 40.28) int -> r9
; V11 loc7 [V11,T71] ( 2, 2 ) double -> mm1
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T18] ( 8, 64.64) ref -> r13 class-hnd "Strict ordering of exceptions for Array store" <double[]>
+; V13 tmp1 [V13,T20] ( 8, 64.64) ref -> r13 class-hnd "Strict ordering of exceptions for Array store" <double[]>
; V14 tmp2 [V14,T67] ( 6, 64.00) double -> mm0 "Strict ordering of exceptions for Array store"
-; V15 tmp3 [V15,T12] ( 9, 96.00) ref -> registers class-hnd "Strict ordering of exceptions for Array store" <double[]>
+; V15 tmp3 [V15,T15] ( 9, 96.00) ref -> registers class-hnd "Strict ordering of exceptions for Array store" <double[]>
; V16 tmp4 [V16,T68] ( 6, 64.00) double -> mm3 "Strict ordering of exceptions for Array store"
-; V17 tmp5 [V17,T70] ( 4, 8 ) double -> mm4 "Strict ordering of exceptions for Array store"
-; V18 tmp6 [V18,T23] ( 5, 64.32) ref -> r11 "arr expr"
-;* V19 tmp7 [V19,T38] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V20 tmp8 [V20,T34] ( 3, 24 ) ref -> rax "arr expr"
-; V21 tmp9 [V21,T13] ( 9, 96.00) ref -> r13 "arr expr"
-; V22 tmp10 [V22,T06] ( 8,256 ) ref -> registers "arr expr"
-; V23 tmp11 [V23,T02] ( 12,384 ) ref -> registers "arr expr"
-; V24 tmp12 [V24,T24] ( 6, 64.00) ref -> r14 "arr expr"
-; V25 tmp13 [V25,T14] ( 9, 96.00) ref -> r14 "arr expr"
-; V26 tmp14 [V26,T05] ( 9,257.28) ref -> registers "arr expr"
-; V27 tmp15 [V27,T03] ( 12,384 ) ref -> registers "arr expr"
-; V28 tmp16 [V28,T22] ( 7, 64.32) ref -> r13 "arr expr"
-; V29 tmp17 [V29,T15] ( 9, 96.00) ref -> registers "arr expr"
-; V30 tmp18 [V30,T19] ( 8, 64.64) ref -> registers "arr expr"
-; V31 tmp19 [V31,T20] ( 8, 64.64) ref -> registers "arr expr"
-; V32 tmp20 [V32,T21] ( 8, 64.64) ref -> registers "arr expr"
-; V33 tmp21 [V33,T39] ( 6, 12 ) ref -> registers "arr expr"
-; V34 tmp22 [V34,T46] ( 5, 8.04) ref -> registers "arr expr"
-; V35 tmp23 [V35,T47] ( 5, 8.04) ref -> registers "arr expr"
-; V36 tmp24 [V36,T48] ( 5, 8.04) ref -> r11 "arr expr"
-; V37 tmp25 [V37,T33] ( 6, 24 ) ref -> rbx "arr expr"
-; V38 tmp26 [V38,T49] ( 5, 8.04) ref -> r13 "arr expr"
-; V39 tmp27 [V39,T50] ( 5, 8.04) ref -> r12 "arr expr"
-; V40 tmp28 [V40,T16] ( 9, 96.00) ref -> r14 "arr expr"
-; V41 cse0 [V41,T36] ( 5, 17.00) ref -> registers hoist multi-def "CSE - moderate"
+; V17 tmp5 [V17,T70] ( 4, 31.44) double -> mm4 "Strict ordering of exceptions for Array store"
+; V18 tmp6 [V18,T24] ( 5, 64.32) ref -> r11 "arr expr"
+;* V19 tmp7 [V19,T47] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V20 tmp8 [V20,T41] ( 3, 24 ) ref -> rax "arr expr"
+; V21 tmp9 [V21,T16] ( 9, 96.00) ref -> r13 "arr expr"
+; V22 tmp10 [V22,T07] ( 8,256 ) ref -> registers "arr expr"
+; V23 tmp11 [V23,T03] ( 12,384 ) ref -> registers "arr expr"
+; V24 tmp12 [V24,T13] ( 6,125.47) ref -> r14 "arr expr"
+; V25 tmp13 [V25,T17] ( 9, 96.00) ref -> r14 "arr expr"
+; V26 tmp14 [V26,T06] ( 9,257.28) ref -> registers "arr expr"
+; V27 tmp15 [V27,T04] ( 12,384 ) ref -> registers "arr expr"
+; V28 tmp16 [V28,T12] ( 7,125.79) ref -> r13 "arr expr"
+; V29 tmp17 [V29,T09] ( 9,188.21) ref -> registers "arr expr"
+; V30 tmp18 [V30,T21] ( 8, 64.64) ref -> registers "arr expr"
+; V31 tmp19 [V31,T22] ( 8, 64.64) ref -> registers "arr expr"
+; V32 tmp20 [V32,T23] ( 8, 64.64) ref -> registers "arr expr"
+; V33 tmp21 [V33,T25] ( 6, 47.16) ref -> registers "arr expr"
+; V34 tmp22 [V34,T36] ( 5, 31.48) ref -> registers "arr expr"
+; V35 tmp23 [V35,T37] ( 5, 31.48) ref -> registers "arr expr"
+; V36 tmp24 [V36,T38] ( 5, 31.48) ref -> r11 "arr expr"
+; V37 tmp25 [V37,T40] ( 6, 24 ) ref -> rbx "arr expr"
+; V38 tmp26 [V38,T51] ( 5, 8.04) ref -> r13 "arr expr"
+; V39 tmp27 [V39,T52] ( 5, 8.04) ref -> r12 "arr expr"
+; V40 tmp28 [V40,T18] ( 9, 96.00) ref -> r14 "arr expr"
+; V41 cse0 [V41,T46] ( 5, 17.00) ref -> [rbp-0x48] hoist multi-def "CSE - moderate"
; V42 cse1 [V42,T55] ( 4, 1.12) ref -> r14 "CSE - moderate"
-; V43 cse2 [V43,T58] ( 4, 1.11) ref -> [rbp-0x48] spill-single-def "CSE - moderate"
-; V44 cse3 [V44,T59] ( 4, 1.11) ref -> [rbp-0x50] spill-single-def "CSE - moderate"
+; V43 cse2 [V43,T58] ( 4, 1.11) ref -> [rbp-0x50] spill-single-def "CSE - moderate"
+; V44 cse3 [V44,T59] ( 4, 1.11) ref -> [rbp-0x58] spill-single-def "CSE - moderate"
; V45 cse4 [V45,T63] ( 2, 0.18) ref -> r10 hoist "CSE - conservative"
; V46 cse5 [V46,T62] ( 3, 0.48) ref -> r14 "CSE - conservative"
; V47 cse6 [V47,T72] ( 3, 0.40) double -> mm2 "CSE - conservative"
-; V48 cse7 [V48,T09] ( 6,113.69) ref -> r14 "CSE - moderate"
-; V49 cse8 [V49,T10] ( 6,113.69) ref -> r13 "CSE - moderate"
-; V50 cse9 [V50,T35] ( 7, 19.66) ref -> rbx multi-def "CSE - moderate"
-; V51 cse10 [V51,T27] ( 8, 34.66) ref -> r13 hoist multi-def "CSE - moderate"
-; V52 cse11 [V52,T31] ( 6, 21.88) ref -> r10 multi-def "CSE - moderate"
-; V53 cse12 [V53,T25] ( 3, 47.04) ref -> r14 "CSE - moderate"
+; V48 cse7 [V48,T10] ( 6,129.06) ref -> r14 "CSE - moderate"
+; V49 cse8 [V49,T11] ( 6,129.06) ref -> r13 "CSE - moderate"
+; V50 cse9 [V50,T43] ( 7, 19.66) ref -> rbx multi-def "CSE - moderate"
+; V51 cse10 [V51,T31] ( 8, 34.66) ref -> r13 hoist multi-def "CSE - moderate"
+; V52 cse11 [V52,T39] ( 6, 21.88) ref -> r10 multi-def "CSE - moderate"
+; V53 cse12 [V53,T26] ( 3, 47.04) ref -> r14 "CSE - moderate"
; V54 cse13 [V54,T69] ( 3, 39.60) double -> mm2 "CSE - moderate"
-; V55 cse14 [V55,T40] ( 4, 11.88) ref -> r12 "CSE - moderate"
+; V55 cse14 [V55,T48] ( 4, 11.88) ref -> r12 "CSE - moderate"
; V56 cse15 [V56,T56] ( 4, 1.12) ref -> r13 "CSE - moderate"
-; V57 cse16 [V57,T37] ( 4, 16.84) ref -> r12 hoist multi-def "CSE - moderate"
-; V58 cse17 [V58,T43] ( 5, 9.90) ref -> r11 "CSE - moderate"
-; V59 cse18 [V59,T30] ( 43, 31.76) int -> registers hoist multi-def "CSE - moderate"
-; V60 cse19 [V60,T42] ( 10, 11.22) long -> r10 "CSE - moderate"
-; V61 cse20 [V61,T28] ( 3, 31.99) int -> r12 "CSE - moderate"
-; V62 cse21 [V62,T29] ( 3, 31.99) int -> rcx "CSE - moderate"
-; V63 cse22 [V63,T26] ( 3, 47.04) int -> r12 "CSE - moderate"
-; V64 cse23 [V64,T44] ( 5, 9.90) int -> r14 "CSE - moderate"
-; V65 cse24 [V65,T53] ( 4, 4.29) int -> [rbp-0x2C] hoist multi-def "CSE - moderate"
-; V66 cse25 [V66,T41] ( 4, 11.88) int -> r14 "CSE - moderate"
-; V67 cse26 [V67,T57] ( 4, 1.12) int -> [rbp-0x30] spill-single-def "CSE - moderate"
-; V68 cse27 [V68,T61] ( 3, 0.95) int -> [rbp-0x34] spill-single-def "CSE - moderate"
-; V69 cse28 [V69,T60] ( 4, 1.11) int -> [rbp-0x38] spill-single-def "CSE - moderate"
-; V70 cse29 [V70,T07] ( 34,249.52) long -> r15 hoist multi-def "CSE - aggressive"
-; V71 cse30 [V71,T17] ( 5, 78.41) long -> r11 "CSE - moderate"
-; V72 cse31 [V72,T52] ( 6, 5.96) long -> [rbp-0x40] hoist multi-def "CSE - moderate"
+; V57 cse16 [V57,T32] ( 4, 32.21) ref -> r12 hoist multi-def "CSE - moderate"
+; V58 cse17 [V58,T29] ( 5, 39.20) ref -> r11 "CSE - moderate"
+; V59 cse18 [V59,T35] ( 43, 31.76) int -> registers hoist multi-def "CSE - moderate"
+; V60 cse19 [V60,T45] ( 10, 17.08) long -> [rbp-0x30] spill-single-def "CSE - moderate"
+; V61 cse20 [V61,T33] ( 3, 31.99) int -> r12 "CSE - moderate"
+; V62 cse21 [V62,T34] ( 3, 31.99) int -> rdx "CSE - moderate"
+; V63 cse22 [V63,T27] ( 3, 47.04) int -> r12 "CSE - moderate"
+; V64 cse23 [V64,T30] ( 5, 39.20) int -> r14 "CSE - moderate"
+; V65 cse24 [V65,T53] ( 4, 4.29) int -> [rbp-0x34] hoist multi-def "CSE - moderate"
+; V66 cse25 [V66,T49] ( 4, 11.88) int -> r14 "CSE - moderate"
+; V67 cse26 [V67,T57] ( 4, 1.12) int -> [rbp-0x38] spill-single-def "CSE - moderate"
+; V68 cse27 [V68,T61] ( 3, 0.95) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
+; V69 cse28 [V69,T60] ( 4, 1.11) int -> [rbp-0x40] spill-single-def "CSE - moderate"
+; V70 cse29 [V70,T05] ( 34,291.98) long -> r15 hoist multi-def "CSE - aggressive"
+; V71 cse30 [V71,T19] ( 5, 78.41) long -> r10 "CSE - moderate"
+; V72 cse31 [V72,T44] ( 6, 17.68) long -> r12 hoist multi-def "CSE - moderate"
; V73 cse32 [V73,T54] ( 23, 2.88) long -> r15 hoist multi-def "CSE - moderate"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M50743_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- sub rsp, 80
- mov qword ptr [rsp+0x108], r15
- mov qword ptr [rsp+0x100], r14
- mov qword ptr [rsp+0xF8], r13
- mov qword ptr [rsp+0xF0], r12
- mov qword ptr [rsp+0xE8], rbx
+ sub rsp, 96
+ mov qword ptr [rsp+0x118], r15
+ mov qword ptr [rsp+0x110], r14
+ mov qword ptr [rsp+0x108], r13
+ mov qword ptr [rsp+0x100], r12
+ mov qword ptr [rsp+0xF8], rbx
vzeroupper
- lea rbp, [rsp+0x50]
+ lea rbp, [rsp+0x60]
mov rdi, gword ptr [rbp+0x90]
; gcrRegs +[rdi]
mov esi, dword ptr [rbp+0x8C]
mov rdx, gword ptr [rbp+0x80]
; gcrRegs +[rdx]
+ mov rcx, bword ptr [rbp+0x78]
+ ; byrRegs +[rcx]
vmovsd xmm0, qword ptr [rbp+0x70]
mov r8d, dword ptr [rbp+0x5C]
mov eax, dword ptr [rbp+0x58]
mov r9d, dword ptr [rbp+0x50]
vmovsd xmm1, qword ptr [rbp+0x48]
- ;; size=98 bbWeight=0.01 PerfScore 0.30
-G_M50743_IG02: ; bbWeight=0.01, gcVars=00000000000000000008000000000000 {V03}, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V03 V51}
+ ;; size=102 bbWeight=0.01 PerfScore 0.32
+G_M50743_IG02: ; bbWeight=0.01, gcrefRegs=0084 {rdx rdi}, byrefRegs=0002 {rcx}, byref, isz
jmp SHORT G_M50743_IG04
;; size=2 bbWeight=0.01 PerfScore 0.02
-G_M50743_IG03: ; bbWeight=2, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
+G_M50743_IG03: ; bbWeight=2, gcrefRegs=0084 {rdx rdi}, byrefRegs=0002 {rcx}, byref
vxorps xmm0, xmm0, xmm0
xor eax, eax
;; size=6 bbWeight=2 PerfScore 1.17
-G_M50743_IG04: ; bbWeight=8, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
+G_M50743_IG04: ; bbWeight=8, gcrefRegs=0084 {rdx rdi}, byrefRegs=0002 {rcx}, byref
cmp eax, esi
jge G_M50743_IG14
;; size=8 bbWeight=8 PerfScore 10.00
-G_M50743_IG05: ; bbWeight=2, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG05: ; bbWeight=2, gcrefRegs=0084 {rdx rdi}, byrefRegs=0002 {rcx}, byref, isz
test rdi, rdi
je SHORT G_M50743_IG10
mov r10d, dword ptr [rdi+0x08]
@@ -136,7 +137,7 @@ G_M50743_IG05: ; bbWeight=2, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {},
cmp dword ptr [r10+0x08], esi
jl SHORT G_M50743_IG10
;; size=41 bbWeight=2 PerfScore 27.00
-G_M50743_IG06: ; bbWeight=15.84, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG06: ; bbWeight=15.84, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0002 {rcx}, byref, isz
mov r11, r10
; gcrRegs +[r11]
mov ebx, eax
@@ -145,60 +146,61 @@ G_M50743_IG06: ; bbWeight=15.84, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=
vucomisd xmm3, xmm0
jbe SHORT G_M50743_IG08
;; size=26 bbWeight=15.84 PerfScore 150.48
-G_M50743_IG07: ; bbWeight=7.92, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0000 {}, byref
+G_M50743_IG07: ; bbWeight=7.92, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0002 {rcx}, byref
; gcrRegs -[r11]
vandps xmm0, xmm2, xmmword ptr [reloc @RWD00]
;; size=8 bbWeight=7.92 PerfScore 15.84
-G_M50743_IG08: ; bbWeight=15.84, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG08: ; bbWeight=15.84, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0002 {rcx}, byref, isz
inc eax
cmp eax, esi
jl SHORT G_M50743_IG06
;; size=6 bbWeight=15.84 PerfScore 23.76
-G_M50743_IG09: ; bbWeight=8, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG09: ; bbWeight=8, gcrefRegs=0084 {rdx rdi}, byrefRegs=0002 {rcx}, byref, isz
; gcrRegs -[r10]
jmp SHORT G_M50743_IG14
;; size=2 bbWeight=8 PerfScore 16.00
-G_M50743_IG10: ; bbWeight=0.02, gcrefRegs=0084 {rdx rdi}, byrefRegs=0000 {}, byref
+G_M50743_IG10: ; bbWeight=0.02, gcrefRegs=0084 {rdx rdi}, byrefRegs=0002 {rcx}, byref
mov r10d, dword ptr [rdi+0x08]
cmp r8d, r10d
- jae G_M50743_IG108
+ jae G_M50743_IG109
mov r11d, r8d
mov r10, gword ptr [rdi+8*r11+0x10]
; gcrRegs +[r10]
;; size=21 bbWeight=0.02 PerfScore 0.11
-G_M50743_IG11: ; bbWeight=0.16, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG11: ; bbWeight=0.16, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0002 {rcx}, byref, isz
mov r11, r10
; gcrRegs +[r11]
cmp eax, dword ptr [r11+0x08]
- jae G_M50743_IG108
+ jae G_M50743_IG109
mov ebx, eax
vmovsd xmm2, qword ptr [r11+8*rbx+0x10]
vandps xmm3, xmm2, xmmword ptr [reloc @RWD00]
vucomisd xmm3, xmm0
jbe SHORT G_M50743_IG13
;; size=36 bbWeight=0.16 PerfScore 2.16
-G_M50743_IG12: ; bbWeight=0.08, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0000 {}, byref
+G_M50743_IG12: ; bbWeight=0.08, gcrefRegs=0484 {rdx rdi r10}, byrefRegs=0002 {rcx}, byref
; gcrRegs -[r11]
vandps xmm0, xmm2, xmmword ptr [reloc @RWD00]
...
+22 (+0.86%) : 34261.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
@@ -18,9 +18,9 @@
; V07 arg7 [V07,T12] ( 7, 19.29) ref -> r14 class-hnd single-def <System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[]>
; V08 arg8 [V08,T35] ( 6, 6 ) ref -> [rbp+0x28] class-hnd single-def <System.Security.Cryptography.AsymmetricAlgorithm[]>
; V09 arg9 [V09,T11] ( 8, 20.99) int -> r15 single-def
-; V10 loc0 [V10,T10] ( 19, 22.06) int -> [rbp-0x2C]
+; V10 loc0 [V10,T06] ( 19, 27.92) int -> [rbp-0x2C]
; V11 loc1 [V11 ] ( 6, 12 ) struct (16) [rbp-0x40] do-not-enreg[SFAR] multireg-arg multireg-ret must-init <System.ReadOnlyMemory`1[ubyte]>
-; V12 loc2 [V12,T07] ( 6, 24 ) ref -> rsi class-hnd <System.Security.Cryptography.Asn1.AttributeAsn[]>
+; V12 loc2 [V12,T08] ( 6, 24 ) ref -> rsi class-hnd <System.Security.Cryptography.Asn1.AttributeAsn[]>
; V13 loc3 [V13,T02] ( 10, 68 ) int -> rdi
;* V14 loc4 [V14 ] ( 0, 0 ) struct (16) zero-ref <System.Security.Cryptography.Asn1.AttributeAsn>
; V15 loc5 [V15 ] ( 24, 24 ) struct (16) [rbp-0x50] do-not-enreg[SBR] multireg-ret must-init ld-addr-op <System.ReadOnlyMemory`1[ubyte]>
@@ -28,7 +28,7 @@
; V17 loc7 [V17,T15] ( 5, 18 ) ref -> [rbp-0xB8] class-hnd exact <System.String>
; V18 loc8 [V18,T16] ( 5, 18 ) ref -> [rbp-0xC0] class-hnd <<unknown class>>
; V19 loc9 [V19,T17] ( 5, 18 ) ref -> [rbp-0xC8] class-hnd <<unknown class>>
-; V20 loc10 [V20,T01] ( 18, 68.32) int -> [rbp-0x54]
+; V20 loc10 [V20,T01] ( 18, 74.18) int -> [rbp-0x54]
; V21 OutArgs [V21 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V22 tmp1 [V22,T19] ( 4, 16 ) ref -> rsi class-hnd exact "dup spill" <System.Security.Cryptography.Asn1.AttributeAsn[]>
; V23 tmp2 [V23,T22] ( 8, 14 ) ref -> rsi
@@ -65,7 +65,7 @@
; V54 tmp33 [V54,T26] ( 6, 12 ) int -> [rbp-0x38] do-not-enreg[] "field V11._index (fldOffset=0x8)" P-DEP
; V55 tmp34 [V55,T27] ( 6, 12 ) int -> [rbp-0x34] do-not-enreg[] "field V11._length (fldOffset=0xc)" P-DEP
; V56 tmp35 [V56,T03] ( 10, 52 ) ref -> registers "field V14.AttrType (fldOffset=0x0)" P-INDEP
-; V57 tmp36 [V57,T06] ( 7, 26.02) ref -> registers "field V14.AttrValues (fldOffset=0x8)" P-INDEP
+; V57 tmp36 [V57,T07] ( 7, 26.02) ref -> registers "field V14.AttrValues (fldOffset=0x8)" P-INDEP
; V58 tmp37 [V58,T13] ( 18, 18 ) ref -> [rbp-0x50] do-not-enreg[] "field V15._object (fldOffset=0x0)" P-DEP
; V59 tmp38 [V59,T44] ( 4, 4 ) int -> [rbp-0x48] do-not-enreg[] "field V15._index (fldOffset=0x8)" P-DEP
; V60 tmp39 [V60,T37] ( 6, 6 ) int -> [rbp-0x44] do-not-enreg[] "field V15._length (fldOffset=0xc)" P-DEP
@@ -83,13 +83,13 @@
;* V72 tmp51 [V72 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
; V73 tmp52 [V73,T00] ( 6, 96 ) byref -> registers "BlockOp address local"
; V74 tmp53 [V74,T28] ( 6, 12 ) struct (16) [rbp-0x70] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
-; V75 tmp54 [V75,T08] ( 6, 24 ) struct (16) [rbp-0x80] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
+; V75 tmp54 [V75,T09] ( 6, 24 ) struct (16) [rbp-0x80] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
; V76 tmp55 [V76,T53] ( 2, 0 ) ref -> rsi "argument with side effect"
; V77 cse0 [V77,T38] ( 3, 5.94) ref -> rsi "CSE - moderate"
; V78 cse1 [V78,T49] ( 3, 0.06) ref -> rsi "CSE - conservative"
; V79 cse2 [V79,T48] ( 4, 0.12) byref -> [rbp-0xE0] spill-single-def "CSE - conservative"
; V80 cse3 [V80,T23] ( 5, 13.86) long -> [rbp-0x88] spill-single-def "CSE - moderate"
-; V81 cse4 [V81,T09] ( 3, 23.76) int -> rdx "CSE - moderate"
+; V81 cse4 [V81,T10] ( 3, 23.76) int -> rdx "CSE - moderate"
; V82 cse5 [V82,T14] ( 18, 18 ) ref -> rsi multi-def "CSE - moderate"
; V83 cse6 [V83,T41] ( 5, 4.02) int -> [rbp-0x8C] multi-def "CSE - moderate"
; V84 cse7 [V84,T47] ( 3, 0.24) int -> [rbp-0x90] spill-single-def "CSE - conservative"
@@ -137,17 +137,17 @@ G_M36482_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=114 bbWeight=1 PerfScore 27.33
G_M36482_IG02: ; bbWeight=1, gcVars=0000008000000000 {V51}, gcrefRegs=7003 {rax rcx r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
dec ebx
- js G_M36482_IG65
+ js G_M36482_IG67
;; size=8 bbWeight=1 PerfScore 1.25
G_M36482_IG03: ; bbWeight=0.50, gcrefRegs=7003 {rax rcx r12 r13 r14}, byrefRegs=0000 {}, byref
test rcx, rcx
- je G_M36482_IG37
+ je G_M36482_IG39
test rax, rax
- je G_M36482_IG37
+ je G_M36482_IG39
test r12, r12
- je G_M36482_IG37
+ je G_M36482_IG39
cmp dword ptr [rcx+0x08], ebx
- jle G_M36482_IG37
+ jle G_M36482_IG39
mov gword ptr [rbp-0xA0], rax
; GC ptr vars +{V02}
cmp dword ptr [rax+0x08], ebx
@@ -228,13 +228,13 @@ G_M36482_IG12: ; bbWeight=0.25, gcVars=0000008020000000 {V02 V51}, gcrefR
; GC ptr vars -{V03}
mov rax, gword ptr [rbp-0xA0]
; gcrRegs +[rax]
- jmp G_M36482_IG37
+ jmp G_M36482_IG39
;; size=12 bbWeight=0.25 PerfScore 0.75
G_M36482_IG13: ; bbWeight=0.25, gcrefRegs=7002 {rcx r12 r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
mov rax, gword ptr [rbp-0xA0]
; gcrRegs +[rax]
- jmp G_M36482_IG37
+ jmp G_M36482_IG39
;; size=12 bbWeight=0.25 PerfScore 0.75
G_M36482_IG14: ; bbWeight=1.98, gcVars=0000008060000000 {V02 V03 V51}, gcrefRegs=7400 {r10 r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref, nogc
; gcrRegs -[rax rcx] +[r10]
@@ -333,7 +333,7 @@ G_M36482_IG19: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0
add rsi, rdi
mov ecx, ecx
cmp rsi, rcx
- ja G_M36482_IG67
+ ja G_M36482_IG69
add rax, rdi
mov bword ptr [rbp-0xD0], rax
; GC ptr vars +{V34}
@@ -417,11 +417,11 @@ G_M36482_IG24: ; bbWeight=3.96, extend
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
cmp dword ptr [rbp-0x2C], -1
- jne G_M36482_IG32
+ jne G_M36482_IG30
;; size=94 bbWeight=3.96 PerfScore 99.99
G_M36482_IG25: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
test r15d, r15d
- jle G_M36482_IG32
+ jle G_M36482_IG29
mov rcx, qword ptr [rbp-0x88]
mov rdx, gword ptr [r12+rcx+0x10]
; gcrRegs +[rdx]
@@ -452,11 +452,11 @@ G_M36482_IG25: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0
; gcr arg pop 0
xor r8d, r8d
test r14, r14
- je SHORT G_M36482_IG29
+ je SHORT G_M36482_IG31
;; size=106 bbWeight=1.98 PerfScore 41.08
G_M36482_IG26: ; bbWeight=0.99, gcrefRegs=7001 {rax r12 r13 r14}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [r14+0x08], r15d
- jl SHORT G_M36482_IG29
+ jl SHORT G_M36482_IG31
;; size=6 bbWeight=0.99 PerfScore 3.96
G_M36482_IG27: ; bbWeight=15.68, gcrefRegs=7001 {rax r12 r13 r14}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x54], r8d
@@ -477,24 +477,33 @@ G_M36482_IG27: ; bbWeight=15.68, gcrefRegs=7001 {rax r12 r13 r14}, byrefR
; byrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M36482_IG31
+ jne G_M36482_IG33
mov r8d, dword ptr [rbp-0x54]
inc r8d
cmp r8d, r15d
mov rax, gword ptr [rbp-0xC8]
; gcrRegs +[rax]
jl SHORT G_M36482_IG27
- ;; size=69 bbWeight=15.68 PerfScore 215.62
+ ;; size=73 bbWeight=15.68 PerfScore 215.62
G_M36482_IG28: ; bbWeight=3.96, gcVars=0000008060000000 {V02 V03 V51}, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
; GC ptr vars -{V17 V18 V19}
- jmp SHORT G_M36482_IG32
- ;; size=2 bbWeight=3.96 PerfScore 7.92
-G_M36482_IG29: ; bbWeight=0.16, gcVars=0000008060018000 {V02 V03 V17 V18 V51}, gcrefRegs=7001 {rax r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov r8d, dword ptr [rbp-0x2C]
+ jmp SHORT G_M36482_IG34
+ ;; size=6 bbWeight=3.96 PerfScore 11.88
+G_M36482_IG29: ; bbWeight=0.99, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+ mov r8d, dword ptr [rbp-0x2C]
+ jmp SHORT G_M36482_IG34
+ ;; size=6 bbWeight=0.99 PerfScore 2.97
+G_M36482_IG30: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+ mov r8d, dword ptr [rbp-0x2C]
+ jmp SHORT G_M36482_IG34
+ ;; size=6 bbWeight=1.98 PerfScore 5.94
+G_M36482_IG31: ; bbWeight=0.16, gcVars=0000008060018000 {V02 V03 V17 V18 V51}, gcrefRegs=7001 {rax r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rax]
; GC ptr vars +{V16 V17 V18}
cmp r8d, dword ptr [r14+0x08]
- jae G_M36482_IG66
+ jae G_M36482_IG68
mov dword ptr [rbp-0x54], r8d
mov ecx, r8d
shl rcx, 6
@@ -514,58 +523,57 @@ G_M36482_IG29: ; bbWeight=0.16, gcVars=0000008060018000 {V02 V03 V17 V18
; byrRegs -[rcx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M36482_IG31
+ jne SHORT G_M36482_IG33
mov eax, dword ptr [rbp-0x54]
inc eax
cmp eax, r15d
mov r8d, eax
- jl SHORT G_M36482_IG30
- jmp SHORT G_M36482_IG32
- ;; size=75 bbWeight=0.16 PerfScore 3.01
-G_M36482_IG30: ; bbWeight=0.08, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M36482_IG32
+ mov r8d, dword ptr [rbp-0x2C]
+ jmp SHORT G_M36482_IG34
+ ;; size=79 bbWeight=0.16 PerfScore 3.17
+G_M36482_IG32: ; bbWeight=0.08, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbp-0xC8]
; gcrRegs +[rax]
- jmp SHORT G_M36482_IG29
+ jmp SHORT G_M36482_IG31
;; size=9 bbWeight=0.08 PerfScore 0.24
-G_M36482_IG31: ; bbWeight=1.98, gcVars=0000008060000000 {V02 V03 V51}, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
+G_M36482_IG33: ; bbWeight=7.84, gcVars=0000008060000000 {V02 V03 V51}, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
; GC ptr vars -{V17 V18 V19}
mov eax, dword ptr [rbp-0x54]
mov r8d, eax
- mov dword ptr [rbp-0x2C], r8d
- ;; size=10 bbWeight=1.98 PerfScore 4.46
-G_M36482_IG32: ; bbWeight=3.96, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref
- mov eax, dword ptr [rbp-0x2C]
- cmp eax, -1
- je G_M36482_IG35
- ;; size=12 bbWeight=3.96 PerfScore 8.91
-G_M36482_IG33: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
- mov r8, gword ptr [rbp+0x28]
- ; gcrRegs +[r8]
- mov r9d, dword ptr [r8+0x08]
- cmp eax, r9d
- jae G_M36482_IG66
- mov edx, eax
+ ;; size=6 bbWeight=7.84 PerfScore 9.80
+G_M36482_IG34: ; bbWeight=3.96, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref
+ cmp r8d, -1
+ je G_M36482_IG37
+ ;; size=10 bbWeight=3.96 PerfScore 4.95
+G_M36482_IG35: ; bbWeight=1.98, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+ mov r9, gword ptr [rbp+0x28]
+ ; gcrRegs +[r9]
+ mov r10d, dword ptr [r9+0x08]
+ cmp r8d, r10d
+ jae G_M36482_IG68
+ mov edx, r8d
mov qword ptr [rbp-0x98], rdx
- mov gword ptr [rbp+0x28], r8
- mov rsi, gword ptr [r8+8*rdx+0x10]
+ mov gword ptr [rbp+0x28], r9
+ mov rsi, gword ptr [r9+8*rdx+0x10]
; gcrRegs +[rsi]
test rsi, rsi
- jne G_M36482_IG34
+ jne G_M36482_IG36
cmp byte ptr [r13+0x24], 0
- je G_M36482_IG68
- mov r10, qword ptr [rbp-0x88]
- lea rdi, bword ptr [r12+r10+0x18]
+ je G_M36482_IG70
+ mov r11, qword ptr [rbp-0x88]
+ lea rdi, bword ptr [r12+r11+0x18]
; byrRegs +[rdi]
mov bword ptr [rbp-0xE8], rdi
- mov r11, gword ptr [rbp+0x18]
- ; gcrRegs +[r11]
- cmp eax, dword ptr [r11+0x08]
- jae G_M36482_IG66
+ mov rcx, gword ptr [rbp+0x18]
+ ; gcrRegs +[rcx]
+ cmp r8d, dword ptr [rcx+0x08]
+ jae G_M36482_IG68
shl rdx, 5
add rdx, 16
- mov gword ptr [rbp+0x18], r11
- add rdx, r11
+ mov gword ptr [rbp+0x18], rcx
+ add rdx, rcx
...
coreclr_tests.run.linux.x64.checked.mch
-9 (-7.44%) : 40815.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,99 +11,91 @@
;
; V00 arg0 [V00,T00] ( 8, 6.83) long -> rdi single-def
; V01 arg1 [V01,T02] ( 7, 5.00) ref -> rsi class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.05) long -> rbx
-; V03 loc1 [V03,T03] ( 10, 5.32) long -> rax
-; V04 loc2 [V04,T01] ( 10, 7.24) long -> rcx
+; V02 loc0 [V02,T04] ( 4, 3.05) long -> rax
+; V03 loc1 [V03,T03] ( 10, 5.32) long -> rcx
+; V04 loc2 [V04,T01] ( 10, 7.24) long -> rdx
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
- push rbx
- lea rbp, [rsp+0x08]
- ;; size=7 bbWeight=1 PerfScore 2.50
+ mov rbp, rsp
+ ;; size=4 bbWeight=1 PerfScore 1.25
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
test rsi, rsi
- je SHORT G_M24157_IG07
+ je SHORT G_M24157_IG15
;; size=5 bbWeight=1 PerfScore 1.25
G_M24157_IG03: ; bbWeight=0.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rbx, qword ptr [rsi]
- movzx rax, word ptr [rbx+0x0E]
- test rax, rax
- je SHORT G_M24157_IG13
+ mov rax, qword ptr [rsi]
+ movzx rcx, word ptr [rax+0x0E]
+ test rcx, rcx
+ je SHORT G_M24157_IG12
;; size=12 bbWeight=0.99 PerfScore 5.18
G_M24157_IG04: ; bbWeight=0.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- mov rcx, qword ptr [rbx+0x40]
- cmp rax, 4
- jl SHORT G_M24157_IG15
+ mov rdx, qword ptr [rax+0x40]
+ cmp rcx, 4
+ jl SHORT G_M24157_IG11
;; size=10 bbWeight=0.99 PerfScore 3.21
G_M24157_IG05: ; bbWeight=1.63, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rcx], rdi
- je SHORT G_M24157_IG07
+ cmp qword ptr [rdx], rdi
+ je SHORT G_M24157_IG15
;; size=5 bbWeight=1.63 PerfScore 6.51
G_M24157_IG06: ; bbWeight=1.63, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rcx+0x08], rdi
- jne SHORT G_M24157_IG09
+ cmp qword ptr [rdx+0x08], rdi
+ je SHORT G_M24157_IG15
;; size=6 bbWeight=1.63 PerfScore 6.51
-G_M24157_IG07: ; bbWeight=0.92, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- mov rax, rsi
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.92 PerfScore 0.23
-G_M24157_IG08: ; bbWeight=0.92, epilog, nogc, extend
- pop rbx
- pop rbp
- ret
- ;; size=3 bbWeight=0.92 PerfScore 1.83
-G_M24157_IG09: ; bbWeight=0.73, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- cmp qword ptr [rcx+0x10], rdi
- je SHORT G_M24157_IG07
+G_M24157_IG07: ; bbWeight=0.73, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [rdx+0x10], rdi
+ je SHORT G_M24157_IG15
;; size=6 bbWeight=0.73 PerfScore 2.94
-G_M24157_IG10: ; bbWeight=0.73, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rcx+0x18], rdi
- je SHORT G_M24157_IG07
+G_M24157_IG08: ; bbWeight=0.73, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [rdx+0x18], rdi
+ je SHORT G_M24157_IG15
;; size=6 bbWeight=0.73 PerfScore 2.93
-G_M24157_IG11: ; bbWeight=0.73, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- add rcx, 32
- add rax, -4
- cmp rax, 4
+G_M24157_IG09: ; bbWeight=0.73, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ add rdx, 32
+ add rcx, -4
+ cmp rcx, 4
jge SHORT G_M24157_IG05
;; size=14 bbWeight=0.73 PerfScore 1.28
-G_M24157_IG12: ; bbWeight=0.09, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- test rax, rax
- jne SHORT G_M24157_IG15
+G_M24157_IG10: ; bbWeight=0.09, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ test rcx, rcx
+ je SHORT G_M24157_IG12
;; size=5 bbWeight=0.09 PerfScore 0.11
-G_M24157_IG13: ; bbWeight=0.09, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- test dword ptr [rbx], 0xD1FFAB1E
- je SHORT G_M24157_IG17
+G_M24157_IG11: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [rdx], rdi
+ je SHORT G_M24157_IG15
+ add rdx, 8
+ dec rcx
+ test rcx, rcx
+ jg SHORT G_M24157_IG11
+ ;; size=17 bbWeight=0.02 PerfScore 0.12
+G_M24157_IG12: ; bbWeight=0.09, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ test dword ptr [rax], 0xD1FFAB1E
+ je SHORT G_M24157_IG14
;; size=8 bbWeight=0.09 PerfScore 0.37
-G_M24157_IG14: ; bbWeight=0.08, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbx
+G_M24157_IG13: ; bbWeight=0.08, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp
tail.jmp [<unknown method>]
; gcr arg pop 0
- ;; size=8 bbWeight=0.08 PerfScore 0.25
-G_M24157_IG15: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp qword ptr [rcx], rdi
- je SHORT G_M24157_IG07
- add rcx, 8
- dec rax
- test rax, rax
- jg SHORT G_M24157_IG15
- ;; size=17 bbWeight=0.02 PerfScore 0.12
-G_M24157_IG16: ; bbWeight=0.01, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M24157_IG13
- ;; size=2 bbWeight=0.01 PerfScore 0.02
-G_M24157_IG17: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=7 bbWeight=0.08 PerfScore 0.21
+G_M24157_IG14: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rsi]
xor rsi, rsi
; gcrRegs +[rsi]
- jmp SHORT G_M24157_IG07
- ;; size=4 bbWeight=0.01 PerfScore 0.02
+ ;; size=2 bbWeight=0.01 PerfScore 0.00
+G_M24157_IG15: ; bbWeight=0.92, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ mov rax, rsi
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.92 PerfScore 0.23
+G_M24157_IG16: ; bbWeight=0.92, epilog, nogc, extend
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.92 PerfScore 1.38
-; Total bytes of code 121, prolog size 7, PerfScore 35.27, instruction count 44, allocated bytes for code 121 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 112, prolog size 4, PerfScore 33.48, instruction count 39, allocated bytes for code 112 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -111,10 +103,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x02
- CountOfUnwindCodes: 2
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
-29 (-6.79%) : 64302.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 22
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 22
; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
@@ -77,11 +77,55 @@ G_M26761_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M26761_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor r13d, r13d
cmp r15, 16
- jae G_M26761_IG12
+ jb G_M26761_IG09
;; size=13 bbWeight=1 PerfScore 1.50
-G_M26761_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG03: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rdi, rbx
+ cmp r15, 32
+ jb SHORT G_M26761_IG07
+ ;; size=9 bbWeight=0.41 PerfScore 0.61
+G_M26761_IG04: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rsi, [r15-0x20]
+ ;; size=4 bbWeight=0.32 PerfScore 0.16
+G_M26761_IG05: ; bbWeight=0.55, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ vmovups ymm0, ymmword ptr [r14+r13]
+ vpmovmskb eax, ymm0
+ test eax, eax
+ jne SHORT G_M26761_IG09
+ vmovaps ymm1, ymm0
+ vpmovzxbw ymm1, ymm1
+ vextracti128 xmm0, ymm0, 1
+ vpmovzxbw ymm0, ymm0
+ vmovups ymmword ptr [rdi], ymm1
+ vmovups ymmword ptr [rdi+0x20], ymm0
+ add r13, 32
+ add rdi, 64
+ cmp r13, rsi
+ jbe SHORT G_M26761_IG05
+ ;; size=56 bbWeight=0.55 PerfScore 11.59
+G_M26761_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M26761_IG09
+ ;; size=2 bbWeight=0.32 PerfScore 0.64
+G_M26761_IG07: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rsi, [r15-0x10]
+ ;; size=4 bbWeight=0.09 PerfScore 0.05
+G_M26761_IG08: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ vmovups xmm0, xmmword ptr [r14+r13]
+ vptest xmm0, xmmword ptr [reloc @RWD00]
+ jne SHORT G_M26761_IG09
+ vpmovzxbw xmm1, xmm0
+ vpsrldq xmm0, xmm0, 8
+ vpmovzxbw xmm0, xmm0
+ vmovups xmmword ptr [rdi], xmm1
+ vmovups xmmword ptr [rdi+0x10], xmm0
+ add r13, 16
+ add rdi, 32
+ cmp r13, rsi
+ jbe SHORT G_M26761_IG08
+ ;; size=54 bbWeight=0.09 PerfScore 1.70
+G_M26761_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r13, r15
- jbe SHORT G_M26761_IG04
+ jbe SHORT G_M26761_IG10
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -90,47 +134,54 @@ G_M26761_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=24 bbWeight=1 PerfScore 4.75
-G_M26761_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sub r15, r13
cmp r15, 4
- jb SHORT G_M26761_IG07
+ jb SHORT G_M26761_IG13
;; size=9 bbWeight=1 PerfScore 1.50
-G_M26761_IG05: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26761_IG11: ; bbWeight=0.95, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rax, [r13+r15-0x04]
;; size=5 bbWeight=0.95 PerfScore 1.91
-G_M26761_IG06: ; bbWeight=2.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG12: ; bbWeight=2.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r12d, dword ptr [r14+r13]
test r12d, 0xD1FFAB1E
- jne G_M26761_IG19
+ jne SHORT G_M26761_IG19
vmovd xmm0, r12
vpmovzxbw xmm0, xmm0
vmovd qword ptr [rbx+2*r13], xmm0
add r13, 4
cmp r13, rax
- jbe SHORT G_M26761_IG06
- ;; size=42 bbWeight=2.09 PerfScore 20.39
-G_M26761_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jbe SHORT G_M26761_IG12
+ ;; size=38 bbWeight=2.09 PerfScore 20.39
+G_M26761_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test r15b, 2
- je SHORT G_M26761_IG09
+ je SHORT G_M26761_IG15
;; size=6 bbWeight=1 PerfScore 1.25
-G_M26761_IG08: ; bbWeight=0.59, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26761_IG14: ; bbWeight=0.59, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx r12, word ptr [r14+r13]
test r12d, 0xD1FFAB1E
- jne G_M26761_IG19
+ jne SHORT G_M26761_IG19
movzx rax, r12b
mov word ptr [rbx+2*r13], ax
shr r12d, 8
mov word ptr [rbx+2*r13+0x02], r12w
add r13, 2
- ;; size=41 bbWeight=0.59 PerfScore 3.69
-G_M26761_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=37 bbWeight=0.59 PerfScore 3.69
+G_M26761_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test r15b, 1
- jne SHORT G_M26761_IG16
+ je SHORT G_M26761_IG17
;; size=6 bbWeight=1 PerfScore 1.25
-G_M26761_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26761_IG16: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx r12, byte ptr [r14+r13]
+ test r12b, 128
+ jne SHORT G_M26761_IG17
+ mov word ptr [rbx+2*r13], r12w
+ inc r13
+ ;; size=19 bbWeight=0.41 PerfScore 1.84
+G_M26761_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, r13
;; size=3 bbWeight=1 PerfScore 0.25
-G_M26761_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M26761_IG18: ; bbWeight=1, epilog, nogc, extend
vzeroupper
add rsp, 8
pop rbx
@@ -141,60 +192,7 @@ G_M26761_IG11: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 5.25
-G_M26761_IG12: ; bbWeight=0.41, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rdi, rbx
- cmp r15, 32
- jb SHORT G_M26761_IG17
- ;; size=9 bbWeight=0.41 PerfScore 0.61
-G_M26761_IG13: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rsi, [r15-0x20]
- ;; size=4 bbWeight=0.32 PerfScore 0.16
-G_M26761_IG14: ; bbWeight=0.55, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- vmovups ymm0, ymmword ptr [r14+r13]
- vpmovmskb eax, ymm0
- test eax, eax
- jne G_M26761_IG03
- vmovaps ymm1, ymm0
- vpmovzxbw ymm1, ymm1
- vextracti128 xmm0, ymm0, 1
- vpmovzxbw ymm0, ymm0
- vmovups ymmword ptr [rdi], ymm1
- vmovups ymmword ptr [rdi+0x20], ymm0
- add r13, 32
- add rdi, 64
- cmp r13, rsi
- jbe SHORT G_M26761_IG14
- ;; size=60 bbWeight=0.55 PerfScore 11.59
-G_M26761_IG15: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- jmp G_M26761_IG03
- ;; size=5 bbWeight=0.32 PerfScore 0.64
-G_M26761_IG16: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx r12, byte ptr [r14+r13]
- test r12b, 128
- jne SHORT G_M26761_IG10
- mov word ptr [rbx+2*r13], r12w
- inc r13
- jmp SHORT G_M26761_IG10
- ;; size=21 bbWeight=0.41 PerfScore 2.66
-G_M26761_IG17: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rsi, [r15-0x10]
- ;; size=4 bbWeight=0.09 PerfScore 0.05
-G_M26761_IG18: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- vmovups xmm0, xmmword ptr [r14+r13]
- vptest xmm0, xmmword ptr [reloc @RWD00]
- jne G_M26761_IG03
- vpmovzxbw xmm1, xmm0
- vpsrldq xmm0, xmm0, 8
- vpmovzxbw xmm0, xmm0
- vmovups xmmword ptr [rdi], xmm1
- vmovups xmmword ptr [rdi+0x10], xmm0
- add r13, 16
- add rdi, 32
- cmp r13, rsi
- jbe SHORT G_M26761_IG18
- jmp G_M26761_IG03
- ;; size=63 bbWeight=0.09 PerfScore 1.89
-G_M26761_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
test r12d, 0xD1FFAB1E
jne SHORT G_M26761_IG21
mov rdi, 0xD1FFAB1E
@@ -216,12 +214,12 @@ G_M26761_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movzx rax, r12b
test al, 128
je SHORT G_M26761_IG20
- jmp G_M26761_IG10
- ;; size=13 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M26761_IG17
+ ;; size=10 bbWeight=0 PerfScore 0.00
RWD00 dq 8080808080808080h, 8080808080808080h
-; Total bytes of code 427, prolog size 28, PerfScore 68.58, instruction count 108, allocated bytes for code 427 (MethodHash=eb059776) for method System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
+; Total bytes of code 398, prolog size 28, PerfScore 67.58, instruction count 106, allocated bytes for code 398 (MethodHash=eb059776) for method System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
; ============================================================
Unwind Info:
-28 (-6.60%) : 49256.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 27
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 27
; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
@@ -77,11 +77,55 @@ G_M26761_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M26761_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor r13d, r13d
cmp rbx, 16
- jae G_M26761_IG12
+ jb G_M26761_IG09
;; size=13 bbWeight=1 PerfScore 1.50
-G_M26761_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG03: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov rdi, r15
+ cmp rbx, 32
+ jb SHORT G_M26761_IG07
+ ;; size=9 bbWeight=0.44 PerfScore 0.67
+G_M26761_IG04: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rsi, [rbx-0x20]
+ ;; size=4 bbWeight=0.33 PerfScore 0.17
+G_M26761_IG05: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ vmovups ymm0, ymmword ptr [r14+r13]
+ vpmovmskb eax, ymm0
+ test eax, eax
+ jne SHORT G_M26761_IG09
+ vmovaps ymm1, ymm0
+ vpmovzxbw ymm1, ymm1
+ vextracti128 xmm0, ymm0, 1
+ vpmovzxbw ymm0, ymm0
+ vmovups ymmword ptr [rdi], ymm1
+ vmovups ymmword ptr [rdi+0x20], ymm0
+ add r13, 32
+ add rdi, 64
+ cmp r13, rsi
+ jbe SHORT G_M26761_IG05
+ ;; size=56 bbWeight=0.63 PerfScore 13.38
+G_M26761_IG06: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M26761_IG09
+ ;; size=2 bbWeight=0.33 PerfScore 0.67
+G_M26761_IG07: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rsi, [rbx-0x10]
+ ;; size=4 bbWeight=0.11 PerfScore 0.06
+G_M26761_IG08: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ vmovups xmm0, xmmword ptr [r14+r13]
+ vptest xmm0, xmmword ptr [reloc @RWD00]
+ jne SHORT G_M26761_IG09
+ vpmovzxbw xmm1, xmm0
+ vpsrldq xmm0, xmm0, 8
+ vpmovzxbw xmm0, xmm0
+ vmovups xmmword ptr [rdi], xmm1
+ vmovups xmmword ptr [rdi+0x10], xmm0
+ add r13, 16
+ add rdi, 32
+ cmp r13, rsi
+ jbe SHORT G_M26761_IG08
+ ;; size=54 bbWeight=0.11 PerfScore 2.08
+G_M26761_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r13, rbx
- jbe SHORT G_M26761_IG04
+ jbe SHORT G_M26761_IG10
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -90,44 +134,54 @@ G_M26761_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=24 bbWeight=1 PerfScore 4.75
-G_M26761_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sub rbx, r13
cmp rbx, 4
- jb SHORT G_M26761_IG07
+ jb SHORT G_M26761_IG13
;; size=9 bbWeight=1 PerfScore 1.50
-G_M26761_IG05: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26761_IG11: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rax, [r13+rbx-0x04]
;; size=5 bbWeight=0.70 PerfScore 1.41
-G_M26761_IG06: ; bbWeight=1.59, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG12: ; bbWeight=1.59, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r12d, dword ptr [r14+r13]
test r12d, 0xD1FFAB1E
- jne G_M26761_IG19
+ jne SHORT G_M26761_IG19
vmovd xmm0, r12
vpmovzxbw xmm0, xmm0
vmovd qword ptr [r15+2*r13], xmm0
add r13, 4
cmp r13, rax
- jbe SHORT G_M26761_IG06
- ;; size=42 bbWeight=1.59 PerfScore 15.53
-G_M26761_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jbe SHORT G_M26761_IG12
+ ;; size=38 bbWeight=1.59 PerfScore 15.53
+G_M26761_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test bl, 2
- jne SHORT G_M26761_IG16
+ je SHORT G_M26761_IG15
;; size=5 bbWeight=1 PerfScore 1.25
-G_M26761_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG14: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx r12, word ptr [r14+r13]
+ test r12d, 0xD1FFAB1E
+ jne SHORT G_M26761_IG19
+ movzx rax, r12b
+ mov word ptr [r15+2*r13], ax
+ shr r12d, 8
+ mov word ptr [r15+2*r13+0x02], r12w
+ add r13, 2
+ ;; size=37 bbWeight=0.48 PerfScore 3.01
+G_M26761_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test bl, 1
- je SHORT G_M26761_IG10
+ je SHORT G_M26761_IG17
;; size=5 bbWeight=1 PerfScore 1.25
-G_M26761_IG09: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG16: ; bbWeight=0.56, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx r12, byte ptr [r14+r13]
test r12b, 128
- jne SHORT G_M26761_IG10
+ jne SHORT G_M26761_IG17
mov word ptr [r15+2*r13], r12w
inc r13
;; size=19 bbWeight=0.56 PerfScore 2.50
-G_M26761_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26761_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, r13
;; size=3 bbWeight=1 PerfScore 0.25
-G_M26761_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M26761_IG18: ; bbWeight=1, epilog, nogc, extend
vzeroupper
add rsp, 8
pop rbx
@@ -138,63 +192,7 @@ G_M26761_IG11: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 5.25
-G_M26761_IG12: ; bbWeight=0.44, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- mov rdi, r15
- cmp rbx, 32
- jb SHORT G_M26761_IG17
- ;; size=9 bbWeight=0.44 PerfScore 0.67
-G_M26761_IG13: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rsi, [rbx-0x20]
- ;; size=4 bbWeight=0.33 PerfScore 0.17
-G_M26761_IG14: ; bbWeight=0.63, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- vmovups ymm0, ymmword ptr [r14+r13]
- vpmovmskb eax, ymm0
- test eax, eax
- jne G_M26761_IG03
- vmovaps ymm1, ymm0
- vpmovzxbw ymm1, ymm1
- vextracti128 xmm0, ymm0, 1
- vpmovzxbw ymm0, ymm0
- vmovups ymmword ptr [rdi], ymm1
- vmovups ymmword ptr [rdi+0x20], ymm0
- add r13, 32
- add rdi, 64
- cmp r13, rsi
- jbe SHORT G_M26761_IG14
- ;; size=60 bbWeight=0.63 PerfScore 13.38
-G_M26761_IG15: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- jmp G_M26761_IG03
- ;; size=5 bbWeight=0.33 PerfScore 0.67
-G_M26761_IG16: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx r12, word ptr [r14+r13]
- test r12d, 0xD1FFAB1E
- jne SHORT G_M26761_IG19
- movzx rax, r12b
- mov word ptr [r15+2*r13], ax
- shr r12d, 8
- mov word ptr [r15+2*r13+0x02], r12w
- add r13, 2
- jmp G_M26761_IG08
- ;; size=42 bbWeight=0.48 PerfScore 3.97
-G_M26761_IG17: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rsi, [rbx-0x10]
- ;; size=4 bbWeight=0.11 PerfScore 0.06
-G_M26761_IG18: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- vmovups xmm0, xmmword ptr [r14+r13]
- vptest xmm0, xmmword ptr [reloc @RWD00]
- jne G_M26761_IG03
- vpmovzxbw xmm1, xmm0
- vpsrldq xmm0, xmm0, 8
- vpmovzxbw xmm0, xmm0
- vmovups xmmword ptr [rdi], xmm1
- vmovups xmmword ptr [rdi+0x10], xmm0
- add r13, 16
- add rdi, 32
- cmp r13, rsi
- jbe SHORT G_M26761_IG18
- jmp G_M26761_IG03
- ;; size=63 bbWeight=0.11 PerfScore 2.31
-G_M26761_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
test r12d, 0xD1FFAB1E
jne SHORT G_M26761_IG21
mov rdi, 0xD1FFAB1E
@@ -216,12 +214,12 @@ G_M26761_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movzx rax, r12b
test al, 128
je SHORT G_M26761_IG20
- jmp G_M26761_IG10
- ;; size=13 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M26761_IG17
+ ;; size=10 bbWeight=0 PerfScore 0.00
RWD00 dq 8080808080808080h, 8080808080808080h
-; Total bytes of code 424, prolog size 28, PerfScore 65.65, instruction count 108, allocated bytes for code 424 (MethodHash=eb059776) for method System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
+; Total bytes of code 396, prolog size 28, PerfScore 64.46, instruction count 106, allocated bytes for code 396 (MethodHash=eb059776) for method System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
; ============================================================
Unwind Info:
+24 (+4.83%) : 85039.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
@@ -10,8 +10,8 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 13, 6.02) long -> rbx single-def
-; V01 loc0 [V01,T02] ( 33, 6.84) long -> r15
-; V02 loc1 [V02,T03] ( 20, 6.80) long -> r14
+; V01 loc0 [V01,T02] ( 34, 6.85) long -> r15
+; V02 loc1 [V02,T03] ( 22, 6.80) long -> r14
;* V03 loc2 [V03 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ushort]>
;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref
;* V05 loc4 [V05 ] ( 0, 0 ) simd32 -> zero-ref <System.Runtime.Intrinsics.Vector256`1[ushort]>
@@ -36,7 +36,7 @@
;* V24 tmp2 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp3 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp4 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V27 tmp5 [V27,T05] ( 8, 4 ) int -> rax "Single return block return value"
+; V27 tmp5 [V27,T05] ( 8, 4.01) int -> rax "Single return block return value"
; V28 cse0 [V28,T00] ( 6, 50.78) ref -> rsi multi-def "CSE - aggressive"
; V29 rat0 [V29,T04] ( 3, 6 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
;
@@ -66,24 +66,40 @@ G_M54480_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r14d, edi
and r14, 7
;; size=34 bbWeight=1 PerfScore 4.25
-G_M54480_IG03: ; bbWeight=1.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG03: ; bbWeight=1.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r14, 4
- jge G_M54480_IG19
- ;; size=10 bbWeight=1.33 PerfScore 1.67
-G_M54480_IG04: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- test r14, r14
- jg G_M54480_IG17
- ;; size=9 bbWeight=0.99 PerfScore 1.24
+ jl SHORT G_M54480_IG05
+ ;; size=6 bbWeight=1.33 PerfScore 1.67
+G_M54480_IG04: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp word ptr [rbx+2*r15], 0
+ je G_M54480_IG19
+ cmp word ptr [rbx+2*r15+0x02], 0
+ jne G_M54480_IG20
+ lea eax, [r15+0x01]
+ jmp G_M54480_IG15
+ ;; size=34 bbWeight=0.01 PerfScore 0.11
G_M54480_IG05: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test r14, r14
+ jle SHORT G_M54480_IG07
+ ;; size=5 bbWeight=0.99 PerfScore 1.24
+G_M54480_IG06: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp word ptr [rbx+2*r15], 0
+ je G_M54480_IG19
+ inc r15
+ dec r14
+ test r14, r14
+ jg SHORT G_M54480_IG06
+ ;; size=23 bbWeight=0.01 PerfScore 0.06
+G_M54480_IG07: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r15, 0xD1FFAB1E
- jge G_M54480_IG26
+ jge G_M54480_IG25
mov rdi, r15
neg rdi
add rdi, 0xD1FFAB1E
cmp rdi, 8
- jge SHORT G_M54480_IG07
+ jge SHORT G_M54480_IG09
;; size=32 bbWeight=0.99 PerfScore 3.22
-G_M54480_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -92,23 +108,23 @@ G_M54480_IG06: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=19 bbWeight=3.96 PerfScore 13.85
-G_M54480_IG07: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG09: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rdi, [rbx+2*r15]
test dil, 31
- jne SHORT G_M54480_IG14
+ jne SHORT G_M54480_IG16
;; size=10 bbWeight=0.99 PerfScore 1.73
-G_M54480_IG08: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG10: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov r14, r15
neg r14
add r14, 0xD1FFAB1E
and r14, -16
- jle G_M54480_IG21
+ jle G_M54480_IG22
;; size=23 bbWeight=0.80 PerfScore 1.60
-G_M54480_IG09: ; bbWeight=0.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG11: ; bbWeight=0.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r14, 16
- jge SHORT G_M54480_IG11
+ jge SHORT G_M54480_IG13
;; size=6 bbWeight=0.81 PerfScore 1.01
-G_M54480_IG10: ; bbWeight=12.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG12: ; bbWeight=12.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -117,19 +133,19 @@ G_M54480_IG10: ; bbWeight=12.97, gcrefRegs=0000 {}, byrefRegs=0000 {}, by
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=19 bbWeight=12.97 PerfScore 45.39
-G_M54480_IG11: ; bbWeight=0.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG13: ; bbWeight=0.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vxorps ymm0, ymm0, ymm0
vpcmpeqw ymm0, ymm0, ymmword ptr [rbx+2*r15]
vpmovmskb eax, ymm0
test eax, eax
- je SHORT G_M54480_IG15
+ je SHORT G_M54480_IG17
;; size=18 bbWeight=0.81 PerfScore 6.15
-G_M54480_IG12: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG14: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
tzcnt eax, eax
shr eax, 1
add eax, r15d
;; size=9 bbWeight=0.80 PerfScore 2.20
-G_M54480_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M54480_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
vzeroupper
pop rbx
pop r13
@@ -138,56 +154,56 @@ G_M54480_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop rbp
ret
;; size=12 bbWeight=1 PerfScore 4.50
-G_M54480_IG14: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M54480_IG16: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
vxorps xmm0, xmm0, xmm0
vpcmpeqw xmm0, xmm0, xmmword ptr [rbx+2*r15]
vpmovmskb r13d, xmm0
test r13d, r13d
- je G_M54480_IG24
+ je SHORT G_M54480_IG21
xor eax, eax
tzcnt eax, r13d
shr eax, 1
add eax, r15d
- jmp SHORT G_M54480_IG13
- ;; size=37 bbWeight=0.19 PerfScore 2.19
-G_M54480_IG15: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M54480_IG15
+ ;; size=33 bbWeight=0.19 PerfScore 2.19
+G_M54480_IG17: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add r15, 16
add r14, -16
test r14, r14
- jle SHORT G_M54480_IG21
+ jle SHORT G_M54480_IG22
;; size=13 bbWeight=0.01 PerfScore 0.02
-G_M54480_IG16: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M54480_IG09
+G_M54480_IG18: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M54480_IG11
;; size=2 bbWeight=0.01 PerfScore 0.01
-G_M54480_IG17: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp word ptr [rbx+2*r15], 0
- je SHORT G_M54480_IG20
- inc r15
- dec r14
- test r14, r14
- jg SHORT G_M54480_IG17
- ;; size=19 bbWeight=0.01 PerfScore 0.06
-G_M54480_IG18: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- jmp G_M54480_IG05
- ;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M54480_IG19: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp word ptr [rbx+2*r15], 0
- je SHORT G_M54480_IG20
- cmp word ptr [rbx+2*r15+0x02], 0
- jne SHORT G_M54480_IG23
- lea eax, [r15+0x01]
- jmp SHORT G_M54480_IG13
- ;; size=23 bbWeight=0.01 PerfScore 0.11
-G_M54480_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG19: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, r15d
- jmp SHORT G_M54480_IG13
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M54480_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M54480_IG15
+ ;; size=5 bbWeight=0.00 PerfScore 0.01
+G_M54480_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp word ptr [rbx+2*r15+0x04], 0
+ je G_M54480_IG27
+ cmp word ptr [rbx+2*r15+0x06], 0
+ je G_M54480_IG26
+ add r15, 4
+ add r14, -4
+ cmp r14, 4
+ jge G_M54480_IG04
+ jmp G_M54480_IG05
+ ;; size=49 bbWeight=0 PerfScore 0.00
+G_M54480_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add r15, 8
+ mov r14, r15
+ neg r14
+ add r14, 0xD1FFAB1E
+ and r14, -16
+ jg G_M54480_IG11
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M54480_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r14, r15
neg r14
add r14, 0xD1FFAB1E
and r14, -8
- jle SHORT G_M54480_IG22
+ jle SHORT G_M54480_IG23
xor edi, edi
cmp r14, 8
setge dil
@@ -197,53 +213,38 @@ G_M54480_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
vpcmpeqw xmm0, xmm0, xmmword ptr [rbx+2*r15]
vpmovmskb eax, xmm0
test eax, eax
- jne SHORT G_M54480_IG25
+ jne SHORT G_M54480_IG24
add r15, 8
;; size=57 bbWeight=0 PerfScore 0.00
-G_M54480_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r15, 0xD1FFAB1E
- jge SHORT G_M54480_IG26
+ jge SHORT G_M54480_IG25
mov r14, r15
neg r14
add r14, 0xD1FFAB1E
jmp G_M54480_IG03
;; size=27 bbWeight=0 PerfScore 0.00
-G_M54480_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp word ptr [rbx+2*r15+0x04], 0
- je SHORT G_M54480_IG28
- cmp word ptr [rbx+2*r15+0x06], 0
- je SHORT G_M54480_IG27
- add r15, 4
- add r14, -4
- cmp r14, 4
- jge G_M54480_IG19
- jmp G_M54480_IG04
- ;; size=41 bbWeight=0 PerfScore 0.00
G_M54480_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- add r15, 8
- jmp G_M54480_IG08
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M54480_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
tzcnt eax, eax
...
+6 (+5.26%) : 42565.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,7 +11,7 @@
;
; V00 arg0 [V00,T02] ( 8, 5.47) long -> rdi single-def
; V01 arg1 [V01,T00] ( 7, 6.00) ref -> rsi class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 4.00) long -> rcx
+; V02 loc0 [V02,T04] ( 5, 4.00) long -> rcx
; V03 loc1 [V03,T01] ( 10, 7.55) long -> rax
; V04 loc2 [V04,T03] ( 10, 7.02) long -> rdx
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,26 +25,26 @@ G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
test rsi, rsi
- je SHORT G_M24157_IG07
+ je SHORT G_M24157_IG08
mov rcx, qword ptr [rsi]
movzx rax, word ptr [rcx+0x0E]
test rax, rax
je SHORT G_M24157_IG06
mov rdx, qword ptr [rcx+0x40]
cmp rax, 4
- jl SHORT G_M24157_IG09
+ jl SHORT G_M24157_IG10
;; size=27 bbWeight=1 PerfScore 9.75
G_M24157_IG03: ; bbWeight=0.73, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
cmp qword ptr [rdx], rdi
- je SHORT G_M24157_IG07
+ je SHORT G_M24157_IG08
cmp qword ptr [rdx+0x08], rdi
- je SHORT G_M24157_IG07
+ je SHORT G_M24157_IG08
;; size=11 bbWeight=0.73 PerfScore 5.86
G_M24157_IG04: ; bbWeight=0.73, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
cmp qword ptr [rdx+0x10], rdi
- je SHORT G_M24157_IG07
+ je SHORT G_M24157_IG08
cmp qword ptr [rdx+0x18], rdi
- je SHORT G_M24157_IG07
+ je SHORT G_M24157_IG08
add rdx, 32
add rax, -4
cmp rax, 4
@@ -52,40 +52,45 @@ G_M24157_IG04: ; bbWeight=0.73, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
;; size=26 bbWeight=0.73 PerfScore 7.13
G_M24157_IG05: ; bbWeight=0.73, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test rax, rax
- jne SHORT G_M24157_IG09
+ jne SHORT G_M24157_IG10
;; size=5 bbWeight=0.73 PerfScore 0.91
-G_M24157_IG06: ; bbWeight=1.00, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG06: ; bbWeight=0.59, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test dword ptr [rcx], 0xD1FFAB1E
- jne SHORT G_M24157_IG11
+ jne SHORT G_M24157_IG12
+ ;; size=8 bbWeight=0.59 PerfScore 2.37
+G_M24157_IG07: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi]
xor rsi, rsi
- ;; size=10 bbWeight=1.00 PerfScore 4.25
-G_M24157_IG07: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rsi]
+ ;; size=2 bbWeight=1.00 PerfScore 0.25
+G_M24157_IG08: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, rsi
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
-G_M24157_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M24157_IG09: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=1 PerfScore 1.50
-G_M24157_IG09: ; bbWeight=0.54, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M24157_IG10: ; bbWeight=0.54, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
cmp qword ptr [rdx], rdi
- je SHORT G_M24157_IG07
+ je SHORT G_M24157_IG08
add rdx, 8
dec rax
test rax, rax
- jg SHORT G_M24157_IG09
+ jg SHORT G_M24157_IG10
;; size=17 bbWeight=0.54 PerfScore 3.11
-G_M24157_IG10: ; bbWeight=0.41, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M24157_IG06
- ;; size=2 bbWeight=0.41 PerfScore 0.81
-G_M24157_IG11: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24157_IG11: ; bbWeight=0.41, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ test dword ptr [rcx], 0xD1FFAB1E
+ je SHORT G_M24157_IG07
+ ;; size=8 bbWeight=0.41 PerfScore 1.62
+G_M24157_IG12: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbp
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 114, prolog size 4, PerfScore 34.82, instruction count 40, allocated bytes for code 114 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 120, prolog size 4, PerfScore 34.01, instruction count 41, allocated bytes for code 120 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
+17 (+10.90%) : 49546.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
@@ -14,8 +14,8 @@
; V01 loc0 [V01 ] ( 1, 1 ) int -> [rbp+0x88] do-not-enreg[X] addr-exposed ld-addr-op tier0-frame
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <ubyte[]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <ubyte[]>
-; V04 loc3 [V04,T02] ( 3,100 ) ref -> rdi class-hnd <ubyte[]>
-; V05 loc4 [V05,T00] ( 11,400.98) int -> rsi
+; V04 loc3 [V04,T02] ( 3,100 ) ref -> rsi class-hnd <ubyte[]>
+; V05 loc4 [V05,T00] ( 11,400.98) int -> rdi
;* V06 loc5 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <ubyte[]>
;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <ubyte[]>
@@ -25,7 +25,7 @@
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <ubyte[]>
;* V13 tmp3 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <ubyte[]>
;* V14 tmp4 [V14 ] ( 0, 0 ) int -> zero-ref
-; V15 tmp5 [V15,T03] ( 7, 0 ) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
+; V15 tmp5 [V15,T03] ( 7, 0.10) ref -> rdi class-hnd single-def "impAppendStmt" <<unknown class>>
;* V16 tmp6 [V16 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V17 tmp7 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V18 tmp8 [V18 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -34,81 +34,98 @@
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V24 tmp14 [V24,T05] ( 3, 0 ) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V25 tmp15 [V25,T04] ( 4, 0 ) int -> rsi single-def "Inline stloc first use temp"
+; V24 tmp14 [V24,T05] ( 3, 0.02) ref -> rax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V25 tmp15 [V25,T04] ( 4, 0.02) int -> rbx single-def "Inline stloc first use temp"
;* V26 tmp16 [V26 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V27 tmp17 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V28 tmp18 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V30 tmp20 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V31 tmp21 [V31 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V32 cse0 [V32,T01] ( 5,101.01) int -> rdx "CSE - aggressive"
+; V32 cse0 [V32,T01] ( 5,101.01) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M51213_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
mov rax, qword ptr [rbp]
push rax
- mov rbp, rsp
- mov rdi, gword ptr [rbp+0x70]
- ; gcrRegs +[rdi]
- mov esi, dword ptr [rbp+0x6C]
- ;; size=15 bbWeight=0.01 PerfScore 0.07
-G_M51213_IG02: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov edx, dword ptr [rdi+0x08]
- cmp edx, esi
- jle SHORT G_M51213_IG07
+ sub rsp, 16
+ mov qword ptr [rsp+0xC8], rbx
+ lea rbp, [rsp+0x10]
+ mov rsi, gword ptr [rbp+0x70]
+ ; gcrRegs +[rsi]
+ mov edi, dword ptr [rbp+0x6C]
+ ;; size=29 bbWeight=0.01 PerfScore 0.09
+G_M51213_IG02: ; bbWeight=0.01, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [rsi+0x08]
+ cmp eax, edi
+ jg SHORT G_M51213_IG05
;; size=7 bbWeight=0.01 PerfScore 0.03
-G_M51213_IG03: ; bbWeight=0.01, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- test esi, esi
- jl SHORT G_M51213_IG05
+G_M51213_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ xor edi, edi
+ mov dword ptr [(reloc)], edi
+ mov rdi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov rdi, gword ptr [rdi]
+ ; gcrRegs +[rdi]
+ inc dword ptr [rdi+0x14]
+ mov rax, gword ptr [rdi+0x08]
+ ; gcrRegs +[rax]
+ mov ebx, dword ptr [rdi+0x10]
+ cmp dword ptr [rax+0x08], ebx
+ jbe SHORT G_M51213_IG12
+ ;; size=36 bbWeight=0.01 PerfScore 0.14
+G_M51213_IG04: ; bbWeight=0, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M51213_IG11
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M51213_IG05: ; bbWeight=0.01, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rdi] +[rsi]
+ test edi, edi
+ jl SHORT G_M51213_IG08
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M51213_IG04: ; bbWeight=98.99, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- mov eax, esi
- mov byte ptr [rdi+rax+0x10], 255
- inc esi
- cmp edx, esi
- jle SHORT G_M51213_IG07
- jmp SHORT G_M51213_IG04
- ;; size=15 bbWeight=98.99 PerfScore 470.20
-G_M51213_IG05: ; bbWeight=1.00, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- cmp esi, edx
- jae SHORT G_M51213_IG06
- mov eax, esi
- mov byte ptr [rdi+rax+0x10], 255
- inc esi
- cmp edx, esi
- jle SHORT G_M51213_IG07
- jmp SHORT G_M51213_IG05
- ;; size=19 bbWeight=1.00 PerfScore 6.00
-G_M51213_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
+G_M51213_IG06: ; bbWeight=98.99, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ mov ecx, edi
+ mov byte ptr [rsi+rcx+0x10], 255
+ inc edi
+ cmp eax, edi
+ jg SHORT G_M51213_IG06
+ ;; size=13 bbWeight=98.99 PerfScore 272.22
+G_M51213_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ jmp SHORT G_M51213_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M51213_IG08: ; bbWeight=1.00, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rsi]
+ cmp edi, eax
+ jae SHORT G_M51213_IG10
+ mov ecx, edi
+ mov byte ptr [rsi+rcx+0x10], 255
+ inc edi
+ cmp eax, edi
+ jg SHORT G_M51213_IG08
+ ;; size=17 bbWeight=1.00 PerfScore 4.00
+G_M51213_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rsi]
+ jmp SHORT G_M51213_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M51213_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M51213_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- xor esi, esi
- mov dword ptr [(reloc)], esi
- mov rsi, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rdi, gword ptr [rsi]
- ; gcrRegs +[rdi]
- inc dword ptr [rdi+0x14]
- mov rdx, gword ptr [rdi+0x08]
- ; gcrRegs +[rdx]
- mov esi, dword ptr [rdi+0x10]
- cmp dword ptr [rdx+0x08], esi
- jbe SHORT G_M51213_IG08
- lea eax, [rsi+0x01]
- mov dword ptr [rdi+0x10], eax
- movsxd rsi, esi
- mov rdi, rdx
+G_M51213_IG11: ; bbWeight=0, gcrefRegs=0081 {rax rdi}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rax rdi]
+ lea esi, [rbx+0x01]
+ mov dword ptr [rdi+0x10], esi
+ movsxd rsi, ebx
+ mov rdi, rax
mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rdx rdi]
+ ; gcrRegs -[rax rdx rdi]
; gcr arg pop 0
- jmp SHORT G_M51213_IG09
- ;; size=65 bbWeight=0 PerfScore 0.00
-G_M51213_IG08: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M51213_IG13
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M51213_IG12: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -116,16 +133,17 @@ G_M51213_IG08: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M51213_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51213_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M51213_IG10: ; bbWeight=0, epilog, nogc, extend
- add rsp, 192
+G_M51213_IG14: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 200
+ pop rbx
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 156, prolog size 15, PerfScore 476.32, instruction count 47, allocated bytes for code 156 (MethodHash=998837f2) for method BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
+; Total bytes of code 173, prolog size 29, PerfScore 276.54, instruction count 51, allocated bytes for code 173 (MethodHash=998837f2) for method BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -133,11 +151,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x05
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x11
+ CountOfUnwindCodes: 7
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x11 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 25 * 8 = 200 = 0x000C8
+ CodeOffset: 0x09 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 1 * 8 + 8 = 16 = 0x10
CodeOffset: 0x05 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
Size: 23 * 8 = 184 = 0x000B8
libraries.crossgen2.linux.x64.checked.mch
-42 (-5.55%) : 45449.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
@@ -54,10 +54,10 @@ G_M10937_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r15]
mov ebx, edx
;; size=27 bbWeight=1 PerfScore 7.50
-G_M10937_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov r13d, dword ptr [r15+0x08]
test r13d, r13d
- je G_M10937_IG30
+ je G_M10937_IG26
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
lea r11, [(reloc)] ; function address
@@ -76,7 +76,7 @@ G_M10937_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {},
mov dword ptr [rbp-0x2C], eax
lea edi, [rbx-0x01]
cmp edi, r13d
- jae G_M10937_IG30
+ jae G_M10937_IG26
lea edi, [rbx-0x01]
mov rdi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rdi]
@@ -98,24 +98,24 @@ G_M10937_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {},
xor ecx, ecx
mov dword ptr [rbp-0x34], ecx
cmp ebx, 1
- jle SHORT G_M10937_IG09
- ;; size=126 bbWeight=1 PerfScore 42.75
+ jle G_M10937_IG09
+ ;; size=130 bbWeight=1 PerfScore 42.75
G_M10937_IG03: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, 1
- jbe G_M10937_IG30
+ jbe G_M10937_IG26
mov rdi, gword ptr [r15+0x18]
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:FindMultiLineCommentPattern(System.String):System.String]
; gcrRegs -[rdi] +[rax]
test rax, rax
- je SHORT G_M10937_IG08
+ je G_M10937_IG09
mov ecx, 2
cmp ebx, 2
- jle G_M10937_IG11
+ jle SHORT G_M10937_IG08
;; size=39 bbWeight=0.50 PerfScore 4.50
G_M10937_IG04: ; bbWeight=0.25, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, ebx
- jl SHORT G_M10937_IG10
+ jl SHORT G_M10937_IG07
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M10937_IG05: ; bbWeight=3.96, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x38], ecx
@@ -133,7 +133,7 @@ G_M10937_IG05: ; bbWeight=3.96, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
call [<unknown method>]
; gcrRegs -[rax rdi]
test eax, eax
- jne SHORT G_M10937_IG07
+ jne SHORT G_M10937_IG09
mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
mov ecx, dword ptr [rbp-0x38]
@@ -141,27 +141,13 @@ G_M10937_IG05: ; bbWeight=3.96, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
cmp ecx, ebx
jl SHORT G_M10937_IG05
;; size=49 bbWeight=3.96 PerfScore 61.38
-G_M10937_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10937_IG06: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V09}
- jmp SHORT G_M10937_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M10937_IG07: ; bbWeight=1.98, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov eax, dword ptr [rbp-0x34]
- jmp SHORT G_M10937_IG12
- ;; size=5 bbWeight=1.98 PerfScore 5.94
-G_M10937_IG08: ; bbWeight=0.25, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rbp-0x34]
- jmp SHORT G_M10937_IG12
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M10937_IG09: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rbp-0x34]
- jmp SHORT G_M10937_IG12
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M10937_IG10: ; bbWeight=0.04, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax]
+ jmp SHORT G_M10937_IG08
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M10937_IG07: ; bbWeight=0.04, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp ecx, r13d
- jae G_M10937_IG30
+ jae G_M10937_IG26
mov dword ptr [rbp-0x38], ecx
mov esi, ecx
mov rsi, gword ptr [r15+8*rsi+0x10]
@@ -177,28 +163,26 @@ G_M10937_IG10: ; bbWeight=0.04, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
call [<unknown method>]
; gcrRegs -[rax rdi]
test eax, eax
- jne G_M10937_IG15
+ jne SHORT G_M10937_IG09
mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
mov edi, dword ptr [rbp-0x38]
inc edi
cmp edi, ebx
mov ecx, edi
- jl SHORT G_M10937_IG10
- ;; size=64 bbWeight=0.04 PerfScore 0.68
-G_M10937_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ jl SHORT G_M10937_IG07
+ ;; size=60 bbWeight=0.04 PerfScore 0.68
+G_M10937_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V09}
- mov ecx, dword ptr [rax+0x08]
- mov dword ptr [rbp-0x34], ecx
- mov eax, dword ptr [rbp-0x34]
+ mov esi, dword ptr [rax+0x08]
+ mov dword ptr [rbp-0x34], esi
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M10937_IG09: ; bbWeight=1, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- ;; size=9 bbWeight=0.50 PerfScore 2.00
-G_M10937_IG12: ; bbWeight=1, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
cmp dword ptr [rbp-0x2C], 0
- jne G_M10937_IG20
+ jne G_M10937_IG16
;; size=10 bbWeight=1 PerfScore 3.00
-G_M10937_IG13: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rbp-0x34], eax
+G_M10937_IG10: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
lea r11, [(reloc)] ; function address
@@ -208,15 +192,15 @@ G_M10937_IG13: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
call [r11]<unknown method>
; gcrRegs -[rsi rdi] +[rax]
cmp dword ptr [rbp-0x30], 0
- jne SHORT G_M10937_IG14
+ jne SHORT G_M10937_IG11
cmp ebx, 1
- jne SHORT G_M10937_IG14
+ jne SHORT G_M10937_IG11
mov rdi, rax
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:TrimEndOfMultiLineComment(System.String):System.String]
; gcrRegs -[rdi]
- ;; size=41 bbWeight=0.50 PerfScore 8.62
-G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=38 bbWeight=0.50 PerfScore 8.12
+G_M10937_IG11: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -229,7 +213,7 @@ G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
call [r11]<unknown method>
; gcrRegs -[rax rsi rdi]
test eax, eax
- jne SHORT G_M10937_IG18
+ jne SHORT G_M10937_IG14
mov rsi, r12
; gcrRegs +[rsi]
mov rdi, gword ptr [rbp-0x48]
@@ -238,7 +222,7 @@ G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
call [r11]<unknown method>
; gcrRegs -[rsi rdi r12]
test eax, eax
- jne SHORT G_M10937_IG17
+ jne SHORT G_M10937_IG13
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -248,7 +232,7 @@ G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
call [r11]<unknown method>
; gcrRegs -[rsi rdi]
test eax, eax
- jne SHORT G_M10937_IG16
+ jne SHORT G_M10937_IG12
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -260,32 +244,24 @@ G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
xor esi, esi
test eax, eax
setne sil
- jmp SHORT G_M10937_IG19
+ jmp SHORT G_M10937_IG15
;; size=116 bbWeight=0.50 PerfScore 20.38
-G_M10937_IG15: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r12]
- ; GC ptr vars -{V10}
- mov eax, dword ptr [rbp-0x34]
- jmp G_M10937_IG12
- ;; size=8 bbWeight=0.02 PerfScore 0.06
-G_M10937_IG16: ; bbWeight=0.50, gcVars=0000000000000800 {V10}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r12]
- ; GC ptr vars +{V10 V11}
+G_M10937_IG12: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov esi, 2
- jmp SHORT G_M10937_IG19
+ jmp SHORT G_M10937_IG15
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG13: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov esi, 3
- jmp SHORT G_M10937_IG19
+ jmp SHORT G_M10937_IG15
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M10937_IG18: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov esi, 4
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M10937_IG19: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+G_M10937_IG15: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp-0x48]
; gcrRegs +[rdi]
lea r11, [(reloc)] ; function address
- ; GC ptr vars -{V10 V11}
+ ; GC ptr vars -{V10}
call [r11]<unknown method>
; gcrRegs -[rdi] +[rax]
mov rsi, rax
@@ -294,43 +270,41 @@ G_M10937_IG19: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
- mov eax, dword ptr [rbp-0x34]
- ;; size=29 bbWeight=0.50 PerfScore 4.50
-G_M10937_IG20: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=0.50 PerfScore 4.00
+G_M10937_IG16: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov r12d, 1
cmp ebx, 1
- jle G_M10937_IG29
+ jle G_M10937_IG25
;; size=15 bbWeight=1 PerfScore 1.50
-G_M10937_IG21: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
test ebx, ebx
- jl SHORT G_M10937_IG26
+ jl SHORT G_M10937_IG22
cmp r13d, ebx
- jl SHORT G_M10937_IG26
+ jl SHORT G_M10937_IG22
;; size=9 bbWeight=0.50 PerfScore 1.25
-G_M10937_IG22: ; bbWeight=3.96, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG18: ; bbWeight=3.96, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, r12d
mov rdi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rdi]
...
-42 (-5.55%) : 128497.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
@@ -54,10 +54,10 @@ G_M10937_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[r15]
mov ebx, edx
;; size=27 bbWeight=1 PerfScore 7.50
-G_M10937_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov r13d, dword ptr [r15+0x08]
test r13d, r13d
- je G_M10937_IG30
+ je G_M10937_IG26
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
lea r11, [(reloc)] ; function address
@@ -76,7 +76,7 @@ G_M10937_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {},
mov dword ptr [rbp-0x2C], eax
lea edi, [rbx-0x01]
cmp edi, r13d
- jae G_M10937_IG30
+ jae G_M10937_IG26
lea edi, [rbx-0x01]
mov rdi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rdi]
@@ -98,24 +98,24 @@ G_M10937_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {},
xor ecx, ecx
mov dword ptr [rbp-0x34], ecx
cmp ebx, 1
- jle SHORT G_M10937_IG09
- ;; size=126 bbWeight=1 PerfScore 42.75
+ jle G_M10937_IG09
+ ;; size=130 bbWeight=1 PerfScore 42.75
G_M10937_IG03: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, 1
- jbe G_M10937_IG30
+ jbe G_M10937_IG26
mov rdi, gword ptr [r15+0x18]
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:FindMultiLineCommentPattern(System.String):System.String]
; gcrRegs -[rdi] +[rax]
test rax, rax
- je SHORT G_M10937_IG08
+ je G_M10937_IG09
mov ecx, 2
cmp ebx, 2
- jle G_M10937_IG11
+ jle SHORT G_M10937_IG08
;; size=39 bbWeight=0.50 PerfScore 4.50
G_M10937_IG04: ; bbWeight=0.25, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, ebx
- jl SHORT G_M10937_IG10
+ jl SHORT G_M10937_IG07
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M10937_IG05: ; bbWeight=3.96, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x38], ecx
@@ -133,7 +133,7 @@ G_M10937_IG05: ; bbWeight=3.96, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
call [<unknown method>]
; gcrRegs -[rax rdi]
test eax, eax
- jne SHORT G_M10937_IG07
+ jne SHORT G_M10937_IG09
mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
mov ecx, dword ptr [rbp-0x38]
@@ -141,27 +141,13 @@ G_M10937_IG05: ; bbWeight=3.96, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
cmp ecx, ebx
jl SHORT G_M10937_IG05
;; size=49 bbWeight=3.96 PerfScore 61.38
-G_M10937_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10937_IG06: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V09}
- jmp SHORT G_M10937_IG11
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M10937_IG07: ; bbWeight=1.98, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov eax, dword ptr [rbp-0x34]
- jmp SHORT G_M10937_IG12
- ;; size=5 bbWeight=1.98 PerfScore 5.94
-G_M10937_IG08: ; bbWeight=0.25, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rbp-0x34]
- jmp SHORT G_M10937_IG12
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M10937_IG09: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rbp-0x34]
- jmp SHORT G_M10937_IG12
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M10937_IG10: ; bbWeight=0.04, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax]
+ jmp SHORT G_M10937_IG08
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M10937_IG07: ; bbWeight=0.04, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp ecx, r13d
- jae G_M10937_IG30
+ jae G_M10937_IG26
mov dword ptr [rbp-0x38], ecx
mov esi, ecx
mov rsi, gword ptr [r15+8*rsi+0x10]
@@ -177,28 +163,26 @@ G_M10937_IG10: ; bbWeight=0.04, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
call [<unknown method>]
; gcrRegs -[rax rdi]
test eax, eax
- jne G_M10937_IG15
+ jne SHORT G_M10937_IG09
mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
mov edi, dword ptr [rbp-0x38]
inc edi
cmp edi, ebx
mov ecx, edi
- jl SHORT G_M10937_IG10
- ;; size=64 bbWeight=0.04 PerfScore 0.68
-G_M10937_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ jl SHORT G_M10937_IG07
+ ;; size=60 bbWeight=0.04 PerfScore 0.68
+G_M10937_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V09}
- mov ecx, dword ptr [rax+0x08]
- mov dword ptr [rbp-0x34], ecx
- mov eax, dword ptr [rbp-0x34]
+ mov esi, dword ptr [rax+0x08]
+ mov dword ptr [rbp-0x34], esi
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M10937_IG09: ; bbWeight=1, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- ;; size=9 bbWeight=0.50 PerfScore 2.00
-G_M10937_IG12: ; bbWeight=1, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
cmp dword ptr [rbp-0x2C], 0
- jne G_M10937_IG20
+ jne G_M10937_IG16
;; size=10 bbWeight=1 PerfScore 3.00
-G_M10937_IG13: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rbp-0x34], eax
+G_M10937_IG10: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
lea r11, [(reloc)] ; function address
@@ -208,15 +192,15 @@ G_M10937_IG13: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
call [r11]<unknown method>
; gcrRegs -[rsi rdi] +[rax]
cmp dword ptr [rbp-0x30], 0
- jne SHORT G_M10937_IG14
+ jne SHORT G_M10937_IG11
cmp ebx, 1
- jne SHORT G_M10937_IG14
+ jne SHORT G_M10937_IG11
mov rdi, rax
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:TrimEndOfMultiLineComment(System.String):System.String]
; gcrRegs -[rdi]
- ;; size=41 bbWeight=0.50 PerfScore 8.62
-G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=38 bbWeight=0.50 PerfScore 8.12
+G_M10937_IG11: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -229,7 +213,7 @@ G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
call [r11]<unknown method>
; gcrRegs -[rax rsi rdi]
test eax, eax
- jne SHORT G_M10937_IG18
+ jne SHORT G_M10937_IG14
mov rsi, r12
; gcrRegs +[rsi]
mov rdi, gword ptr [rbp-0x48]
@@ -238,7 +222,7 @@ G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
call [r11]<unknown method>
; gcrRegs -[rsi rdi r12]
test eax, eax
- jne SHORT G_M10937_IG17
+ jne SHORT G_M10937_IG13
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -248,7 +232,7 @@ G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
call [r11]<unknown method>
; gcrRegs -[rsi rdi]
test eax, eax
- jne SHORT G_M10937_IG16
+ jne SHORT G_M10937_IG12
mov rsi, qword ptr [(reloc)] ; const ptr
mov rsi, gword ptr [rsi]
; gcrRegs +[rsi]
@@ -260,32 +244,24 @@ G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=D001 {rax r12 r14 r15}, byrefRe
xor esi, esi
test eax, eax
setne sil
- jmp SHORT G_M10937_IG19
+ jmp SHORT G_M10937_IG15
;; size=116 bbWeight=0.50 PerfScore 20.38
-G_M10937_IG15: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs +[r12]
- ; GC ptr vars -{V10}
- mov eax, dword ptr [rbp-0x34]
- jmp G_M10937_IG12
- ;; size=8 bbWeight=0.02 PerfScore 0.06
-G_M10937_IG16: ; bbWeight=0.50, gcVars=0000000000000800 {V10}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r12]
- ; GC ptr vars +{V10 V11}
+G_M10937_IG12: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov esi, 2
- jmp SHORT G_M10937_IG19
+ jmp SHORT G_M10937_IG15
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG13: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov esi, 3
- jmp SHORT G_M10937_IG19
+ jmp SHORT G_M10937_IG15
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M10937_IG18: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+G_M10937_IG14: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov esi, 4
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M10937_IG19: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+G_M10937_IG15: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rbp-0x48]
; gcrRegs +[rdi]
lea r11, [(reloc)] ; function address
- ; GC ptr vars -{V10 V11}
+ ; GC ptr vars -{V10}
call [r11]<unknown method>
; gcrRegs -[rdi] +[rax]
mov rsi, rax
@@ -294,43 +270,41 @@ G_M10937_IG19: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rax rsi rdi]
- mov eax, dword ptr [rbp-0x34]
- ;; size=29 bbWeight=0.50 PerfScore 4.50
-G_M10937_IG20: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=26 bbWeight=0.50 PerfScore 4.00
+G_M10937_IG16: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov r12d, 1
cmp ebx, 1
- jle G_M10937_IG29
+ jle G_M10937_IG25
;; size=15 bbWeight=1 PerfScore 1.50
-G_M10937_IG21: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
test ebx, ebx
- jl SHORT G_M10937_IG26
+ jl SHORT G_M10937_IG22
cmp r13d, ebx
- jl SHORT G_M10937_IG26
+ jl SHORT G_M10937_IG22
;; size=9 bbWeight=0.50 PerfScore 1.25
-G_M10937_IG22: ; bbWeight=3.96, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG18: ; bbWeight=3.96, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, r12d
mov rdi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rdi]
...
-25 (-1.57%) : 121820.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter:SpillLValue(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,ubyte,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
@@ -10,27 +10,27 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 14, 14 ) ref -> r15 this class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter>
-; V01 arg1 [V01,T08] ( 12, 7 ) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
-; V02 arg2 [V02,T17] ( 5, 4 ) ubyte -> r12 single-def
-; V03 arg3 [V03,T15] ( 7, 4.50) ubyte -> r13 single-def
+; V01 arg1 [V01,T09] ( 12, 7 ) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
+; V02 arg2 [V02,T20] ( 5, 4 ) ubyte -> [rbp-0x2C] single-def
+; V03 arg3 [V03,T16] ( 7, 5.98) ubyte -> r13 single-def
; V04 arg4 [V04,T02] ( 20, 18.50) byref -> rbx single-def
-; V05 arg5 [V05,T22] ( 4, 3 ) ubyte -> [rbp-0x2C] single-def
+; V05 arg5 [V05,T18] ( 4, 4.48) ubyte -> r12 single-def
; V06 loc0 [V06,T24] ( 8, 4.50) ref -> rax class-hnd <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
; V07 loc1 [V07,T25] ( 8, 4 ) ubyte -> rcx single-def
-; V08 loc2 [V08,T29] ( 4, 2 ) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BoundSequence>
+; V08 loc2 [V08,T31] ( 4, 2 ) ref -> r12 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BoundSequence>
; V09 loc3 [V09 ] ( 3, 1.50) struct ( 8) [rbp-0x38] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]>
; V10 loc4 [V10 ] ( 4, 9 ) struct (16) [rbp-0x48] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]>
-; V11 loc5 [V11,T04] ( 6, 16 ) ref -> [rbp-0x70] class-hnd spill-single-def <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
+; V11 loc5 [V11,T04] ( 6, 16 ) ref -> [rbp-0x68] class-hnd spill-single-def <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
; V12 loc6 [V12 ] ( 3, 6 ) ref -> [rbp-0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <Microsoft.CodeAnalysis.VisualBasic.BoundSpillSequence>
-; V13 loc7 [V13,T35] ( 3, 1.50) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BoundSpillSequence>
-; V14 loc8 [V14,T23] ( 9, 4.50) ref -> r12 class-hnd <Microsoft.CodeAnalysis.VisualBasic.BoundArrayAccess>
-; V15 loc9 [V15,T38] ( 2, 1 ) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
+; V13 loc7 [V13,T37] ( 3, 1.50) ref -> r12 class-hnd single-def <Microsoft.CodeAnalysis.VisualBasic.BoundSpillSequence>
+; V14 loc8 [V14,T08] ( 9, 10.42) ref -> r14 class-hnd <Microsoft.CodeAnalysis.VisualBasic.BoundArrayAccess>
+; V15 loc9 [V15,T30] ( 2, 2.48) ref -> [rbp-0x70] class-hnd spill-single-def <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
;* V16 loc10 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression]>
-; V17 loc11 [V17,T21] ( 6, 5.29) ref -> [rbp-0x78] class-hnd exact spill-single-def <<unknown class>>
-; V18 loc12 [V18,T20] ( 6, 5.50) int -> [rbp-0x54] spill-single-def
+; V17 loc11 [V17,T17] ( 6, 6.77) ref -> [rbp-0x78] class-hnd exact spill-single-def <<unknown class>>
+; V18 loc12 [V18,T23] ( 6, 5.50) int -> [rbp-0x54] spill-single-def
; V19 loc13 [V19,T01] ( 12, 20.54) int -> [rbp-0x58]
-; V20 loc14 [V20,T16] ( 12, 6 ) ref -> r14 class-hnd <Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess>
-; V21 loc15 [V21,T37] ( 3, 1.50) ubyte -> r12 single-def
+; V20 loc14 [V20,T19] ( 12, 6 ) ref -> r14 class-hnd <Microsoft.CodeAnalysis.VisualBasic.BoundFieldAccess>
+; V21 loc15 [V21,T39] ( 3, 1.50) ubyte -> r12 single-def
;* V22 loc16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
; V23 OutArgs [V23 ] ( 1, 1 ) struct ( 8) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V24 tmp1 [V24,T05] ( 4, 16 ) ref -> rax class-hnd "Strict ordering of exceptions for Array store" <Microsoft.CodeAnalysis.VisualBasic.BoundExpression>
@@ -44,12 +44,12 @@
;* V32 tmp9 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol>
;* V33 tmp10 [V33 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.LocalSymbol]>
;* V34 tmp11 [V34 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V35 tmp12 [V35,T10] ( 2, 8 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundSpillSequence>
-; V36 tmp13 [V36,T11] ( 2, 8 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundBlock>
+; V35 tmp12 [V35,T11] ( 2, 8 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundSpillSequence>
+; V36 tmp13 [V36,T12] ( 2, 8 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundBlock>
; V37 tmp14 [V37,T06] ( 4, 16 ) byref -> [rbp-0x90] spill-single-def "Inlining Arg"
-; V38 tmp15 [V38,T12] ( 2, 8 ) ref -> [rbp-0x98] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.SyntheticBoundNodeFactory>
+; V38 tmp15 [V38,T13] ( 2, 8 ) ref -> [rbp-0x98] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.SyntheticBoundNodeFactory>
; V39 tmp16 [V39,T00] ( 8, 32 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement>
-; V40 tmp17 [V40,T13] ( 2, 8 ) ref -> rsi class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
+; V40 tmp17 [V40,T14] ( 2, 8 ) ref -> rsi class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.SyntaxNode>
;* V41 tmp18 [V41 ] ( 0, 0 ) ref -> zero-ref
;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref
;* V43 tmp20 [V43 ] ( 0, 0 ) ref -> zero-ref
@@ -57,29 +57,29 @@
;* V45 tmp22 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp23 [V46 ] ( 0, 0 ) ref -> zero-ref
; V47 tmp24 [V47,T28] ( 2, 4 ) int -> [rbp-0x5C] spill-single-def
-; V48 tmp25 [V48,T18] ( 3, 6 ) ubyte -> rdx "Inline return value spill temp"
+; V48 tmp25 [V48,T21] ( 3, 6 ) ubyte -> rdx "Inline return value spill temp"
;* V49 tmp26 [V49 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V50 tmp27 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V53 tmp30 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V54 tmp31 [V54,T07] ( 4, 16 ) byref -> [rbp-0xA8] spill-single-def "Inlining Arg"
-; V55 tmp32 [V55,T30] ( 2, 2 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement>
+; V55 tmp32 [V55,T32] ( 2, 2 ) ref -> r13 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement>
; V56 tmp33 [V56,T26] ( 4, 4 ) byref -> rbx single-def "Inlining Arg"
-; V57 tmp34 [V57,T31] ( 2, 2 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement>
+; V57 tmp34 [V57,T33] ( 2, 2 ) ref -> r15 class-hnd exact single-def "Inlining Arg" <Microsoft.CodeAnalysis.VisualBasic.BoundExpressionStatement>
; V58 tmp35 [V58,T27] ( 4, 4 ) byref -> rbx single-def "Inlining Arg"
; V59 tmp36 [V59 ] ( 3, 1.50) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V09.array (fldOffset=0x0)" P-DEP
; V60 tmp37 [V60 ] ( 4, 9 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V10._array (fldOffset=0x0)" P-DEP
; V61 tmp38 [V61 ] ( 4, 9 ) int -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V10._index (fldOffset=0x8)" P-DEP
-; V62 tmp39 [V62,T19] ( 6, 5.75) ref -> [rbp-0xB0] spill-single-def "field V16.array (fldOffset=0x0)" P-INDEP
-; V63 tmp40 [V63,T39] ( 2, 1 ) ref -> rdx "field V25.array (fldOffset=0x0)" P-INDEP
-; V64 tmp41 [V64,T36] ( 3, 1.50) ref -> [rbp-0xB8] spill-single-def "field V30.array (fldOffset=0x0)" P-INDEP
+; V62 tmp39 [V62,T22] ( 6, 5.75) ref -> [rbp-0xB0] spill-single-def "field V16.array (fldOffset=0x0)" P-INDEP
+; V63 tmp40 [V63,T29] ( 2, 3.96) ref -> rdx "field V25.array (fldOffset=0x0)" P-INDEP
+; V64 tmp41 [V64,T38] ( 3, 1.50) ref -> r14 single-def "field V30.array (fldOffset=0x0)" P-INDEP
;* V65 tmp42 [V65 ] ( 0, 0 ) ref -> zero-ref single-def "field V33.array (fldOffset=0x0)" P-INDEP
-; V66 tmp43 [V66,T32] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V67 tmp44 [V67,T33] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V68 tmp45 [V68,T14] ( 2, 8 ) ref -> rcx "argument with side effect"
-; V69 tmp46 [V69,T34] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
-; V70 cse0 [V70,T09] ( 4, 9 ) long -> [rbp-0x68] spill-single-def "CSE - moderate"
+; V66 tmp43 [V66,T34] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V67 tmp44 [V67,T35] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V68 tmp45 [V68,T15] ( 2, 8 ) ref -> rcx "argument with side effect"
+; V69 tmp46 [V69,T36] ( 2, 2 ) ref -> rsi single-def "argument with side effect"
+; V70 cse0 [V70,T10] ( 4, 9 ) long -> r14 "CSE - moderate"
;
; Lcl frame size = 152
@@ -95,20 +95,21 @@ G_M22901_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
xorps xmm8, xmm8
movaps xmmword ptr [rbp-0x50], xmm8
movaps xmmword ptr [rbp-0x40], xmm8
- mov dword ptr [rbp-0x2C], r9d
mov r15, rdi
; gcrRegs +[r15]
mov r14, rsi
; gcrRegs +[r14]
- mov r12d, edx
+ mov eax, edx
mov r13d, ecx
mov rbx, r8
; byrRegs +[rbx]
- ;; size=58 bbWeight=1 PerfScore 13.33
+ mov r12d, r9d
+ ;; size=56 bbWeight=1 PerfScore 12.58
G_M22901_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
- test r12b, r12b
+ mov dword ptr [rbp-0x2C], eax
+ test al, al
je SHORT G_M22901_IG04
- ;; size=5 bbWeight=1 PerfScore 1.25
+ ;; size=7 bbWeight=1 PerfScore 2.25
G_M22901_IG03: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
mov rdi, gword ptr [r14+0x18]
; gcrRegs +[rdi]
@@ -140,7 +141,7 @@ G_M22901_IG03: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0008
call [<unknown method>]
; gcrRegs -[rsi rdi r15]
; byrRegs -[rdx rbx]
- jmp G_M22901_IG37
+ jmp G_M22901_IG38
;; size=74 bbWeight=0.50 PerfScore 14.50
G_M22901_IG04: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rax] +[r14-r15]
@@ -151,68 +152,65 @@ G_M22901_IG04: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0008
cmp ecx, 12
je G_M22901_IG21
cmp ecx, 76
- je G_M22901_IG31
+ je G_M22901_IG32
cmp ecx, 89
- jne G_M22901_IG36
+ jne G_M22901_IG37
mov rdi, r14
; gcrRegs +[rdi]
call [CORINFO_HELP_READYTORUN_CHKCAST]
; gcrRegs -[rdi r14] +[rax]
- mov r14, rax
+ mov r12, rax
+ ; gcrRegs +[r12]
+ mov r14, gword ptr [r12+0x28]
; gcrRegs +[r14]
- mov rax, gword ptr [r14+0x28]
- mov gword ptr [rbp-0xB8], rax
- ; GC ptr vars +{V64}
cmp byte ptr [rbx], bl
jmp SHORT G_M22901_IG06
- ;; size=64 bbWeight=0.50 PerfScore 9.25
+ ;; size=58 bbWeight=0.50 PerfScore 8.75
G_M22901_IG05: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
- ; gcrRegs -[rax]
- ; GC ptr vars -{V64}
+ ; gcrRegs -[rax r12]
cmp ecx, 114
- je G_M22901_IG35
+ je G_M22901_IG36
cmp ecx, 116
- je G_M22901_IG35
+ je G_M22901_IG36
cmp ecx, 163
- jne G_M22901_IG36
+ jne G_M22901_IG37
mov rdi, r14
; gcrRegs +[rdi]
call [CORINFO_HELP_READYTORUN_CHKCAST]
; gcrRegs -[rdi r14] +[rax]
- mov r14, rax
- ; gcrRegs +[r14]
+ mov r12, rax
+ ; gcrRegs +[r12]
mov rdi, rbx
; byrRegs +[rdi]
- mov rsi, r14
+ mov rsi, r12
; gcrRegs +[rsi]
call [Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+SpillBuilder:AddSpill(Microsoft.CodeAnalysis.VisualBasic.BoundSpillSequence):this]
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov rsi, gword ptr [r14+0x20]
+ mov rsi, gword ptr [r12+0x20]
; gcrRegs +[rsi]
movzx rcx, r13b
- movzx rdx, r12b
+ movzx rdx, byte ptr [rbp-0x2C]
mov rdi, r15
; gcrRegs +[rdi]
mov r8, rbx
; byrRegs +[r8]
xor r9d, r9d
call [Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter:SpillLValue(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,ubyte,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this]
- ; gcrRegs -[rsi rdi r14-r15] +[rax]
+ ; gcrRegs -[rsi rdi r12 r15] +[rax]
; byrRegs -[rbx r8]
- jmp G_M22901_IG37
- ;; size=86 bbWeight=0.50 PerfScore 9.50
-G_M22901_IG06: ; bbWeight=0.50, gcVars=0000001000000000 {V64}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0008 {rbx}, gcvars, byref, isz
- ; gcrRegs +[r14-r15]
+ jmp G_M22901_IG38
+ ;; size=87 bbWeight=0.50 PerfScore 9.88
+G_M22901_IG06: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0008 {rbx}, byref, isz
+ ; gcrRegs -[rax] +[r12 r14-r15]
; byrRegs +[rbx]
- ; GC ptr vars +{V36 V64}
- cmp dword ptr [rax+0x08], 0
+ cmp dword ptr [r14+0x08], 0
je SHORT G_M22901_IG08
- mov rax, gword ptr [rbp-0xB8]
cmp gword ptr [rbx], 0
jne SHORT G_M22901_IG07
mov rdi, qword ptr [(reloc)] ; <unknown class>
call [<unknown method>]
+ ; gcrRegs +[rax]
mov rsi, rax
; gcrRegs +[rsi]
mov rdi, rbx
@@ -220,22 +218,19 @@ G_M22901_IG06: ; bbWeight=0.50, gcVars=0000001000000000 {V64}, gcrefRegs=
call [CORINFO_HELP_CHECKED_ASSIGN_REF]
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov rax, gword ptr [rbp-0xB8]
- ; gcrRegs +[rax]
- ;; size=51 bbWeight=0.50 PerfScore 9.25
-G_M22901_IG07: ; bbWeight=0.50, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0008 {rbx}, byref
+ ;; size=38 bbWeight=0.50 PerfScore 8.25
+G_M22901_IG07: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0008 {rbx}, byref
mov rdi, gword ptr [rbx]
; gcrRegs +[rdi]
- mov rsi, rax
+ mov rsi, r14
; gcrRegs +[rsi]
lea r11, [(reloc)] ; function address
cmp dword ptr [rdi], edi
- ; GC ptr vars -{V36 V64}
call [r11]<unknown method>
- ; gcrRegs -[rax rsi rdi]
+ ; gcrRegs -[rsi rdi r14]
;; size=18 bbWeight=0.50 PerfScore 4.38
-G_M22901_IG08: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0008 {rbx}, byref
- mov rdi, gword ptr [r14+0x30]
...
+14 (+5.38%) : 170452.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
@@ -8,9 +8,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 7, 9 ) byref -> rbx this single-def
+; V00 this [V00,T02] ( 7, 9.98) byref -> rbx this single-def
; V01 loc0 [V01,T03] ( 6, 8 ) int -> r15 single-def
-; V02 loc1 [V02,T04] ( 6, 7.04) ref -> r14 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
+; V02 loc1 [V02,T04] ( 6, 6.54) ref -> r14 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
; V03 loc2 [V03 ] ( 2, 2 ) struct ( 8) [rbp-0x28] do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op <System.Reflection.Metadata.SignatureHeader>
; V04 loc3 [V04,T00] ( 10, 17.04) int -> r13
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -45,14 +45,14 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
lea rdi, [rbp-0x28]
call [<unknown method>]
cmp eax, 10
- jne G_M22286_IG09
+ jne G_M22286_IG12
mov rdi, r15
; byrRegs +[rdi]
call [<unknown method>]
; byrRegs -[rdi r15]
mov r15d, eax
test r15d, r15d
- jle G_M22286_IG10
+ jle G_M22286_IG13
movsxd rdi, r15d
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcrRegs +[rax]
@@ -81,9 +81,9 @@ G_M22286_IG03: ; bbWeight=3.96, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
cmp r13d, r15d
jl SHORT G_M22286_IG03
;; size=34 bbWeight=3.96 PerfScore 36.63
-G_M22286_IG04: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
+G_M22286_IG04: ; bbWeight=1.98, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
jmp SHORT G_M22286_IG06
- ;; size=2 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M22286_IG05: ; bbWeight=0.04, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
mov rdi, rbx
; byrRegs +[rdi]
@@ -91,7 +91,7 @@ G_M22286_IG05: ; bbWeight=0.04, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
; gcrRegs +[rax]
; byrRegs -[rdi]
cmp r13d, dword ptr [r14+0x08]
- jae SHORT G_M22286_IG08
+ jae SHORT G_M22286_IG11
mov edi, r13d
lea rdi, bword ptr [r14+8*rdi+0x10]
; byrRegs +[rdi]
@@ -104,13 +104,16 @@ G_M22286_IG05: ; bbWeight=0.04, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx
cmp r13d, r15d
jl SHORT G_M22286_IG05
;; size=40 bbWeight=0.04 PerfScore 0.53
-G_M22286_IG06: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref
- xor rax, rax
- ; gcrRegs +[rax]
+G_M22286_IG06: ; bbWeight=1.98, gcrefRegs=4000 {r14}, byrefRegs=0008 {rbx}, byref, isz
cmp gword ptr [rbx+0x18], 0
- cmove rax, r14
- ;; size=11 bbWeight=1 PerfScore 3.50
-G_M22286_IG07: ; bbWeight=1, epilog, nogc, extend
+ jne SHORT G_M22286_IG09
+ ;; size=7 bbWeight=1.98 PerfScore 7.92
+G_M22286_IG07: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rbx]
+ mov rax, r14
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 16
pop rbx
pop r13
@@ -118,13 +121,26 @@ G_M22286_IG07: ; bbWeight=1, epilog, nogc, extend
pop r15
pop rbp
ret
- ;; size=13 bbWeight=1 PerfScore 3.75
-G_M22286_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=13 bbWeight=0.50 PerfScore 1.88
+G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r14]
- ; byrRegs -[rbx]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 16
+ pop rbx
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=13 bbWeight=0.50 PerfScore 1.88
+G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
call [CORINFO_HELP_RNGCHKFAIL]
;; size=6 bbWeight=0 PerfScore 0.00
-G_M22286_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
mov rbx, rax
@@ -138,7 +154,7 @@ G_M22286_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_THROW]
; gcrRegs -[rbx rdi]
;; size=27 bbWeight=0 PerfScore 0.00
-G_M22286_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
mov rbx, rax
@@ -154,7 +170,7 @@ G_M22286_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 17, PerfScore 77.41, instruction count 73, allocated bytes for code 260 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
+; Total bytes of code 274, prolog size 17, PerfScore 84.04, instruction count 81, allocated bytes for code 274 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
; ============================================================
Unwind Info:
+20 (+6.06%) : 48782.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
@@ -9,24 +9,24 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 6 ) ref -> r14 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
-; V01 arg1 [V01,T02] ( 5, 7 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V00 this [V00,T05] ( 4, 6 ) ref -> r14 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
+; V01 arg1 [V01,T03] ( 5, 7.98) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V02 arg2 [V02,T07] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundBlock>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]>
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration]>
-; V05 arg5 [V05,T05] ( 4, 6 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo>
-; V06 arg6 [V06,T08] ( 2, 4 ) ref -> r12 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo>
+; V05 arg5 [V05,T06] ( 4, 6 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo>
+; V06 arg6 [V06,T09] ( 2, 4 ) ref -> [rbp+0x10] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo>
; V07 arg7 [V07,T10] ( 2, 4 ) struct (24) [rbp+0x18] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.SyntaxToken>
-; V08 loc0 [V08,T01] ( 6, 10 ) ref -> [rbp-0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundBlock>
+; V08 loc0 [V08,T02] ( 6, 10.98) ref -> [rbp-0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundBlock>
; V09 loc1 [V09,T00] ( 12, 18.54) int -> [rbp-0x2C]
; V10 OutArgs [V10 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T06] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundBlock>
+; V11 tmp1 [V11,T01] ( 3, 11.88) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundBlock>
;* V12 tmp2 [V12 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V13 tmp3 [V13,T09] ( 2, 2 ) ref -> [rbp-0x40] single-def "field V03.array (fldOffset=0x0)" P-INDEP
-; V14 tmp4 [V14,T03] ( 6, 6.54) ref -> r15 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V15 tmp5 [V15,T11] ( 2, 2 ) ref -> rcx "field V12.array (fldOffset=0x0)" P-INDEP
+; V13 tmp3 [V13,T08] ( 2, 2.98) ref -> r12 single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V14 tmp4 [V14,T04] ( 6, 6.54) ref -> r15 single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V15 tmp5 [V15,T11] ( 2, 3.96) ref -> rcx "field V12.array (fldOffset=0x0)" P-INDEP
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M32747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -35,35 +35,35 @@ G_M32747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 56
- lea rbp, [rsp+0x60]
- mov gword ptr [rbp-0x40], rcx
- ; GC ptr vars +{V13}
+ sub rsp, 40
+ lea rbp, [rsp+0x50]
mov r14, rdi
; gcrRegs +[r14]
mov rbx, rsi
; gcrRegs +[rbx]
+ mov r12, rcx
+ ; gcrRegs +[r12]
mov r15, r8
; gcrRegs +[r15]
mov r13, r9
; gcrRegs +[r13]
- mov r12, gword ptr [rbp+0x10]
- ; gcrRegs +[r12]
- ;; size=39 bbWeight=1 PerfScore 9.75
-G_M32747_IG02: ; bbWeight=1, gcVars=0000000000000200 {V13}, gcrefRegs=F00C {rdx rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov rax, gword ptr [rbp+0x10]
+ ; gcrRegs +[rax]
+ ;; size=38 bbWeight=1 PerfScore 9.00
+G_M32747_IG02: ; bbWeight=1, gcrefRegs=F00D {rax rdx rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
mov r10, rdx
; gcrRegs +[r10]
mov r11d, dword ptr [r15+0x08]
dec r11d
- js SHORT G_M32747_IG06
+ js SHORT G_M32747_IG07
;; size=12 bbWeight=1 PerfScore 3.50
-G_M32747_IG03: ; bbWeight=0.50, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32747_IG03: ; bbWeight=0.50, gcrefRegs=F409 {rax rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
cmp dword ptr [r15+0x08], r11d
- jle SHORT G_M32747_IG07
+ jle SHORT G_M32747_IG08
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M32747_IG04: ; bbWeight=3.96, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32747_IG04: ; bbWeight=3.96, gcrefRegs=F409 {rax rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
lea rdi, [rsp]
lea rsi, [rbp+0x18]
mov rcx, gword ptr [rsi]
@@ -85,32 +85,40 @@ G_M32747_IG04: ; bbWeight=3.96, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15},
mov rsi, rbx
; gcrRegs +[rsi]
mov rcx, r10
- mov r8, r12
+ mov gword ptr [rbp+0x10], rax
+ mov r8, rax
; gcrRegs +[r8]
mov r9, r13
; gcrRegs +[r9]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi rdi r8-r10] +[rax]
+ ; gcrRegs -[rcx rdx rsi rdi r8-r10]
mov r11d, dword ptr [rbp-0x2C]
dec r11d
mov r10, rax
; gcrRegs +[r10]
- jns SHORT G_M32747_IG04
- ;; size=86 bbWeight=3.96 PerfScore 75.24
-G_M32747_IG05: ; bbWeight=1, gcrefRegs=0408 {rbx r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax r12-r15]
+ jns SHORT G_M32747_IG06
+ ;; size=90 bbWeight=3.96 PerfScore 79.20
+G_M32747_IG05: ; bbWeight=1.98, gcrefRegs=1408 {rbx r10 r12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax r13-r15]
mov gword ptr [rbp-0x38], r10
; GC ptr vars +{V08}
- jmp SHORT G_M32747_IG08
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M32747_IG06: ; bbWeight=0.50, gcrefRegs=0408 {rbx r10}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M32747_IG09
+ ;; size=6 bbWeight=1.98 PerfScore 5.94
+G_M32747_IG06: ; bbWeight=1.98, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r13-r15]
; GC ptr vars -{V08}
+ mov rax, gword ptr [rbp+0x10]
+ ; gcrRegs +[rax]
+ jmp SHORT G_M32747_IG04
+ ;; size=6 bbWeight=1.98 PerfScore 5.94
+G_M32747_IG07: ; bbWeight=0.50, gcrefRegs=1408 {rbx r10 r12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax r13-r15]
mov gword ptr [rbp-0x38], r10
; GC ptr vars +{V08}
- jmp SHORT G_M32747_IG08
+ jmp SHORT G_M32747_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M32747_IG07: ; bbWeight=0.04, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r12-r15]
+G_M32747_IG08: ; bbWeight=0.04, gcrefRegs=F409 {rax rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rax r13-r15]
; GC ptr vars -{V08}
lea rdi, [rsp]
lea rsi, [rbp+0x18]
@@ -125,7 +133,7 @@ G_M32747_IG07: ; bbWeight=0.04, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15},
add rdi, 8
movsq
cmp r11d, dword ptr [r15+0x08]
- jae SHORT G_M32747_IG11
+ jae G_M32747_IG12
mov dword ptr [rbp-0x2C], r11d
mov edx, r11d
mov rdx, gword ptr [r15+8*rdx+0x10]
@@ -135,20 +143,22 @@ G_M32747_IG07: ; bbWeight=0.04, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15},
mov rsi, rbx
; gcrRegs +[rsi]
mov rcx, r10
- mov r8, r12
+ mov gword ptr [rbp+0x10], rax
+ mov r8, rax
; gcrRegs +[r8]
mov r9, r13
; gcrRegs +[r9]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi rdi r8-r10] +[rax]
+ ; gcrRegs -[rcx rdx rsi rdi r8-r10]
mov gword ptr [rbp-0x38], rax
; GC ptr vars +{V08}
mov r11d, dword ptr [rbp-0x2C]
dec r11d
- jns SHORT G_M32747_IG10
- ;; size=93 bbWeight=0.04 PerfScore 0.95
-G_M32747_IG08: ; bbWeight=1, gcVars=0000000000000202 {V08 V13}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r12-r15]
+ mov rax, gword ptr [rbp+0x10]
+ jns SHORT G_M32747_IG11
+ ;; size=105 bbWeight=0.04 PerfScore 1.03
+G_M32747_IG09: ; bbWeight=1.98, gcVars=0000000000000004 {V08}, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r13-r15]
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
mov r15, rax
@@ -165,17 +175,16 @@ G_M32747_IG08: ; bbWeight=1, gcVars=0000000000000202 {V08 V13}, gcrefRegs
; gcrRegs +[rdi]
mov rsi, rbx
; gcrRegs +[rsi]
- mov rdx, gword ptr [rbp-0x40]
+ mov rdx, r12
; gcrRegs +[rdx]
xor r8d, r8d
- ; GC ptr vars -{V13}
call [Microsoft.CodeAnalysis.CSharp.BoundBlock:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this]
- ; gcrRegs -[rax rcx rdx rbx rsi rdi]
+ ; gcrRegs -[rax rcx rdx rbx rsi rdi r12]
mov rax, r15
; gcrRegs +[rax]
- ;; size=51 bbWeight=1 PerfScore 14.50
-G_M32747_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
+ ;; size=50 bbWeight=1.98 PerfScore 27.23
+G_M32747_IG10: ; bbWeight=1.98, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop r12
pop r13
@@ -183,22 +192,22 @@ G_M32747_IG09: ; bbWeight=1, epilog, nogc, extend
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M32747_IG10: ; bbWeight=0.02, gcVars=0000000000000202 {V08 V13}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rbx r12-r14]
- ; GC ptr vars +{V01 V08 V09 V13}
+ ;; size=15 bbWeight=1.98 PerfScore 8.42
+G_M32747_IG11: ; bbWeight=0.02, gcVars=0000000000000004 {V08}, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx r12-r14]
+ ; GC ptr vars +{V02 V08}
mov r10, gword ptr [rbp-0x38]
; gcrRegs +[r10]
- jmp G_M32747_IG07
+ jmp G_M32747_IG08
;; size=9 bbWeight=0.02 PerfScore 0.06
-G_M32747_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx r10 r12-r15]
- ; GC ptr vars -{V01 V08 V09 V13}
+G_M32747_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx r10 r12-r15]
+ ; GC ptr vars -{V02 V08}
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 330, prolog size 19, PerfScore 114.75, instruction count 98, allocated bytes for code 330 (MethodHash=1f468014) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
+; Total bytes of code 350, prolog size 19, PerfScore 143.81, instruction count 103, allocated bytes for code 350 (MethodHash=1f468014) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
; ============================================================
Unwind Info:
@@ -211,7 +220,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
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)
+20 (+6.06%) : 131224.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
@@ -9,24 +9,24 @@
; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 6 ) ref -> r14 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
-; V01 arg1 [V01,T02] ( 5, 7 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V00 this [V00,T05] ( 4, 6 ) ref -> r14 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
+; V01 arg1 [V01,T03] ( 5, 7.98) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V02 arg2 [V02,T07] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundBlock>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]>
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration]>
-; V05 arg5 [V05,T05] ( 4, 6 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo>
-; V06 arg6 [V06,T08] ( 2, 4 ) ref -> r12 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo>
+; V05 arg5 [V05,T06] ( 4, 6 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo>
+; V06 arg6 [V06,T09] ( 2, 4 ) ref -> [rbp+0x10] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo>
; V07 arg7 [V07,T10] ( 2, 4 ) struct (24) [rbp+0x18] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.SyntaxToken>
-; V08 loc0 [V08,T01] ( 6, 10 ) ref -> [rbp-0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundBlock>
+; V08 loc0 [V08,T02] ( 6, 10.98) ref -> [rbp-0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundBlock>
; V09 loc1 [V09,T00] ( 12, 18.54) int -> [rbp-0x2C]
; V10 OutArgs [V10 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T06] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundBlock>
+; V11 tmp1 [V11,T01] ( 3, 11.88) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundBlock>
;* V12 tmp2 [V12 ] ( 0, 0 ) struct ( 8) zero-ref multireg-ret single-def "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
-; V13 tmp3 [V13,T09] ( 2, 2 ) ref -> [rbp-0x40] single-def "field V03.array (fldOffset=0x0)" P-INDEP
-; V14 tmp4 [V14,T03] ( 6, 6.54) ref -> r15 single-def "field V04.array (fldOffset=0x0)" P-INDEP
-; V15 tmp5 [V15,T11] ( 2, 2 ) ref -> rcx "field V12.array (fldOffset=0x0)" P-INDEP
+; V13 tmp3 [V13,T08] ( 2, 2.98) ref -> r12 single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V14 tmp4 [V14,T04] ( 6, 6.54) ref -> r15 single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V15 tmp5 [V15,T11] ( 2, 3.96) ref -> rcx "field V12.array (fldOffset=0x0)" P-INDEP
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M32747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -35,35 +35,35 @@ G_M32747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 56
- lea rbp, [rsp+0x60]
- mov gword ptr [rbp-0x40], rcx
- ; GC ptr vars +{V13}
+ sub rsp, 40
+ lea rbp, [rsp+0x50]
mov r14, rdi
; gcrRegs +[r14]
mov rbx, rsi
; gcrRegs +[rbx]
+ mov r12, rcx
+ ; gcrRegs +[r12]
mov r15, r8
; gcrRegs +[r15]
mov r13, r9
; gcrRegs +[r13]
- mov r12, gword ptr [rbp+0x10]
- ; gcrRegs +[r12]
- ;; size=39 bbWeight=1 PerfScore 9.75
-G_M32747_IG02: ; bbWeight=1, gcVars=0000000000000200 {V13}, gcrefRegs=F00C {rdx rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov rax, gword ptr [rbp+0x10]
+ ; gcrRegs +[rax]
+ ;; size=38 bbWeight=1 PerfScore 9.00
+G_M32747_IG02: ; bbWeight=1, gcrefRegs=F00D {rax rdx rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
mov r10, rdx
; gcrRegs +[r10]
mov r11d, dword ptr [r15+0x08]
dec r11d
- js SHORT G_M32747_IG06
+ js SHORT G_M32747_IG07
;; size=12 bbWeight=1 PerfScore 3.50
-G_M32747_IG03: ; bbWeight=0.50, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32747_IG03: ; bbWeight=0.50, gcrefRegs=F409 {rax rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
cmp dword ptr [r15+0x08], r11d
- jle SHORT G_M32747_IG07
+ jle SHORT G_M32747_IG08
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M32747_IG04: ; bbWeight=3.96, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32747_IG04: ; bbWeight=3.96, gcrefRegs=F409 {rax rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
lea rdi, [rsp]
lea rsi, [rbp+0x18]
mov rcx, gword ptr [rsi]
@@ -85,32 +85,40 @@ G_M32747_IG04: ; bbWeight=3.96, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15},
mov rsi, rbx
; gcrRegs +[rsi]
mov rcx, r10
- mov r8, r12
+ mov gword ptr [rbp+0x10], rax
+ mov r8, rax
; gcrRegs +[r8]
mov r9, r13
; gcrRegs +[r9]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi rdi r8-r10] +[rax]
+ ; gcrRegs -[rcx rdx rsi rdi r8-r10]
mov r11d, dword ptr [rbp-0x2C]
dec r11d
mov r10, rax
; gcrRegs +[r10]
- jns SHORT G_M32747_IG04
- ;; size=86 bbWeight=3.96 PerfScore 75.24
-G_M32747_IG05: ; bbWeight=1, gcrefRegs=0408 {rbx r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax r12-r15]
+ jns SHORT G_M32747_IG06
+ ;; size=90 bbWeight=3.96 PerfScore 79.20
+G_M32747_IG05: ; bbWeight=1.98, gcrefRegs=1408 {rbx r10 r12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax r13-r15]
mov gword ptr [rbp-0x38], r10
; GC ptr vars +{V08}
- jmp SHORT G_M32747_IG08
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M32747_IG06: ; bbWeight=0.50, gcrefRegs=0408 {rbx r10}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M32747_IG09
+ ;; size=6 bbWeight=1.98 PerfScore 5.94
+G_M32747_IG06: ; bbWeight=1.98, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r13-r15]
; GC ptr vars -{V08}
+ mov rax, gword ptr [rbp+0x10]
+ ; gcrRegs +[rax]
+ jmp SHORT G_M32747_IG04
+ ;; size=6 bbWeight=1.98 PerfScore 5.94
+G_M32747_IG07: ; bbWeight=0.50, gcrefRegs=1408 {rbx r10 r12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax r13-r15]
mov gword ptr [rbp-0x38], r10
; GC ptr vars +{V08}
- jmp SHORT G_M32747_IG08
+ jmp SHORT G_M32747_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M32747_IG07: ; bbWeight=0.04, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r12-r15]
+G_M32747_IG08: ; bbWeight=0.04, gcrefRegs=F409 {rax rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rax r13-r15]
; GC ptr vars -{V08}
lea rdi, [rsp]
lea rsi, [rbp+0x18]
@@ -125,7 +133,7 @@ G_M32747_IG07: ; bbWeight=0.04, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15},
add rdi, 8
movsq
cmp r11d, dword ptr [r15+0x08]
- jae SHORT G_M32747_IG11
+ jae G_M32747_IG12
mov dword ptr [rbp-0x2C], r11d
mov edx, r11d
mov rdx, gword ptr [r15+8*rdx+0x10]
@@ -135,20 +143,22 @@ G_M32747_IG07: ; bbWeight=0.04, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15},
mov rsi, rbx
; gcrRegs +[rsi]
mov rcx, r10
- mov r8, r12
+ mov gword ptr [rbp+0x10], rax
+ mov r8, rax
; gcrRegs +[r8]
mov r9, r13
; gcrRegs +[r9]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi rdi r8-r10] +[rax]
+ ; gcrRegs -[rcx rdx rsi rdi r8-r10]
mov gword ptr [rbp-0x38], rax
; GC ptr vars +{V08}
mov r11d, dword ptr [rbp-0x2C]
dec r11d
- jns SHORT G_M32747_IG10
- ;; size=93 bbWeight=0.04 PerfScore 0.95
-G_M32747_IG08: ; bbWeight=1, gcVars=0000000000000202 {V08 V13}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r12-r15]
+ mov rax, gword ptr [rbp+0x10]
+ jns SHORT G_M32747_IG11
+ ;; size=105 bbWeight=0.04 PerfScore 1.03
+G_M32747_IG09: ; bbWeight=1.98, gcVars=0000000000000004 {V08}, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r13-r15]
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
mov r15, rax
@@ -165,17 +175,16 @@ G_M32747_IG08: ; bbWeight=1, gcVars=0000000000000202 {V08 V13}, gcrefRegs
; gcrRegs +[rdi]
mov rsi, rbx
; gcrRegs +[rsi]
- mov rdx, gword ptr [rbp-0x40]
+ mov rdx, r12
; gcrRegs +[rdx]
xor r8d, r8d
- ; GC ptr vars -{V13}
call [Microsoft.CodeAnalysis.CSharp.BoundBlock:.ctor(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],ubyte):this]
- ; gcrRegs -[rax rcx rdx rbx rsi rdi]
+ ; gcrRegs -[rax rcx rdx rbx rsi rdi r12]
mov rax, r15
; gcrRegs +[rax]
- ;; size=51 bbWeight=1 PerfScore 14.50
-G_M32747_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
+ ;; size=50 bbWeight=1.98 PerfScore 27.23
+G_M32747_IG10: ; bbWeight=1.98, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop r12
pop r13
@@ -183,22 +192,22 @@ G_M32747_IG09: ; bbWeight=1, epilog, nogc, extend
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M32747_IG10: ; bbWeight=0.02, gcVars=0000000000000202 {V08 V13}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rbx r12-r14]
- ; GC ptr vars +{V01 V08 V09 V13}
+ ;; size=15 bbWeight=1.98 PerfScore 8.42
+G_M32747_IG11: ; bbWeight=0.02, gcVars=0000000000000004 {V08}, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx r12-r14]
+ ; GC ptr vars +{V02 V08}
mov r10, gword ptr [rbp-0x38]
; gcrRegs +[r10]
- jmp G_M32747_IG07
+ jmp G_M32747_IG08
;; size=9 bbWeight=0.02 PerfScore 0.06
-G_M32747_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx r10 r12-r15]
- ; GC ptr vars -{V01 V08 V09 V13}
+G_M32747_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx r10 r12-r15]
+ ; GC ptr vars -{V02 V08}
call [CORINFO_HELP_RNGCHKFAIL]
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 330, prolog size 19, PerfScore 114.75, instruction count 98, allocated bytes for code 330 (MethodHash=1f468014) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
+; Total bytes of code 350, prolog size 19, PerfScore 143.81, instruction count 103, allocated bytes for code 350 (MethodHash=1f468014) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
; ============================================================
Unwind Info:
@@ -211,7 +220,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
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)
libraries.pmi.linux.x64.checked.mch
-7 (-11.67%) : 19004.dasm - System.SpanHelpers:IndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T07] ( 3, 6 ) byref -> rdi single-def
; V01 arg1 [V01,T05] ( 4, 6.39) int -> rsi ld-addr-op single-def
-; V02 arg2 [V02,T06] ( 4, 6.39) int -> rdx ld-addr-op single-def
+; V02 arg2 [V02,T06] ( 3, 6 ) int -> rdx ld-addr-op single-def
; V03 arg3 [V03,T04] ( 4, 7 ) int -> rcx single-def
-; V04 loc0 [V04,T00] ( 6, 18.61) int -> rax
+; V04 loc0 [V04,T00] ( 6, 17.71) int -> rax
; V05 loc1 [V05,T08] ( 2, 8 ) byref -> r8
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r9 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.77) int -> r8 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> r8 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> r8 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M35228_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M35228_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
@@ -31,7 +31,7 @@ G_M35228_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr
; byrRegs +[rdi]
xor eax, eax
test ecx, ecx
- jle SHORT G_M35228_IG08
+ jle SHORT G_M35228_IG06
;; size=6 bbWeight=1 PerfScore 1.50
G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
movsxd r8, eax
@@ -45,41 +45,29 @@ G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr
;; size=18 bbWeight=4 PerfScore 17.00
G_M35228_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
cmp esi, r9d
- jg SHORT G_M35228_IG06
+ jg SHORT G_M35228_IG08
;; size=5 bbWeight=0.39 PerfScore 0.48
G_M35228_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
cmp edx, r8d
- jge SHORT G_M35228_IG10
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M35228_IG06: ; bbWeight=1.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rdi]
- pop rbp
- ret
- ;; size=2 bbWeight=1.61 PerfScore 2.42
-G_M35228_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; byrRegs +[rdi]
+ jl SHORT G_M35228_IG08
inc eax
cmp eax, ecx
jl SHORT G_M35228_IG03
- ;; size=6 bbWeight=4 PerfScore 6.00
-G_M35228_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=11 bbWeight=4 PerfScore 11.00
+G_M35228_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M35228_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M35228_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M35228_IG10: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; byrRegs +[rdi]
- cmp edx, r8d
- jle SHORT G_M35228_IG07
- ;; size=5 bbWeight=0.39 PerfScore 0.48
-G_M35228_IG11: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- jmp SHORT G_M35228_IG07
- ;; size=2 bbWeight=0.04 PerfScore 0.08
+G_M35228_IG08: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.71 PerfScore 1.06
-; Total bytes of code 60, prolog size 4, PerfScore 35.09, instruction count 26, allocated bytes for code 60 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 53, prolog size 4, PerfScore 33.17, instruction count 23, allocated bytes for code 53 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-6 (-10.71%) : 19016.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> rdi single-def
; V01 arg1 [V01,T04] ( 4, 6.39) int -> rsi ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.39) int -> rdx ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> rdx ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> rcx single-def
-; V04 loc0 [V04,T00] ( 7, 19.61) int -> rax
+; V04 loc0 [V04,T00] ( 7, 18.71) int -> rax
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> rcx
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.77) int -> r8 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.77) int -> rcx "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> rcx "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34838_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
@@ -31,7 +31,7 @@ G_M34838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr
; byrRegs +[rdi]
lea eax, [rcx-0x01]
test eax, eax
- jl SHORT G_M34838_IG08
+ jl SHORT G_M34838_IG06
;; size=7 bbWeight=1 PerfScore 1.75
G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
movsxd rcx, eax
@@ -45,40 +45,28 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr
;; size=17 bbWeight=4 PerfScore 17.00
G_M34838_IG04: ; bbWeight=0.39, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
cmp esi, r8d
- jg SHORT G_M34838_IG06
+ jg SHORT G_M34838_IG08
;; size=5 bbWeight=0.39 PerfScore 0.48
G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
cmp edx, ecx
- jge SHORT G_M34838_IG10
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M34838_IG06: ; bbWeight=1.61, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rdi]
- pop rbp
- ret
- ;; size=2 bbWeight=1.61 PerfScore 2.42
-G_M34838_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; byrRegs +[rdi]
+ jl SHORT G_M34838_IG08
dec eax
jns SHORT G_M34838_IG03
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M34838_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=4 PerfScore 10.00
+G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rdi]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M34838_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=2 bbWeight=0.50 PerfScore 0.75
-G_M34838_IG10: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, gcvars, byref, isz
- ; byrRegs +[rdi]
- cmp edx, ecx
- jle SHORT G_M34838_IG07
- ;; size=4 bbWeight=0.39 PerfScore 0.48
-G_M34838_IG11: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
- jmp SHORT G_M34838_IG07
- ;; size=2 bbWeight=0.04 PerfScore 0.08
+G_M34838_IG08: ; bbWeight=0.71, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbp
+ ret
+ ;; size=2 bbWeight=0.71 PerfScore 1.06
-; Total bytes of code 56, prolog size 4, PerfScore 34.34, instruction count 25, allocated bytes for code 56 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 50, prolog size 4, PerfScore 32.42, instruction count 22, allocated bytes for code 50 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-42 (-5.52%) : 48513.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
@@ -62,7 +62,7 @@ G_M10937_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M10937_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov r13d, dword ptr [r15+0x08]
test r13d, r13d
- je G_M10937_IG38
+ je G_M10937_IG34
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
@@ -92,7 +92,7 @@ G_M10937_IG05: ; bbWeight=0.25, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
G_M10937_IG06: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
lea edi, [rbx-0x01]
cmp edi, r13d
- jae G_M10937_IG38
+ jae G_M10937_IG34
lea edi, [rbx-0x01]
mov rdi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rdi]
@@ -116,7 +116,7 @@ G_M10937_IG08: ; bbWeight=0.12, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0
G_M10937_IG09: ; bbWeight=0.25, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M10937_IG10: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG10: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov dword ptr [rbp-0x2C], eax
lea edi, [rbx-0x01]
test eax, eax
@@ -124,24 +124,24 @@ G_M10937_IG10: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {},
xor ecx, ecx
mov dword ptr [rbp-0x30], ecx
cmp ebx, 1
- jle SHORT G_M10937_IG17
- ;; size=21 bbWeight=1 PerfScore 4.50
+ jle G_M10937_IG17
+ ;; size=25 bbWeight=1 PerfScore 4.50
G_M10937_IG11: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, 1
- jbe G_M10937_IG38
+ jbe G_M10937_IG34
mov rdi, gword ptr [r15+0x18]
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:FindMultiLineCommentPattern(System.String):System.String]
; gcrRegs -[rdi] +[rax]
test rax, rax
- je SHORT G_M10937_IG16
+ je G_M10937_IG17
mov ecx, 2
cmp ebx, 2
- jle G_M10937_IG19
+ jle SHORT G_M10937_IG16
;; size=39 bbWeight=0.50 PerfScore 4.50
G_M10937_IG12: ; bbWeight=0.25, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, ebx
- jl SHORT G_M10937_IG18
+ jl SHORT G_M10937_IG15
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M10937_IG13: ; bbWeight=3.96, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x34], ecx
@@ -159,7 +159,7 @@ G_M10937_IG13: ; bbWeight=3.96, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0
call [System.String:IsNullOrWhiteSpace(System.String):ubyte]
; gcrRegs -[rax rdi]
test eax, eax
- jne SHORT G_M10937_IG15
+ jne SHORT G_M10937_IG17
mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
mov ecx, dword ptr [rbp-0x34]
@@ -167,27 +167,13 @@ G_M10937_IG13: ; bbWeight=3.96, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0
cmp ecx, ebx
jl SHORT G_M10937_IG13
;; size=49 bbWeight=3.96 PerfScore 61.38
-G_M10937_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10937_IG14: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V09}
- jmp SHORT G_M10937_IG19
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M10937_IG15: ; bbWeight=1.98, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov eax, dword ptr [rbp-0x30]
- jmp SHORT G_M10937_IG20
- ;; size=5 bbWeight=1.98 PerfScore 5.94
-G_M10937_IG16: ; bbWeight=0.25, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rbp-0x30]
- jmp SHORT G_M10937_IG20
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rbp-0x30]
- jmp SHORT G_M10937_IG20
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M10937_IG18: ; bbWeight=0.04, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax]
+ jmp SHORT G_M10937_IG16
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M10937_IG15: ; bbWeight=0.04, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, byref, isz
cmp ecx, r13d
- jae G_M10937_IG38
+ jae G_M10937_IG34
mov dword ptr [rbp-0x34], ecx
mov esi, ecx
mov rsi, gword ptr [r15+8*rsi+0x10]
@@ -203,28 +189,26 @@ G_M10937_IG18: ; bbWeight=0.04, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0
call [System.String:IsNullOrWhiteSpace(System.String):ubyte]
; gcrRegs -[rax rdi]
test eax, eax
- jne G_M10937_IG23
+ jne SHORT G_M10937_IG17
mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
mov edi, dword ptr [rbp-0x34]
inc edi
cmp edi, ebx
mov ecx, edi
- jl SHORT G_M10937_IG18
- ;; size=64 bbWeight=0.04 PerfScore 0.68
-G_M10937_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ jl SHORT G_M10937_IG15
+ ;; size=60 bbWeight=0.04 PerfScore 0.68
+G_M10937_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V09}
- mov ecx, dword ptr [rax+0x08]
- mov dword ptr [rbp-0x30], ecx
- mov eax, dword ptr [rbp-0x30]
+ mov esi, dword ptr [rax+0x08]
+ mov dword ptr [rbp-0x30], esi
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M10937_IG17: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- ;; size=9 bbWeight=0.50 PerfScore 2.00
-G_M10937_IG20: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
test r12d, r12d
- jne G_M10937_IG28
+ jne G_M10937_IG24
;; size=9 bbWeight=1 PerfScore 1.25
-G_M10937_IG21: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rbp-0x30], eax
+G_M10937_IG18: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
cmp byte ptr [rdi], dil
@@ -234,17 +218,17 @@ G_M10937_IG21: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
mov r12, rax
; gcrRegs +[r12]
cmp dword ptr [rbp-0x2C], 0
- jne SHORT G_M10937_IG22
+ jne SHORT G_M10937_IG19
cmp ebx, 1
- jne SHORT G_M10937_IG22
+ jne SHORT G_M10937_IG19
mov rdi, r12
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:TrimEndOfMultiLineComment(System.String):System.String]
; gcrRegs -[rdi r12]
mov r12, rax
; gcrRegs +[r12]
- ;; size=47 bbWeight=0.50 PerfScore 8.62
-G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=0.50 PerfScore 8.12
+G_M10937_IG19: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
cmp byte ptr [r12], r12b
mov rdi, r12
@@ -255,7 +239,7 @@ G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rsi rdi]
test eax, eax
- jne SHORT G_M10937_IG26
+ jne SHORT G_M10937_IG22
mov rdi, r12
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -264,7 +248,7 @@ G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rsi rdi]
test eax, eax
- jne SHORT G_M10937_IG25
+ jne SHORT G_M10937_IG21
mov rdi, r12
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -273,7 +257,7 @@ G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rsi rdi]
test eax, eax
- jne SHORT G_M10937_IG24
+ jne SHORT G_M10937_IG20
mov rdi, r12
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -284,26 +268,20 @@ G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
xor esi, esi
test eax, eax
setne sil
- jmp SHORT G_M10937_IG27
+ jmp SHORT G_M10937_IG23
;; size=110 bbWeight=0.50 PerfScore 12.62
-G_M10937_IG23: ; bbWeight=0.02, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12]
- mov eax, dword ptr [rbp-0x30]
- jmp G_M10937_IG20
- ;; size=8 bbWeight=0.02 PerfScore 0.06
-G_M10937_IG24: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r12]
+G_M10937_IG20: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov esi, 2
- jmp SHORT G_M10937_IG27
+ jmp SHORT G_M10937_IG23
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M10937_IG25: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG21: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov esi, 3
- jmp SHORT G_M10937_IG27
+ jmp SHORT G_M10937_IG23
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M10937_IG26: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
mov esi, 4
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M10937_IG27: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M10937_IG23: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r12
; gcrRegs +[rdi]
call [System.String:Substring(int):System.String:this]
@@ -314,42 +292,40 @@ G_M10937_IG27: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteLine(System.String):this]
; gcrRegs -[rax rsi rdi]
- mov eax, dword ptr [rbp-0x30]
- ;; size=24 bbWeight=0.50 PerfScore 3.88
-G_M10937_IG28: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=21 bbWeight=0.50 PerfScore 3.38
+G_M10937_IG24: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov r12d, 1
cmp ebx, 1
- jle G_M10937_IG37
+ jle G_M10937_IG33
;; size=15 bbWeight=1 PerfScore 1.50
-G_M10937_IG29: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG25: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
test ebx, ebx
- jl SHORT G_M10937_IG34
+ jl SHORT G_M10937_IG30
cmp r13d, ebx
- jl SHORT G_M10937_IG34
+ jl SHORT G_M10937_IG30
;; size=9 bbWeight=0.50 PerfScore 1.25
-G_M10937_IG30: ; bbWeight=3.96, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG26: ; bbWeight=3.96, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, r12d
mov rdi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rdi]
...
+16 (+5.67%) : 191767.dasm - System.Dynamic.ExpandoObject+ValueCollection:Contains(System.Object):ubyte:this (FullOpts)
@@ -10,57 +10,58 @@
;
; V00 this [V00,T05] ( 5, 5 ) ref -> r15 this class-hnd single-def <System.Dynamic.ExpandoObject+ValueCollection>
; V01 arg1 [V01,T03] ( 5, 9.62) ref -> rbx class-hnd single-def <System.Object>
-; V02 loc0 [V02,T09] ( 4, 1.50) ref -> [rbp-0x28] class-hnd EH-live spill-single-def <System.Object>
-; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [rbp-0x20] do-not-enreg[X] addr-exposed ld-addr-op
+; V02 loc0 [V02,T09] ( 4, 1.50) ref -> [rbp-0x30] class-hnd EH-live spill-single-def <System.Object>
+; V03 loc1 [V03 ] ( 6, 5 ) ubyte -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op
; V04 loc2 [V04,T04] ( 4, 10 ) ref -> r15 class-hnd exact single-def <System.Dynamic.ExpandoObject+ExpandoData>
; V05 loc3 [V05,T02] ( 6, 21 ) int -> r14
-; V06 loc4 [V06,T08] ( 3, 2 ) ubyte -> rbx
+; V06 loc4 [V06,T08] ( 3, 2 ) ubyte -> r13
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T07] ( 2, 4 ) ubyte -> rdi "Inlining Arg"
; V09 tmp2 [V09,T06] ( 2, 4 ) ubyte -> rax "Inline return value spill temp"
; V10 tmp3 [V10,T00] ( 5, 27.25) ref -> rdi class-hnd "Inlining Arg" <System.Object>
;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Dynamic.ExpandoClass>
; V12 tmp5 [V12,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V13 PSPSym [V13,T11] ( 1, 1 ) long -> [rbp-0x30] do-not-enreg[V] "PSPSym"
+; V13 PSPSym [V13,T11] ( 1, 1 ) long -> [rbp-0x40] do-not-enreg[V] "PSPSym"
; V14 cse0 [V14,T10] ( 3, 1.50) ref -> rsi "CSE - moderate"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M32543_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
push r15
push r14
+ push r13
push rbx
- sub rsp, 24
- lea rbp, [rsp+0x30]
- mov qword ptr [rbp-0x30], rsp
+ sub rsp, 32
+ lea rbp, [rsp+0x40]
+ mov qword ptr [rbp-0x40], rsp
mov r15, rdi
; gcrRegs +[r15]
mov rbx, rsi
; gcrRegs +[rbx]
- ;; size=25 bbWeight=1 PerfScore 6.25
+ ;; size=27 bbWeight=1 PerfScore 7.25
G_M32543_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, gword ptr [r15+0x08]
; gcrRegs +[rsi]
mov rdi, gword ptr [rsi+0x08]
; gcrRegs +[rdi]
- mov gword ptr [rbp-0x28], rdi
+ mov gword ptr [rbp-0x30], rdi
; GC ptr vars +{V02}
xor esi, esi
; gcrRegs -[rsi]
- mov dword ptr [rbp-0x20], esi
+ mov dword ptr [rbp-0x28], esi
;; size=17 bbWeight=1 PerfScore 6.25
G_M32543_IG03: ; bbWeight=1, gcVars=0000000000000200 {V02}, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp byte ptr [rbp-0x20], 0
- jne SHORT G_M32543_IG11
- lea rsi, [rbp-0x20]
+ cmp byte ptr [rbp-0x28], 0
+ jne G_M32543_IG12
+ lea rsi, [rbp-0x28]
call <unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
- movzx rdi, byte ptr [rbp-0x20]
+ movzx rdi, byte ptr [rbp-0x28]
test edi, edi
jne SHORT G_M32543_IG05
- ;; size=24 bbWeight=1 PerfScore 6.75
+ ;; size=28 bbWeight=1 PerfScore 6.75
G_M32543_IG04: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -90,11 +91,11 @@ G_M32543_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
cmp r14d, dword ptr [rdi+0x08]
- jae SHORT G_M32543_IG12
+ jae SHORT G_M32543_IG11
mov esi, r14d
mov rdi, gword ptr [rdi+8*rsi+0x10]
cmp rdi, rbx
- je SHORT G_M32543_IG15
+ je SHORT G_M32543_IG10
;; size=23 bbWeight=4 PerfScore 38.00
G_M32543_IG07: ; bbWeight=1.62, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
@@ -113,21 +114,22 @@ G_M32543_IG09: ; bbWeight=2, gcrefRegs=8088 {rbx rdi r15}, byrefRegs=0000
; gcrRegs -[rsi rdi]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M32543_IG15
+ je SHORT G_M32543_IG13
;; size=17 bbWeight=2 PerfScore 17.00
-G_M32543_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M32543_IG13
- ;; size=2 bbWeight=4 PerfScore 8.00
-G_M32543_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32543_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx r15]
+ mov r13d, 1
+ jmp SHORT G_M32543_IG15
+ ;; size=8 bbWeight=0.50 PerfScore 1.12
+G_M32543_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M32543_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.Threading.Monitor:ThrowLockTakenException()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M32543_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
G_M32543_IG13: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx r15]
inc r14d
@@ -137,71 +139,70 @@ G_M32543_IG13: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
cmp dword ptr [rdi+0x08], r14d
jg SHORT G_M32543_IG06
;; size=17 bbWeight=4 PerfScore 33.00
-G_M32543_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M32543_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi r15]
- xor ebx, ebx
- jmp SHORT G_M32543_IG16
- ;; size=4 bbWeight=0.50 PerfScore 1.12
-G_M32543_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov ebx, 1
- ;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M32543_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp byte ptr [rbp-0x20], 0
- je SHORT G_M32543_IG18
+ xor r13d, r13d
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M32543_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp byte ptr [rbp-0x28], 0
+ je SHORT G_M32543_IG17
;; size=6 bbWeight=1 PerfScore 3.00
-G_M32543_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rdi, gword ptr [rbp-0x28]
+G_M32543_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rbp-0x30]
; gcrRegs +[rdi]
; GC ptr vars -{V02}
call <unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
;; size=9 bbWeight=0.50 PerfScore 1.00
-G_M32543_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov eax, ebx
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M32543_IG19: ; bbWeight=1, epilog, nogc, extend
- add rsp, 24
+G_M32543_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov eax, r13d
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M32543_IG18: ; bbWeight=1, epilog, nogc, extend
+ add rsp, 32
pop rbx
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=1 PerfScore 3.25
-G_M32543_IG20: ; bbWeight=0, gcVars=0000000000000200 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ;; size=13 bbWeight=1 PerfScore 3.75
+G_M32543_IG19: ; bbWeight=0, gcVars=0000000000000200 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V02 V09}
push rbp
push r15
push r14
+ push r13
push rbx
- push rax
+ sub rsp, 16
mov rbp, qword ptr [rdi]
mov qword ptr [rsp], rbp
- lea rbp, [rbp+0x30]
- ;; size=18 bbWeight=0 PerfScore 0.00
-G_M32543_IG21: ; bbWeight=0, gcVars=0000000000000200 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp byte ptr [rbp-0x20], 0
- je SHORT G_M32543_IG22
- mov rdi, gword ptr [rbp-0x28]
+ lea rbp, [rbp+0x40]
+ ;; size=23 bbWeight=0 PerfScore 0.00
+G_M32543_IG20: ; bbWeight=0, gcVars=0000000000000200 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp byte ptr [rbp-0x28], 0
+ je SHORT G_M32543_IG21
+ mov rdi, gword ptr [rbp-0x30]
; gcrRegs +[rdi]
; GC ptr vars -{V02 V09}
call <unknown method>
; gcrRegs -[rdi]
; gcr arg pop 0
;; size=15 bbWeight=0 PerfScore 0.00
-G_M32543_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M32543_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M32543_IG23: ; bbWeight=0, funclet epilog, nogc, extend
- add rsp, 8
+G_M32543_IG22: ; bbWeight=0, funclet epilog, nogc, extend
+ add rsp, 16
pop rbx
+ pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=11 bbWeight=0 PerfScore 0.00
+ ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 282, prolog size 25, PerfScore 145.31, instruction count 92, allocated bytes for code 282 (MethodHash=753380e0) for method System.Dynamic.ExpandoObject+ValueCollection:Contains(System.Object):ubyte:this (FullOpts)
+; Total bytes of code 298, prolog size 27, PerfScore 138.81, instruction count 95, allocated bytes for code 298 (MethodHash=753380e0) for method System.Dynamic.ExpandoObject+ValueCollection:Contains(System.Object):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -209,13 +210,14 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0A
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0C UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20
+ 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)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
@@ -224,16 +226,17 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x07
- CountOfUnwindCodes: 5
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6
...
+32 (+5.99%) : 144125.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
@@ -77,7 +77,7 @@ G_M51982_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
;; size=8 bbWeight=1 PerfScore 3.00
G_M51982_IG03: ; bbWeight=1, gcVars=0000000000800000 {V03}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x30], 0
- jne SHORT G_M51982_IG12
+ jne G_M51982_IG18
lea rsi, [rbp-0x30]
call <unknown method>
; gcrRegs -[rdi]
@@ -85,7 +85,7 @@ G_M51982_IG03: ; bbWeight=1, gcVars=0000000000800000 {V03}, gcrefRegs=C08
movzx rdi, byte ptr [rbp-0x30]
test edi, edi
jne SHORT G_M51982_IG05
- ;; size=24 bbWeight=1 PerfScore 6.75
+ ;; size=28 bbWeight=1 PerfScore 6.75
G_M51982_IG04: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -95,111 +95,70 @@ G_M51982_IG04: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M51982_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M51982_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
xor r13d, r13d
cmp dword ptr [rbx+0x18], 0
- jle G_M51982_IG19
- ;; size=13 bbWeight=1 PerfScore 4.25
+ jle SHORT G_M51982_IG13
+ ;; size=9 bbWeight=1 PerfScore 4.25
G_M51982_IG06: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
cmp r13d, dword ptr [rdx+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG17
mov esi, r13d
shl rsi, 4
mov r12, gword ptr [rdx+rsi+0x10]
; gcrRegs +[r12]
cmp r12, r15
- je SHORT G_M51982_IG18
- ;; size=27 bbWeight=4 PerfScore 40.00
-G_M51982_IG07: ; bbWeight=1.71, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M51982_IG12
+ ;; size=31 bbWeight=4 PerfScore 40.00
+G_M51982_IG07: ; bbWeight=1.71, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
test r12, r12
- je SHORT G_M51982_IG16
- ;; size=5 bbWeight=1.71 PerfScore 2.13
-G_M51982_IG08: ; bbWeight=1.70, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ je G_M51982_IG21
+ ;; size=9 bbWeight=1.71 PerfScore 2.13
+G_M51982_IG08: ; bbWeight=1.70, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
test r15, r15
- je SHORT G_M51982_IG16
- ;; size=5 bbWeight=1.70 PerfScore 2.13
-G_M51982_IG09: ; bbWeight=1.70, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ je G_M51982_IG21
+ ;; size=9 bbWeight=1.70 PerfScore 2.13
+G_M51982_IG09: ; bbWeight=1.70, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
mov edx, dword ptr [r12+0x08]
cmp edx, dword ptr [r15+0x08]
- jne SHORT G_M51982_IG16
- ;; size=11 bbWeight=1.70 PerfScore 10.20
-G_M51982_IG10: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M51982_IG21
+ ;; size=15 bbWeight=1.70 PerfScore 10.20
+G_M51982_IG10: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
mov edx, dword ptr [r12+0x08]
cmp edx, dword ptr [r15+0x08]
- je SHORT G_M51982_IG15
- ;; size=11 bbWeight=1.07 PerfScore 6.41
-G_M51982_IG11: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M51982_IG14
- ;; size=2 bbWeight=1.07 PerfScore 2.14
-G_M51982_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r12 r14-r15]
- call [System.Threading.Monitor:ThrowLockTakenException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M51982_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51982_IG14: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx r12 r14-r15]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- mov rdi, rsi
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ; gcr arg pop 0
- ;; size=19 bbWeight=1.07 PerfScore 3.74
-G_M51982_IG15: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- lea rdi, bword ptr [r12+0x0C]
- ; byrRegs +[rdi]
- mov edx, dword ptr [r12+0x08]
- add edx, edx
- lea rsi, bword ptr [r15+0x0C]
- ; byrRegs +[rsi]
- call [<unknown method>]
+ je G_M51982_IG20
+ ;; size=15 bbWeight=1.07 PerfScore 6.41
+G_M51982_IG11: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+ jmp G_M51982_IG19
+ ;; size=5 bbWeight=1.07 PerfScore 2.14
+G_M51982_IG12: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r12]
- ; byrRegs -[rsi rdi]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M51982_IG18
- ;; size=26 bbWeight=2 PerfScore 15.00
-G_M51982_IG16: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- inc r13d
- cmp r13d, dword ptr [rbx+0x18]
- jl SHORT G_M51982_IG06
- ;; size=9 bbWeight=4 PerfScore 17.00
-G_M51982_IG17: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M51982_IG19
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M51982_IG18: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
test r14, r14
- jne SHORT G_M51982_IG19
+ jne SHORT G_M51982_IG13
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
cmp r13d, dword ptr [rdi+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG17
mov esi, r13d
shl rsi, 4
mov r14, gword ptr [rdi+rsi+0x18]
- ;; size=27 bbWeight=0.50 PerfScore 5.00
-G_M51982_IG19: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=31 bbWeight=0.50 PerfScore 5.00
+G_M51982_IG13: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
test r14, r14
je G_M51982_IG23
;; size=9 bbWeight=1 PerfScore 1.25
-G_M51982_IG20: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG14: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, 9
cmp r13d, 9
cmovg r13d, edi
test r13d, r13d
- jle SHORT G_M51982_IG22
+ jle SHORT G_M51982_IG16
;; size=18 bbWeight=0.50 PerfScore 1.00
-G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG15: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, rdi
@@ -207,7 +166,7 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
lea r12d, [r13-0x01]
mov eax, dword ptr [rdi+0x08]
cmp r12d, eax
- jae G_M51982_IG13
+ jae G_M51982_IG17
mov ecx, r12d
shl rcx, 4
lea rdi, bword ptr [rdi+rcx+0x10]
@@ -220,7 +179,7 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov gword ptr [rbp-0x40], rdx
; GC ptr vars +{V25}
cmp r13d, eax
- jae G_M51982_IG13
+ jae SHORT G_M51982_IG17
mov edi, r13d
; byrRegs -[rdi]
shl rdi, 4
@@ -242,16 +201,16 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; byrRegs -[rdi r13]
mov r13d, r12d
test r13d, r13d
- jg SHORT G_M51982_IG21
- ;; size=99 bbWeight=4 PerfScore 85.00
-G_M51982_IG22: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ jg SHORT G_M51982_IG15
+ ;; size=95 bbWeight=4 PerfScore 85.00
+G_M51982_IG16: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov r13, gword ptr [rbx+0x08]
; gcrRegs +[r13]
mov rsi, r15
; gcrRegs +[rsi]
mov r15, r14
cmp dword ptr [r13+0x08], 0
- jbe G_M51982_IG13
+ jbe SHORT G_M51982_IG17
add r13, 16
; gcrRegs -[r13]
; byrRegs +[r13]
@@ -273,9 +232,52 @@ G_M51982_IG22: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
cmp edi, 10
cmovl eax, edi
mov dword ptr [rbx+0x18], eax
- ;; size=64 bbWeight=0.50 PerfScore 6.88
+ jmp SHORT G_M51982_IG23
+ ;; size=62 bbWeight=0.50 PerfScore 7.88
+G_M51982_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx r14]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51982_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call [System.Threading.Monitor:ThrowLockTakenException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M51982_IG19: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx r12 r14-r15]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=1.07 PerfScore 3.74
+G_M51982_IG20: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+ lea rdi, bword ptr [r12+0x0C]
+ ; byrRegs +[rdi]
+ mov edx, dword ptr [r12+0x08]
+ add edx, edx
+ lea rsi, bword ptr [r15+0x0C]
+ ; byrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[r12]
+ ; byrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ test eax, eax
+ jne G_M51982_IG12
+ ;; size=30 bbWeight=2 PerfScore 15.00
+G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ inc r13d
+ cmp r13d, dword ptr [rbx+0x18]
+ jl G_M51982_IG06
+ ;; size=13 bbWeight=4 PerfScore 17.00
+G_M51982_IG22: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ jmp G_M51982_IG13
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M51982_IG23: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rbx r15]
...
+32 (+5.99%) : 208429.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
@@ -77,7 +77,7 @@ G_M51982_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
;; size=8 bbWeight=1 PerfScore 3.00
G_M51982_IG03: ; bbWeight=1, gcVars=0000000000800000 {V03}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x30], 0
- jne SHORT G_M51982_IG12
+ jne G_M51982_IG18
lea rsi, [rbp-0x30]
call <unknown method>
; gcrRegs -[rdi]
@@ -85,7 +85,7 @@ G_M51982_IG03: ; bbWeight=1, gcVars=0000000000800000 {V03}, gcrefRegs=C08
movzx rdi, byte ptr [rbp-0x30]
test edi, edi
jne SHORT G_M51982_IG05
- ;; size=24 bbWeight=1 PerfScore 6.75
+ ;; size=28 bbWeight=1 PerfScore 6.75
G_M51982_IG04: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
@@ -95,111 +95,70 @@ G_M51982_IG04: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M51982_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M51982_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
xor r13d, r13d
cmp dword ptr [rbx+0x18], 0
- jle G_M51982_IG19
- ;; size=13 bbWeight=1 PerfScore 4.25
+ jle SHORT G_M51982_IG13
+ ;; size=9 bbWeight=1 PerfScore 4.25
G_M51982_IG06: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
cmp r13d, dword ptr [rdx+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG17
mov esi, r13d
shl rsi, 4
mov r12, gword ptr [rdx+rsi+0x10]
; gcrRegs +[r12]
cmp r12, r15
- je SHORT G_M51982_IG18
- ;; size=27 bbWeight=4 PerfScore 40.00
-G_M51982_IG07: ; bbWeight=1.71, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M51982_IG12
+ ;; size=31 bbWeight=4 PerfScore 40.00
+G_M51982_IG07: ; bbWeight=1.71, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
test r12, r12
- je SHORT G_M51982_IG16
- ;; size=5 bbWeight=1.71 PerfScore 2.13
-G_M51982_IG08: ; bbWeight=1.70, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ je G_M51982_IG21
+ ;; size=9 bbWeight=1.71 PerfScore 2.13
+G_M51982_IG08: ; bbWeight=1.70, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
test r15, r15
- je SHORT G_M51982_IG16
- ;; size=5 bbWeight=1.70 PerfScore 2.13
-G_M51982_IG09: ; bbWeight=1.70, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ je G_M51982_IG21
+ ;; size=9 bbWeight=1.70 PerfScore 2.13
+G_M51982_IG09: ; bbWeight=1.70, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
mov edx, dword ptr [r12+0x08]
cmp edx, dword ptr [r15+0x08]
- jne SHORT G_M51982_IG16
- ;; size=11 bbWeight=1.70 PerfScore 10.20
-G_M51982_IG10: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M51982_IG21
+ ;; size=15 bbWeight=1.70 PerfScore 10.20
+G_M51982_IG10: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
mov edx, dword ptr [r12+0x08]
cmp edx, dword ptr [r15+0x08]
- je SHORT G_M51982_IG15
- ;; size=11 bbWeight=1.07 PerfScore 6.41
-G_M51982_IG11: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M51982_IG14
- ;; size=2 bbWeight=1.07 PerfScore 2.14
-G_M51982_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r12 r14-r15]
- call [System.Threading.Monitor:ThrowLockTakenException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M51982_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51982_IG14: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx r12 r14-r15]
- mov rsi, 0xD1FFAB1E
- ; gcrRegs +[rsi]
- mov rdi, rsi
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rsi rdi]
- ; gcr arg pop 0
- ;; size=19 bbWeight=1.07 PerfScore 3.74
-G_M51982_IG15: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- lea rdi, bword ptr [r12+0x0C]
- ; byrRegs +[rdi]
- mov edx, dword ptr [r12+0x08]
- add edx, edx
- lea rsi, bword ptr [r15+0x0C]
- ; byrRegs +[rsi]
- call [<unknown method>]
+ je G_M51982_IG20
+ ;; size=15 bbWeight=1.07 PerfScore 6.41
+G_M51982_IG11: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+ jmp G_M51982_IG19
+ ;; size=5 bbWeight=1.07 PerfScore 2.14
+G_M51982_IG12: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r12]
- ; byrRegs -[rsi rdi]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M51982_IG18
- ;; size=26 bbWeight=2 PerfScore 15.00
-G_M51982_IG16: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- inc r13d
- cmp r13d, dword ptr [rbx+0x18]
- jl SHORT G_M51982_IG06
- ;; size=9 bbWeight=4 PerfScore 17.00
-G_M51982_IG17: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M51982_IG19
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M51982_IG18: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
test r14, r14
- jne SHORT G_M51982_IG19
+ jne SHORT G_M51982_IG13
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
cmp r13d, dword ptr [rdi+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG17
mov esi, r13d
shl rsi, 4
mov r14, gword ptr [rdi+rsi+0x18]
- ;; size=27 bbWeight=0.50 PerfScore 5.00
-G_M51982_IG19: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=31 bbWeight=0.50 PerfScore 5.00
+G_M51982_IG13: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi]
test r14, r14
je G_M51982_IG23
;; size=9 bbWeight=1 PerfScore 1.25
-G_M51982_IG20: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG14: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, 9
cmp r13d, 9
cmovg r13d, edi
test r13d, r13d
- jle SHORT G_M51982_IG22
+ jle SHORT G_M51982_IG16
;; size=18 bbWeight=0.50 PerfScore 1.00
-G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG15: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, rdi
@@ -207,7 +166,7 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
lea r12d, [r13-0x01]
mov eax, dword ptr [rdi+0x08]
cmp r12d, eax
- jae G_M51982_IG13
+ jae G_M51982_IG17
mov ecx, r12d
shl rcx, 4
lea rdi, bword ptr [rdi+rcx+0x10]
@@ -220,7 +179,7 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov gword ptr [rbp-0x40], rdx
; GC ptr vars +{V25}
cmp r13d, eax
- jae G_M51982_IG13
+ jae SHORT G_M51982_IG17
mov edi, r13d
; byrRegs -[rdi]
shl rdi, 4
@@ -242,16 +201,16 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; byrRegs -[rdi r13]
mov r13d, r12d
test r13d, r13d
- jg SHORT G_M51982_IG21
- ;; size=99 bbWeight=4 PerfScore 85.00
-G_M51982_IG22: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ jg SHORT G_M51982_IG15
+ ;; size=95 bbWeight=4 PerfScore 85.00
+G_M51982_IG16: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov r13, gword ptr [rbx+0x08]
; gcrRegs +[r13]
mov rsi, r15
; gcrRegs +[rsi]
mov r15, r14
cmp dword ptr [r13+0x08], 0
- jbe G_M51982_IG13
+ jbe SHORT G_M51982_IG17
add r13, 16
; gcrRegs -[r13]
; byrRegs +[r13]
@@ -273,9 +232,52 @@ G_M51982_IG22: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
cmp edi, 10
cmovl eax, edi
mov dword ptr [rbx+0x18], eax
- ;; size=64 bbWeight=0.50 PerfScore 6.88
+ jmp SHORT G_M51982_IG23
+ ;; size=62 bbWeight=0.50 PerfScore 7.88
+G_M51982_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx r14]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51982_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call [System.Threading.Monitor:ThrowLockTakenException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M51982_IG19: ; bbWeight=1.07, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx r12 r14-r15]
+ mov rsi, 0xD1FFAB1E
+ ; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=1.07 PerfScore 3.74
+G_M51982_IG20: ; bbWeight=2, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
+ lea rdi, bword ptr [r12+0x0C]
+ ; byrRegs +[rdi]
+ mov edx, dword ptr [r12+0x08]
+ add edx, edx
+ lea rsi, bword ptr [r15+0x0C]
+ ; byrRegs +[rsi]
+ call [<unknown method>]
+ ; gcrRegs -[r12]
+ ; byrRegs -[rsi rdi]
+ ; gcr arg pop 0
+ test eax, eax
+ jne G_M51982_IG12
+ ;; size=30 bbWeight=2 PerfScore 15.00
+G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ inc r13d
+ cmp r13d, dword ptr [rbx+0x18]
+ jl G_M51982_IG06
+ ;; size=13 bbWeight=4 PerfScore 17.00
+G_M51982_IG22: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ jmp G_M51982_IG13
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M51982_IG23: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rbx r15]
...
libraries_tests.run.linux.x64.Release.mch
-32 (-4.99%) : 60038.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 11626
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 11626
; 4 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
@@ -18,12 +18,12 @@
;* V06 loc1 [V06,T21] ( 0, 0 ) ubyte -> zero-ref
;* V07 loc2 [V07 ] ( 0, 0 ) ubyte -> zero-ref
;* V08 loc3 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc4 [V09,T16] ( 5, 0 ) ref -> r15 class-hnd single-def <System.Reflection.ParameterInfo>
+; V09 loc4 [V09,T16] ( 5, 0 ) ref -> rbx class-hnd single-def <System.Reflection.ParameterInfo>
; V10 loc5 [V10,T15] ( 7, 0 ) int -> rbx
; V11 loc6 [V11,T17] ( 3, 0 ) ref -> rdi class-hnd <System.Type>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 tmp1 [V13,T20] ( 3, 0 ) int -> rdi "Span.get_Item index"
-; V14 tmp2 [V14,T22] ( 2, 0 ) int -> rbx "Span.get_Item index"
+; V14 tmp2 [V14,T22] ( 2, 0 ) int -> rcx "Span.get_Item index"
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "guarded devirt return temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V16 tmp4 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeConstructorInfo>
; V17 tmp5 [V17,T14] ( 3, 0.00) int -> r13 "guarded devirt return temp"
@@ -83,7 +83,7 @@ G_M44091_IG03: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
;; size=13 bbWeight=1 PerfScore 2.00
G_M44091_IG04: ; bbWeight=0.98, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
test r12b, 3
- je G_M44091_IG30
+ je G_M44091_IG29
;; size=10 bbWeight=0.98 PerfScore 1.22
G_M44091_IG05: ; bbWeight=0.98, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
test r13, r13
@@ -120,7 +120,7 @@ G_M44091_IG10: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=600
; gcrRegs +[r13-r14]
mov r15, 0xD1FFAB1E ; System.Reflection.RuntimeConstructorInfo
cmp qword ptr [r14], r15
- jne SHORT G_M44091_IG14
+ jne SHORT G_M44091_IG20
;; size=15 bbWeight=0.02 PerfScore 0.06
G_M44091_IG11: ; bbWeight=0.01, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
mov rdi, r14
@@ -139,19 +139,63 @@ G_M44091_IG12: ; bbWeight=0.02, gcrefRegs=6000 {r13 r14}, byrefRegs=0001
mov esi, ecx
mov r8d, dword ptr [r13+0x08]
cmp r8d, esi
- jne SHORT G_M44091_IG15
+ jne SHORT G_M44091_IG14
;; size=18 bbWeight=0.02 PerfScore 0.07
G_M44091_IG13: ; bbWeight=0.01, gcrefRegs=2000 {r13}, byrefRegs=0004 {rdx}, byref, isz
; gcrRegs -[r14]
; byrRegs -[rax]
; GC ptr vars -{V27}
test ebx, 0x10000
- jne G_M44091_IG25
+ jne G_M44091_IG31
jmp SHORT G_M44091_IG06
;; size=14 bbWeight=0.01 PerfScore 0.05
-G_M44091_IG14: ; bbWeight=0.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r14]
+G_M44091_IG14: ; bbWeight=0.00, gcVars=0000000000000100 {V27}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[r13] +[r14]
; byrRegs -[rdx]
+ ; GC ptr vars +{V27}
+ test ebx, 0x3300
+ je SHORT G_M44091_IG08
+ ;; size=8 bbWeight=0.00 PerfScore 0.00
+G_M44091_IG15: ; bbWeight=0.00, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rbp-0x34], r8d
+ mov dword ptr [rbp-0x30], ecx
+ cmp r8d, ecx
+ jle SHORT G_M44091_IG23
+ cmp qword ptr [r14], r15
+ jne SHORT G_M44091_IG21
+ mov rdx, gword ptr [r14+0x40]
+ ; gcrRegs +[rdx]
+ test rdx, rdx
+ je SHORT G_M44091_IG19
+ ;; size=26 bbWeight=0.00 PerfScore 0.00
+G_M44091_IG16: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r14]
+ movzx r13, byte ptr [rdx+0x30]
+ ;; size=5 bbWeight=0.00 PerfScore 0.00
+G_M44091_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ test r13b, 2
+ je SHORT G_M44091_IG24
+ ;; size=6 bbWeight=0.00 PerfScore 0.00
+G_M44091_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V27}
+ jmp SHORT G_M44091_IG22
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M44091_IG19: ; bbWeight=0.00, gcVars=0000000000000100 {V27}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[r14]
+ ; GC ptr vars +{V27}
+ mov rdi, r14
+ ; gcrRegs +[rdi]
+ call [<unknown method>]
+ ; gcrRegs -[rdi r14] +[rax]
+ ; gcr arg pop 0
+ mov rdx, rax
+ ; gcrRegs +[rdx]
+ jmp SHORT G_M44091_IG16
+ ;; size=14 bbWeight=0.00 PerfScore 0.00
+G_M44091_IG20: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax rdx] +[r13-r14]
+ ; GC ptr vars -{V27}
mov rdi, r14
; gcrRegs +[rdi]
mov rax, qword ptr [r14]
@@ -163,58 +207,10 @@ G_M44091_IG14: ; bbWeight=0.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000
mov ecx, edx
jmp SHORT G_M44091_IG12
;; size=17 bbWeight=0.00 PerfScore 0.01
-G_M44091_IG15: ; bbWeight=0.00, gcVars=0000000000000100 {V27}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M44091_IG21: ; bbWeight=0, gcVars=0000000000000100 {V27}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[r13]
; byrRegs -[rax]
; GC ptr vars +{V27}
- test ebx, 0x3300
- je SHORT G_M44091_IG08
- ;; size=8 bbWeight=0.00 PerfScore 0.00
-G_M44091_IG16: ; bbWeight=0.00, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rbp-0x34], r8d
- mov dword ptr [rbp-0x30], ecx
- cmp r8d, ecx
- jle SHORT G_M44091_IG23
- cmp qword ptr [r14], r15
- jne SHORT G_M44091_IG21
- mov rdx, gword ptr [r14+0x40]
- ; gcrRegs +[rdx]
- test rdx, rdx
- je SHORT G_M44091_IG20
- ;; size=26 bbWeight=0.00 PerfScore 0.00
-G_M44091_IG17: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
- movzx r13, byte ptr [rdx+0x30]
- ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M44091_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rdx]
- test r13b, 2
- jne SHORT G_M44091_IG22
- ;; size=6 bbWeight=0.00 PerfScore 0.00
-G_M44091_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov ecx, dword ptr [rbp-0x30]
- test ecx, ecx
- je G_M44091_IG08
- mov ebx, ecx
- mov r8d, dword ptr [rbp-0x34]
- mov r15, bword ptr [rbp-0x48]
- ; byrRegs +[r15]
- jmp G_M44091_IG24
- ;; size=26 bbWeight=0 PerfScore 0.00
-G_M44091_IG20: ; bbWeight=0.00, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r14]
- ; byrRegs -[r15]
- mov rdi, r14
- ; gcrRegs +[rdi]
- call [<unknown method>]
- ; gcrRegs -[rdi r14] +[rax]
- ; gcr arg pop 0
- mov rdx, rax
- ; gcrRegs +[rdx]
- jmp SHORT G_M44091_IG17
- ;; size=14 bbWeight=0.00 PerfScore 0.00
-G_M44091_IG21: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax rdx] +[r14]
mov rdi, r14
; gcrRegs +[rdi]
mov rdx, qword ptr [r14]
@@ -223,7 +219,7 @@ G_M44091_IG21: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
; gcrRegs -[rdi r14]
; gcr arg pop 0
mov r13d, eax
- jmp SHORT G_M44091_IG18
+ jmp SHORT G_M44091_IG17
;; size=17 bbWeight=0 PerfScore 0.00
G_M44091_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V27}
@@ -237,11 +233,11 @@ G_M44091_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
G_M44091_IG23: ; bbWeight=0, gcVars=0000000000000100 {V27}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V27}
test ebx, 0xD1FFAB1E
- je SHORT G_M44091_IG19
+ je SHORT G_M44091_IG24
mov r8d, dword ptr [rbp-0x34]
mov edi, r8d
cmp edi, dword ptr [rbp-0x30]
- jae G_M44091_IG29
+ jae G_M44091_IG28
mov rax, bword ptr [rbp-0x48]
; byrRegs +[rax]
mov rdi, gword ptr [rax+8*rdi]
@@ -254,30 +250,27 @@ G_M44091_IG23: ; bbWeight=0, gcVars=0000000000000100 {V27}, gcrefRegs=000
; gcr arg pop 0
test al, 16
jne G_M44091_IG06
- mov ebx, dword ptr [rbp-0x30]
- mov r14, bword ptr [rbp-0x48]
- ; byrRegs +[r14]
- mov r15d, dword ptr [rbp-0x34]
- mov dword ptr [rbp-0x30], ebx
- mov dword ptr [rbp-0x34], r15d
- mov bword ptr [rbp-0x48], r14
- jmp G_M44091_IG19
- ;; size=77 bbWeight=0 PerfScore 0.00
-G_M44091_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
- ; byrRegs -[r14] +[r15]
- ; GC ptr vars -{V27}
- lea edi, [rbx-0x01]
+ ;; size=50 bbWeight=0 PerfScore 0.00
+G_M44091_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, dword ptr [rbp-0x30]
+ test ecx, ecx
+ je G_M44091_IG08
+ mov rax, bword ptr [rbp-0x48]
+ ; byrRegs +[rax]
+ mov r8d, dword ptr [rbp-0x34]
+ lea edi, [rcx-0x01]
cmp r8d, edi
jl G_M44091_IG08
- dec ebx
- mov edi, ebx
- mov r15, gword ptr [r15+8*rdi]
- ; gcrRegs +[r15]
- ; byrRegs -[r15]
- mov rdi, r15
+ dec ecx
+ mov edi, ecx
+ mov rbx, gword ptr [rax+8*rdi]
+ ; gcrRegs +[rbx]
+ mov rdi, rbx
; gcrRegs +[rdi]
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [rbx]
+ ; byrRegs -[rax]
mov rax, qword ptr [rax+0x48]
+ ; GC ptr vars -{V27}
call [rax+0x38]<unknown method>
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
@@ -291,37 +284,31 @@ G_M44091_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
test eax, eax
je G_M44091_IG08
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
...
-32 (-4.87%) : 68971.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 50562
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 50562
; 4 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
@@ -18,12 +18,12 @@
;* V06 loc1 [V06,T21] ( 0, 0 ) ubyte -> zero-ref
;* V07 loc2 [V07 ] ( 0, 0 ) ubyte -> zero-ref
;* V08 loc3 [V08 ] ( 0, 0 ) ubyte -> zero-ref
-; V09 loc4 [V09,T13] ( 5, 0 ) ref -> r15 class-hnd single-def <System.Reflection.ParameterInfo>
+; V09 loc4 [V09,T13] ( 5, 0 ) ref -> rbx class-hnd single-def <System.Reflection.ParameterInfo>
; V10 loc5 [V10,T12] ( 7, 0 ) int -> rbx
; V11 loc6 [V11,T15] ( 3, 0 ) ref -> rdi class-hnd <System.Type>
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V13 tmp1 [V13,T18] ( 3, 0 ) int -> rdi "Span.get_Item index"
-; V14 tmp2 [V14,T22] ( 2, 0 ) int -> rbx "Span.get_Item index"
+; V14 tmp2 [V14,T22] ( 2, 0 ) int -> rcx "Span.get_Item index"
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "guarded devirt return temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V16 tmp4 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeConstructorInfo>
; V17 tmp5 [V17,T19] ( 3, 0.00) int -> rdx "guarded devirt return temp"
@@ -83,7 +83,7 @@ G_M44091_IG03: ; bbWeight=1, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
;; size=13 bbWeight=1 PerfScore 2.00
G_M44091_IG04: ; bbWeight=0.86, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
test r12b, 3
- je G_M44091_IG28
+ je G_M44091_IG27
;; size=10 bbWeight=0.86 PerfScore 1.08
G_M44091_IG05: ; bbWeight=0.86, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
test r13, r13
@@ -120,7 +120,7 @@ G_M44091_IG10: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=600
; gcrRegs +[r13-r14]
mov r15, 0xD1FFAB1E ; System.Reflection.RuntimeConstructorInfo
cmp qword ptr [r14], r15
- jne G_M44091_IG30
+ jne G_M44091_IG29
mov rdi, r14
; gcrRegs +[rdi]
call [System.Reflection.RuntimeConstructorInfo:GetParametersAsSpan():System.ReadOnlySpan`1[System.Reflection.ParameterInfo]:this]
@@ -144,7 +144,7 @@ G_M44091_IG12: ; bbWeight=0.03, gcrefRegs=2000 {r13}, byrefRegs=0004 {rdx
; byrRegs -[rax]
; GC ptr vars -{V27}
test ebx, 0x10000
- jne G_M44091_IG23
+ jne G_M44091_IG30
jmp SHORT G_M44091_IG06
;; size=14 bbWeight=0.03 PerfScore 0.10
G_M44091_IG13: ; bbWeight=0.00, gcVars=0000000000000100 {V27}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
@@ -173,21 +173,15 @@ G_M44091_IG15: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {},
;; size=4 bbWeight=0.00 PerfScore 0.00
G_M44091_IG16: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test dl, 2
- jne SHORT G_M44091_IG20
+ je SHORT G_M44091_IG22
;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M44091_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov ecx, dword ptr [rbp-0x30]
- test ecx, ecx
- je G_M44091_IG08
- mov ebx, ecx
- mov r8d, dword ptr [rbp-0x34]
- mov r15, bword ptr [rbp-0x48]
- ; byrRegs +[r15]
- jmp G_M44091_IG22
- ;; size=26 bbWeight=0 PerfScore 0.00
-G_M44091_IG18: ; bbWeight=0.00, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
+G_M44091_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V27}
+ jmp SHORT G_M44091_IG20
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M44091_IG18: ; bbWeight=0.00, gcVars=0000000000000100 {V27}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r14]
- ; byrRegs -[r15]
+ ; GC ptr vars +{V27}
mov rdi, r14
; gcrRegs +[rdi]
call [<unknown method>]
@@ -221,11 +215,11 @@ G_M44091_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
G_M44091_IG21: ; bbWeight=0, gcVars=0000000000000100 {V27}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V27}
test ebx, 0xD1FFAB1E
- je SHORT G_M44091_IG17
+ je SHORT G_M44091_IG22
mov r8d, dword ptr [rbp-0x34]
mov edi, r8d
cmp edi, dword ptr [rbp-0x30]
- jae G_M44091_IG27
+ jae G_M44091_IG26
mov rax, bword ptr [rbp-0x48]
; byrRegs +[rax]
mov rdi, gword ptr [rax+8*rdi]
@@ -238,30 +232,27 @@ G_M44091_IG21: ; bbWeight=0, gcVars=0000000000000100 {V27}, gcrefRegs=000
; gcr arg pop 0
test al, 16
jne G_M44091_IG06
- mov ebx, dword ptr [rbp-0x30]
- mov r14, bword ptr [rbp-0x48]
- ; byrRegs +[r14]
- mov r15d, dword ptr [rbp-0x34]
- mov dword ptr [rbp-0x30], ebx
- mov dword ptr [rbp-0x34], r15d
- mov bword ptr [rbp-0x48], r14
- jmp G_M44091_IG17
- ;; size=77 bbWeight=0 PerfScore 0.00
-G_M44091_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
- ; byrRegs -[r14] +[r15]
- ; GC ptr vars -{V27}
- lea edi, [rbx-0x01]
+ ;; size=50 bbWeight=0 PerfScore 0.00
+G_M44091_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, dword ptr [rbp-0x30]
+ test ecx, ecx
+ je G_M44091_IG08
+ mov rax, bword ptr [rbp-0x48]
+ ; byrRegs +[rax]
+ mov r8d, dword ptr [rbp-0x34]
+ lea edi, [rcx-0x01]
cmp r8d, edi
jl G_M44091_IG08
- dec ebx
- mov edi, ebx
- mov r15, gword ptr [r15+8*rdi]
- ; gcrRegs +[r15]
- ; byrRegs -[r15]
- mov rdi, r15
+ dec ecx
+ mov edi, ecx
+ mov rbx, gword ptr [rax+8*rdi]
+ ; gcrRegs +[rbx]
+ mov rdi, rbx
; gcrRegs +[rdi]
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [rbx]
+ ; byrRegs -[rax]
mov rax, qword ptr [rax+0x48]
+ ; GC ptr vars -{V27}
call [rax+0x38]<unknown method>
; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
@@ -275,37 +266,31 @@ G_M44091_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
; gcr arg pop 0
test eax, eax
je G_M44091_IG08
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
xor edx, edx
- mov rax, qword ptr [r15]
+ mov rax, qword ptr [rbx]
mov rax, qword ptr [rax+0x50]
call [rax+0x20]<unknown method>
- ; gcrRegs -[rsi rdi r15]
+ ; gcrRegs -[rbx rsi rdi]
; gcr arg pop 0
test eax, eax
jne G_M44091_IG06
jmp G_M44091_IG08
- ;; size=92 bbWeight=0 PerfScore 0.00
+ ;; size=111 bbWeight=0 PerfScore 0.00
G_M44091_IG23: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0004 {rdx}, byref, isz
; gcrRegs +[r13]
; byrRegs +[rdx]
- test ebx, 256
- jne G_M44091_IG06
- xor ebx, ebx
- jmp SHORT G_M44091_IG26
- ;; size=16 bbWeight=0 PerfScore 0.00
-G_M44091_IG24: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0004 {rdx}, byref, isz
mov dword ptr [rbp-0x34], r8d
cmp ebx, r8d
- jae SHORT G_M44091_IG27
+ jae SHORT G_M44091_IG26
mov edi, ebx
mov rdi, gword ptr [r13+8*rdi+0x10]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M44091_IG25
+ je SHORT G_M44091_IG24
mov eax, ebx
mov bword ptr [rbp-0x40], rdx
; GC ptr vars +{V25}
@@ -320,28 +305,28 @@ G_M44091_IG24: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0004 {rdx},
; byrRegs +[rdx]
je G_M44091_IG08
;; size=49 bbWeight=0 PerfScore 0.00
-G_M44091_IG25: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0004 {rdx}, gcvars, byref
+G_M44091_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0004 {rdx}, gcvars, byref
; GC ptr vars -{V25}
inc ebx
mov esi, dword ptr [rbp-0x2C]
mov r8d, dword ptr [rbp-0x34]
;; size=9 bbWeight=0 PerfScore 0.00
-G_M44091_IG26: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0004 {rdx}, byref, isz
+G_M44091_IG25: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0004 {rdx}, byref, isz
mov dword ptr [rbp-0x2C], esi
cmp ebx, esi
- jl SHORT G_M44091_IG24
+ jl SHORT G_M44091_IG23
jmp G_M44091_IG06
;; size=12 bbWeight=0 PerfScore 0.00
-G_M44091_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M44091_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r13]
; byrRegs -[rdx]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M44091_IG28: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M44091_IG27: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r13-r14]
test r12b, 2
- je SHORT G_M44091_IG29
+ je SHORT G_M44091_IG28
mov rdi, r14
; gcrRegs +[rdi]
mov rax, qword ptr [r14]
@@ -352,7 +337,7 @@ G_M44091_IG28: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
test al, 2
je G_M44091_IG08
;; size=26 bbWeight=0 PerfScore 0.00
-G_M44091_IG29: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
+G_M44091_IG28: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
test r12b, 1
je G_M44091_IG05
mov rdi, r14
@@ -366,7 +351,7 @@ G_M44091_IG29: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
je G_M44091_IG08
jmp G_M44091_IG05
;; size=35 bbWeight=0 PerfScore 0.00
-G_M44091_IG30: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
+G_M44091_IG29: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref
mov rdi, r14
; gcrRegs +[rdi]
mov rax, qword ptr [r14]
@@ -382,8 +367,17 @@ G_M44091_IG30: ; bbWeight=0, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {},
mov ecx, dword ptr [rbp-0x30]
jmp G_M44091_IG11
;; size=32 bbWeight=0 PerfScore 0.00
+G_M44091_IG30: ; bbWeight=0, gcrefRegs=2000 {r13}, byrefRegs=0004 {rdx}, byref, isz
+ ; gcrRegs -[r14]
+ ; byrRegs -[rax] +[rdx]
+ ; GC ptr vars -{V27}
+ test ebx, 256
+ jne G_M44091_IG06
+ xor ebx, ebx
...
-19 (-4.51%) : 23071.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rbp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 70
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 70
; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
@@ -74,16 +74,16 @@ G_M26761_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r14, rsi
mov r15, rdx
;; size=28 bbWeight=1 PerfScore 9.25
-G_M26761_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor r13d, r13d
cmp r15, 16
- jb SHORT G_M26761_IG06
- ;; size=9 bbWeight=1 PerfScore 1.50
-G_M26761_IG03: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jb G_M26761_IG09
+ ;; size=13 bbWeight=1 PerfScore 1.50
+G_M26761_IG03: ; bbWeight=0.94, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, r14
cmp r15, 32
- jb G_M26761_IG17
- ;; size=13 bbWeight=0.94 PerfScore 1.41
+ jb SHORT G_M26761_IG07
+ ;; size=9 bbWeight=0.94 PerfScore 1.41
G_M26761_IG04: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rsi, [r15-0x20]
;; size=4 bbWeight=0.80 PerfScore 0.40
@@ -91,7 +91,7 @@ G_M26761_IG05: ; bbWeight=17.21, gcrefRegs=0000 {}, byrefRegs=0000 {}, by
vmovups ymm0, ymmword ptr [rbx+r13]
vpmovmskb eax, ymm0
test eax, eax
- jne SHORT G_M26761_IG06
+ jne SHORT G_M26761_IG09
vmovaps ymm1, ymm0
vpmovzxbw ymm1, ymm1
vextracti128 xmm0, ymm0, 1
@@ -103,9 +103,29 @@ G_M26761_IG05: ; bbWeight=17.21, gcrefRegs=0000 {}, byrefRegs=0000 {}, by
cmp r13, rsi
jbe SHORT G_M26761_IG05
;; size=56 bbWeight=17.21 PerfScore 365.80
-G_M26761_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG06: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M26761_IG09
+ ;; size=2 bbWeight=0.80 PerfScore 1.60
+G_M26761_IG07: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rsi, [r15-0x10]
+ ;; size=4 bbWeight=0.14 PerfScore 0.07
+G_M26761_IG08: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ vmovups xmm0, xmmword ptr [rbx+r13]
+ vptest xmm0, xmmword ptr [reloc @RWD00]
+ jne SHORT G_M26761_IG09
+ vpmovzxbw xmm1, xmm0
+ vpsrldq xmm0, xmm0, 8
+ vpmovzxbw xmm0, xmm0
+ vmovups xmmword ptr [rdi], xmm1
+ vmovups xmmword ptr [rdi+0x10], xmm0
+ add r13, 16
+ add rdi, 32
+ cmp r13, rsi
+ jbe SHORT G_M26761_IG08
+ ;; size=54 bbWeight=0.14 PerfScore 2.68
+G_M26761_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp r13, r15
- jbe SHORT G_M26761_IG07
+ jbe SHORT G_M26761_IG10
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
mov rdi, rsi
@@ -114,23 +134,58 @@ G_M26761_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=24 bbWeight=1 PerfScore 4.75
-G_M26761_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sub r15, r13
cmp r15, 4
- jae SHORT G_M26761_IG12
+ jae SHORT G_M26761_IG13
;; size=9 bbWeight=1 PerfScore 1.50
-G_M26761_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test r15b, 2
- jne SHORT G_M26761_IG16
+ je SHORT G_M26761_IG16
;; size=6 bbWeight=1 PerfScore 1.25
-G_M26761_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG12: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M26761_IG15
+ ;; size=2 bbWeight=0.23 PerfScore 0.46
+G_M26761_IG13: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rax, [r13+r15-0x04]
+ ;; size=5 bbWeight=0.30 PerfScore 0.60
+G_M26761_IG14: ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov r12d, dword ptr [rbx+r13]
+ test r12d, 0xD1FFAB1E
+ jne SHORT G_M26761_IG20
+ vmovd xmm0, r12
+ vpmovzxbw xmm0, xmm0
+ vmovd qword ptr [r14+2*r13], xmm0
+ add r13, 4
+ cmp r13, rax
+ jbe SHORT G_M26761_IG14
+ jmp SHORT G_M26761_IG11
+ ;; size=40 bbWeight=0.69 PerfScore 8.06
+G_M26761_IG15: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx r12, word ptr [rbx+r13]
+ test r12d, 0xD1FFAB1E
+ jne SHORT G_M26761_IG20
+ movzx rdi, r12b
+ mov word ptr [r14+2*r13], di
+ shr r12d, 8
+ mov word ptr [r14+2*r13+0x02], r12w
+ add r13, 2
+ ;; size=37 bbWeight=0.23 PerfScore 1.43
+G_M26761_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test r15b, 1
- jne SHORT G_M26761_IG15
+ je SHORT G_M26761_IG18
;; size=6 bbWeight=1 PerfScore 1.25
-G_M26761_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26761_IG17: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx r12, byte ptr [rbx+r13]
+ test r12b, 128
+ jne SHORT G_M26761_IG18
+ mov word ptr [r14+2*r13], r12w
+ inc r13
+ ;; size=19 bbWeight=0.36 PerfScore 1.61
+G_M26761_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, r13
;; size=3 bbWeight=1 PerfScore 0.25
-G_M26761_IG11: ; bbWeight=1, epilog, nogc, extend
+G_M26761_IG19: ; bbWeight=1, epilog, nogc, extend
vzeroupper
add rsp, 8
pop rbx
@@ -141,63 +196,9 @@ G_M26761_IG11: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 5.25
-G_M26761_IG12: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- lea rax, [r13+r15-0x04]
- ;; size=5 bbWeight=0.30 PerfScore 0.60
-G_M26761_IG13: ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r12d, dword ptr [rbx+r13]
+G_M26761_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
test r12d, 0xD1FFAB1E
- jne G_M26761_IG19
- vmovd xmm0, r12
- vpmovzxbw xmm0, xmm0
- vmovd qword ptr [r14+2*r13], xmm0
- add r13, 4
- cmp r13, rax
- jbe SHORT G_M26761_IG13
- ;; size=42 bbWeight=0.69 PerfScore 6.69
-G_M26761_IG14: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M26761_IG08
- ;; size=2 bbWeight=0.30 PerfScore 0.60
-G_M26761_IG15: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx r12, byte ptr [rbx+r13]
- test r12b, 128
- jne SHORT G_M26761_IG10
- mov word ptr [r14+2*r13], r12w
- inc r13
- jmp SHORT G_M26761_IG10
- ;; size=21 bbWeight=0.36 PerfScore 2.32
-G_M26761_IG16: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx r12, word ptr [rbx+r13]
- test r12d, 0xD1FFAB1E
- jne SHORT G_M26761_IG19
- movzx rdi, r12b
- mov word ptr [r14+2*r13], di
- shr r12d, 8
- mov word ptr [r14+2*r13+0x02], r12w
- add r13, 2
- jmp G_M26761_IG09
- ;; size=42 bbWeight=0.23 PerfScore 1.89
-G_M26761_IG17: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rsi, [r15-0x10]
- ;; size=4 bbWeight=0.14 PerfScore 0.07
-G_M26761_IG18: ; bbWeight=0.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- vmovups xmm0, xmmword ptr [rbx+r13]
- vptest xmm0, xmmword ptr [reloc @RWD00]
- jne G_M26761_IG06
- vpmovzxbw xmm1, xmm0
- vpsrldq xmm0, xmm0, 8
- vpmovzxbw xmm0, xmm0
- vmovups xmmword ptr [rdi], xmm1
- vmovups xmmword ptr [rdi+0x10], xmm0
- add r13, 16
- add rdi, 32
- cmp r13, rsi
- jbe SHORT G_M26761_IG18
- jmp G_M26761_IG06
- ;; size=63 bbWeight=0.14 PerfScore 2.96
-G_M26761_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test r12d, 0xD1FFAB1E
- jne SHORT G_M26761_IG21
+ jne SHORT G_M26761_IG22
mov rdi, 0xD1FFAB1E
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -205,24 +206,24 @@ G_M26761_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [<unknown method>]
; gcrRegs -[rsi rdi]
; gcr arg pop 0
- jmp SHORT G_M26761_IG21
+ jmp SHORT G_M26761_IG22
;; size=37 bbWeight=0 PerfScore 0.00
-G_M26761_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26761_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, r12b
mov word ptr [r14+2*r13], ax
inc r13
shr r12d, 8
;; size=16 bbWeight=0 PerfScore 0.00
-G_M26761_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rax, r12b
test al, 128
- je SHORT G_M26761_IG20
- jmp G_M26761_IG10
- ;; size=13 bbWeight=0 PerfScore 0.00
+ je SHORT G_M26761_IG21
+ jmp SHORT G_M26761_IG18
+ ;; size=10 bbWeight=0 PerfScore 0.00
RWD00 dq 8080808080808080h, 8080808080808080h
-; Total bytes of code 421, prolog size 28, PerfScore 407.75, instruction count 109, allocated bytes for code 421 (MethodHash=eb059776) for method System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
+; Total bytes of code 402, prolog size 28, PerfScore 409.12, instruction count 108, allocated bytes for code 402 (MethodHash=eb059776) for method System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
; ============================================================
Unwind Info:
+21 (+8.40%) : 15361.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
@@ -11,7 +11,7 @@
;
; V00 arg0 [V00,T01] ( 9, 3.03) byref -> r15 single-def
; V01 arg1 [V01,T02] ( 9, 3.03) short -> r14 single-def
-; V02 arg2 [V02,T00] ( 15, 6.04) int -> rbx
+; V02 arg2 [V02,T00] ( 15, 6.26) int -> rbx
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
; V04 loc1 [V04,T03] ( 14, 0.07) long -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -70,14 +70,14 @@ G_M21910_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=30 bbWeight=1 PerfScore 4.75
-G_M21910_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M21910_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
cmp ebx, 8
- jl SHORT G_M21910_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M21910_IG04: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ jl G_M21910_IG16
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M21910_IG04: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
cmp ebx, 16
- jl SHORT G_M21910_IG07
- ;; size=5 bbWeight=0.99 PerfScore 1.24
+ jl G_M21910_IG14
+ ;; size=9 bbWeight=0.99 PerfScore 1.24
G_M21910_IG05: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
movsx rsi, r14w
mov rdi, r15
@@ -93,14 +93,67 @@ G_M21910_IG06: ; bbWeight=0.96, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=16 bbWeight=0.96 PerfScore 4.09
-G_M21910_IG07: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+G_M21910_IG07: ; bbWeight=0.23, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
; byrRegs -[rdi]
+ cmp ebx, 4
+ jl SHORT G_M21910_IG10
+ ;; size=5 bbWeight=0.23 PerfScore 0.29
+G_M21910_IG08: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ add ebx, -4
+ movsx rsi, word ptr [r15+2*rax]
+ movsx rdi, r14w
+ cmp esi, edi
+ je G_M21910_IG17
+ movsx rsi, word ptr [r15+2*rax-0x02]
+ movsx rdi, r14w
+ cmp esi, edi
+ je G_M21910_IG20
+ movsx rsi, word ptr [r15+2*rax-0x04]
+ movsx rdi, r14w
+ cmp esi, edi
+ je SHORT G_M21910_IG19
+ movsx rsi, word ptr [r15+2*rax-0x06]
+ movsx rdi, r14w
+ cmp esi, edi
+ je SHORT G_M21910_IG18
+ ;; size=66 bbWeight=0.01 PerfScore 0.15
+G_M21910_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+ add rax, -4
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M21910_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ test ebx, ebx
+ jle SHORT G_M21910_IG12
+ ;; size=4 bbWeight=0.00 PerfScore 0.01
+G_M21910_IG11: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ dec ebx
+ movsx rsi, word ptr [r15+2*rax]
+ movsx rdi, r14w
+ cmp esi, edi
+ je SHORT G_M21910_IG17
+ dec rax
+ test ebx, ebx
+ jg SHORT G_M21910_IG11
+ ;; size=22 bbWeight=0.01 PerfScore 0.05
+G_M21910_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r15]
+ mov eax, -1
+ ;; size=5 bbWeight=0.00 PerfScore 0.00
+G_M21910_IG13: ; bbWeight=0.00, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=11 bbWeight=0.00 PerfScore 0.01
+G_M21910_IG14: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+ ; byrRegs +[r15]
movsx rsi, r14w
mov rdi, r15
; byrRegs +[rdi]
mov edx, ebx
;; size=9 bbWeight=0.03 PerfScore 0.02
-G_M21910_IG08: ; bbWeight=0.03, epilog, nogc, extend
+G_M21910_IG15: ; bbWeight=0.03, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -109,52 +162,14 @@ G_M21910_IG08: ; bbWeight=0.03, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=16 bbWeight=0.03 PerfScore 0.13
-G_M21910_IG09: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M21910_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs -[rdi]
movsxd rax, ebx
dec rax
- cmp ebx, 4
- jl SHORT G_M21910_IG11
- add ebx, -4
- movsx rsi, word ptr [r15+2*rax]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG15
- movsx rsi, word ptr [r15+2*rax-0x02]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG18
- movsx rsi, word ptr [r15+2*rax-0x04]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG17
- movsx rsi, word ptr [r15+2*rax-0x06]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG16
- ;; size=69 bbWeight=0.01 PerfScore 0.16
-G_M21910_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
- add rax, -4
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M21910_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
- test ebx, ebx
- jle SHORT G_M21910_IG13
- ;; size=4 bbWeight=0.00 PerfScore 0.01
-G_M21910_IG12: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
- dec ebx
- movsx rsi, word ptr [r15+2*rax]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG15
- dec rax
- test ebx, ebx
- jg SHORT G_M21910_IG12
- ;; size=22 bbWeight=0.01 PerfScore 0.05
-G_M21910_IG13: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp G_M21910_IG07
+ ;; size=11 bbWeight=0.01 PerfScore 0.02
+G_M21910_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r15]
- mov eax, -1
- ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M21910_IG14: ; bbWeight=0.00, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -162,28 +177,20 @@ G_M21910_IG14: ; bbWeight=0.00, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.00 PerfScore 0.01
-G_M21910_IG15: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0.00 PerfScore 0.01
-G_M21910_IG16: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M21910_IG18: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
add eax, -3
- jmp SHORT G_M21910_IG15
+ jmp SHORT G_M21910_IG17
;; size=5 bbWeight=0.00 PerfScore 0.01
-G_M21910_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M21910_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add eax, -2
- jmp SHORT G_M21910_IG15
+ jmp SHORT G_M21910_IG17
;; size=5 bbWeight=0 PerfScore 0.00
-G_M21910_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M21910_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
dec eax
- jmp SHORT G_M21910_IG15
+ jmp SHORT G_M21910_IG17
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 250, prolog size 20, PerfScore 18.71, instruction count 87, allocated bytes for code 250 (MethodHash=9eddaa69) for method System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
+; Total bytes of code 271, prolog size 20, PerfScore 19.00, instruction count 88, allocated bytes for code 271 (MethodHash=9eddaa69) for method System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
; ============================================================
Unwind Info:
+21 (+8.40%) : 17397.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
@@ -11,7 +11,7 @@
;
; V00 arg0 [V00,T01] ( 9, 3.02) byref -> r15 single-def
; V01 arg1 [V01,T02] ( 9, 3.02) short -> r14 single-def
-; V02 arg2 [V02,T00] ( 15, 6.03) int -> rbx
+; V02 arg2 [V02,T00] ( 15, 6.25) int -> rbx
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
; V04 loc1 [V04,T03] ( 14, 0.04) long -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -70,14 +70,14 @@ G_M21910_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=30 bbWeight=1 PerfScore 4.75
-G_M21910_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M21910_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
cmp ebx, 8
- jl SHORT G_M21910_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M21910_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ jl G_M21910_IG16
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M21910_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
cmp ebx, 16
- jl SHORT G_M21910_IG07
- ;; size=5 bbWeight=1.00 PerfScore 1.24
+ jl G_M21910_IG14
+ ;; size=9 bbWeight=1.00 PerfScore 1.24
G_M21910_IG05: ; bbWeight=0.97, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
movsx rsi, r14w
mov rdi, r15
@@ -93,14 +93,67 @@ G_M21910_IG06: ; bbWeight=0.97, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=16 bbWeight=0.97 PerfScore 4.10
-G_M21910_IG07: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+G_M21910_IG07: ; bbWeight=0.23, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
; byrRegs -[rdi]
+ cmp ebx, 4
+ jl SHORT G_M21910_IG10
+ ;; size=5 bbWeight=0.23 PerfScore 0.29
+G_M21910_IG08: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ add ebx, -4
+ movsx rsi, word ptr [r15+2*rax]
+ movsx rdi, r14w
+ cmp esi, edi
+ je G_M21910_IG17
+ movsx rsi, word ptr [r15+2*rax-0x02]
+ movsx rdi, r14w
+ cmp esi, edi
+ je G_M21910_IG20
+ movsx rsi, word ptr [r15+2*rax-0x04]
+ movsx rdi, r14w
+ cmp esi, edi
+ je SHORT G_M21910_IG19
+ movsx rsi, word ptr [r15+2*rax-0x06]
+ movsx rdi, r14w
+ cmp esi, edi
+ je SHORT G_M21910_IG18
+ ;; size=66 bbWeight=0.00 PerfScore 0.10
+G_M21910_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+ add rax, -4
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M21910_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ test ebx, ebx
+ jle SHORT G_M21910_IG12
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M21910_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ dec ebx
+ movsx rsi, word ptr [r15+2*rax]
+ movsx rdi, r14w
+ cmp esi, edi
+ je SHORT G_M21910_IG17
+ dec rax
+ test ebx, ebx
+ jg SHORT G_M21910_IG11
+ ;; size=22 bbWeight=0.00 PerfScore 0.03
+G_M21910_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r15]
+ mov eax, -1
+ ;; size=5 bbWeight=0.00 PerfScore 0.00
+G_M21910_IG13: ; bbWeight=0.00, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=11 bbWeight=0.00 PerfScore 0.01
+G_M21910_IG14: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+ ; byrRegs +[r15]
movsx rsi, r14w
mov rdi, r15
; byrRegs +[rdi]
mov edx, ebx
;; size=9 bbWeight=0.03 PerfScore 0.02
-G_M21910_IG08: ; bbWeight=0.03, epilog, nogc, extend
+G_M21910_IG15: ; bbWeight=0.03, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -109,52 +162,14 @@ G_M21910_IG08: ; bbWeight=0.03, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=16 bbWeight=0.03 PerfScore 0.13
-G_M21910_IG09: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M21910_IG16: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs -[rdi]
movsxd rax, ebx
dec rax
- cmp ebx, 4
- jl SHORT G_M21910_IG11
- add ebx, -4
- movsx rsi, word ptr [r15+2*rax]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG15
- movsx rsi, word ptr [r15+2*rax-0x02]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG18
- movsx rsi, word ptr [r15+2*rax-0x04]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG17
- movsx rsi, word ptr [r15+2*rax-0x06]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG16
- ;; size=69 bbWeight=0.00 PerfScore 0.11
-G_M21910_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
- add rax, -4
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M21910_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
- test ebx, ebx
- jle SHORT G_M21910_IG13
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M21910_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
- dec ebx
- movsx rsi, word ptr [r15+2*rax]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG15
- dec rax
- test ebx, ebx
- jg SHORT G_M21910_IG12
- ;; size=22 bbWeight=0.00 PerfScore 0.03
-G_M21910_IG13: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp G_M21910_IG07
+ ;; size=11 bbWeight=0.00 PerfScore 0.01
+G_M21910_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r15]
- mov eax, -1
- ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M21910_IG14: ; bbWeight=0.00, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -162,28 +177,20 @@ G_M21910_IG14: ; bbWeight=0.00, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.00 PerfScore 0.01
-G_M21910_IG15: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0.00 PerfScore 0.01
-G_M21910_IG16: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M21910_IG18: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
add eax, -3
- jmp SHORT G_M21910_IG15
+ jmp SHORT G_M21910_IG17
;; size=5 bbWeight=0.00 PerfScore 0.01
-G_M21910_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M21910_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add eax, -2
- jmp SHORT G_M21910_IG15
+ jmp SHORT G_M21910_IG17
;; size=5 bbWeight=0 PerfScore 0.00
-G_M21910_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M21910_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
dec eax
- jmp SHORT G_M21910_IG15
+ jmp SHORT G_M21910_IG17
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 250, prolog size 20, PerfScore 18.64, instruction count 87, allocated bytes for code 250 (MethodHash=9eddaa69) for method System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
+; Total bytes of code 271, prolog size 20, PerfScore 18.93, instruction count 88, allocated bytes for code 271 (MethodHash=9eddaa69) for method System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
; ============================================================
Unwind Info:
+21 (+8.40%) : 14931.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
@@ -11,7 +11,7 @@
;
; V00 arg0 [V00,T01] ( 9, 3.02) byref -> r15 single-def
; V01 arg1 [V01,T02] ( 9, 3.02) short -> r14 single-def
-; V02 arg2 [V02,T00] ( 15, 6.03) int -> rbx
+; V02 arg2 [V02,T00] ( 15, 6.26) int -> rbx
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
; V04 loc1 [V04,T03] ( 14, 0.05) long -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -70,14 +70,14 @@ G_M21910_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr
; gcrRegs -[rsi rdi]
; gcr arg pop 0
;; size=30 bbWeight=1 PerfScore 4.75
-G_M21910_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M21910_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
cmp ebx, 8
- jl SHORT G_M21910_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M21910_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ jl G_M21910_IG16
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M21910_IG04: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
cmp ebx, 16
- jl SHORT G_M21910_IG07
- ;; size=5 bbWeight=1.00 PerfScore 1.24
+ jl G_M21910_IG14
+ ;; size=9 bbWeight=1.00 PerfScore 1.24
G_M21910_IG05: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
movsx rsi, r14w
mov rdi, r15
@@ -93,14 +93,67 @@ G_M21910_IG06: ; bbWeight=0.96, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=16 bbWeight=0.96 PerfScore 4.10
-G_M21910_IG07: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+G_M21910_IG07: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
; byrRegs -[rdi]
+ cmp ebx, 4
+ jl SHORT G_M21910_IG10
+ ;; size=5 bbWeight=0.24 PerfScore 0.30
+G_M21910_IG08: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ add ebx, -4
+ movsx rsi, word ptr [r15+2*rax]
+ movsx rdi, r14w
+ cmp esi, edi
+ je G_M21910_IG17
+ movsx rsi, word ptr [r15+2*rax-0x02]
+ movsx rdi, r14w
+ cmp esi, edi
+ je G_M21910_IG20
+ movsx rsi, word ptr [r15+2*rax-0x04]
+ movsx rdi, r14w
+ cmp esi, edi
+ je SHORT G_M21910_IG19
+ movsx rsi, word ptr [r15+2*rax-0x06]
+ movsx rdi, r14w
+ cmp esi, edi
+ je SHORT G_M21910_IG18
+ ;; size=66 bbWeight=0.00 PerfScore 0.11
+G_M21910_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+ add rax, -4
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M21910_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ test ebx, ebx
+ jle SHORT G_M21910_IG12
+ ;; size=4 bbWeight=0.00 PerfScore 0.00
+G_M21910_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ dec ebx
+ movsx rsi, word ptr [r15+2*rax]
+ movsx rdi, r14w
+ cmp esi, edi
+ je SHORT G_M21910_IG17
+ dec rax
+ test ebx, ebx
+ jg SHORT G_M21910_IG11
+ ;; size=22 bbWeight=0.00 PerfScore 0.03
+G_M21910_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[r15]
+ mov eax, -1
+ ;; size=5 bbWeight=0.00 PerfScore 0.00
+G_M21910_IG13: ; bbWeight=0.00, epilog, nogc, extend
+ add rsp, 8
+ pop rbx
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=11 bbWeight=0.00 PerfScore 0.01
+G_M21910_IG14: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+ ; byrRegs +[r15]
movsx rsi, r14w
mov rdi, r15
; byrRegs +[rdi]
mov edx, ebx
;; size=9 bbWeight=0.03 PerfScore 0.02
-G_M21910_IG08: ; bbWeight=0.03, epilog, nogc, extend
+G_M21910_IG15: ; bbWeight=0.03, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -109,52 +162,14 @@ G_M21910_IG08: ; bbWeight=0.03, epilog, nogc, extend
tail.jmp [<unknown method>]
; gcr arg pop 0
;; size=16 bbWeight=0.03 PerfScore 0.13
-G_M21910_IG09: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M21910_IG16: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs -[rdi]
movsxd rax, ebx
dec rax
- cmp ebx, 4
- jl SHORT G_M21910_IG11
- add ebx, -4
- movsx rsi, word ptr [r15+2*rax]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG15
- movsx rsi, word ptr [r15+2*rax-0x02]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG18
- movsx rsi, word ptr [r15+2*rax-0x04]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG17
- movsx rsi, word ptr [r15+2*rax-0x06]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG16
- ;; size=69 bbWeight=0.00 PerfScore 0.11
-G_M21910_IG10: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
- add rax, -4
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M21910_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
- test ebx, ebx
- jle SHORT G_M21910_IG13
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M21910_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
- dec ebx
- movsx rsi, word ptr [r15+2*rax]
- movsx rdi, r14w
- cmp esi, edi
- je SHORT G_M21910_IG15
- dec rax
- test ebx, ebx
- jg SHORT G_M21910_IG12
- ;; size=22 bbWeight=0.00 PerfScore 0.03
-G_M21910_IG13: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp G_M21910_IG07
+ ;; size=11 bbWeight=0.00 PerfScore 0.01
+G_M21910_IG17: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r15]
- mov eax, -1
- ;; size=5 bbWeight=0.00 PerfScore 0.00
-G_M21910_IG14: ; bbWeight=0.00, epilog, nogc, extend
add rsp, 8
pop rbx
pop r14
@@ -162,28 +177,20 @@ G_M21910_IG14: ; bbWeight=0.00, epilog, nogc, extend
pop rbp
ret
;; size=11 bbWeight=0.00 PerfScore 0.01
-G_M21910_IG15: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 8
- pop rbx
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=11 bbWeight=0.00 PerfScore 0.01
-G_M21910_IG16: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M21910_IG18: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
add eax, -3
- jmp SHORT G_M21910_IG15
+ jmp SHORT G_M21910_IG17
;; size=5 bbWeight=0.00 PerfScore 0.01
-G_M21910_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M21910_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add eax, -2
- jmp SHORT G_M21910_IG15
+ jmp SHORT G_M21910_IG17
;; size=5 bbWeight=0 PerfScore 0.00
-G_M21910_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M21910_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
dec eax
- jmp SHORT G_M21910_IG15
+ jmp SHORT G_M21910_IG17
;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 250, prolog size 20, PerfScore 18.64, instruction count 87, allocated bytes for code 250 (MethodHash=9eddaa69) for method System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
+; Total bytes of code 271, prolog size 20, PerfScore 18.95, instruction count 88, allocated bytes for code 271 (MethodHash=9eddaa69) for method System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
; ============================================================
Unwind Info:
librariestestsnotieredcompilation.run.linux.x64.Release.mch
-47 (-7.26%) : 277510.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4901_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -121,7 +121,7 @@ G_M61499_IG02: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi
mov r14d, edx
mov r13d, dword ptr [rbx+0x4C]
cmp r13d, r14d
- ja G_M61499_IG36
+ ja G_M61499_IG34
;; size=19 bbWeight=1.00 PerfScore 3.75
G_M61499_IG03: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
; byrRegs -[rsi]
@@ -205,23 +205,23 @@ G_M61499_IG10: ; bbWeight=0.50, gcVars=0000000000010000 {V87}, gcrefRegs=
call [<unknown method>]
; gcrRegs -[rcx rsi rdi]
;; size=30 bbWeight=0.50 PerfScore 2.63
-G_M61499_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
+G_M61499_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
lea edi, [r13-0x01]
cmp edi, r14d
- jae G_M61499_IG33
- ;; size=13 bbWeight=0.50 PerfScore 0.88
+ jae SHORT G_M61499_IG15
+ ;; size=9 bbWeight=0.50 PerfScore 0.88
G_M61499_IG12: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
lea edi, [r13-0x01]
movzx rdi, word ptr [r15+2*rdi]
cmp edi, 256
- jae SHORT G_M61499_IG18
+ jae SHORT G_M61499_IG17
;; size=17 bbWeight=0.50 PerfScore 1.88
G_M61499_IG13: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
add edi, -48
cmp edi, 9
- ja G_M61499_IG33
- jmp SHORT G_M61499_IG19
- ;; size=14 bbWeight=0.24 PerfScore 0.85
+ ja SHORT G_M61499_IG15
+ jmp SHORT G_M61499_IG18
+ ;; size=10 bbWeight=0.24 PerfScore 0.85
G_M61499_IG14: ; bbWeight=0.25, gcVars=0000000000012000 {V27 V87}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
; GC ptr vars +{V27}
mov rcx, bword ptr [rbp-0x38]
@@ -231,16 +231,87 @@ G_M61499_IG14: ; bbWeight=0.25, gcVars=0000000000012000 {V27 V87}, gcrefR
mov esi, dword ptr [rcx+0x02]
xor esi, 0xD1FFAB1E
or edi, esi
- je G_M61499_IG33
- jmp SHORT G_M61499_IG10
- ;; size=31 bbWeight=0.25 PerfScore 2.19
-G_M61499_IG15: ; bbWeight=0.50, gcVars=0000000000010000 {V87}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+ jne SHORT G_M61499_IG10
+ ;; size=25 bbWeight=0.25 PerfScore 1.69
+G_M61499_IG15: ; bbWeight=0.74, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx]
; byrRegs -[rcx r15]
- ; GC ptr vars -{V27}
+ ; GC ptr vars -{V27 V87}
+ xor eax, eax
+ ;; size=2 bbWeight=0.74 PerfScore 0.19
+G_M61499_IG16: ; bbWeight=0.74, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop r12
+ pop r13
+ pop r14
+ pop r15
+ pop rbp
+ ret
+ ;; size=15 bbWeight=0.74 PerfScore 3.15
+G_M61499_IG17: ; bbWeight=0.25, gcVars=0000000000010000 {V87}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
+ ; gcrRegs +[rbx]
+ ; byrRegs +[r15]
+ ; GC ptr vars +{V87}
+ call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int]
+ cmp eax, 8
+ jne SHORT G_M61499_IG15
+ ;; size=11 bbWeight=0.25 PerfScore 1.06
+G_M61499_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ lea edi, [r13-0x01]
+ mov eax, edi
+ lea edi, [rax-0x01]
+ cmp edi, r14d
+ jae SHORT G_M61499_IG15
+ ;; size=14 bbWeight=0.50 PerfScore 1.25
+G_M61499_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ mov dword ptr [rbp-0x2C], eax
+ lea edi, [rax-0x01]
+ movzx rdi, word ptr [r15+2*rdi]
+ cmp edi, 256
+ jae SHORT G_M61499_IG21
+ ;; size=19 bbWeight=0.50 PerfScore 2.38
+G_M61499_IG20: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ add edi, -48
+ cmp edi, 9
+ ja SHORT G_M61499_IG15
+ jmp SHORT G_M61499_IG22
+ ;; size=10 bbWeight=0.24 PerfScore 0.85
+G_M61499_IG21: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int]
+ cmp eax, 8
+ jne SHORT G_M61499_IG15
+ ;; size=11 bbWeight=0.25 PerfScore 1.06
+G_M61499_IG22: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ mov eax, dword ptr [rbp-0x2C]
+ dec eax
+ lea edi, [rax-0x01]
+ cmp edi, r14d
+ jae SHORT G_M61499_IG15
+ ;; size=13 bbWeight=0.50 PerfScore 1.50
+G_M61499_IG23: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+ mov edi, edi
+ movzx rdi, word ptr [r15+2*rdi]
+ cmp edi, 256
+ jae SHORT G_M61499_IG25
+ ;; size=15 bbWeight=0.50 PerfScore 1.75
+G_M61499_IG24: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[r15]
+ add edi, -48
+ cmp edi, 9
+ ja SHORT G_M61499_IG15
+ jmp SHORT G_M61499_IG26
+ ;; size=10 bbWeight=0.24 PerfScore 0.85
+G_M61499_IG25: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int]
+ cmp eax, 8
+ jne G_M61499_IG15
+ ;; size=15 bbWeight=0.25 PerfScore 1.06
+G_M61499_IG26: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r15, bword ptr [rbp-0x40]
; byrRegs +[r15]
test r12d, r12d
- jge SHORT G_M61499_IG16
+ jge SHORT G_M61499_IG27
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov r14, rcx
@@ -259,82 +330,18 @@ G_M61499_IG15: ; bbWeight=0.50, gcVars=0000000000010000 {V87}, gcrefRegs=
call [<unknown method>]
; gcrRegs -[rsi rdi r14]
;; size=46 bbWeight=0.50 PerfScore 4.88
-G_M61499_IG16: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
+G_M61499_IG27: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
cmp r12d, 3
- jl G_M61499_IG33
+ jl G_M61499_IG15
;; size=10 bbWeight=0.50 PerfScore 0.63
-G_M61499_IG17: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- jmp G_M61499_IG28
- ;; size=5 bbWeight=0.25 PerfScore 0.50
-G_M61499_IG18: ; bbWeight=0.25, gcVars=0000000000010000 {V87}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
- ; GC ptr vars +{V87}
- call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int]
- cmp eax, 8
- jne G_M61499_IG33
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M61499_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- lea edi, [r13-0x01]
- mov eax, edi
- lea edi, [rax-0x01]
- cmp edi, r14d
- jae G_M61499_IG33
- ;; size=18 bbWeight=0.50 PerfScore 1.25
-G_M61499_IG20: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov dword ptr [rbp-0x2C], eax
- lea edi, [rax-0x01]
- movzx rdi, word ptr [r15+2*rdi]
- cmp edi, 256
- jae SHORT G_M61499_IG22
- ;; size=19 bbWeight=0.50 PerfScore 2.38
-G_M61499_IG21: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- add edi, -48
- cmp edi, 9
- ja G_M61499_IG33
- jmp SHORT G_M61499_IG23
- ;; size=14 bbWeight=0.24 PerfScore 0.85
-G_M61499_IG22: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int]
- cmp eax, 8
- jne G_M61499_IG33
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M61499_IG23: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
- mov eax, dword ptr [rbp-0x2C]
- dec eax
- lea edi, [rax-0x01]
- cmp edi, r14d
- jae G_M61499_IG33
- ;; size=17 bbWeight=0.50 PerfScore 1.50
-G_M61499_IG24: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
- mov edi, edi
- movzx rdi, word ptr [r15+2*rdi]
- cmp edi, 256
- jae SHORT G_M61499_IG26
- ;; size=15 bbWeight=0.50 PerfScore 1.75
-G_M61499_IG25: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; byrRegs -[r15]
- add edi, -48
- cmp edi, 9
- ja G_M61499_IG33
- jmp G_M61499_IG15
- ;; size=17 bbWeight=0.24 PerfScore 0.85
-G_M61499_IG26: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int]
- cmp eax, 8
- jne G_M61499_IG33
- ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M61499_IG27: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- jmp G_M61499_IG15
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M61499_IG28: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
- ; byrRegs +[r15]
- ; GC ptr vars -{V87}
+G_M61499_IG28: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
mov edi, dword ptr [r15]
xor edi, 0xD1FFAB1E
mov eax, dword ptr [r15+0x02]
xor eax, 0xD1FFAB1E
or edi, eax
- jne SHORT G_M61499_IG33
- ;; size=22 bbWeight=0.25 PerfScore 1.44
+ jne G_M61499_IG15
+ ;; size=26 bbWeight=0.25 PerfScore 1.44
G_M61499_IG29: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r15]
lea eax, [r13+0x03]
@@ -362,7 +369,7 @@ G_M61499_IG31: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
dec edi
mov dword ptr [rbx+0x58], edi
cmp edi, dword ptr [rcx+0x08]
- jae SHORT G_M61499_IG35
+ jae SHORT G_M61499_IG33
xor edx, edx
mov dword ptr [rcx+4*rdi+0x10], edx
mov ecx, r12d
@@ -387,28 +394,15 @@ G_M61499_IG32: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M61499_IG33: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M61499_IG34: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
- pop rbx
- pop r12
- pop r13
- pop r14
- pop r15
- pop rbp
- ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M61499_IG35: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M61499_IG33: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
...
-42 (-5.52%) : 23935.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
@@ -62,7 +62,7 @@ G_M10937_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M10937_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov r13d, dword ptr [r15+0x08]
test r13d, r13d
- je G_M10937_IG38
+ je G_M10937_IG34
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
cmp dword ptr [rdi], edi
@@ -92,7 +92,7 @@ G_M10937_IG05: ; bbWeight=0.25, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
G_M10937_IG06: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
lea edi, [rbx-0x01]
cmp edi, r13d
- jae G_M10937_IG38
+ jae G_M10937_IG34
lea edi, [rbx-0x01]
mov rdi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rdi]
@@ -116,7 +116,7 @@ G_M10937_IG08: ; bbWeight=0.12, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0
G_M10937_IG09: ; bbWeight=0.25, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
xor eax, eax
;; size=2 bbWeight=0.25 PerfScore 0.06
-G_M10937_IG10: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG10: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov dword ptr [rbp-0x2C], eax
lea edi, [rbx-0x01]
test eax, eax
@@ -124,24 +124,24 @@ G_M10937_IG10: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {},
xor ecx, ecx
mov dword ptr [rbp-0x30], ecx
cmp ebx, 1
- jle SHORT G_M10937_IG17
- ;; size=21 bbWeight=1 PerfScore 4.50
+ jle G_M10937_IG17
+ ;; size=25 bbWeight=1 PerfScore 4.50
G_M10937_IG11: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, 1
- jbe G_M10937_IG38
+ jbe G_M10937_IG34
mov rdi, gword ptr [r15+0x18]
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:FindMultiLineCommentPattern(System.String):System.String]
; gcrRegs -[rdi] +[rax]
test rax, rax
- je SHORT G_M10937_IG16
+ je G_M10937_IG17
mov ecx, 2
cmp ebx, 2
- jle G_M10937_IG19
+ jle SHORT G_M10937_IG16
;; size=39 bbWeight=0.50 PerfScore 4.50
G_M10937_IG12: ; bbWeight=0.25, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, byref, isz
cmp r13d, ebx
- jl SHORT G_M10937_IG18
+ jl SHORT G_M10937_IG15
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M10937_IG13: ; bbWeight=3.96, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x34], ecx
@@ -159,7 +159,7 @@ G_M10937_IG13: ; bbWeight=3.96, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0
call [System.String:IsNullOrWhiteSpace(System.String):ubyte]
; gcrRegs -[rax rdi]
test eax, eax
- jne SHORT G_M10937_IG15
+ jne SHORT G_M10937_IG17
mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
mov ecx, dword ptr [rbp-0x34]
@@ -167,27 +167,13 @@ G_M10937_IG13: ; bbWeight=3.96, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0
cmp ecx, ebx
jl SHORT G_M10937_IG13
;; size=49 bbWeight=3.96 PerfScore 61.38
-G_M10937_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M10937_IG14: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V09}
- jmp SHORT G_M10937_IG19
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M10937_IG15: ; bbWeight=1.98, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax]
- mov eax, dword ptr [rbp-0x30]
- jmp SHORT G_M10937_IG20
- ;; size=5 bbWeight=1.98 PerfScore 5.94
-G_M10937_IG16: ; bbWeight=0.25, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rbp-0x30]
- jmp SHORT G_M10937_IG20
- ;; size=5 bbWeight=0.25 PerfScore 0.75
-G_M10937_IG17: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
- mov eax, dword ptr [rbp-0x30]
- jmp SHORT G_M10937_IG20
- ;; size=5 bbWeight=0.50 PerfScore 1.50
-G_M10937_IG18: ; bbWeight=0.04, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rax]
+ jmp SHORT G_M10937_IG16
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M10937_IG15: ; bbWeight=0.04, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, byref, isz
cmp ecx, r13d
- jae G_M10937_IG38
+ jae G_M10937_IG34
mov dword ptr [rbp-0x34], ecx
mov esi, ecx
mov rsi, gword ptr [r15+8*rsi+0x10]
@@ -203,28 +189,26 @@ G_M10937_IG18: ; bbWeight=0.04, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0
call [System.String:IsNullOrWhiteSpace(System.String):ubyte]
; gcrRegs -[rax rdi]
test eax, eax
- jne G_M10937_IG23
+ jne SHORT G_M10937_IG17
mov rax, gword ptr [rbp-0x40]
; gcrRegs +[rax]
mov edi, dword ptr [rbp-0x34]
inc edi
cmp edi, ebx
mov ecx, edi
- jl SHORT G_M10937_IG18
- ;; size=64 bbWeight=0.04 PerfScore 0.68
-G_M10937_IG19: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ jl SHORT G_M10937_IG15
+ ;; size=60 bbWeight=0.04 PerfScore 0.68
+G_M10937_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V09}
- mov ecx, dword ptr [rax+0x08]
- mov dword ptr [rbp-0x30], ecx
- mov eax, dword ptr [rbp-0x30]
+ mov esi, dword ptr [rax+0x08]
+ mov dword ptr [rbp-0x30], esi
+ ;; size=6 bbWeight=0.50 PerfScore 1.50
+G_M10937_IG17: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
- ;; size=9 bbWeight=0.50 PerfScore 2.00
-G_M10937_IG20: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
test r12d, r12d
- jne G_M10937_IG28
+ jne G_M10937_IG24
;; size=9 bbWeight=1 PerfScore 1.25
-G_M10937_IG21: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rbp-0x30], eax
+G_M10937_IG18: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [r15+0x10]
; gcrRegs +[rdi]
cmp byte ptr [rdi], dil
@@ -234,17 +218,17 @@ G_M10937_IG21: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000
mov r12, rax
; gcrRegs +[r12]
cmp dword ptr [rbp-0x2C], 0
- jne SHORT G_M10937_IG22
+ jne SHORT G_M10937_IG19
cmp ebx, 1
- jne SHORT G_M10937_IG22
+ jne SHORT G_M10937_IG19
mov rdi, r12
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:TrimEndOfMultiLineComment(System.String):System.String]
; gcrRegs -[rdi r12]
mov r12, rax
; gcrRegs +[r12]
- ;; size=47 bbWeight=0.50 PerfScore 8.62
-G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=44 bbWeight=0.50 PerfScore 8.12
+G_M10937_IG19: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
cmp byte ptr [r12], r12b
mov rdi, r12
@@ -255,7 +239,7 @@ G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rsi rdi]
test eax, eax
- jne SHORT G_M10937_IG26
+ jne SHORT G_M10937_IG22
mov rdi, r12
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -264,7 +248,7 @@ G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rsi rdi]
test eax, eax
- jne SHORT G_M10937_IG25
+ jne SHORT G_M10937_IG21
mov rdi, r12
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -273,7 +257,7 @@ G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rsi rdi]
test eax, eax
- jne SHORT G_M10937_IG24
+ jne SHORT G_M10937_IG20
mov rdi, r12
; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
@@ -284,26 +268,20 @@ G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
xor esi, esi
test eax, eax
setne sil
- jmp SHORT G_M10937_IG27
+ jmp SHORT G_M10937_IG23
;; size=110 bbWeight=0.50 PerfScore 12.62
-G_M10937_IG23: ; bbWeight=0.02, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r12]
- mov eax, dword ptr [rbp-0x30]
- jmp G_M10937_IG20
- ;; size=8 bbWeight=0.02 PerfScore 0.06
-G_M10937_IG24: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r12]
+G_M10937_IG20: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov esi, 2
- jmp SHORT G_M10937_IG27
+ jmp SHORT G_M10937_IG23
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M10937_IG25: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG21: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov esi, 3
- jmp SHORT G_M10937_IG27
+ jmp SHORT G_M10937_IG23
;; size=7 bbWeight=0.50 PerfScore 1.12
-G_M10937_IG26: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M10937_IG22: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
mov esi, 4
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M10937_IG27: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M10937_IG23: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r12
; gcrRegs +[rdi]
call [System.String:Substring(int):System.String:this]
@@ -314,42 +292,40 @@ G_M10937_IG27: ; bbWeight=0.50, gcrefRegs=D000 {r12 r14 r15}, byrefRegs=0
; gcrRegs +[rdi]
call [Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteLine(System.String):this]
; gcrRegs -[rax rsi rdi]
- mov eax, dword ptr [rbp-0x30]
- ;; size=24 bbWeight=0.50 PerfScore 3.88
-G_M10937_IG28: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=21 bbWeight=0.50 PerfScore 3.38
+G_M10937_IG24: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref
mov r12d, 1
cmp ebx, 1
- jle G_M10937_IG37
+ jle G_M10937_IG33
;; size=15 bbWeight=1 PerfScore 1.50
-G_M10937_IG29: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG25: ; bbWeight=0.50, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
test ebx, ebx
- jl SHORT G_M10937_IG34
+ jl SHORT G_M10937_IG30
cmp r13d, ebx
- jl SHORT G_M10937_IG34
+ jl SHORT G_M10937_IG30
;; size=9 bbWeight=0.50 PerfScore 1.25
-G_M10937_IG30: ; bbWeight=3.96, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M10937_IG26: ; bbWeight=3.96, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
mov edi, r12d
mov rdi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rdi]
...
-20 (-3.91%) : 170822.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
@@ -8,32 +8,33 @@
; 0 inlinees with PGO data; 3 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 26,731 ) ref -> r15 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
-; V01 arg1 [V01,T00] ( 26,754 ) ref -> rbx class-hnd single-def <System.Xml.XPath.XPathNavigator>
+; V00 this [V00,T00] ( 26,245.50) ref -> rbx this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
+; V01 arg1 [V01,T01] ( 20,214 ) ref -> r15 class-hnd single-def <System.Xml.XPath.XPathNavigator>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T02] ( 6,559 ) int -> r14
+; V03 loc1 [V03,T04] ( 6,109.50) int -> r14
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref
-; V09 tmp5 [V09,T15] ( 3, 8 ) int -> rdx
+; V09 tmp5 [V09,T13] ( 3, 8 ) int -> rdx
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp7 [V11,T11] ( 2, 32 ) ref -> r12 class-hnd exact "non-inline candidate call" <System.String>
-; V12 tmp8 [V12,T12] ( 2, 32 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "non-inline candidate call" <System.String>
-; V13 tmp9 [V13,T13] ( 2, 32 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
-; V14 tmp10 [V14,T06] ( 4, 64 ) ref -> rdi class-hnd "dup spill" <<unknown class>>
+; V11 tmp7 [V11,T14] ( 2, 8 ) ref -> r13 class-hnd exact "non-inline candidate call" <System.String>
+; V12 tmp8 [V12,T15] ( 2, 8 ) ref -> [rbp-0x30] class-hnd exact spill-single-def "non-inline candidate call" <System.String>
+; V13 tmp9 [V13,T16] ( 2, 8 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
+; V14 tmp10 [V14,T11] ( 4, 16 ) ref -> rdi class-hnd "dup spill" <<unknown class>>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp12 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> r12 class-hnd exact "non-inline candidate call" <System.String>
+; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> r13 class-hnd exact "non-inline candidate call" <System.String>
; V18 tmp14 [V18,T08] ( 2, 64 ) ref -> [rbp-0x38] class-hnd exact spill-single-def "non-inline candidate call" <System.String>
; V19 tmp15 [V19,T09] ( 2, 64 ) ref -> rcx class-hnd exact "Inlining Arg" <System.String>
; V20 tmp16 [V20,T03] ( 4,128 ) ref -> rdi class-hnd "dup spill" <<unknown class>>
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref
-; V22 tmp18 [V22,T14] ( 3, 24 ) ref -> rdi "argument with side effect"
-; V23 tmp19 [V23,T10] ( 3, 48 ) ref -> rdi "argument with side effect"
+; V22 tmp18 [V22,T10] ( 3, 24 ) ref -> rdi "argument with side effect"
+; V23 tmp19 [V23,T12] ( 3, 12 ) ref -> rdi "argument with side effect"
; V24 tmp20 [V24,T05] ( 3, 96 ) ref -> rdi "argument with side effect"
-; V25 cse0 [V25,T04] ( 9, 96 ) long -> r13 multi-def "CSE - aggressive"
+; V25 cse0 [V25,T06] ( 9, 78 ) long -> r12 multi-def "CSE - aggressive"
+; V26 cse1 [V26,T02] ( 10,146 ) long -> r13 multi-def "CSE - aggressive"
;
; Lcl frame size = 24
@@ -46,21 +47,21 @@ G_M8478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
- mov r15, rdi
- ; gcrRegs +[r15]
- mov rbx, rsi
+ mov rbx, rdi
; gcrRegs +[rbx]
+ mov r15, rsi
+ ; gcrRegs +[r15]
;; size=25 bbWeight=1 PerfScore 7.25
G_M8478_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov r14d, dword ptr [r15+0x58]
+ mov r14d, dword ptr [rbx+0x58]
;; size=4 bbWeight=1 PerfScore 2.00
G_M8478_IG03: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
xor edx, edx
- cmp dword ptr [r15+0x58], r14d
+ cmp dword ptr [rbx+0x58], r14d
sete dl
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
- mov rsi, rbx
+ mov rsi, r15
; gcrRegs +[rsi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
@@ -68,52 +69,49 @@ G_M8478_IG03: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
je G_M8478_IG16
;; size=29 bbWeight=8 PerfScore 72.00
G_M8478_IG04: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
- mov rax, qword ptr [rbx]
- mov r13, qword ptr [rax+0x60]
- call [r13+0x08]<unknown method>
+ mov r13, qword ptr [r15]
+ mov r12, qword ptr [r13+0x60]
+ call [r12+0x08]<unknown method>
; gcrRegs -[rdi]
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x68]
+ mov rax, qword ptr [r13+0x68]
call [rax+0x38]<unknown method>
; gcrRegs -[rdi]
test eax, eax
je SHORT G_M8478_IG07
- ;; size=31 bbWeight=4 PerfScore 63.00
+ ;; size=29 bbWeight=4 PerfScore 55.00
G_M8478_IG05: ; bbWeight=16, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
- mov rsi, rbx
+ mov rsi, r15
; gcrRegs +[rsi]
xor edx, edx
call [<unknown method>]
; gcrRegs -[rsi rdi]
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x70]
+ mov rax, qword ptr [r13+0x70]
call [rax]<unknown method>
; gcrRegs -[rdi]
test eax, eax
jne SHORT G_M8478_IG05
- ;; size=30 bbWeight=16 PerfScore 196.00
+ ;; size=27 bbWeight=16 PerfScore 164.00
G_M8478_IG06: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x78]
+ mov rax, qword ptr [r13+0x78]
call [rax+0x08]<unknown method>
; gcrRegs -[rdi]
- ;; size=13 bbWeight=2 PerfScore 14.50
+ ;; size=10 bbWeight=2 PerfScore 10.50
G_M8478_IG07: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [r15+0x58]
+ mov edi, dword ptr [rbx+0x58]
dec edi
cmp edi, r14d
je SHORT G_M8478_IG09
- ;; size=11 bbWeight=4 PerfScore 14.00
+ ;; size=10 bbWeight=4 PerfScore 14.00
G_M8478_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov edx, 2
jmp SHORT G_M8478_IG10
@@ -122,73 +120,72 @@ G_M8478_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov edx, 1
;; size=5 bbWeight=2 PerfScore 0.50
G_M8478_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
- mov rsi, rbx
+ mov rsi, r15
; gcrRegs +[rsi]
call [System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNamespaces(System.Xml.XPath.XPathNavigator,int):this]
; gcrRegs -[rsi rdi]
- cmp dword ptr [r15+0x60], 0
+ cmp dword ptr [rbx+0x60], 0
je SHORT G_M8478_IG12
- ;; size=19 bbWeight=4 PerfScore 30.00
+ ;; size=18 bbWeight=4 PerfScore 30.00
G_M8478_IG11: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
call [System.Xml.Xsl.Runtime.XmlQueryOutput:WriteCachedNamespaces():this]
; gcrRegs -[rdi]
;; size=9 bbWeight=2 PerfScore 6.50
G_M8478_IG12: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov rdi, gword ptr [r15+0x10]
+ mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
mov rax, qword ptr [rdi]
mov rax, qword ptr [rax+0x98]
call [rax+0x28]<unknown method>
; gcrRegs -[rdi]
- mov dword ptr [r15+0x5C], 2
- mov rdi, rbx
+ mov dword ptr [rbx+0x5C], 2
+ mov rdi, r15
; gcrRegs +[rdi]
- mov rax, qword ptr [rbx]
- mov rax, qword ptr [rax+0x78]
+ mov rax, qword ptr [r13+0x78]
call [rax]<unknown method>
; gcrRegs -[rdi]
test eax, eax
jne G_M8478_IG03
- ;; size=45 bbWeight=4 PerfScore 74.00
-G_M8478_IG13: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov edi, dword ptr [r15+0x58]
+ ;; size=41 bbWeight=4 PerfScore 66.00
+G_M8478_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ mov edi, dword ptr [rbx+0x58]
dec edi
cmp edi, r14d
jne SHORT G_M8478_IG15
- ;; size=11 bbWeight=2 PerfScore 7.00
-G_M8478_IG14: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, r15
+ ;; size=10 bbWeight=0.50 PerfScore 1.75
+G_M8478_IG14: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ mov rdi, rbx
; gcrRegs +[rdi]
call [System.Xml.Xsl.Runtime.XmlQueryOutput:WriteEndElement():this]
; gcrRegs -[rdi]
jmp SHORT G_M8478_IG16
- ;; size=11 bbWeight=8 PerfScore 42.00
-G_M8478_IG15: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, rbx
+ ;; size=11 bbWeight=2 PerfScore 10.50
+G_M8478_IG15: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+ mov rdi, r15
; gcrRegs +[rdi]
- call [r13+0x28]<unknown method>
+ call [r12+0x28]<unknown method>
; gcrRegs -[rdi] +[rax]
- mov r12, rax
- ; gcrRegs +[r12]
- mov rdi, rbx
+ mov r13, rax
+ ; gcrRegs +[r13]
+ mov rdi, r15
; gcrRegs +[rdi]
- call [r13+0x10]<unknown method>
+ call [r12+0x10]<unknown method>
; gcrRegs -[rdi]
mov gword ptr [rbp-0x30], rax
; GC ptr vars +{V12}
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
- call [r13+0x20]<unknown method>
+ call [r12+0x20]<unknown method>
; gcrRegs -[rdi]
mov rcx, rax
; gcrRegs +[rcx]
- mov rdi, gword ptr [r15+0x10]
+ mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
- mov rsi, r12
+ mov rsi, r13
; gcrRegs +[rsi]
mov rdx, gword ptr [rbp-0x30]
; gcrRegs +[rdx]
@@ -197,10 +194,10 @@ G_M8478_IG15: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {},
mov rax, qword ptr [rax+0x98]
; GC ptr vars -{V12}
call [rax+0x38]<unknown method>
...
+44 (+3.43%) : 266818.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TextMismatchSameLength(System.String,System.String) (FullOpts)
@@ -263,7 +263,7 @@ G_M63920_IG04: ; bbWeight=1, gcVars=00000000000000000100000000000000 {V10
; GC ptr vars -{V104}
call [<unknown method>]
; byrRegs -[rsi]
- jmp G_M63920_IG22
+ jmp G_M63920_IG14
;; size=89 bbWeight=1 PerfScore 40.83
G_M63920_IG05: ; bbWeight=0.05, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
xor rsi, rsi
@@ -277,9 +277,9 @@ G_M63920_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; byrRegs -[rsi]
; GC ptr vars -{V104}
cmp byte ptr [rbp-0xC0], 7
- jne G_M63920_IG22
+ jne G_M63920_IG14
;; size=13 bbWeight=2 PerfScore 6.00
-G_M63920_IG07: ; bbWeight=2.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M63920_IG07: ; bbWeight=2.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov rdi, r15
; gcrRegs +[rdi]
mov rsi, rbx
@@ -287,8 +287,8 @@ G_M63920_IG07: ; bbWeight=2.00, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rsi rdi] +[rax]
test rax, rax
- je SHORT G_M63920_IG10
- ;; size=17 bbWeight=2.00 PerfScore 9.50
+ je G_M63920_IG25
+ ;; size=21 bbWeight=2.00 PerfScore 9.50
G_M63920_IG08: ; bbWeight=1.81, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
lea rdi, bword ptr [rax+0x10]
; byrRegs +[rdi]
@@ -298,135 +298,70 @@ G_M63920_IG09: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0080
; gcrRegs -[rax]
movzx rsi, byte ptr [rbp-0xC0]
cmp esi, 5
- je SHORT G_M63920_IG11
+ je SHORT G_M63920_IG10
cmp esi, 7
- jne G_M63920_IG60
- jmp SHORT G_M63920_IG11
- ;; size=24 bbWeight=2 PerfScore 11.00
-G_M63920_IG10: ; bbWeight=0.19, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rdi]
- xor rdi, rdi
- ; byrRegs +[rdi]
- xor edx, edx
- jmp SHORT G_M63920_IG09
- ;; size=6 bbWeight=0.19 PerfScore 0.48
-G_M63920_IG11: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0080 {rdi}, byref, isz
+ jne G_M63920_IG61
+ ;; size=22 bbWeight=2 PerfScore 7.00
+G_M63920_IG10: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0080 {rdi}, byref
cmp byte ptr [rbp-0xBB], 0
- je SHORT G_M63920_IG12
+ je G_M63920_IG26
mov rsi, rdi
; byrRegs +[rsi]
lea rdi, [rbp-0xE8]
; byrRegs -[rdi]
call [System.Text.Json.Utf8JsonReader:CompareToSequence(System.ReadOnlySpan`1[ubyte]):ubyte:this]
; byrRegs -[rsi]
- jmp SHORT G_M63920_IG17
- ;; size=27 bbWeight=2 PerfScore 17.50
-G_M63920_IG12: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0080 {rdi}, byref, isz
- ; byrRegs +[rdi]
- cmp byte ptr [rbp-0xBA], 0
- je SHORT G_M63920_IG13
- mov rsi, rdi
- ; byrRegs +[rsi]
- lea rdi, [rbp-0xE8]
- ; byrRegs -[rdi]
- call [System.Text.Json.Utf8JsonReader:UnescapeAndCompare(System.ReadOnlySpan`1[ubyte]):ubyte:this]
- ; byrRegs -[rsi]
- jmp SHORT G_M63920_IG17
- ;; size=27 bbWeight=2 PerfScore 17.50
-G_M63920_IG13: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0080 {rdi}, byref
- ; byrRegs +[rdi]
- mov rsi, bword ptr [rbp-0x50]
- ; byrRegs +[rsi]
- mov eax, dword ptr [rbp-0x48]
- cmp edx, eax
- jne G_M63920_IG56
- ;; size=15 bbWeight=2 PerfScore 6.50
-G_M63920_IG14: ; bbWeight=1.98, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=00C0 {rsi rdi}, byref, isz
- mov edx, eax
- cmp rdx, 16
- jne SHORT G_M63920_IG16
- ;; size=8 bbWeight=1.98 PerfScore 2.97
-G_M63920_IG15: ; bbWeight=0.99, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=00C0 {rsi rdi}, byref, isz
- vmovups xmm0, xmmword ptr [rdi]
- vpcmpuq k1, xmm0, xmmword ptr [rsi], 4
- kortestb k1, k1
- sete al
- movzx rax, al
- jmp SHORT G_M63920_IG17
- ;; size=23 bbWeight=0.99 PerfScore 14.09
-G_M63920_IG16: ; bbWeight=0.99, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=00C0 {rsi rdi}, byref
- call [<unknown method>]
- ; byrRegs -[rsi rdi]
- ;; size=6 bbWeight=0.99 PerfScore 2.97
-G_M63920_IG17: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=29 bbWeight=2 PerfScore 13.50
+G_M63920_IG11: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
test eax, eax
- jne G_M63920_IG34
+ jne G_M63920_IG35
test rbx, rbx
- jne SHORT G_M63920_IG18
+ jne G_M63920_IG32
xor rsi, rsi
; byrRegs +[rsi]
xor edx, edx
- jmp SHORT G_M63920_IG19
- ;; size=19 bbWeight=2 PerfScore 10.00
-G_M63920_IG18: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; byrRegs -[rsi]
- lea rsi, bword ptr [rbx+0x0C]
- ; byrRegs +[rsi]
- mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=2 PerfScore 5.00
-G_M63920_IG19: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref, isz
+ ;; size=21 bbWeight=2 PerfScore 6.00
+G_M63920_IG12: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref
lea rdi, [rbp-0xE8]
call [<unknown method>]
; byrRegs -[rsi]
test eax, eax
- jne G_M63920_IG34
+ jne G_M63920_IG35
test rbx, rbx
- jne SHORT G_M63920_IG20
+ jne G_M63920_IG33
xor rsi, rsi
; byrRegs +[rsi]
xor edx, edx
- jmp SHORT G_M63920_IG21
- ;; size=32 bbWeight=2 PerfScore 17.00
-G_M63920_IG20: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- ; byrRegs -[rsi]
- lea rsi, bword ptr [rbx+0x0C]
- ; byrRegs +[rsi]
- mov edx, dword ptr [rbx+0x08]
- ;; size=7 bbWeight=2 PerfScore 5.00
-G_M63920_IG21: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref
+ ;; size=34 bbWeight=2 PerfScore 13.00
+G_M63920_IG13: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref
lea rdi, [rbp-0xE8]
call [<unknown method>]
; byrRegs -[rsi]
test eax, eax
- jne G_M63920_IG34
+ jne G_M63920_IG35
;; size=21 bbWeight=2 PerfScore 9.50
-G_M63920_IG22: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M63920_IG14: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
cmp byte ptr [rbp-0xBD], 0
- jne SHORT G_M63920_IG24
- ;; size=9 bbWeight=8 PerfScore 24.00
-G_M63920_IG23: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- lea rdi, [rbp-0xE8]
- call [<unknown method>]
- jmp SHORT G_M63920_IG25
- ;; size=15 bbWeight=2 PerfScore 11.00
-G_M63920_IG24: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ jne G_M63920_IG34
+ ;; size=13 bbWeight=8 PerfScore 24.00
+G_M63920_IG15: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0xE8]
call [<unknown method>]
;; size=13 bbWeight=2 PerfScore 7.00
-G_M63920_IG25: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M63920_IG16: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
test eax, eax
jne G_M63920_IG06
;; size=8 bbWeight=8 PerfScore 10.00
-G_M63920_IG26: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M63920_IG17: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbp-0xC4], 0
- je SHORT G_M63920_IG27
+ je SHORT G_M63920_IG18
cmp byte ptr [rbp-0xC0], 0
- je G_M63920_IG57
+ je G_M63920_IG58
;; size=22 bbWeight=2 PerfScore 12.00
-G_M63920_IG27: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M63920_IG18: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
movzx r12, r13b
test r13d, r13d
- jne G_M63920_IG58
+ jne G_M63920_IG59
lea rdi, [rbp-0x100]
mov rsi, r14
; gcrRegs +[rsi]
@@ -465,31 +400,31 @@ G_M63920_IG27: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
call [<unknown method>]
; gcrRegs -[rcx]
;; size=154 bbWeight=1 PerfScore 52.33
-G_M63920_IG28: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M63920_IG19: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
cmp byte ptr [rbp-0xBD], 0
- jne G_M63920_IG52
+ jne G_M63920_IG53
;; size=13 bbWeight=8 PerfScore 24.00
-G_M63920_IG29: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M63920_IG20: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
lea rdi, [rbp-0xE8]
call [<unknown method>]
;; size=13 bbWeight=2 PerfScore 7.00
-G_M63920_IG30: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M63920_IG21: ; bbWeight=8, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
test eax, eax
- jne SHORT G_M63920_IG35
- ;; size=4 bbWeight=8 PerfScore 10.00
-G_M63920_IG31: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne G_M63920_IG36
+ ;; size=8 bbWeight=8 PerfScore 10.00
+G_M63920_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx r15]
cmp byte ptr [rbp-0xC4], 0
- je SHORT G_M63920_IG32
+ je SHORT G_M63920_IG23
cmp byte ptr [rbp-0xC0], 0
- je G_M63920_IG54
+ je G_M63920_IG55
;; size=22 bbWeight=2 PerfScore 12.00
-G_M63920_IG32: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M63920_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, r13b
test r13d, r13d
- jne G_M63920_IG55
+ jne G_M63920_IG56
;; size=13 bbWeight=1 PerfScore 1.50
-G_M63920_IG33: ; bbWeight=1, epilog, nogc, extend
+G_M63920_IG24: ; bbWeight=1, epilog, nogc, extend
add rsp, 376
pop rbx
pop r12
@@ -499,17 +434,81 @@ G_M63920_IG33: ; bbWeight=1, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=1 PerfScore 4.25
-G_M63920_IG34: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M63920_IG25: ; bbWeight=0.19, gcVars=00000000000000000000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[rbx r14-r15]
+ xor rdi, rdi
+ ; byrRegs +[rdi]
+ xor edx, edx
+ jmp G_M63920_IG09
+ ;; size=9 bbWeight=0.19 PerfScore 0.48
...
+48 (+3.93%) : 133182.dasm - System.Linq.Parallel.GroupJoinQueryOperator4[int,int,int,System.Collections.Generic.KeyValuePair
2[int,System.__Canon]]:WrapPartitionedStreamHelperint,int:this (FullOpts)
@@ -8,52 +8,52 @@
; 0 inlinees with PGO data; 14 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 13, 14 ) ref -> rbx this class-hnd single-def <System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]>
-; V01 TypeCtx [V01,T14] ( 9, 4.96) long -> r14 single-def
-; V02 arg1 [V02,T18] ( 4, 3 ) ref -> r12 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int]>
-; V03 arg2 [V03,T15] ( 5, 3.50) ref -> r13 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[int,int]>
-; V04 arg3 [V04,T19] ( 4, 3 ) ref -> [rbp-0x48] class-hnd single-def <System.Linq.Parallel.IPartitionedStreamRecipient`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]>
-; V05 arg4 [V05,T12] ( 14, 13.50) int -> r15 single-def
+; V00 this [V00,T06] ( 13, 16.96) ref -> rbx this class-hnd single-def <System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]>
+; V01 TypeCtx [V01,T13] ( 9, 10.76) long -> r14 single-def
+; V02 arg1 [V02,T20] ( 4, 5.96) ref -> r13 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int]>
+; V03 arg2 [V03,T28] ( 5, 4.98) ref -> [rbp-0x48] class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[int,int]>
+; V04 arg3 [V04,T21] ( 4, 5.96) ref -> r12 class-hnd single-def <System.Linq.Parallel.IPartitionedStreamRecipient`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]>
+; V05 arg4 [V05,T07] ( 14, 16.46) int -> r15 single-def
;* V06 arg5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V07 loc0 [V07,T13] ( 5, 8.50) ref -> [rbp-0x50] class-hnd exact spill-single-def <<unknown class>>
-; V08 loc1 [V08,T16] ( 6, 5.29) ref -> [rbp-0x58] class-hnd exact spill-single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[int],System.Linq.Parallel.Pair`2[ubyte,int],int][]>
+; V07 loc0 [V07,T19] ( 5, 8.50) ref -> [rbp-0x50] class-hnd exact spill-single-def <<unknown class>>
+; V08 loc1 [V08,T29] ( 6, 6.77) ref -> [rbp-0x58] class-hnd exact spill-single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[int],System.Linq.Parallel.Pair`2[ubyte,int],int][]>
; V09 loc2 [V09,T02] ( 14, 24.54) int -> [rbp-0x34]
-; V10 loc3 [V10,T20] ( 3, 4.50) ref -> r13 class-hnd exact single-def <System.Linq.Parallel.UnorderedHashRepartitionStream`3[int,int,int]>
-; V11 loc4 [V11,T17] ( 6, 5.29) ref -> [rbp-0x60] class-hnd exact spill-single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[int],int,int][]>
+; V10 loc3 [V10,T32] ( 3, 4.50) ref -> [rbp-0x60] class-hnd exact spill-single-def <System.Linq.Parallel.UnorderedHashRepartitionStream`3[int,int,int]>
+; V11 loc4 [V11,T30] ( 6, 6.77) ref -> [rbp-0x68] class-hnd exact spill-single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[int],int,int][]>
; V12 loc5 [V12,T03] ( 14, 24.54) int -> [rbp-0x38]
; V13 OutArgs [V13 ] ( 1, 1 ) struct (16) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T01] ( 8, 32 ) ref -> [rbp-0x68] class-hnd exact "NewObj constructor temp" <System.Linq.Parallel.GroupJoinHashLookupBuilder`3[int,int,int]>
+; V14 tmp1 [V14,T01] ( 8, 32 ) ref -> [rbp-0x70] class-hnd exact "NewObj constructor temp" <System.Linq.Parallel.GroupJoinHashLookupBuilder`3[int,int,int]>
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V16 tmp3 [V16,T07] ( 4, 16 ) ref -> [rbp-0x70] class-hnd "impAppendStmt" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[int,int],int]>
-; V17 tmp4 [V17,T08] ( 4, 16 ) ref -> [rbp-0x78] class-hnd "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[int]>
-; V18 tmp5 [V18,T00] ( 10, 40 ) ref -> [rbp-0x80] class-hnd exact "NewObj constructor temp" <System.Linq.Parallel.OrderedGroupJoinHashLookupBuilder`3[int,int,int]>
-; V19 tmp6 [V19,T29] ( 3, 2 ) long -> [rbp-0x40] "spilling helperCall"
+; V16 tmp3 [V16,T08] ( 4, 16 ) ref -> [rbp-0x78] class-hnd "impAppendStmt" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[int,int],int]>
+; V17 tmp4 [V17,T09] ( 4, 16 ) ref -> [rbp-0x80] class-hnd "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[int]>
+; V18 tmp5 [V18,T00] ( 10, 40 ) ref -> [rbp-0x88] class-hnd exact "NewObj constructor temp" <System.Linq.Parallel.OrderedGroupJoinHashLookupBuilder`3[int,int,int]>
+; V19 tmp6 [V19,T22] ( 3, 7.92) long -> [rbp-0x40] "spilling helperCall"
;* V20 tmp7 [V20 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V21 tmp8 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Parallel.QueryOperator`1[int]>
-; V22 tmp9 [V22,T32] ( 2, 2 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <System.Func`2[int,int]>
-; V23 tmp10 [V23,T33] ( 2, 2 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
-; V24 tmp11 [V24,T21] ( 3, 3 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
-; V25 tmp12 [V25,T09] ( 4, 16 ) ref -> [rbp-0xA0] class-hnd "Inlining Arg" <System.Collections.Generic.IComparer`1[int]>
-; V26 tmp13 [V26,T34] ( 2, 2 ) ref -> [rbp-0xA8] class-hnd spill-single-def "Inlining Arg" <System.Func`2[int,int]>
-; V27 tmp14 [V27,T35] ( 2, 2 ) ref -> [rbp-0xB0] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
-; V28 tmp15 [V28,T22] ( 3, 3 ) ref -> [rbp-0xB8] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.UnorderedHashRepartitionStream`3[int,int,int]>
-; V29 tmp16 [V29,T10] ( 4, 16 ) ref -> rsi class-hnd "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[int,int],int]>
-; V30 tmp17 [V30,T11] ( 4, 16 ) ref -> [rbp-0xC0] class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
-; V31 tmp18 [V31,T28] ( 4, 2 ) ref -> [rbp+0x10] single-def "field V06._source (fldOffset=0x0)" P-INDEP
-; V32 tmp19 [V32,T04] ( 6, 24 ) ref -> rcx "arr expr"
-; V33 tmp20 [V33,T37] ( 2, 2 ) long -> rsi "argument with side effect"
+; V22 tmp9 [V22,T35] ( 2, 2 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inlining Arg" <System.Func`2[int,int]>
+; V23 tmp10 [V23,T36] ( 2, 2 ) ref -> [rbp-0x98] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
+; V24 tmp11 [V24,T33] ( 3, 3 ) ref -> [rbp-0xA0] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
+; V25 tmp12 [V25,T10] ( 4, 16 ) ref -> [rbp-0xA8] class-hnd "Inlining Arg" <System.Collections.Generic.IComparer`1[int]>
+; V26 tmp13 [V26,T37] ( 2, 2 ) ref -> [rbp-0xB0] class-hnd spill-single-def "Inlining Arg" <System.Func`2[int,int]>
+; V27 tmp14 [V27,T38] ( 2, 2 ) ref -> [rbp-0xB8] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
+; V28 tmp15 [V28,T34] ( 3, 3 ) ref -> [rbp-0xC0] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.UnorderedHashRepartitionStream`3[int,int,int]>
+; V29 tmp16 [V29,T11] ( 4, 16 ) ref -> rsi class-hnd "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[int,int],int]>
+; V30 tmp17 [V30,T12] ( 4, 16 ) ref -> [rbp-0xC8] class-hnd "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[int]>
+; V31 tmp18 [V31,T31] ( 4, 4.96) ref -> [rbp+0x10] single-def "field V06._source (fldOffset=0x0)" P-INDEP
+; V32 tmp19 [V32,T04] ( 6, 24 ) ref -> rdx "arr expr"
+; V33 tmp20 [V33,T26] ( 2, 7.92) long -> rsi "argument with side effect"
; V34 tmp21 [V34,T05] ( 6, 24 ) ref -> rsi "arr expr"
-; V35 tmp22 [V35,T38] ( 2, 2 ) long -> r14 "argument with side effect"
-; V36 tmp23 [V36,T36] ( 2, 2 ) ref -> r8 single-def "argument with side effect"
-; V37 rat0 [V37,T23] ( 3, 2.80) long -> rdi "spilling expr"
-; V38 rat1 [V38,T26] ( 3, 2.24) long -> rcx "fgMakeTemp is creating a new local variable"
-; V39 rat2 [V39,T30] ( 3, 2 ) long -> r14 "runtime lookup"
-; V40 rat3 [V40,T24] ( 3, 2.80) long -> rdi "spilling expr"
-; V41 rat4 [V41,T27] ( 3, 2.24) long -> rdx "fgMakeTemp is creating a new local variable"
-; V42 rat5 [V42,T31] ( 3, 2 ) long -> rsi "runtime lookup"
-; V43 rat6 [V43,T25] ( 3, 2.80) long -> rsi "fgMakeTemp is creating a new local variable"
+; V35 tmp22 [V35,T27] ( 2, 7.92) long -> r14 "argument with side effect"
+; V36 tmp23 [V36,T25] ( 2, 7.92) ref -> r8 single-def "argument with side effect"
+; V37 rat0 [V37,T14] ( 3, 11.09) long -> rdi "spilling expr"
+; V38 rat1 [V38,T17] ( 3, 8.87) long -> rcx "fgMakeTemp is creating a new local variable"
+; V39 rat2 [V39,T23] ( 3, 7.92) long -> r14 "runtime lookup"
+; V40 rat3 [V40,T15] ( 3, 11.09) long -> rdi "spilling expr"
+; V41 rat4 [V41,T18] ( 3, 8.87) long -> rdx "fgMakeTemp is creating a new local variable"
+; V42 rat5 [V42,T24] ( 3, 7.92) long -> rsi "runtime lookup"
+; V43 rat6 [V43,T16] ( 3, 11.09) long -> rsi "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 168
+; Lcl frame size = 184
G_M58101_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -62,21 +62,21 @@ G_M58101_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 168
- lea rbp, [rsp+0xD0]
+ sub rsp, 184
+ lea rbp, [rsp+0xE0]
mov qword ptr [rbp-0x30], rsi
- mov gword ptr [rbp-0x48], r8
- ; GC ptr vars +{V04}
+ mov gword ptr [rbp-0x48], rcx
+ ; GC ptr vars +{V03}
mov rbx, rdi
; gcrRegs +[rbx]
mov r14, rsi
- mov r12, rdx
- ; gcrRegs +[r12]
- mov r13, rcx
+ mov r13, rdx
; gcrRegs +[r13]
+ mov r12, r8
+ ; gcrRegs +[r12]
mov r15d, r9d
;; size=48 bbWeight=1 PerfScore 10.00
-G_M58101_IG02: ; bbWeight=1, gcVars=0000000000080000 {V04}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref
+G_M58101_IG02: ; bbWeight=1, gcVars=0000000010000000 {V03}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref
mov rdi, gword ptr [rbx+0x48]
; gcrRegs +[rdi]
cmp byte ptr [rdi+0x38], 0
@@ -86,25 +86,25 @@ G_M58101_IG03: ; bbWeight=0.50, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
; gcrRegs -[rdi]
mov rdx, gword ptr [rbx+0x58]
; gcrRegs +[rdx]
- mov gword ptr [rbp-0x88], rdx
+ mov gword ptr [rbp-0x90], rdx
; GC ptr vars +{V22}
mov rsi, gword ptr [rbx+0x68]
; gcrRegs +[rsi]
- mov gword ptr [rbp-0x90], rsi
+ mov gword ptr [rbp-0x98], rsi
; GC ptr vars +{V23}
mov rdi, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs -[rdx rsi] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x98], rax
+ mov gword ptr [rbp-0xA0], rax
; GC ptr vars +{V24}
mov rdi, rax
; gcrRegs +[rdi]
- mov rsi, r13
+ mov rsi, gword ptr [rbp-0x48]
; gcrRegs +[rsi]
- mov rdx, gword ptr [rbp-0x88]
+ mov rdx, gword ptr [rbp-0x90]
; gcrRegs +[rdx]
- mov rcx, gword ptr [rbp-0x90]
+ mov rcx, gword ptr [rbp-0x98]
; gcrRegs +[rcx]
mov r9, gword ptr [rbp+0x10]
; gcrRegs +[r9]
@@ -114,7 +114,7 @@ G_M58101_IG03: ; bbWeight=0.50, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
call [<unknown method>]
; gcrRegs -[rax rcx rdx rsi rdi r8-r9]
; gcr arg pop 0
- mov rax, gword ptr [rbp-0x98]
+ mov rax, gword ptr [rbp-0xA0]
; gcrRegs +[rax]
mov gword ptr [rbp-0x50], rax
; GC ptr vars +{V07}
@@ -128,8 +128,8 @@ G_M58101_IG03: ; bbWeight=0.50, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
xor ecx, ecx
test r15d, r15d
jle G_M58101_IG09
- ;; size=121 bbWeight=0.50 PerfScore 10.50
-G_M58101_IG04: ; bbWeight=0.25, gcVars=0000000000092000 {V04 V07 V08}, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=122 bbWeight=0.50 PerfScore 10.88
+G_M58101_IG04: ; bbWeight=0.25, gcVars=0000000030080000 {V03 V07 V08}, gcrefRegs=3009 {rax rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref
cmp dword ptr [rax+0x08], r15d
jl G_M58101_IG07
;; size=10 bbWeight=0.25 PerfScore 1.00
@@ -145,11 +145,11 @@ G_M58101_IG05: ; bbWeight=3.96, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
mov edi, ecx
mov r8, gword ptr [rsi+8*rdi+0x10]
; gcrRegs +[r8]
- mov gword ptr [rbp-0x70], r8
+ mov gword ptr [rbp-0x78], r8
; GC ptr vars +{V16}
mov r9, gword ptr [rbx+0x68]
; gcrRegs +[r9]
- mov gword ptr [rbp-0x78], r9
+ mov gword ptr [rbp-0x80], r9
; GC ptr vars +{V17}
mov rdi, 0xD1FFAB1E ; System.Linq.Parallel.OrderedGroupJoinHashLookupBuilder`3[int,int,int]
call CORINFO_HELP_NEWSFAST
@@ -159,35 +159,35 @@ G_M58101_IG05: ; bbWeight=3.96, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
; gcrRegs +[rcx]
mov rdx, gword ptr [rcx+0x10]
; gcrRegs +[rdx]
- mov gword ptr [rbp-0xA0], rdx
+ mov gword ptr [rbp-0xA8], rdx
; GC ptr vars +{V25}
- mov gword ptr [rbp-0x80], rax
+ mov gword ptr [rbp-0x88], rax
; GC ptr vars +{V18}
lea rdi, bword ptr [rax+0x08]
; byrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x70]
+ mov rsi, gword ptr [rbp-0x78]
; gcrRegs +[rsi]
- ; GC ptr vars -{V07 V16}
+ ; GC ptr vars -{V08 V16}
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rcx rdx rsi]
; byrRegs -[rdi]
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x88]
; gcrRegs +[rax]
lea rdi, bword ptr [rax+0x10]
; byrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x78]
+ mov rsi, gword ptr [rbp-0x80]
; gcrRegs +[rsi]
- ; GC ptr vars -{V08 V17} +{V07}
+ ; GC ptr vars -{V17} +{V08}
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x88]
; gcrRegs +[rax]
lea rdi, bword ptr [rax+0x18]
; byrRegs +[rdi]
- mov rsi, gword ptr [rbp-0xA0]
+ mov rsi, gword ptr [rbp-0xA8]
; gcrRegs +[rsi]
- ; GC ptr vars -{V25} +{V08}
+ ; GC ptr vars -{V25}
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
@@ -196,7 +196,7 @@ G_M58101_IG05: ; bbWeight=3.96, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
; gcrRegs +[rcx]
lea rdi, bword ptr [rcx+8*rdi+0x10]
; byrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x80]
+ mov rsi, gword ptr [rbp-0x88]
; gcrRegs +[rsi]
; GC ptr vars -{V18}
call CORINFO_HELP_ASSIGN_REF
@@ -207,16 +207,16 @@ G_M58101_IG05: ; bbWeight=3.96, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0
cmp eax, r15d
mov ecx, eax
jl G_M58101_IG05
- ;; size=160 bbWeight=3.96 PerfScore 149.49
-G_M58101_IG06: ; bbWeight=0.50, gcVars=0000000000090000 {V04 V08}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=172 bbWeight=3.96 PerfScore 149.49
+G_M58101_IG06: ; bbWeight=1.98, gcVars=0000000030000000 {V03 V08}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V07}
...
+18 (+4.13%) : 102400.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
@@ -8,23 +8,23 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T13] ( 3, 2.50) ref -> [rbp-0x38] this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
-; V01 arg1 [V01,T01] ( 14, 15 ) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator>
+; V00 this [V00,T12] ( 3, 3.98) ref -> r12 this class-hnd single-def <System.Runtime.Serialization.XmlObjectSerializerReadContext>
+; V01 arg1 [V01,T01] ( 14, 16.48) ref -> rbx class-hnd single-def <System.Runtime.Serialization.XmlReaderDelegator>
; V02 arg2 [V02,T07] ( 6, 7.50) ref -> r15 class-hnd single-def <System.Xml.XmlDictionaryString[]>
; V03 arg3 [V03,T08] ( 7, 7.04) ref -> r14 class-hnd single-def <System.Xml.XmlDictionaryString[]>
-; V04 arg4 [V04,T11] ( 5, 4 ) int -> r13 single-def
-; V05 arg5 [V05,T12] ( 4, 3 ) int -> r12 single-def
-; V06 arg6 [V06,T14] ( 1, 0.50) ref -> [rbp+0x10] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
-; V07 loc0 [V07,T00] ( 16, 19.62) int -> [rbp-0x2C]
+; V04 arg4 [V04,T11] ( 5, 5.48) int -> r13 single-def
+; V05 arg5 [V05,T13] ( 4, 3 ) int -> [rbp-0x2C] single-def
+; V06 arg6 [V06,T14] ( 1, 1.98) ref -> [rbp+0x10] class-hnd single-def <System.Runtime.Serialization.ExtensionDataObject>
+; V07 loc0 [V07,T00] ( 16, 19.62) int -> [rbp-0x30]
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T09] ( 6, 6 ) ubyte -> rax "Inline return value spill temp"
+; V09 tmp1 [V09,T10] ( 6, 6 ) ubyte -> rax "Inline return value spill temp"
; V10 tmp2 [V10,T02] ( 6, 16 ) ref -> rsi class-hnd "Inlining Arg" <System.Xml.XmlDictionaryString>
; V11 tmp3 [V11,T03] ( 6, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.Xml.XmlDictionaryString>
;* V12 tmp4 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp5 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
; V14 tmp6 [V14,T04] ( 6, 12 ) ref -> rdi "argument with side effect"
; V15 tmp7 [V15,T05] ( 6, 12 ) ref -> rdi "argument with side effect"
-; V16 cse0 [V16,T10] ( 7, 7.04) int -> [rbp-0x30] spill-single-def "CSE - moderate"
+; V16 cse0 [V16,T09] ( 7, 8.52) int -> [rbp-0x34] spill-single-def "CSE - moderate"
; V17 cse1 [V17,T06] ( 3, 11.88) long -> rdi "CSE - aggressive"
;
; Lcl frame size = 24
@@ -38,8 +38,9 @@ G_M11155_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 24
lea rbp, [rsp+0x40]
- mov gword ptr [rbp-0x38], rdi
- ; GC ptr vars +{V00}
+ mov dword ptr [rbp-0x2C], r9d
+ mov r12, rdi
+ ; gcrRegs +[r12]
mov rbx, rsi
; gcrRegs +[rbx]
mov r15, rdx
@@ -47,169 +48,160 @@ G_M11155_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r14, rcx
; gcrRegs +[r14]
mov r13d, r8d
- mov r12d, r9d
;; size=38 bbWeight=1 PerfScore 9.00
-G_M11155_IG02: ; bbWeight=1, gcVars=0000000000002000 {V00}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- lea ecx, [r13+0x01]
- mov r8d, dword ptr [r15+0x08]
- mov dword ptr [rbp-0x30], r8d
- cmp r8d, ecx
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
+G_M11155_IG02: ; bbWeight=1, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ lea r8d, [r13+0x01]
+ mov r9d, dword ptr [r15+0x08]
+ mov dword ptr [rbp-0x34], r9d
+ cmp r9d, r8d
+ mov rcx, gword ptr [rbp+0x10]
+ ; gcrRegs +[rcx]
jle SHORT G_M11155_IG07
;; size=21 bbWeight=1 PerfScore 5.75
-G_M11155_IG03: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
+G_M11155_IG03: ; bbWeight=0.50, gcrefRegs=D00A {rcx rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
test r14, r14
je G_M11155_IG12
- test ecx, ecx
+ test r8d, r8d
jl G_M11155_IG12
- cmp dword ptr [r14+0x08], r8d
+ cmp dword ptr [r14+0x08], r9d
jl SHORT G_M11155_IG06
- ;; size=23 bbWeight=0.50 PerfScore 3.25
-G_M11155_IG04: ; bbWeight=3.96, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rbp-0x2C], ecx
- mov edi, ecx
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M11155_IG04: ; bbWeight=3.96, gcrefRegs=D00A {rcx rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rbp-0x30], r8d
+ mov edi, r8d
mov rsi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rsi]
mov rdx, gword ptr [r14+8*rdi+0x10]
; gcrRegs +[rdx]
cmp gword ptr [rbx+0x10], 0
jne SHORT G_M11155_IG08
- ;; size=22 bbWeight=3.96 PerfScore 36.63
-G_M11155_IG05: ; bbWeight=1.98, gcrefRegs=C04D {rax rdx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=3.96 PerfScore 36.63
+G_M11155_IG05: ; bbWeight=1.98, gcrefRegs=D04E {rcx rdx rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x18], 0
jne SHORT G_M11155_IG10
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V00}
+ mov gword ptr [rbp+0x10], rcx
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, gword ptr [rsi+0x10]
mov rdx, gword ptr [rdx+0x10]
- mov r9, qword ptr [rdi]
- mov r9, qword ptr [r9+0xA0]
- call [r9+0x28]<unknown method>
- ; gcrRegs -[rax rdx rsi rdi]
+ mov r10, qword ptr [rdi]
+ mov r10, qword ptr [r10+0xA0]
+ call [r10+0x28]<unknown method>
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0
jmp SHORT G_M11155_IG09
;; size=38 bbWeight=1.98 PerfScore 39.60
-G_M11155_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax]
- ; GC ptr vars -{V00}
- mov r8d, dword ptr [rbp-0x30]
+G_M11155_IG06: ; bbWeight=0.25, gcrefRegs=D00A {rcx rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx]
+ mov r9d, dword ptr [rbp-0x34]
jmp SHORT G_M11155_IG12
;; size=6 bbWeight=0.25 PerfScore 0.75
-G_M11155_IG07: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+G_M11155_IG07: ; bbWeight=0.50, gcrefRegs=100A {rcx rbx r12}, byrefRegs=0000 {}, byref
; gcrRegs -[r14-r15]
jmp G_M11155_IG17
;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M11155_IG08: ; bbWeight=1.98, gcrefRegs=C04D {rax rdx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M11155_IG08: ; bbWeight=1.98, gcrefRegs=D04E {rcx rdx rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx rsi r14-r15]
cmp byte ptr [rbx+0x18], 0
jne SHORT G_M11155_IG10
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V00}
+ mov gword ptr [rbp+0x10], rcx
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
- mov r9, qword ptr [rdi]
- mov r9, qword ptr [r9+0xD0]
- call [r9+0x30]<unknown method>
- ; gcrRegs -[rax rdx rsi rdi]
+ mov r10, qword ptr [rdi]
+ mov r10, qword ptr [r10+0xD0]
+ call [r10+0x30]<unknown method>
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0
;; size=28 bbWeight=1.98 PerfScore 27.72
-G_M11155_IG09: ; bbWeight=1.98, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M11155_IG09: ; bbWeight=1.98, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref
test eax, eax
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
+ mov rcx, gword ptr [rbp+0x10]
+ ; gcrRegs +[rcx]
jne G_M11155_IG20
;; size=12 bbWeight=1.98 PerfScore 4.46
-G_M11155_IG10: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V00}
- mov ecx, dword ptr [rbp-0x2C]
- inc ecx
+G_M11155_IG10: ; bbWeight=3.96, gcrefRegs=D00A {rcx rbx r12 r14 r15}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [rbp-0x30]
- cmp r8d, ecx
- jg SHORT G_M11155_IG04
- ;; size=14 bbWeight=3.96 PerfScore 13.86
-G_M11155_IG11: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref
+ inc r8d
+ mov r9d, dword ptr [rbp-0x34]
+ cmp r9d, r8d
+ jg G_M11155_IG04
+ ;; size=20 bbWeight=3.96 PerfScore 13.86
+G_M11155_IG11: ; bbWeight=1.98, gcrefRegs=100A {rcx rbx r12}, byrefRegs=0000 {}, byref
; gcrRegs -[r14-r15]
jmp G_M11155_IG17
- ;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M11155_IG12: ; bbWeight=0.04, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=5 bbWeight=1.98 PerfScore 3.96
+G_M11155_IG12: ; bbWeight=0.04, gcrefRegs=D00A {rcx rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r14-r15]
- cmp ecx, r8d
+ cmp r8d, r9d
jae G_M11155_IG23
- mov edi, ecx
+ mov edi, r8d
mov rsi, gword ptr [r15+8*rdi+0x10]
; gcrRegs +[rsi]
- cmp ecx, dword ptr [r14+0x08]
+ cmp r8d, dword ptr [r14+0x08]
jae G_M11155_IG23
- mov dword ptr [rbp-0x2C], ecx
- mov edi, ecx
+ mov dword ptr [rbp-0x30], r8d
+ mov edi, r8d
mov rdx, gword ptr [r14+8*rdi+0x10]
; gcrRegs +[rdx]
cmp gword ptr [rbx+0x10], 0
jne SHORT G_M11155_IG14
- ;; size=43 bbWeight=0.04 PerfScore 0.59
-G_M11155_IG13: ; bbWeight=0.02, gcrefRegs=C04D {rax rdx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=0.04 PerfScore 0.59
+G_M11155_IG13: ; bbWeight=0.02, gcrefRegs=D04E {rcx rdx rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x18], 0
jne SHORT G_M11155_IG16
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V00}
+ mov gword ptr [rbp+0x10], rcx
mov rdi, gword ptr [rbx+0x08]
; gcrRegs +[rdi]
mov rsi, gword ptr [rsi+0x10]
mov rdx, gword ptr [rdx+0x10]
- mov r9, qword ptr [rdi]
- mov r9, qword ptr [r9+0xA0]
- call [r9+0x28]<unknown method>
- ; gcrRegs -[rax rdx rsi rdi]
+ mov r10, qword ptr [rdi]
+ mov r10, qword ptr [r10+0xA0]
+ call [r10+0x28]<unknown method>
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0
jmp SHORT G_M11155_IG15
;; size=38 bbWeight=0.02 PerfScore 0.40
-G_M11155_IG14: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=C04D {rax rdx rbx rsi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rax rdx rsi]
- ; GC ptr vars -{V00}
+G_M11155_IG14: ; bbWeight=0.02, gcrefRegs=D04E {rcx rdx rbx rsi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx rdx rsi]
cmp byte ptr [rbx+0x18], 0
jne SHORT G_M11155_IG16
- mov gword ptr [rbp-0x38], rax
- ; GC ptr vars +{V00}
+ mov gword ptr [rbp+0x10], rcx
mov rdi, gword ptr [rbx+0x10]
; gcrRegs +[rdi]
- mov r9, qword ptr [rdi]
- mov r9, qword ptr [r9+0xD0]
- call [r9+0x30]<unknown method>
- ; gcrRegs -[rax rdx rsi rdi]
+ mov r10, qword ptr [rdi]
+ mov r10, qword ptr [r10+0xD0]
+ call [r10+0x30]<unknown method>
+ ; gcrRegs -[rcx rdx rsi rdi]
; gcr arg pop 0
;; size=28 bbWeight=0.02 PerfScore 0.28
-G_M11155_IG15: ; bbWeight=0.02, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M11155_IG15: ; bbWeight=0.02, gcrefRegs=D008 {rbx r12 r14 r15}, byrefRegs=0000 {}, byref, isz
test eax, eax
- mov rax, gword ptr [rbp-0x38]
- ; gcrRegs +[rax]
...
realworld.run.linux.x64.checked.mch
-35 (-1.72%) : 59.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
@@ -8,102 +8,103 @@
; 0 inlinees with PGO data; 26 single block inlinees; 41 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 64, 8825 ) long -> r15
-; V01 arg1 [V01,T39] ( 15, 10.50) int -> r13
-; V02 arg2 [V02,T01] ( 61, 9700 ) long -> rbx
-; V03 arg3 [V03,T03] ( 47, 7988 ) int -> r14
-; V04 arg4 [V04,T42] ( 4, 3 ) byref -> r12 single-def
-; V05 arg5 [V05,T43] ( 4, 3 ) byref -> [rbp-0x60] single-def
-; V06 loc0 [V06,T04] ( 11, 1629.50) long -> [rbp-0x30] spill-single-def
-; V07 loc1 [V07,T52] ( 2, 64.50) simd16 -> [rbp-0x40] ld-addr-op spill-single-def <System.Runtime.Intrinsics.Vector128`1[short]>
-; V08 loc2 [V08,T27] ( 4, 72.50) long -> [rbp-0x48]
-; V09 loc3 [V09,T00] ( 50,17618.50) int -> [rbp-0x4C]
-; V10 loc4 [V10,T40] ( 12, 6 ) int -> rax
-; V11 loc5 [V11,T46] ( 5, 2.50) int -> rax
-; V12 loc6 [V12,T41] ( 6, 5 ) long -> rax
-;* V13 loc7 [V13 ] ( 0, 0 ) int -> zero-ref
-;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref
-; V15 loc9 [V15,T36] ( 3, 24 ) int -> rsi
-; V16 loc10 [V16,T26] ( 3, 80 ) int -> rdi
-; V17 loc11 [V17,T28] ( 9, 66 ) long -> [rbp-0x58]
-; V18 loc12 [V18,T23] ( 6, 216 ) int -> rdx
-; V19 loc13 [V19,T51] ( 11, 294 ) simd16 -> mm1 <System.Runtime.Intrinsics.Vector128`1[short]>
-;* V20 loc14 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V21 loc15 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V22 loc16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V23 loc17 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V24 loc18 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V25 loc19 [V25 ] ( 0, 0 ) int -> zero-ref
-;* V26 loc20 [V26 ] ( 0, 0 ) int -> zero-ref
-;* V27 loc21 [V27 ] ( 0, 0 ) int -> zero-ref
-;# V28 OutArgs [V28 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V29 tmp1 [V29,T49] ( 2, 1 ) int -> rdi
-; V30 tmp2 [V30,T50] ( 2, 1 ) int -> rdi
-;* V31 tmp3 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V32 tmp4 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V33 tmp5 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V34 tmp6 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V35 tmp7 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V36 tmp8 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V37 tmp9 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V38 tmp10 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V39 tmp11 [V39,T47] ( 2, 2 ) int -> rdx "Inline return value spill temp"
-;* V40 tmp12 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V41 tmp13 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V42 tmp14 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V43 tmp15 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V44 tmp16 [V44,T37] ( 3, 24 ) long -> rsi "Inline return value spill temp"
-; V45 tmp17 [V45,T33] ( 3, 48 ) long -> rdi "Inlining Arg"
-; V46 tmp18 [V46,T34] ( 3, 48 ) long -> rsi "Inlining Arg"
-;* V47 tmp19 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V48 tmp20 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V49 tmp21 [V49,T29] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V50 tmp22 [V50,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V51 tmp23 [V51,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V52 tmp24 [V52,T15] ( 2, 256 ) int -> rdi
-;* V53 tmp25 [V53,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V54 tmp26 [V54,T17] ( 2, 256 ) ubyte -> rdi "Inline return value spill temp"
-;* V55 tmp27 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V56 tmp28 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V57 tmp29 [V57,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V58 tmp30 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V59 tmp31 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V60 tmp32 [V60,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V61 tmp33 [V61,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V62 tmp34 [V62,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V63 tmp35 [V63,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V64 tmp36 [V64,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V65 tmp37 [V65,T10] ( 0, 0 ) int -> zero-ref
-;* V66 tmp38 [V66,T12] ( 0, 0 ) int -> zero-ref
-;* V67 tmp39 [V67 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V68 tmp40 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V69 tmp41 [V69,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V70 tmp42 [V70,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V71 tmp43 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V72 tmp44 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V73 tmp45 [V73,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V74 tmp46 [V74,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V75 tmp47 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V76 tmp48 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V77 tmp49 [V77,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V78 tmp50 [V78,T21] ( 0, 0 ) int -> zero-ref
-;* V79 tmp51 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V80 tmp52 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V81 tmp53 [V81,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V82 tmp54 [V82,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V83 tmp55 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V84 tmp56 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V85 tmp57 [V85,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V86 tmp58 [V86,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V87 tmp59 [V87,T44] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V88 tmp60 [V88,T38] ( 5, 20 ) int -> rdi "Inlining Arg"
-;* V89 tmp61 [V89 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V90 tmp62 [V90 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V91 tmp63 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V92 tmp64 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-;* V93 tmp65 [V93,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V94 rat0 [V94,T35] ( 3, 48 ) long -> rdi "ReplaceWithLclVar is creating a new local variable"
-; V95 rat1 [V95,T45] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
+; V00 arg0 [V00,T02] ( 64,1223 ) long -> r15
+; V01 arg1 [V01,T34] ( 15, 10.50) int -> r13
+; V02 arg2 [V02,T01] ( 61,1294 ) long -> rbx
+; V03 arg3 [V03,T03] ( 47,1052 ) int -> r14
+; V04 arg4 [V04,T43] ( 4, 3 ) byref -> r12 single-def
+; V05 arg5 [V05,T44] ( 4, 3 ) byref -> [rbp-0x60] single-def
+; V06 loc0 [V06,T05] ( 11, 231.50) long -> [rbp-0x30] spill-single-def
+; V07 loc1 [V07,T53] ( 2, 16.50) simd16 -> [rbp-0x40] ld-addr-op spill-single-def <System.Runtime.Intrinsics.Vector128`1[short]>
+; V08 loc2 [V08,T38] ( 4, 10.50) long -> [rbp-0x48]
+; V09 loc3 [V09,T00] ( 50,2260.50) int -> [rbp-0x4C]
+; V10 loc4 [V10,T39] ( 12, 6 ) int -> rax
+; V11 loc5 [V11,T47] ( 5, 2.50) int -> rax
+; V12 loc6 [V12,T42] ( 6, 5 ) long -> rax
+;* V13 loc7 [V13 ] ( 0, 0 ) int -> zero-ref
+;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref
+; V15 loc9 [V15,T40] ( 3, 6 ) int -> rsi
+; V16 loc10 [V16,T28] ( 3, 20 ) int -> rdi
+; V17 loc11 [V17,T29] ( 9, 18 ) long -> [rbp-0x58]
+; V18 loc12 [V18,T24] ( 6, 54 ) int -> rdx
+; V19 loc13 [V19,T52] ( 11, 78 ) simd16 -> mm1 <System.Runtime.Intrinsics.Vector128`1[short]>
+;* V20 loc14 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V21 loc15 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V22 loc16 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V23 loc17 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V24 loc18 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V25 loc19 [V25 ] ( 0, 0 ) int -> zero-ref
+;* V26 loc20 [V26 ] ( 0, 0 ) int -> zero-ref
+;* V27 loc21 [V27 ] ( 0, 0 ) int -> zero-ref
+;# V28 OutArgs [V28 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V29 tmp1 [V29,T50] ( 2, 1 ) int -> rdi
+; V30 tmp2 [V30,T51] ( 2, 1 ) int -> rdi
+;* V31 tmp3 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V32 tmp4 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V33 tmp5 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V34 tmp6 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V35 tmp7 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V36 tmp8 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V37 tmp9 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp10 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V39 tmp11 [V39,T48] ( 2, 2 ) int -> rdx "Inline return value spill temp"
+;* V40 tmp12 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V41 tmp13 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V42 tmp14 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V43 tmp15 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V44 tmp16 [V44,T41] ( 3, 6 ) long -> rsi "Inline return value spill temp"
+; V45 tmp17 [V45,T35] ( 3, 12 ) long -> rdi "Inlining Arg"
+; V46 tmp18 [V46,T36] ( 3, 12 ) long -> rsi "Inlining Arg"
+;* V47 tmp19 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V48 tmp20 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V49 tmp21 [V49,T30] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V50 tmp22 [V50,T31] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V51 tmp23 [V51,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V52 tmp24 [V52,T09] ( 2, 64 ) int -> rdi
+;* V53 tmp25 [V53,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V54 tmp26 [V54,T15] ( 2, 64 ) ubyte -> rdi "Inline return value spill temp"
+;* V55 tmp27 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V56 tmp28 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V57 tmp29 [V57,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V58 tmp30 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V59 tmp31 [V59 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V60 tmp32 [V60,T32] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V61 tmp33 [V61,T33] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V62 tmp34 [V62,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V63 tmp35 [V63,T11] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V64 tmp36 [V64,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V65 tmp37 [V65,T12] ( 0, 0 ) int -> zero-ref
+;* V66 tmp38 [V66,T21] ( 0, 0 ) int -> zero-ref
+;* V67 tmp39 [V67 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V68 tmp40 [V68 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V69 tmp41 [V69,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V70 tmp42 [V70,T25] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V71 tmp43 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V72 tmp44 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V73 tmp45 [V73,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V74 tmp46 [V74,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V75 tmp47 [V75 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V76 tmp48 [V76 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V77 tmp49 [V77,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V78 tmp50 [V78,T19] ( 0, 0 ) int -> zero-ref
+;* V79 tmp51 [V79 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V80 tmp52 [V80 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V81 tmp53 [V81,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V82 tmp54 [V82,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V83 tmp55 [V83 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V84 tmp56 [V84 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V85 tmp57 [V85,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V86 tmp58 [V86,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V87 tmp59 [V87,T45] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V88 tmp60 [V88,T27] ( 5, 20 ) int -> rdi "Inlining Arg"
+;* V89 tmp61 [V89 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V90 tmp62 [V90 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V91 tmp63 [V91 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V92 tmp64 [V92 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V93 tmp65 [V93,T49] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V94 cse0 [V94,T04] ( 29, 351.50) ref -> rsi multi-def "CSE - aggressive"
+; V95 rat0 [V95,T37] ( 3, 12 ) long -> rdi "ReplaceWithLclVar is creating a new local variable"
+; V96 rat1 [V96,T46] ( 3, 3 ) long -> rax "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 56
@@ -126,7 +127,7 @@ G_M33313_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov r12, r8
; byrRegs +[r12]
;; size=41 bbWeight=1 PerfScore 10.00
-G_M33313_IG02: ; bbWeight=1, gcVars=0000080000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
+G_M33313_IG02: ; bbWeight=1, gcVars=0000100000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
test r13d, r13d
jge SHORT G_M33313_IG04
;; size=5 bbWeight=1 PerfScore 1.25
@@ -217,11 +218,11 @@ G_M33313_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M33313_IG13: ; bbWeight=0.50, gcVars=0000080000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
+G_M33313_IG13: ; bbWeight=0.50, gcVars=0000100000000000 {V05}, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, gcvars, byref, isz
sub r13d, eax
sub r14d, eax
cmp r13d, 2
- jl G_M33313_IG58
+ jl G_M33313_IG57
mov edi, r13d
lea rax, [r15+2*rdi-0x04]
mov qword ptr [rbp-0x30], rax
@@ -231,23 +232,23 @@ G_M33313_IG13: ; bbWeight=0.50, gcVars=0000080000000000 {V05}, gcrefRegs=
mov qword ptr [rbp-0x48], rcx
cmp r15, rax
jbe SHORT G_M33313_IG14
- mov rdi, 0xD1FFAB1E
- ; gcrRegs +[rdi]
mov rsi, 0xD1FFAB1E
; gcrRegs +[rsi]
+ mov rdi, rsi
+ ; gcrRegs +[rdi]
call [<unknown method>]
; gcrRegs -[rsi rdi]
; gcr arg pop 0
- ;; size=78 bbWeight=0.50 PerfScore 7.00
+ ;; size=71 bbWeight=0.50 PerfScore 7.00
G_M33313_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
mov edx, dword ptr [r15]
mov dword ptr [rbp-0x4C], edx
;; size=6 bbWeight=4 PerfScore 12.00
-G_M33313_IG15: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
+G_M33313_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
cmp qword ptr [rbp-0x48], r15
jb SHORT G_M33313_IG17
- ;; size=6 bbWeight=32 PerfScore 96.00
-G_M33313_IG16: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
+ ;; size=6 bbWeight=4 PerfScore 12.00
+G_M33313_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
...
-4 (-1.24%) : 24387.dasm - Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (FullOpts)
@@ -8,23 +8,23 @@
; 0 inlinees with PGO data; 4 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T03] ( 8, 5 ) byref -> rbx single-def
-; V01 arg0 [V01,T04] ( 7, 5 ) int -> r15 single-def
-; V02 loc0 [V02,T05] ( 5, 2.50) int -> r14 single-def
-; V03 loc1 [V03,T02] ( 11, 7.54) ref -> rsi class-hnd single-def <ulong[]>
-; V04 loc2 [V04,T01] ( 10, 7.75) int -> r13 single-def
-; V05 loc3 [V05,T07] ( 3, 1.50) long -> r12
-; V06 loc4 [V06,T08] ( 3, 1.50) int -> rdi single-def
+; V00 RetBuf [V00,T04] ( 8, 5 ) byref -> r15 single-def
+; V01 arg0 [V01,T01] ( 7, 6.48) int -> rbx single-def
+; V02 loc0 [V02,T06] ( 5, 2.50) int -> r14 single-def
+; V03 loc1 [V03,T03] ( 11, 7.54) ref -> rsi class-hnd single-def <ulong[]>
+; V04 loc2 [V04,T02] ( 10, 7.75) int -> r13 single-def
+; V05 loc3 [V05,T08] ( 3, 1.50) long -> r12
+; V06 loc4 [V06,T05] ( 3, 4.46) int -> rdi single-def
; V07 loc5 [V07,T00] ( 10, 16.54) int -> rdi
; V08 loc6 [V08,T09] ( 3, 1.50) long -> rdi single-def
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T06] ( 3, 1.50) ref -> rax
+; V10 tmp1 [V10,T07] ( 3, 1.50) ref -> rax
;* V11 tmp2 [V11 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.BitVector>
; V12 tmp3 [V12,T11] ( 2, 1 ) int -> r14 "Inline return value spill temp"
;* V13 tmp4 [V13 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V14 tmp5 [V14,T10] ( 2, 1 ) ref -> rsi single-def "field V11._bits (fldOffset=0x0)" P-INDEP
; V15 tmp6 [V15,T12] ( 2, 1 ) long -> r12 single-def "field V11._bits0 (fldOffset=0x8)" P-INDEP
-; V16 tmp7 [V16,T13] ( 2, 1 ) int -> r15 single-def "field V11._capacity (fldOffset=0x10)" P-INDEP
+; V16 tmp7 [V16,T13] ( 2, 1 ) int -> rbx single-def "field V11._capacity (fldOffset=0x10)" P-INDEP
;
; Lcl frame size = 8
@@ -37,27 +37,27 @@ G_M40875_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
push rax
lea rbp, [rsp+0x30]
- mov rbx, rdi
- ; byrRegs +[rbx]
- mov r15d, esi
- ;; size=22 bbWeight=1 PerfScore 8.00
-G_M40875_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- test r15d, r15d
+ mov r15, rdi
+ ; byrRegs +[r15]
+ mov ebx, esi
+ ;; size=21 bbWeight=1 PerfScore 8.00
+G_M40875_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ test ebx, ebx
jne SHORT G_M40875_IG05
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M40875_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=4 bbWeight=1 PerfScore 1.25
+G_M40875_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
mov rdi, 0xD1FFAB1E ; box for <unknown class>:<unknown field>
mov rsi, gword ptr [rdi]
; gcrRegs +[rsi]
add rsi, 8
; gcrRegs -[rsi]
; byrRegs +[rsi]
- mov rdi, rbx
+ mov rdi, r15
; byrRegs +[rdi]
call CORINFO_HELP_ASSIGN_BYREF
movsq
movsq
- mov rax, rbx
+ mov rax, r15
; byrRegs +[rax]
;; size=32 bbWeight=0.50 PerfScore 3.00
G_M40875_IG04: ; bbWeight=0.50, epilog, nogc, extend
@@ -70,12 +70,12 @@ G_M40875_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M40875_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, gcvars, byref, isz
+G_M40875_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
; byrRegs -[rax rsi rdi]
- lea r14d, [r15-0x01]
+ lea r14d, [rbx-0x01]
sar r14d, 6
xor esi, esi
- test r15d, r15d
+ test ebx, ebx
cmovle r14d, esi
test r14d, r14d
je SHORT G_M40875_IG06
@@ -85,13 +85,13 @@ G_M40875_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
; gcrRegs +[rax]
; gcr arg pop 0
jmp SHORT G_M40875_IG07
- ;; size=42 bbWeight=0.50 PerfScore 3.25
-G_M40875_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=41 bbWeight=0.50 PerfScore 3.25
+G_M40875_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
; gcrRegs -[rax]
mov rax, 0xD1FFAB1E
; gcrRegs +[rax]
;; size=10 bbWeight=0.50 PerfScore 0.12
-G_M40875_IG07: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx}, byref, isz
+G_M40875_IG07: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=8000 {r15}, byref, isz
mov rsi, rax
; gcrRegs +[rsi]
lea r13d, [r14-0x01]
@@ -100,71 +100,73 @@ G_M40875_IG07: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0008 {rbx
test r13d, r13d
jle SHORT G_M40875_IG12
;; size=24 bbWeight=0.50 PerfScore 1.25
-G_M40875_IG08: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M40875_IG08: ; bbWeight=0.25, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
; gcrRegs -[rax]
test rsi, rsi
je SHORT G_M40875_IG11
cmp dword ptr [rsi+0x08], r13d
jl SHORT G_M40875_IG11
;; size=11 bbWeight=0.25 PerfScore 1.31
-G_M40875_IG09: ; bbWeight=3.96, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M40875_IG09: ; bbWeight=3.96, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
mov eax, edi
mov qword ptr [rsi+8*rax+0x10], -1
inc edi
cmp edi, r13d
jl SHORT G_M40875_IG09
;; size=18 bbWeight=3.96 PerfScore 10.89
-G_M40875_IG10: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M40875_IG10: ; bbWeight=1.98, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
jmp SHORT G_M40875_IG12
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M40875_IG11: ; bbWeight=0.04, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M40875_IG11: ; bbWeight=0.04, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
cmp edi, dword ptr [rsi+0x08]
- jae G_M40875_IG17
+ jae G_M40875_IG18
mov eax, edi
mov qword ptr [rsi+8*rax+0x10], -1
inc edi
cmp edi, r13d
jl SHORT G_M40875_IG11
;; size=27 bbWeight=0.04 PerfScore 0.27
-G_M40875_IG12: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
- mov edi, r15d
+G_M40875_IG12: ; bbWeight=1.98, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
+ mov edi, ebx
and edi, 63
- jle SHORT G_M40875_IG14
+ jle SHORT G_M40875_IG15
+ ;; size=7 bbWeight=1.98 PerfScore 2.97
+G_M40875_IG13: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
mov rax, -1
shlx rdi, rax, rdi
not rdi
test r13d, r13d
- jge SHORT G_M40875_IG13
+ jge SHORT G_M40875_IG14
mov r12, rdi
- jmp SHORT G_M40875_IG15
- ;; size=36 bbWeight=0.50 PerfScore 3.00
-G_M40875_IG13: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M40875_IG16
+ ;; size=28 bbWeight=0.50 PerfScore 2.25
+G_M40875_IG14: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
cmp r13d, dword ptr [rsi+0x08]
- jae SHORT G_M40875_IG17
+ jae SHORT G_M40875_IG18
mov eax, r13d
mov qword ptr [rsi+8*rax+0x10], rdi
- jmp SHORT G_M40875_IG15
+ jmp SHORT G_M40875_IG16
;; size=16 bbWeight=0.50 PerfScore 3.62
-G_M40875_IG14: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+G_M40875_IG15: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref, isz
test r14d, r14d
- jle SHORT G_M40875_IG15
+ jle SHORT G_M40875_IG16
cmp r13d, dword ptr [rsi+0x08]
- jae SHORT G_M40875_IG17
+ jae SHORT G_M40875_IG18
mov edi, r13d
mov qword ptr [rsi+8*rdi+0x10], -1
;; size=23 bbWeight=0.50 PerfScore 3.25
-G_M40875_IG15: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
- mov rdi, rbx
+G_M40875_IG16: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=8000 {r15}, byref
+ mov rdi, r15
; byrRegs +[rdi]
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rsi]
; byrRegs -[rdi]
- mov qword ptr [rbx+0x08], r12
- mov dword ptr [rbx+0x10], r15d
- mov rax, rbx
+ mov qword ptr [r15+0x08], r12
+ mov dword ptr [r15+0x10], ebx
+ mov rax, r15
; byrRegs +[rax]
;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M40875_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M40875_IG17: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 8
pop rbx
pop r12
@@ -174,14 +176,14 @@ G_M40875_IG16: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M40875_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rax rbx]
+G_M40875_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; byrRegs -[rax r15]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 323, prolog size 22, PerfScore 46.22, instruction count 99, allocated bytes for code 323 (MethodHash=4a676054) for method Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (FullOpts)
+; Total bytes of code 319, prolog size 21, PerfScore 51.40, instruction count 99, allocated bytes for code 319 (MethodHash=4a676054) for method Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (FullOpts)
; ============================================================
Unwind Info:
-11 (-0.57%) : 13861.dasm - Microsoft.ML.Data.MetricWriter:GetConfusionTableAsArray(Microsoft.ML.IDataView,int,int,int[],int,byref,byref):double[]
@@ -8,22 +8,22 @@
; 0 inlinees with PGO data; 18 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T31] ( 5, 5 ) ref -> [rbp-0xE0] class-hnd single-def <Microsoft.ML.IDataView>
-; V01 arg1 [V01,T34] ( 3, 3 ) int -> [rbp-0x2C] single-def
+; V00 arg0 [V00,T31] ( 5, 5.98) ref -> [rbp-0xE0] class-hnd single-def <Microsoft.ML.IDataView>
+; V01 arg1 [V01,T35] ( 3, 3 ) int -> [rbp-0x2C] single-def
; V02 arg2 [V02,T25] ( 5, 6 ) int -> r12 single-def
-; V03 arg3 [V03,T13] ( 6, 16 ) ref -> rbx class-hnd single-def <int[]>
-; V04 arg4 [V04,T15] ( 11, 14.50) int -> r15 single-def
-; V05 arg5 [V05,T18] ( 4, 11 ) byref -> r14 single-def
-; V06 arg6 [V06,T23] ( 2, 9 ) byref -> r13 single-def
-; V07 loc0 [V07,T22] ( 10, 9 ) ref -> [rbp-0xE8] class-hnd exact spill-single-def <Microsoft.ML.Data.MetricWriter+<>c__DisplayClass3_0>
+; V03 arg3 [V03,T14] ( 6, 16 ) ref -> r15 class-hnd single-def <int[]>
+; V04 arg4 [V04,T13] ( 11, 16.46) int -> rbx single-def
+; V05 arg5 [V05,T17] ( 4, 11.98) byref -> r14 single-def
+; V06 arg6 [V06,T22] ( 2, 9.98) byref -> r13 single-def
+; V07 loc0 [V07,T21] ( 10, 9.98) ref -> [rbp-0xE8] class-hnd exact spill-single-def <Microsoft.ML.Data.MetricWriter+<>c__DisplayClass3_0>
; V08 loc1 [V08,T12] ( 8, 22.54) ref -> [rbp-0xF0] class-hnd exact spill-single-def <double[][]>
-; V09 loc2 [V09,T14] ( 10, 17.04) int -> [rbp-0x30]
+; V09 loc2 [V09,T15] ( 10, 17.04) int -> [rbp-0x30]
; V10 loc3 [V10,T19] ( 13, 12 ) ref -> [rbp-0xF8] class-hnd EH-live spill-single-def <<unknown class>>
; V11 loc4 [V11,T43] ( 5, 3.25) ref -> rax class-hnd exact <Microsoft.ML.Data.VectorDataViewType>
-; V12 loc5 [V12,T33] ( 3, 5 ) ref -> [rbp-0x100] class-hnd spill-single-def <<unknown class>>
-; V13 loc6 [V13,T21] ( 5, 9.50) ref -> [rbp-0x108] class-hnd <<unknown class>>
+; V12 loc5 [V12,T34] ( 3, 5 ) ref -> [rbp-0x100] class-hnd spill-single-def <<unknown class>>
+; V13 loc6 [V13,T23] ( 5, 9.50) ref -> [rbp-0x108] class-hnd <<unknown class>>
; V14 loc7 [V14 ] ( 8, 13 ) struct (24) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.ML.Data.VBuffer`1[double]>
-; V15 loc8 [V15,T17] ( 7, 13 ) int -> r15
+; V15 loc8 [V15,T18] ( 7, 13 ) int -> rbx
; V16 loc9 [V16 ] ( 4, 3 ) struct (32) [rbp-0x68] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.ML.DataViewSchema+Column>
; V17 loc10 [V17 ] ( 3, 10 ) int -> [rbp-0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V18 loc11 [V18,T08] ( 5, 34 ) int -> [rbp-0x74] spill-single-def
@@ -34,8 +34,8 @@
;* V23 tmp1 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <Microsoft.ML.Data.MetricWriter+<>c__DisplayClass3_0>
; V24 tmp2 [V24,T16] ( 4, 16 ) ref -> rax class-hnd exact "Strict ordering of exceptions for Array store" <double[]>
; V25 tmp3 [V25,T26] ( 4, 8 ) ref -> [rbp-0x118] class-hnd exact spill-single-def "NewObj constructor temp" <System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte]>
-; V26 tmp4 [V26,T35] ( 2, 4 ) ref -> [rbp-0x120] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.ML.DataViewSchema>
-; V27 tmp5 [V27,T36] ( 2, 4 ) ref -> rax single-def "CASTCLASS eval op1"
+; V26 tmp4 [V26,T36] ( 2, 4 ) ref -> [rbp-0x120] class-hnd exact spill-single-def "impAppendStmt" <Microsoft.ML.DataViewSchema>
+; V27 tmp5 [V27,T37] ( 2, 4 ) ref -> rax single-def "CASTCLASS eval op1"
;* V28 tmp6 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <Microsoft.ML.Data.VectorDataViewType>
; V29 tmp7 [V29,T47] ( 2, 1 ) int -> rdi
; V30 tmp8 [V30,T41] ( 2, 4 ) struct (32) [rbp-0x98] do-not-enreg[HS] must-init hidden-struct-arg "spilled call-like call argument" <Microsoft.ML.DataViewSchema+Column>
@@ -52,14 +52,14 @@
; V41 tmp19 [V41,T52] ( 3, 0 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Int32>
; V42 tmp20 [V42,T53] ( 3, 0 ) ref -> rax class-hnd exact "Single-def Box Helper" <System.Int32>
;* V43 tmp21 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <Microsoft.ML.Data.PrimitiveDataViewType>
-; V44 tmp22 [V44,T32] ( 3, 6 ) byref -> [rbp-0x128] spill-single-def "Inlining Arg"
-; V45 tmp23 [V45,T37] ( 2, 4 ) ref -> rdi class-hnd exact single-def "Inlining Arg" <Microsoft.ML.DataViewSchema>
-; V46 tmp24 [V46 ] ( 3, 3 ) struct (40) [rbp-0xC0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Nullable`1[Microsoft.ML.DataViewSchema+Column]>
+; V44 tmp22 [V44,T32] ( 3, 7.96) byref -> [rbp-0x128] spill-single-def "Inlining Arg"
+; V45 tmp23 [V45,T33] ( 2, 7.92) ref -> rdi class-hnd exact single-def "Inlining Arg" <Microsoft.ML.DataViewSchema>
+; V46 tmp24 [V46 ] ( 3, 5.94) struct (40) [rbp-0xC0] do-not-enreg[XS] must-init addr-exposed ld-addr-op "Inline stloc first use temp" <System.Nullable`1[Microsoft.ML.DataViewSchema+Column]>
;* V47 tmp25 [V47 ] ( 0, 0 ) byref -> zero-ref single-def
-; V48 tmp26 [V48,T46] ( 2, 1.50) byref -> rdi single-def
+; V48 tmp26 [V48,T44] ( 2, 2.48) byref -> rdi single-def
;* V49 tmp27 [V49 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] ld-addr-op "Inline stloc first use temp" <Microsoft.ML.DataViewSchema+Column>
;* V50 tmp28 [V50 ] ( 0, 0 ) byref -> zero-ref
-; V51 tmp29 [V51,T44] ( 3, 2 ) int -> rax
+; V51 tmp29 [V51,T45] ( 3, 2 ) int -> rax
;* V52 tmp30 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V53 tmp31 [V53,T07] ( 9, 36 ) ref -> [rbp-0x130] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.ML.Data.VBuffer`1+<Items>d__23[double]>
; V54 tmp32 [V54,T27] ( 2, 8 ) ref -> [rbp-0x138] class-hnd spill-single-def "Inlining Arg" <double[]>
@@ -78,7 +78,7 @@
; V67 tmp45 [V67,T38] ( 2, 4 ) ref -> rsi single-def "argument with side effect"
; V68 tmp46 [V68,T39] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
; V69 tmp47 [V69,T40] ( 2, 4 ) ref -> rdi single-def "argument with side effect"
-; V70 tmp48 [V70,T45] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
+; V70 tmp48 [V70,T46] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
; V71 tmp49 [V71,T02] ( 3, 48 ) ref -> rsi "arr expr"
; V72 tmp50 [V72,T05] ( 3, 48 ) int -> r8 "index expr"
; V73 tmp51 [V73,T03] ( 3, 48 ) ref -> rsi "arr expr"
@@ -119,15 +119,15 @@ G_M52896_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; GC ptr vars +{V00}
mov dword ptr [rbp-0x2C], esi
mov r12d, edx
- mov rbx, rcx
- ; gcrRegs +[rbx]
- mov r15d, r8d
+ mov r15, rcx
+ ; gcrRegs +[r15]
+ mov ebx, r8d
mov r14, r9
; byrRegs +[r14]
mov r13, bword ptr [rbp+0x10]
; byrRegs +[r13]
;; size=125 bbWeight=1 PerfScore 25.83
-G_M52896_IG02: ; bbWeight=1, gcVars=0000000080000000 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M52896_IG02: ; bbWeight=1, gcVars=0000000080000000 {V00}, gcrefRegs=8000 {r15}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
mov rdi, 0xD1FFAB1E ; Microsoft.ML.Data.MetricWriter+<>c__DisplayClass3_0
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -136,7 +136,7 @@ G_M52896_IG02: ; bbWeight=1, gcVars=0000000080000000 {V00}, gcrefRegs=000
; GC ptr vars +{V07}
mov esi, dword ptr [rbp-0x2C]
mov dword ptr [rax+0x08], esi
- movsxd rsi, r15d
+ movsxd rsi, ebx
mov rdi, 0xD1FFAB1E ; double[][]
call CORINFO_HELP_NEWARR_1_OBJ
; gcr arg pop 0
@@ -144,16 +144,16 @@ G_M52896_IG02: ; bbWeight=1, gcVars=0000000080000000 {V00}, gcrefRegs=000
; GC ptr vars +{V08}
xor ecx, ecx
mov dword ptr [rbp-0x30], ecx
- test r15d, r15d
+ test ebx, ebx
jle SHORT G_M52896_IG06
- ;; size=63 bbWeight=1 PerfScore 9.25
-G_M52896_IG03: ; bbWeight=0.50, gcVars=0000000080401000 {V00 V07 V08}, gcrefRegs=0009 {rax rbx}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
- cmp dword ptr [rax+0x08], r15d
+ ;; size=62 bbWeight=1 PerfScore 9.25
+G_M52896_IG03: ; bbWeight=0.50, gcVars=0000000080201000 {V00 V07 V08}, gcrefRegs=8001 {rax r15}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+ cmp dword ptr [rax+0x08], ebx
jl SHORT G_M52896_IG07
- ;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M52896_IG04: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+ ;; size=5 bbWeight=0.50 PerfScore 2.00
+G_M52896_IG04: ; bbWeight=3.96, gcrefRegs=8000 {r15}, byrefRegs=6000 {r13 r14}, byref, isz
; gcrRegs -[rax]
- movsxd rsi, r15d
+ movsxd rsi, ebx
mov rdi, 0xD1FFAB1E ; double[]
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
@@ -171,19 +171,19 @@ G_M52896_IG04: ; bbWeight=3.96, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
mov ecx, dword ptr [rbp-0x30]
inc ecx
mov dword ptr [rbp-0x30], ecx
- cmp ecx, r15d
+ cmp ecx, ebx
jl SHORT G_M52896_IG04
- ;; size=54 bbWeight=3.96 PerfScore 36.63
-G_M52896_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+ ;; size=53 bbWeight=3.96 PerfScore 36.63
+G_M52896_IG05: ; bbWeight=1.98, gcrefRegs=8000 {r15}, byrefRegs=6000 {r13 r14}, byref, isz
jmp SHORT G_M52896_IG08
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M52896_IG06: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M52896_IG06: ; bbWeight=0.50, gcrefRegs=8001 {rax r15}, byrefRegs=6000 {r13 r14}, byref, isz
; gcrRegs +[rax]
jmp SHORT G_M52896_IG08
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M52896_IG07: ; bbWeight=0.04, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M52896_IG07: ; bbWeight=0.04, gcrefRegs=8000 {r15}, byrefRegs=6000 {r13 r14}, byref, isz
; gcrRegs -[rax]
- movsxd rsi, r15d
+ movsxd rsi, ebx
mov rdi, 0xD1FFAB1E ; double[]
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
@@ -204,12 +204,12 @@ G_M52896_IG07: ; bbWeight=0.04, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13
; byrRegs -[rdi]
mov esi, dword ptr [rbp-0x30]
inc esi
- cmp esi, r15d
+ cmp esi, ebx
mov dword ptr [rbp-0x30], esi
jl SHORT G_M52896_IG07
- ;; size=68 bbWeight=0.04 PerfScore 0.58
-G_M52896_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
- movsxd rsi, r15d
+ ;; size=67 bbWeight=0.04 PerfScore 0.58
+G_M52896_IG08: ; bbWeight=1.98, gcrefRegs=8000 {r15}, byrefRegs=6000 {r13 r14}, byref, isz
+ movsxd rsi, ebx
mov rdi, 0xD1FFAB1E ; double[]
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
@@ -221,7 +221,7 @@ G_M52896_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r1
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- movsxd rsi, r15d
+ movsxd rsi, ebx
mov rdi, 0xD1FFAB1E ; double[]
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
@@ -241,9 +241,9 @@ G_M52896_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r1
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
- mov r15, gword ptr [rbp-0xE8]
- ; gcrRegs +[r15]
- lea rax, bword ptr [r15+0x0C]
+ mov rbx, gword ptr [rbp-0xE8]
+ ; gcrRegs +[rbx]
+ lea rax, bword ptr [rbx+0x0C]
; gcrRegs -[rax]
; byrRegs +[rax]
mov bword ptr [rbp-0x128], rax
@@ -260,7 +260,7 @@ G_M52896_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r1
; byrRegs +[rdi]
cmp byte ptr [rbp-0xC0], 0
jne SHORT G_M52896_IG10
- ;; size=140 bbWeight=1 PerfScore 23.25
+ ;; size=140 bbWeight=1.98 PerfScore 46.03
G_M52896_IG09: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=6000 {r13 r14}, byref, isz
; byrRegs -[rdi]
mov eax, -1
@@ -278,7 +278,7 @@ G_M52896_IG11: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=6000 {r1
cmp dword ptr [rdi], 0
setge dil
; byrRegs -[rdi]
- mov byte ptr [r15+0x10], dil
+ mov byte ptr [rbx+0x10], dil
mov rdi, 0xD1FFAB1E ; System.Func`2[Microsoft.ML.DataViewSchema+Column,ubyte]
; GC ptr vars -{V44}
call CORINFO_HELP_NEWSFAST
@@ -298,7 +298,7 @@ G_M52896_IG11: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=6000 {r1
; gcrRegs +[rcx]
lea rdi, bword ptr [rcx+0x08]
; byrRegs +[rdi]
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi]
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rcx rsi]
@@ -327,7 +327,7 @@ G_M52896_IG11: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=6000 {r1
mov gword ptr [rbp-0xF8], rax
; GC ptr vars +{V10}
;; size=154 bbWeight=1 PerfScore 29.25
-G_M52896_IG12: ; bbWeight=1, gcVars=0000000000481000 {V07 V08 V10}, gcrefRegs=8009 {rax rbx r15}, byrefRegs=6000 {r13 r14}, gcvars, byref
+G_M52896_IG12: ; bbWeight=1, gcVars=0000000000281000 {V07 V08 V10}, gcrefRegs=8009 {rax rbx r15}, byrefRegs=6000 {r13 r14}, gcvars, byref
mov rdi, rax
; gcrRegs +[rdi]
mov rcx, qword ptr [rax]
@@ -338,7 +338,7 @@ G_M52896_IG12: ; bbWeight=1, gcVars=0000000000481000 {V07 V08 V10}, gcref
; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
- mov edx, dword ptr [r15+0x08]
+ mov edx, dword ptr [rbx+0x08]
lea rsi, [rbp-0x68]
cmp dword ptr [rdi], edi
call [<unknown method>]
@@ -348,7 +348,7 @@ G_M52896_IG12: ; bbWeight=1, gcVars=0000000000481000 {V07 V08 V10}, gcref
; gcrRegs +[rax]
test rax, rax
je G_M52896_IG24
- ;; size=52 bbWeight=1 PerfScore 19.25
+ ;; size=51 bbWeight=1 PerfScore 19.25
G_M52896_IG13: ; bbWeight=0.25, gcrefRegs=8009 {rax rbx r15}, byrefRegs=6000 {r13 r14}, byref
mov rcx, 0xD1FFAB1E ; Microsoft.ML.Data.VectorDataViewType
cmp qword ptr [rax], rcx
@@ -377,7 +377,7 @@ G_M52896_IG15: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=6000 {r1
; gcr arg pop 0
mov rdi, rax
...
+2 (+2.11%) : 17888.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:AdvanceIfMatches(System.String):ubyte:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 5, 6.96) ref -> r15 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
-; V01 arg1 [V01,T01] ( 5, 7.46) ref -> rbx class-hnd single-def <System.String>
-; V02 loc0 [V02,T03] ( 4, 6.46) int -> r14 single-def
+; V00 this [V00,T01] ( 5, 9.92) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow>
+; V01 arg1 [V01,T02] ( 5, 7.46) ref -> r15 class-hnd single-def <System.String>
+; V02 loc0 [V02,T03] ( 4, 7.94) int -> r14 single-def
; V03 loc1 [V03,T00] ( 6, 20.80) int -> r13
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
@@ -23,49 +23,49 @@ G_M24588_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
push r13
push rbx
lea rbp, [rsp+0x20]
- mov r15, rdi
- ; gcrRegs +[r15]
- mov rbx, rsi
+ mov rbx, rdi
; gcrRegs +[rbx]
+ mov r15, rsi
+ ; gcrRegs +[r15]
;; size=19 bbWeight=1 PerfScore 6.00
G_M24588_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov r14d, dword ptr [rbx+0x08]
+ mov r14d, dword ptr [r15+0x08]
xor r13d, r13d
test r14d, r14d
jle SHORT G_M24588_IG05
;; size=12 bbWeight=1 PerfScore 3.50
G_M24588_IG03: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
- mov edi, dword ptr [rbx+0x08]
- ;; size=3 bbWeight=0.50 PerfScore 1.00
+ mov edi, dword ptr [r15+0x08]
+ ;; size=4 bbWeight=0.50 PerfScore 1.00
G_M24588_IG04: ; bbWeight=3.96, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
- mov rdi, r15
+ mov rdi, rbx
; gcrRegs +[rdi]
mov esi, r13d
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:PeekChar(int):ushort:this]
; gcrRegs -[rdi]
mov ecx, r13d
- movzx rcx, word ptr [rbx+2*rcx+0x0C]
+ movzx rcx, word ptr [r15+2*rcx+0x0C]
cmp eax, ecx
jne SHORT G_M24588_IG07
inc r13d
cmp r13d, r14d
jl SHORT G_M24588_IG04
- ;; size=32 bbWeight=3.96 PerfScore 33.66
-G_M24588_IG05: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx]
- add dword ptr [r15+0x24], r14d
+ ;; size=33 bbWeight=3.96 PerfScore 33.66
+G_M24588_IG05: ; bbWeight=1.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ add dword ptr [rbx+0x24], r14d
mov eax, 1
- ;; size=9 bbWeight=0.50 PerfScore 1.62
-G_M24588_IG06: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=9 bbWeight=1.98 PerfScore 6.43
+G_M24588_IG06: ; bbWeight=1.98, epilog, nogc, extend
pop rbx
pop r13
pop r14
pop r15
pop rbp
ret
- ;; size=9 bbWeight=0.50 PerfScore 1.75
+ ;; size=9 bbWeight=1.98 PerfScore 6.93
G_M24588_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r15]
+ ; gcrRegs -[rbx]
xor eax, eax
;; size=2 bbWeight=0.50 PerfScore 0.12
G_M24588_IG08: ; bbWeight=0.50, epilog, nogc, extend
@@ -77,7 +77,7 @@ G_M24588_IG08: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=9 bbWeight=0.50 PerfScore 1.75
-; Total bytes of code 95, prolog size 13, PerfScore 49.41, instruction count 38, allocated bytes for code 95 (MethodHash=d0dc9ff3) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:AdvanceIfMatches(System.String):ubyte:this (FullOpts)
+; Total bytes of code 97, prolog size 13, PerfScore 59.40, instruction count 38, allocated bytes for code 97 (MethodHash=d0dc9ff3) for method Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:AdvanceIfMatches(System.String):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+35 (+4.10%) : 6693.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple
2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
@@ -10,31 +10,31 @@
;
; V00 arg0 [V00,T17] ( 3, 6 ) ref -> rbx class-hnd single-def <FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader>
;* V01 arg1 [V01 ] ( 0, 0 ) struct ( 8) zero-ref single-def <FSharp.Compiler.IO.ReadOnlyByteMemory>
-; V02 arg2 [V02,T25] ( 3, 3 ) ref -> r13 class-hnd single-def <FSharp.Compiler.AbstractIL.IL+ILType>
-; V03 arg3 [V03,T19] ( 5, 5 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
-; V04 arg4 [V04,T26] ( 3, 3 ) int -> r12 single-def
-; V05 arg5 [V05,T27] ( 3, 3 ) int -> [rbp-0x2C] single-def
-; V06 loc0 [V06 ] ( 3, 6 ) ref -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <FSharp.Compiler.AbstractIL.IL+ILReturn>
-; V07 loc1 [V07,T13] ( 3, 9 ) ref -> r15 class-hnd exact single-def <<unknown class>>
-; V08 loc2 [V08,T23] ( 6, 6.54) ref -> r13 class-hnd exact single-def <<unknown class>>
-; V09 loc3 [V09,T20] ( 5, 7 ) ref -> r15 class-hnd exact single-def <<unknown class>>
-; V10 loc4 [V10,T04] ( 15, 27.04) int -> [rbp-0x3C]
-; V11 loc5 [V11,T14] ( 4, 8 ) ref -> [rbp-0x50] class-hnd <FSharp.Compiler.AbstractIL.IL+ILType>
-; V12 loc6 [V12,T08] ( 6, 18 ) int -> r12
+; V02 arg2 [V02,T27] ( 3, 3 ) ref -> [rbp-0x48] class-hnd single-def <FSharp.Compiler.AbstractIL.IL+ILType>
+; V03 arg3 [V03,T20] ( 5, 5 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
+; V04 arg4 [V04,T25] ( 3, 3.98) int -> r13 single-def
+; V05 arg5 [V05,T26] ( 3, 3.98) int -> r12 single-def
+; V06 loc0 [V06 ] ( 3, 6 ) ref -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <FSharp.Compiler.AbstractIL.IL+ILReturn>
+; V07 loc1 [V07,T13] ( 3, 9.98) ref -> r15 class-hnd exact single-def <<unknown class>>
+; V08 loc2 [V08,T23] ( 6, 6.54) ref -> r15 class-hnd exact single-def <<unknown class>>
+; V09 loc3 [V09,T19] ( 5, 7.98) ref -> [rbp-0x50] class-hnd exact spill-single-def <<unknown class>>
+; V10 loc4 [V10,T04] ( 15, 29 ) int -> [rbp-0x34]
+; V11 loc5 [V11,T14] ( 4, 8 ) ref -> [rbp-0x58] class-hnd <FSharp.Compiler.AbstractIL.IL+ILType>
+; V12 loc6 [V12,T08] ( 6, 19.96) int -> r13
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V14 tmp1 [V14 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
-; V15 tmp2 [V15,T10] ( 6, 12 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILReturn>
+; V15 tmp2 [V15,T10] ( 6, 12 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILReturn>
;* V16 tmp3 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Strict ordering of exceptions for Array store" <FSharp.Compiler.AbstractIL.IL+ILParameter>
; V17 tmp4 [V17,T28] ( 2, 4 ) ref -> rbx class-hnd exact single-def "impAppendStmt" <FSharp.Compiler.AbstractIL.IL+ILReturn>
; V18 tmp5 [V18,T15] ( 4, 8 ) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]]>
;* V19 tmp6 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V20 tmp7 [V20,T30] ( 2, 2 ) ref -> [rbp-0x60] class-hnd spill-single-def "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
+; V20 tmp7 [V20,T30] ( 2, 2 ) ref -> [rbp-0x68] class-hnd spill-single-def "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
;* V21 tmp8 [V21 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
;* V22 tmp9 [V22 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
;* V23 tmp10 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored+Given>
;* V24 tmp11 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <<unknown class>>
;* V25 tmp12 [V25 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V26 tmp13 [V26,T21] ( 3, 6 ) ref -> r13 class-hnd exact single-def "Inline stloc first use temp" <<unknown class>>
+; V26 tmp13 [V26,T21] ( 3, 6 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V27 tmp14 [V27 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V28 tmp15 [V28 ] ( 0, 0 ) int -> zero-ref single-def "Inline return value spill temp"
; V29 tmp16 [V29,T02] ( 4, 34 ) ref -> rdi class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
@@ -42,13 +42,13 @@
;* V31 tmp18 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
; V32 tmp19 [V32,T01] ( 5, 42 ) ref -> r15 class-hnd "Inlining Arg" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
;* V33 tmp20 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
-; V34 tmp21 [V34,T18] ( 2, 8 ) ref -> [rbp-0x68] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
+; V34 tmp21 [V34,T18] ( 2, 8 ) ref -> [rbp-0x78] class-hnd spill-single-def "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType]>
;* V35 tmp22 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <FSharp.Compiler.AbstractIL.IL+ILType>
;* V36 tmp23 [V36,T31] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <<unknown class>>
-; V37 tmp24 [V37,T05] ( 4, 26 ) int -> [rbp-0x40] "Inlining Arg"
+; V37 tmp24 [V37,T05] ( 4, 26 ) int -> [rbp-0x38] "Inlining Arg"
;* V38 tmp25 [V38 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
-; V39 tmp26 [V39,T00] ( 20, 80 ) ref -> [rbp-0x70] class-hnd exact "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILParameter>
-; V40 tmp27 [V40,T16] ( 4, 8 ) ref -> [rbp-0x78] class-hnd "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
+; V39 tmp26 [V39,T00] ( 20, 80 ) ref -> [rbp-0x80] class-hnd exact "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILParameter>
+; V40 tmp27 [V40,T16] ( 4, 8 ) ref -> [rbp-0x88] class-hnd "Inline return value spill temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored>
;* V41 tmp28 [V41 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
;* V42 tmp29 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILAttributes>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <FSharp.Compiler.AbstractIL.IL+ILAttributesStored+Given>
@@ -56,8 +56,8 @@
; V45 tmp32 [V45,T12] ( 4, 10 ) ref -> r14 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]>
; V46 tmp33 [V46,T06] ( 7, 22 ) int -> r12 "Inline stloc first use temp"
;* V47 tmp34 [V47,T34] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V48 tmp35 [V48,T09] ( 2, 16 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILParameter>
-; V49 tmp36 [V49,T03] ( 4, 32 ) ref -> [rbp-0x88] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]>
+; V48 tmp35 [V48,T09] ( 2, 16 ) ref -> [rbp-0x90] class-hnd exact spill-single-def "Inlining Arg" <FSharp.Compiler.AbstractIL.IL+ILParameter>
+; V49 tmp36 [V49,T03] ( 4, 32 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "NewObj constructor temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]>
; V50 tmp37 [V50,T22] ( 2, 5 ) ref -> r14 single-def "field V01.bytes (fldOffset=0x0)" P-INDEP
;* V51 tmp38 [V51 ] ( 0, 0 ) ref -> zero-ref "field V14.array (fldOffset=0x0)" P-INDEP
;* V52 tmp39 [V52,T32] ( 0, 0 ) ref -> zero-ref single-def "field V21.array (fldOffset=0x0)" P-INDEP
@@ -67,10 +67,10 @@
;* V56 tmp43 [V56 ] ( 0, 0 ) ref -> zero-ref "field V42.array (fldOffset=0x0)" P-INDEP
;* V57 tmp44 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;* V58 cse0 [V58,T33] ( 0, 0 ) ref -> zero-ref "CSE - moderate"
-; V59 cse1 [V59,T24] ( 4, 6 ) ref -> [rbp-0x90] spill-single-def "CSE - conservative"
-; V60 cse2 [V60,T11] ( 7, 11.50) int -> [rbp-0x44] spill-single-def "CSE - moderate"
+; V59 cse1 [V59,T24] ( 4, 6 ) ref -> [rbp-0xA0] spill-single-def "CSE - conservative"
+; V60 cse2 [V60,T11] ( 7, 11.50) int -> [rbp-0x3C] spill-single-def "CSE - moderate"
;
-; Lcl frame size = 104
+; Lcl frame size = 120
G_M51799_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -79,34 +79,34 @@ G_M51799_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 104
- lea rbp, [rsp+0x90]
+ sub rsp, 120
+ lea rbp, [rsp+0xA0]
xor eax, eax
- mov qword ptr [rbp-0x38], rax
- mov dword ptr [rbp-0x2C], r9d
+ mov qword ptr [rbp-0x30], rax
+ mov gword ptr [rbp-0x48], rdx
+ ; GC ptr vars +{V02}
mov rbx, rdi
; gcrRegs +[rbx]
mov r14, rsi
; gcrRegs +[r14]
- mov r13, rdx
- ; gcrRegs +[r13]
mov r15, rcx
; gcrRegs +[r15]
- mov r12d, r8d
+ mov r13d, r8d
+ mov r12d, r9d
;; size=47 bbWeight=1 PerfScore 10.25
-G_M51799_IG02: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M51799_IG02: ; bbWeight=1, gcVars=0000000008000000 {V02}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
mov rdi, 0xD1FFAB1E ; const ptr
mov rcx, gword ptr [rdi]
; gcrRegs +[rcx]
- mov gword ptr [rbp-0x90], rcx
+ mov gword ptr [rbp-0xA0], rcx
; GC ptr vars +{V59}
- mov gword ptr [rbp-0x60], rcx
+ mov gword ptr [rbp-0x68], rcx
; GC ptr vars +{V20}
mov rdi, 0xD1FFAB1E ; FSharp.Compiler.AbstractIL.IL+ILReturn
call CORINFO_HELP_NEWSFAST
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rbp-0x58], rax
+ mov gword ptr [rbp-0x60], rax
; GC ptr vars +{V15}
xor rdi, rdi
; gcrRegs +[rdi]
@@ -114,30 +114,33 @@ G_M51799_IG02: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=
lea rdi, bword ptr [rax+0x10]
; gcrRegs -[rdi]
; byrRegs +[rdi]
- mov rsi, r13
+ mov rsi, gword ptr [rbp-0x48]
; gcrRegs +[rsi]
+ ; GC ptr vars -{V02}
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rax rsi r13]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov r13, gword ptr [rbp-0x58]
- ; gcrRegs +[r13]
- lea rdi, bword ptr [r13+0x18]
+ mov rax, gword ptr [rbp-0x60]
+ ; gcrRegs +[rax]
+ lea rdi, bword ptr [rax+0x18]
; byrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x60]
+ mov rsi, gword ptr [rbp-0x68]
; gcrRegs +[rsi]
; GC ptr vars -{V20}
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rsi]
+ ; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- mov dword ptr [r13+0x20], -1
- mov gword ptr [rbp-0x38], r13
+ mov rsi, gword ptr [rbp-0x60]
+ ; gcrRegs +[rsi]
+ mov dword ptr [rsi+0x20], -1
+ mov gword ptr [rbp-0x30], rsi
cmp byte ptr [r15], r15b
xor esi, esi
+ ; gcrRegs -[rsi]
mov rdi, r15
; gcrRegs +[rdi]
- ;; size=98 bbWeight=1 PerfScore 18.50
+ ;; size=102 bbWeight=1 PerfScore 20.25
G_M51799_IG03: ; bbWeight=8, gcVars=0000000001000000 {V59}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[r13]
; GC ptr vars -{V15}
cmp gword ptr [rdi+0x10], 0
je SHORT G_M51799_IG05
@@ -154,158 +157,163 @@ G_M51799_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[rax]
; gcr arg pop 0
- mov r13, rax
- ; gcrRegs +[r13]
- xor eax, eax
- ; gcrRegs -[rax]
- ;; size=23 bbWeight=1 PerfScore 2.00
-G_M51799_IG06: ; bbWeight=8, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov gword ptr [rbp-0x70], rax
+ ; GC ptr vars +{V26}
+ xor ecx, ecx
+ ;; size=24 bbWeight=1 PerfScore 2.75
+G_M51799_IG06: ; bbWeight=8, gcVars=0000000001200000 {V26 V59}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
cmp gword ptr [r15+0x10], 0
je SHORT G_M51799_IG08
;; size=7 bbWeight=8 PerfScore 32.00
-G_M51799_IG07: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [r15+0x10]
- ; gcrRegs +[rcx]
- mov gword ptr [rbp-0x68], rcx
+G_M51799_IG07: ; bbWeight=4, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r8, gword ptr [r15+0x10]
+ ; gcrRegs +[r8]
+ mov gword ptr [rbp-0x78], r8
; GC ptr vars +{V34}
mov rdx, gword ptr [r15+0x08]
; gcrRegs +[rdx]
- mov dword ptr [rbp-0x40], eax
- movsxd rsi, eax
- mov rdi, r13
+ mov dword ptr [rbp-0x38], ecx
+ movsxd rsi, ecx
+ mov rdi, rax
; gcrRegs +[rdi]
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx rdx rdi r15]
+ ; gcrRegs -[rax rdx rdi r8 r15]
; gcr arg pop 0
- mov r15, gword ptr [rbp-0x68]
+ mov r15, gword ptr [rbp-0x78]
; gcrRegs +[r15]
- mov eax, dword ptr [rbp-0x40]
- inc eax
+ mov ecx, dword ptr [rbp-0x38]
+ inc ecx
+ mov rax, gword ptr [rbp-0x70]
+ ; gcrRegs +[rax]
jmp SHORT G_M51799_IG06
- ;; size=37 bbWeight=4 PerfScore 47.00
-G_M51799_IG08: ; bbWeight=1, gcVars=0000000001000000 {V59}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=41 bbWeight=4 PerfScore 51.00
+G_M51799_IG08: ; bbWeight=1, gcVars=0000000001200000 {V26 V59}, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r15]
; GC ptr vars -{V34}
- mov esi, dword ptr [r13+0x08]
- mov rdi, 0xD1FFAB1E ; <unknown class>
- call CORINFO_HELP_NEWARR_1_OBJ
- ; gcrRegs +[rax]
- ; gcr arg pop 0
mov r15, rax
; gcrRegs +[r15]
- xor eax, eax
- ; gcrRegs -[rax]
- mov ecx, dword ptr [r15+0x08]
- mov dword ptr [rbp-0x44], ecx
- test ecx, ecx
+ mov esi, dword ptr [r15+0x08]
+ mov rdi, 0xD1FFAB1E ; <unknown class>
...
+16 (+4.42%) : 27614.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray
1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
@@ -8,30 +8,30 @@
; 0 inlinees with PGO data; 4 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 4, 6 ) ref -> r14 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
-; V01 arg1 [V01,T02] ( 5, 7 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
+; V00 this [V00,T06] ( 4, 6 ) ref -> r14 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.LocalRewriter>
+; V01 arg1 [V01,T04] ( 5, 7.98) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.SyntaxNode>
; V02 arg2 [V02,T08] ( 3, 3 ) ref -> rdx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundBlock>
;* V03 arg3 [V03 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]>
;* V04 arg4 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration]>
-; V05 arg5 [V05,T05] ( 4, 6 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo>
-; V06 arg6 [V06,T09] ( 2, 4 ) ref -> r12 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo>
+; V05 arg5 [V05,T07] ( 4, 6 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo>
+; V06 arg6 [V06,T10] ( 2, 4 ) ref -> [rbp+0x10] class-hnd single-def <Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo>
; V07 arg7 [V07,T11] ( 2, 4 ) struct (24) [rbp+0x18] do-not-enreg[S] single-def <Microsoft.CodeAnalysis.SyntaxToken>
-; V08 loc0 [V08,T01] ( 6, 10 ) ref -> [rbp-0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundBlock>
+; V08 loc0 [V08,T03] ( 6, 10.98) ref -> [rbp-0x38] class-hnd <Microsoft.CodeAnalysis.CSharp.BoundBlock>
; V09 loc1 [V09,T00] ( 12, 18.54) int -> [rbp-0x2C]
; V10 OutArgs [V10 ] ( 1, 1 ) struct (24) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V11 tmp1 [V11,T06] ( 3, 6 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundBlock>
+; V11 tmp1 [V11,T01] ( 3, 11.88) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.BoundBlock>
;* V12 tmp2 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Collections.Immutable.ImmutableArray`1[System.__Canon]>
;* V13 tmp3 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "Inline return value spill temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement]>
-; V14 tmp4 [V14,T07] ( 3, 6 ) ref -> r15 class-hnd exact single-def "dup spill" <<unknown class>>
+; V14 tmp4 [V14,T02] ( 3, 11.88) ref -> r15 class-hnd exact single-def "dup spill" <<unknown class>>
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V16 tmp6 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundStatement]>
-; V17 tmp7 [V17,T10] ( 2, 2 ) ref -> [rbp-0x40] single-def "field V03.array (fldOffset=0x0)" P-INDEP
-; V18 tmp8 [V18,T03] ( 6, 6.54) ref -> r15 single-def "field V04.array (fldOffset=0x0)" P-INDEP
+; V17 tmp7 [V17,T09] ( 2, 2.98) ref -> r12 single-def "field V03.array (fldOffset=0x0)" P-INDEP
+; V18 tmp8 [V18,T05] ( 6, 6.54) ref -> r15 single-def "field V04.array (fldOffset=0x0)" P-INDEP
;* V19 tmp9 [V19 ] ( 0, 0 ) ref -> zero-ref "field V12.array (fldOffset=0x0)" P-INDEP
;* V20 tmp10 [V20 ] ( 0, 0 ) ref -> zero-ref single-def "field V13.array (fldOffset=0x0)" P-INDEP
-; V21 tmp11 [V21,T12] ( 2, 2 ) ref -> r15 single-def "field V16.array (fldOffset=0x0)" P-INDEP
+; V21 tmp11 [V21,T12] ( 2, 3.96) ref -> r15 single-def "field V16.array (fldOffset=0x0)" P-INDEP
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M32747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -40,35 +40,35 @@ G_M32747_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push r13
push r12
push rbx
- sub rsp, 56
- lea rbp, [rsp+0x60]
- mov gword ptr [rbp-0x40], rcx
- ; GC ptr vars +{V17}
+ sub rsp, 40
+ lea rbp, [rsp+0x50]
mov r14, rdi
; gcrRegs +[r14]
mov rbx, rsi
; gcrRegs +[rbx]
+ mov r12, rcx
+ ; gcrRegs +[r12]
mov r15, r8
; gcrRegs +[r15]
mov r13, r9
; gcrRegs +[r13]
- mov r12, gword ptr [rbp+0x10]
- ; gcrRegs +[r12]
- ;; size=39 bbWeight=1 PerfScore 9.75
-G_M32747_IG02: ; bbWeight=1, gcVars=0000000000000400 {V17}, gcrefRegs=F00C {rdx rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov rax, gword ptr [rbp+0x10]
+ ; gcrRegs +[rax]
+ ;; size=38 bbWeight=1 PerfScore 9.00
+G_M32747_IG02: ; bbWeight=1, gcrefRegs=F00D {rax rdx rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
mov r10, rdx
; gcrRegs +[r10]
mov r11d, dword ptr [r15+0x08]
dec r11d
- js SHORT G_M32747_IG06
+ js SHORT G_M32747_IG07
;; size=12 bbWeight=1 PerfScore 3.50
-G_M32747_IG03: ; bbWeight=0.50, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32747_IG03: ; bbWeight=0.50, gcrefRegs=F409 {rax rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
cmp dword ptr [r15+0x08], r11d
- jle SHORT G_M32747_IG07
+ jle SHORT G_M32747_IG08
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M32747_IG04: ; bbWeight=3.96, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M32747_IG04: ; bbWeight=3.96, gcrefRegs=F409 {rax rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
lea rdi, [rsp]
lea rsi, [rbp+0x18]
mov rcx, gword ptr [rsi]
@@ -90,32 +90,40 @@ G_M32747_IG04: ; bbWeight=3.96, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15},
mov rsi, rbx
; gcrRegs +[rsi]
mov rcx, r10
- mov r8, r12
+ mov gword ptr [rbp+0x10], rax
+ mov r8, rax
; gcrRegs +[r8]
mov r9, r13
; gcrRegs +[r9]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi rdi r8-r10] +[rax]
+ ; gcrRegs -[rcx rdx rsi rdi r8-r10]
mov r11d, dword ptr [rbp-0x2C]
dec r11d
mov r10, rax
; gcrRegs +[r10]
- jns SHORT G_M32747_IG04
- ;; size=86 bbWeight=3.96 PerfScore 75.24
-G_M32747_IG05: ; bbWeight=1, gcrefRegs=0408 {rbx r10}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rax r12-r15]
+ jns SHORT G_M32747_IG06
+ ;; size=90 bbWeight=3.96 PerfScore 79.20
+G_M32747_IG05: ; bbWeight=1.98, gcrefRegs=1408 {rbx r10 r12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax r13-r15]
mov gword ptr [rbp-0x38], r10
; GC ptr vars +{V08}
- jmp SHORT G_M32747_IG08
- ;; size=6 bbWeight=1 PerfScore 3.00
-G_M32747_IG06: ; bbWeight=0.50, gcrefRegs=0408 {rbx r10}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M32747_IG09
+ ;; size=6 bbWeight=1.98 PerfScore 5.94
+G_M32747_IG06: ; bbWeight=1.98, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[r13-r15]
; GC ptr vars -{V08}
+ mov rax, gword ptr [rbp+0x10]
+ ; gcrRegs +[rax]
+ jmp SHORT G_M32747_IG04
+ ;; size=6 bbWeight=1.98 PerfScore 5.94
+G_M32747_IG07: ; bbWeight=0.50, gcrefRegs=1408 {rbx r10 r12}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax r13-r15]
mov gword ptr [rbp-0x38], r10
; GC ptr vars +{V08}
- jmp SHORT G_M32747_IG08
+ jmp SHORT G_M32747_IG09
;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M32747_IG07: ; bbWeight=0.04, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r12-r15]
+G_M32747_IG08: ; bbWeight=0.04, gcrefRegs=F409 {rax rbx r10 r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rax r13-r15]
; GC ptr vars -{V08}
lea rdi, [rsp]
lea rsi, [rbp+0x18]
@@ -130,7 +138,7 @@ G_M32747_IG07: ; bbWeight=0.04, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15},
add rdi, 8
movsq
cmp r11d, dword ptr [r15+0x08]
- jae G_M32747_IG11
+ jae G_M32747_IG12
mov dword ptr [rbp-0x2C], r11d
mov edx, r11d
mov rdx, gword ptr [r15+8*rdx+0x10]
@@ -140,21 +148,23 @@ G_M32747_IG07: ; bbWeight=0.04, gcrefRegs=F408 {rbx r10 r12 r13 r14 r15},
mov rsi, rbx
; gcrRegs +[rsi]
mov rcx, r10
- mov r8, r12
+ mov gword ptr [rbp+0x10], rax
+ mov r8, rax
; gcrRegs +[r8]
mov r9, r13
; gcrRegs +[r9]
call [<unknown method>]
- ; gcrRegs -[rcx rdx rsi rdi r8-r10] +[rax]
+ ; gcrRegs -[rcx rdx rsi rdi r8-r10]
mov gword ptr [rbp-0x38], rax
; GC ptr vars +{V08}
mov edi, dword ptr [rbp-0x2C]
dec edi
mov r11d, edi
- jns SHORT G_M32747_IG10
- ;; size=98 bbWeight=0.04 PerfScore 0.96
-G_M32747_IG08: ; bbWeight=1, gcVars=0000000000000402 {V08 V17}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax r12-r15]
+ mov rax, gword ptr [rbp+0x10]
+ jns SHORT G_M32747_IG11
+ ;; size=106 bbWeight=0.04 PerfScore 1.04
+G_M32747_IG09: ; bbWeight=1.98, gcVars=0000000000000008 {V08}, gcrefRegs=1008 {rbx r12}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax r13-r15]
mov rdi, 0xD1FFAB1E ; <unknown class>
mov esi, 1
call CORINFO_HELP_NEWARR_1_OBJ
@@ -178,19 +188,18 @@ G_M32747_IG08: ; bbWeight=1, gcVars=0000000000000402 {V08 V17}, gcrefRegs
; gcrRegs +[rdi]
mov rsi, rbx
; gcrRegs +[rsi]
- mov rdx, gword ptr [rbp-0x40]
+ mov rdx, r12
; gcrRegs +[rdx]
mov rcx, r15
; gcrRegs +[rcx]
xor r8d, r8d
- ; GC ptr vars -{V17}
call [<unknown method>]
- ; gcrRegs -[rax rcx rdx rbx rsi rdi r15]
+ ; gcrRegs -[rax rcx rdx rbx rsi rdi r12 r15]
mov rax, r14
; gcrRegs +[rax]
- ;; size=79 bbWeight=1 PerfScore 11.00
-G_M32747_IG09: ; bbWeight=1, epilog, nogc, extend
- add rsp, 56
+ ;; size=78 bbWeight=1.98 PerfScore 20.29
+G_M32747_IG10: ; bbWeight=1.98, epilog, nogc, extend
+ add rsp, 40
pop rbx
pop r12
pop r13
@@ -198,22 +207,22 @@ G_M32747_IG09: ; bbWeight=1, epilog, nogc, extend
pop r15
pop rbp
ret
- ;; size=15 bbWeight=1 PerfScore 4.25
-G_M32747_IG10: ; bbWeight=0.02, gcVars=0000000000000402 {V08 V17}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rax] +[rbx r12-r13 r15]
- ; GC ptr vars +{V01 V08 V17}
+ ;; size=15 bbWeight=1.98 PerfScore 8.42
+G_M32747_IG11: ; bbWeight=0.02, gcVars=0000000000000008 {V08}, gcrefRegs=F009 {rax rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rbx r12-r13 r15]
+ ; GC ptr vars +{V08}
mov r10, gword ptr [rbp-0x38]
; gcrRegs +[r10]
- jmp G_M32747_IG07
+ jmp G_M32747_IG08
;; size=9 bbWeight=0.02 PerfScore 0.06
-G_M32747_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[rbx r10 r12-r15]
- ; GC ptr vars -{V01 V08 V17}
+G_M32747_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax rbx r10 r12-r15]
+ ; GC ptr vars -{V08}
call CORINFO_HELP_RNGCHKFAIL
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 362, prolog size 19, PerfScore 111.26, instruction count 104, allocated bytes for code 362 (MethodHash=1f468014) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
+; Total bytes of code 378, prolog size 19, PerfScore 136.89, instruction count 109, allocated bytes for code 378 (MethodHash=1f468014) for method Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
; ============================================================
Unwind Info:
@@ -226,7 +235,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
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)
smoke_tests.nativeaot.linux.x64.checked.mch
-5 (-2.16%) : 3162.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CanInstantiationsShareCode(System.RuntimeTypeHandle[],System.RuntimeTypeHandle[],int):ubyte:this (FullOpts)
@@ -11,7 +11,7 @@
; V01 arg1 [V01,T07] ( 4, 6.96) ref -> r14 class-hnd single-def <System.RuntimeTypeHandle[]>
; V02 arg2 [V02,T05] ( 4, 6.96) ref -> r15 class-hnd single-def <System.RuntimeTypeHandle[]>
; V03 arg3 [V03,T03] ( 4, 9.92) int -> rbx single-def
-; V04 loc0 [V04,T11] ( 3, 1.50) ubyte -> r12
+; V04 loc0 [V04,T11] ( 3, 2.98) ubyte -> r12
; V05 loc1 [V05,T06] ( 4, 8.92) ref -> [rbp-0x50] class-hnd exact spill-single-def <Internal.Runtime.TypeLoader.TypeLoaderTypeSystemContext>
; V06 loc2 [V06,T00] ( 5, 16.34) int -> [rbp-0x2C]
; V07 loc3 [V07,T08] ( 2, 7.92) ref -> [rbp-0x58] class-hnd spill-single-def <Internal.TypeSystem.TypeDesc>
@@ -60,7 +60,7 @@ G_M9947_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M9947_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M9947_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r14-r15]
mov r12d, 1
call <unknown method>
@@ -69,8 +69,8 @@ G_M9947_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=C000
; GC ptr vars +{V05}
xor ecx, ecx
test r13d, r13d
- jle G_M9947_IG09
- ;; size=26 bbWeight=0.50 PerfScore 1.88
+ jle SHORT G_M9947_IG08
+ ;; size=22 bbWeight=0.50 PerfScore 1.88
G_M9947_IG06: ; bbWeight=3.96, gcVars=0000000000000040 {V05}, gcrefRegs=C001 {rax r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov dword ptr [rbp-0x2C], ecx
mov edx, ecx
@@ -114,7 +114,7 @@ G_M9947_IG06: ; bbWeight=3.96, gcVars=0000000000000040 {V05}, gcrefRegs=C
call Internal.TypeSystem.TypeDesc:op_Inequality(Internal.TypeSystem.TypeDesc,Internal.TypeSystem.TypeDesc):ubyte
; gcrRegs -[rax rsi rdi]
test eax, eax
- jne SHORT G_M9947_IG08
+ jne SHORT G_M9947_IG09
mov ecx, dword ptr [rbp-0x2C]
inc ecx
cmp r13d, ecx
@@ -124,23 +124,24 @@ G_M9947_IG06: ; bbWeight=3.96, gcVars=0000000000000040 {V05}, gcrefRegs=C
;; size=116 bbWeight=3.96 PerfScore 120.78
G_M9947_IG07: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14-r15]
- jmp SHORT G_M9947_IG09
+ jmp SHORT G_M9947_IG10
;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M9947_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M9947_IG08: ; bbWeight=0.25, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M9947_IG10
+ ;; size=2 bbWeight=0.25 PerfScore 0.50
+G_M9947_IG09: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
xor r12d, r12d
- mov rax, gword ptr [rbp-0x50]
- ; gcrRegs +[rax]
- ;; size=7 bbWeight=0.50 PerfScore 0.62
-G_M9947_IG09: ; bbWeight=0.50, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref
- mov rdi, rax
+ ;; size=3 bbWeight=1.98 PerfScore 0.49
+G_M9947_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rdi, gword ptr [rbp-0x50]
; gcrRegs +[rdi]
; GC ptr vars -{V05}
call Internal.Runtime.TypeLoader.TypeSystemContextFactory:Recycle(Internal.TypeSystem.TypeSystemContext)
- ; gcrRegs -[rax rdi]
+ ; gcrRegs -[rdi]
mov eax, r12d
- ;; size=11 bbWeight=0.50 PerfScore 0.75
-G_M9947_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=12 bbWeight=0.50 PerfScore 1.12
+G_M9947_IG11: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72
pop rbx
pop r12
@@ -151,7 +152,7 @@ G_M9947_IG10: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 231, prolog size 19, PerfScore 142.90, instruction count 75, allocated bytes for code 231 (MethodHash=43e7d924) for method Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CanInstantiationsShareCode(System.RuntimeTypeHandle[],System.RuntimeTypeHandle[],int):ubyte:this (FullOpts)
+; Total bytes of code 226, prolog size 19, PerfScore 143.65, instruction count 75, allocated bytes for code 226 (MethodHash=43e7d924) for method Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CanInstantiationsShareCode(System.RuntimeTypeHandle[],System.RuntimeTypeHandle[],int):ubyte:this (FullOpts)
; ============================================================
Cfi Info:
-17 (-0.93%) : 2376.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -10,71 +10,71 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.DefaultBinder>
;* V01 arg1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
; V02 arg2 [V02,T42] ( 5, 5 ) ref -> rdx class-hnd single-def <System.Reflection.PropertyInfo[]>
-; V03 arg3 [V03,T18] ( 8, 14 ) ref -> r15 class-hnd single-def <System.Type>
+; V03 arg3 [V03,T19] ( 8, 14 ) ref -> r15 class-hnd single-def <System.Type>
; V04 arg4 [V04,T05] ( 21, 54.16) ref -> rbx class-hnd single-def <System.Type[]>
;* V05 arg5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.ParameterModifier[]>
-; V06 loc0 [V06,T10] ( 22, 31 ) ref -> r14 class-hnd single-def <System.Reflection.PropertyInfo[]>
-; V07 loc1 [V07,T03] ( 37, 66.08) int -> [rbp-0x2C]
-; V08 loc2 [V08,T02] ( 16, 69.64) int -> r13
-; V09 loc3 [V09,T35] ( 10, 11.50) int -> [rbp-0x30]
-; V10 loc4 [V10,T12] ( 12, 29.25) int -> [rbp-0x34] spill-single-def
-; V11 loc5 [V11,T24] ( 13, 15.50) int -> registers
-; V12 loc6 [V12,T47] ( 6, 5 ) ubyte -> [rbp-0x38]
+; V06 loc0 [V06,T07] ( 22, 32.48) ref -> r14 class-hnd single-def <System.Reflection.PropertyInfo[]>
+; V07 loc1 [V07,T03] ( 37, 67.56) int -> [rbp-0x2C]
+; V08 loc2 [V08,T02] ( 16, 71.60) int -> r13
+; V09 loc3 [V09,T26] ( 10, 12.98) int -> [rbp-0x30]
+; V10 loc4 [V10,T11] ( 12, 31.21) int -> [rbp-0x34] spill-single-def
+; V11 loc5 [V11,T17] ( 13, 18.46) int -> registers
+; V12 loc6 [V12,T43] ( 6, 6.48) ubyte -> [rbp-0x38]
; V13 loc7 [V13,T36] ( 9, 8.79) ref -> [rbp-0x60] class-hnd exact spill-single-def <<unknown class>>
-; V14 loc8 [V14,T49] ( 3, 1 ) ref -> rax class-hnd exact single-def <<unknown class>>
+; V14 loc8 [V14,T48] ( 3, 2.48) ref -> rax class-hnd exact single-def <<unknown class>>
;* V15 loc9 [V15,T50] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type[]>
-; V16 loc10 [V16,T17] ( 5, 16.50) int -> rdi
+; V16 loc10 [V16,T18] ( 5, 16.50) int -> rdi
;* V17 loc11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
; V18 loc12 [V18,T16] ( 5, 20.16) ref -> [rbp-0x68] class-hnd spill-single-def <<unknown class>>
; V19 loc13 [V19,T01] ( 16, 72.16) ref -> [rbp-0x70] class-hnd <System.Type>
-; V20 loc14 [V20,T11] ( 8, 28 ) ref -> [rbp-0x78] class-hnd exact <<unknown class>>
+; V20 loc14 [V20,T12] ( 8, 28 ) ref -> [rbp-0x78] class-hnd exact <<unknown class>>
; V21 loc15 [V21,T41] ( 4, 7 ) ref -> [rbp-0x80] class-hnd exact spill-single-def <<unknown class>>
; V22 loc16 [V22,T15] ( 14, 22 ) int -> rax
; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V24 tmp1 [V24,T51] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V25 tmp2 [V25,T48] ( 3, 2 ) int -> rax
-; V26 tmp3 [V26,T23] ( 4, 16 ) int -> r12 "impSpillLclRefs"
+; V25 tmp2 [V25,T49] ( 3, 2 ) int -> rax
+; V26 tmp3 [V26,T24] ( 4, 16 ) int -> r12 "impSpillLclRefs"
; V27 tmp4 [V27,T38] ( 2, 8 ) ref -> rsi class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
; V28 tmp5 [V28,T39] ( 2, 8 ) ref -> rax "CASTCLASS eval op1"
;* V29 tmp6 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <<unknown class>>
-; V30 tmp7 [V30,T07] ( 4, 32 ) ref -> registers "CASTCLASS eval op1"
+; V30 tmp7 [V30,T08] ( 4, 32 ) ref -> registers "CASTCLASS eval op1"
;* V31 tmp8 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <<unknown class>>
;* V32 tmp9 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V33 tmp10 [V33 ] ( 0, 0 ) struct (16) zero-ref "non-inline candidate call" <System.ReadOnlySpan`1[System.__Canon]>
;* V34 tmp11 [V34 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.__Canon]>
;* V35 tmp12 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V36 tmp13 [V36,T19] ( 8, 16 ) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
+; V36 tmp13 [V36,T20] ( 8, 16 ) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
;* V37 tmp14 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V38 tmp15 [V38,T20] ( 8, 16 ) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
+; V38 tmp15 [V38,T21] ( 8, 16 ) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
;* V39 tmp16 [V39 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V40 tmp17 [V40 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp18 [V41 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V42 tmp19 [V42 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp20 [V43 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
-; V44 tmp21 [V44,T43] ( 6, 6 ) byref -> [rbp-0x88] "field V37._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp22 [V45,T45] ( 6, 6 ) int -> [rbp-0x3C] "field V37._length (fldOffset=0x8)" P-INDEP
-; V46 tmp23 [V46,T44] ( 6, 6 ) byref -> r8 "field V39._reference (fldOffset=0x0)" P-INDEP
-; V47 tmp24 [V47,T46] ( 6, 6 ) int -> r9 "field V39._length (fldOffset=0x8)" P-INDEP
-; V48 tmp25 [V48,T28] ( 3, 12 ) ref -> rdi "argument with side effect"
+; V44 tmp21 [V44,T44] ( 6, 6 ) byref -> [rbp-0x88] "field V37._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp22 [V45,T46] ( 6, 6 ) int -> [rbp-0x3C] "field V37._length (fldOffset=0x8)" P-INDEP
+; V46 tmp23 [V46,T45] ( 6, 6 ) byref -> r8 "field V39._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp24 [V47,T47] ( 6, 6 ) int -> r9 "field V39._length (fldOffset=0x8)" P-INDEP
+; V48 tmp25 [V48,T29] ( 3, 12 ) ref -> rdi "argument with side effect"
; V49 tmp26 [V49,T00] ( 6, 96 ) ref -> rdi "argument with side effect"
; V50 tmp27 [V50,T06] ( 6, 48 ) ref -> rdi "argument with side effect"
-; V51 tmp28 [V51,T08] ( 4, 32 ) ref -> rax "argument with side effect"
-; V52 tmp29 [V52,T29] ( 3, 12 ) ref -> rdi "argument with side effect"
-; V53 tmp30 [V53,T30] ( 3, 12 ) ref -> rax "argument with side effect"
-; V54 tmp31 [V54,T31] ( 3, 12 ) ref -> rdi "argument with side effect"
-; V55 tmp32 [V55,T32] ( 3, 12 ) ref -> rax "argument with side effect"
-; V56 tmp33 [V56,T33] ( 3, 12 ) ref -> rdi "argument with side effect"
-; V57 tmp34 [V57,T34] ( 3, 12 ) ref -> rax "argument with side effect"
+; V51 tmp28 [V51,T09] ( 4, 32 ) ref -> rax "argument with side effect"
+; V52 tmp29 [V52,T30] ( 3, 12 ) ref -> rdi "argument with side effect"
+; V53 tmp30 [V53,T31] ( 3, 12 ) ref -> rax "argument with side effect"
+; V54 tmp31 [V54,T32] ( 3, 12 ) ref -> rdi "argument with side effect"
+; V55 tmp32 [V55,T33] ( 3, 12 ) ref -> rax "argument with side effect"
+; V56 tmp33 [V56,T34] ( 3, 12 ) ref -> rdi "argument with side effect"
+; V57 tmp34 [V57,T35] ( 3, 12 ) ref -> rax "argument with side effect"
; V58 tmp35 [V58,T40] ( 2, 8 ) ref -> rsi "argument with side effect"
; V59 tmp36 [V59,T13] ( 6, 24 ) ref -> rdi "argument with side effect"
; V60 tmp37 [V60,T14] ( 6, 24 ) ref -> rdi "argument with side effect"
-; V61 tmp38 [V61,T21] ( 4, 16 ) ref -> [rbp-0x90] "argument with side effect"
-; V62 tmp39 [V62,T22] ( 4, 16 ) ref -> rax "argument with side effect"
-; V63 tmp40 [V63,T26] ( 6, 12 ) ref -> rdi "argument with side effect"
-; V64 tmp41 [V64,T27] ( 6, 12 ) ref -> rdi "argument with side effect"
+; V61 tmp38 [V61,T22] ( 4, 16 ) ref -> [rbp-0x90] "argument with side effect"
+; V62 tmp39 [V62,T23] ( 4, 16 ) ref -> rax "argument with side effect"
+; V63 tmp40 [V63,T27] ( 6, 12 ) ref -> rdi "argument with side effect"
+; V64 tmp41 [V64,T28] ( 6, 12 ) ref -> rdi "argument with side effect"
; V65 tmp42 [V65,T37] ( 4, 8 ) ref -> rdi "argument with side effect"
-; V66 cse0 [V66,T09] ( 4, 31.68) long -> [rbp-0x48] spill-single-def "CSE - moderate"
-; V67 cse1 [V67,T25] ( 10, 13.29) int -> [rbp-0x4C] spill-single-def "CSE - moderate"
+; V66 cse0 [V66,T10] ( 4, 31.68) long -> [rbp-0x48] spill-single-def "CSE - moderate"
+; V67 cse1 [V67,T25] ( 10, 14.77) int -> [rbp-0x4C] spill-single-def "CSE - moderate"
; V68 cse2 [V68,T04] ( 5, 63.36) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 136
@@ -106,16 +106,16 @@ G_M58711_IG03: ; bbWeight=0.50, gcrefRegs=800C {rdx rbx r15}, byrefRegs=0
G_M58711_IG04: ; bbWeight=4, gcrefRegs=800C {rdx rbx r15}, byrefRegs=0000 {}, byref, isz
mov eax, edi
cmp gword ptr [rbx+8*rax+0x10], 0
- je G_M58711_IG85
+ je G_M58711_IG83
inc edi
cmp dword ptr [rbx+0x08], edi
jg SHORT G_M58711_IG04
;; size=21 bbWeight=4 PerfScore 34.00
G_M58711_IG05: ; bbWeight=1, gcrefRegs=800C {rdx rbx r15}, byrefRegs=0000 {}, byref, isz
test rdx, rdx
- je G_M58711_IG84
+ je G_M58711_IG82
cmp dword ptr [rdx+0x08], 0
- je G_M58711_IG84
+ je G_M58711_IG82
mov rdi, rdx
; gcrRegs +[rdi]
call <unknown method>
@@ -142,11 +142,11 @@ G_M58711_IG08: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov edx, dword ptr [r14+0x08]
mov dword ptr [rbp-0x4C], edx
test edx, edx
- jle G_M58711_IG19
+ jle G_M58711_IG20
;; size=20 bbWeight=1 PerfScore 5.50
G_M58711_IG09: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
test rbx, rbx
- je G_M58711_IG18
+ je G_M58711_IG19
;; size=9 bbWeight=4 PerfScore 5.00
G_M58711_IG10: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov dword ptr [rbp-0x2C], ecx
@@ -161,14 +161,14 @@ G_M58711_IG10: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; GC ptr vars +{V18}
mov ecx, dword ptr [rbp-0x34]
cmp dword ptr [rax+0x08], ecx
- jne G_M58711_IG38
+ jne G_M58711_IG18
xor r13d, r13d
test ecx, ecx
jle G_M58711_IG17
;; size=43 bbWeight=2 PerfScore 31.50
G_M58711_IG11: ; bbWeight=1, gcVars=0000000000010000 {V18}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
cmp dword ptr [rbx+0x08], ecx
- jl G_M58711_IG23
+ jl G_M58711_IG24
;; size=9 bbWeight=1 PerfScore 4.00
G_M58711_IG12: ; bbWeight=15.84, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
mov edx, r13d
@@ -190,7 +190,7 @@ G_M58711_IG12: ; bbWeight=15.84, gcrefRegs=C009 {rax rbx r14 r15}, byrefR
; gcrRegs -[rax rsi rdi]
; gcr arg pop 0
test eax, eax
- jne G_M58711_IG21
+ jne G_M58711_IG22
;; size=47 bbWeight=15.84 PerfScore 233.64
G_M58711_IG13: ; bbWeight=7.92, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
lea rdi, gword ptr [(reloc)]
@@ -198,7 +198,7 @@ G_M58711_IG13: ; bbWeight=7.92, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
mov rax, gword ptr [rbp-0x70]
; gcrRegs +[rax]
cmp rax, rdi
- je G_M58711_IG21
+ je G_M58711_IG22
mov rdi, rax
mov gword ptr [rbp-0x70], rax
mov rcx, qword ptr [rax]
@@ -207,7 +207,7 @@ G_M58711_IG13: ; bbWeight=7.92, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs -[rax rdi]
; gcr arg pop 0
test eax, eax
- je SHORT G_M58711_IG20
+ je SHORT G_M58711_IG21
mov rax, qword ptr [rbp-0x58]
mov rdi, gword ptr [rbx+8*rax+0x10]
; gcrRegs +[rdi]
@@ -218,7 +218,7 @@ G_M58711_IG13: ; bbWeight=7.92, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
mov rcx, rax
; gcrRegs +[rcx]
test rcx, rcx
- je G_M58711_IG29
+ je G_M58711_IG30
;; size=74 bbWeight=7.92 PerfScore 164.34
G_M58711_IG14: ; bbWeight=3.96, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
@@ -226,9 +226,9 @@ G_M58711_IG14: ; bbWeight=3.96, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRe
mov gword ptr [rbp-0x78], rcx
; GC ptr vars +{V20}
cmp qword ptr [rcx], rdi
- jne G_M58711_IG29
+ jne G_M58711_IG30
;; size=20 bbWeight=3.96 PerfScore 21.78
-G_M58711_IG15: ; bbWeight=7.92, gcVars=0000000000010802 {V18 V19 V20}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58711_IG15: ; bbWeight=7.92, gcVars=0000000000011002 {V18 V19 V20}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx]
mov rdi, gword ptr [rbp-0x70]
; gcrRegs +[rdi]
@@ -246,25 +246,27 @@ G_M58711_IG15: ; bbWeight=7.92, gcVars=0000000000010802 {V18 V19 V20}, gc
; gcrRegs -[rax rsi rdi]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M58711_IG21
+ jne SHORT G_M58711_IG22
;; size=30 bbWeight=7.92 PerfScore 67.32
-G_M58711_IG16: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M58711_IG16: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V18}
- jmp G_M58711_IG29
- ;; size=5 bbWeight=2 PerfScore 4.00
+ jmp G_M58711_IG30
+ ;; size=5 bbWeight=3.96 PerfScore 7.92
G_M58711_IG17: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- jmp G_M58711_IG29
+ jmp G_M58711_IG30
;; size=5 bbWeight=1 PerfScore 2.00
-G_M58711_IG18: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M58711_IG18: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ jmp G_M58711_IG37
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M58711_IG19: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov dword ptr [rbp-0x2C], ecx
- jmp G_M58711_IG29
+ jmp G_M58711_IG30
;; size=8 bbWeight=2 PerfScore 6.00
-G_M58711_IG19: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- mov ecx, dword ptr [rbp-0x34]
- mov r8d, dword ptr [rbp-0x4C]
- jmp G_M58711_IG39
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M58711_IG20: ; bbWeight=7.92, gcVars=0000000000010002 {V18 V19}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M58711_IG20: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ mov ecx, dword ptr [rbp-0x4C]
+ jmp G_M58711_IG38
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M58711_IG21: ; bbWeight=7.92, gcVars=0000000000010002 {V18 V19}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V16 V18 V19}
mov rsi, qword ptr [rbp-0x58]
mov rsi, gword ptr [rbx+8*rsi+0x10]
@@ -277,25 +279,25 @@ G_M58711_IG20: ; bbWeight=7.92, gcVars=0000000000010002 {V18 V19}, gcrefR
; gcrRegs -[rsi rdi]
; gcr arg pop 0
test eax, eax
...
-17 (-0.93%) : 21911.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
@@ -10,72 +10,72 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.DefaultBinder>
;* V01 arg1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
; V02 arg2 [V02,T42] ( 5, 5 ) ref -> rdx class-hnd single-def <System.Reflection.PropertyInfo[]>
-; V03 arg3 [V03,T18] ( 8, 14 ) ref -> r15 class-hnd single-def <System.Type>
+; V03 arg3 [V03,T19] ( 8, 14 ) ref -> r15 class-hnd single-def <System.Type>
; V04 arg4 [V04,T05] ( 21, 54.16) ref -> rbx class-hnd single-def <System.Type[]>
;* V05 arg5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.ParameterModifier[]>
-; V06 loc0 [V06,T10] ( 22, 31 ) ref -> r14 class-hnd single-def <System.Reflection.PropertyInfo[]>
-; V07 loc1 [V07,T03] ( 37, 66.08) int -> [rbp-0x2C]
-; V08 loc2 [V08,T02] ( 16, 69.64) int -> r13
-; V09 loc3 [V09,T35] ( 10, 11.50) int -> [rbp-0x30]
-; V10 loc4 [V10,T12] ( 12, 29.25) int -> [rbp-0x34] spill-single-def
-; V11 loc5 [V11,T24] ( 13, 15.50) int -> registers
-; V12 loc6 [V12,T47] ( 6, 5 ) ubyte -> [rbp-0x38]
+; V06 loc0 [V06,T07] ( 22, 32.48) ref -> r14 class-hnd single-def <System.Reflection.PropertyInfo[]>
+; V07 loc1 [V07,T03] ( 37, 67.56) int -> [rbp-0x2C]
+; V08 loc2 [V08,T02] ( 16, 71.60) int -> r13
+; V09 loc3 [V09,T26] ( 10, 12.98) int -> [rbp-0x30]
+; V10 loc4 [V10,T11] ( 12, 31.21) int -> [rbp-0x34] spill-single-def
+; V11 loc5 [V11,T17] ( 13, 18.46) int -> registers
+; V12 loc6 [V12,T43] ( 6, 6.48) ubyte -> [rbp-0x38]
; V13 loc7 [V13,T36] ( 9, 8.79) ref -> [rbp-0x60] class-hnd exact spill-single-def <<unknown class>>
-; V14 loc8 [V14,T49] ( 3, 1 ) ref -> rax class-hnd exact single-def <<unknown class>>
+; V14 loc8 [V14,T48] ( 3, 2.48) ref -> rax class-hnd exact single-def <<unknown class>>
;* V15 loc9 [V15,T50] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Type[]>
-; V16 loc10 [V16,T17] ( 5, 16.50) int -> rdi
+; V16 loc10 [V16,T18] ( 5, 16.50) int -> rdi
;* V17 loc11 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type>
; V18 loc12 [V18,T16] ( 5, 20.16) ref -> [rbp-0x68] class-hnd spill-single-def <<unknown class>>
; V19 loc13 [V19,T01] ( 16, 72.16) ref -> [rbp-0x70] class-hnd <System.Type>
-; V20 loc14 [V20,T11] ( 8, 28 ) ref -> [rbp-0x78] class-hnd exact <<unknown class>>
+; V20 loc14 [V20,T12] ( 8, 28 ) ref -> [rbp-0x78] class-hnd exact <<unknown class>>
; V21 loc15 [V21,T41] ( 4, 7 ) ref -> [rbp-0x80] class-hnd exact spill-single-def <<unknown class>>
; V22 loc16 [V22,T15] ( 14, 22 ) int -> rax
; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V24 tmp1 [V24,T51] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V25 tmp2 [V25,T48] ( 3, 2 ) int -> rax
-; V26 tmp3 [V26,T23] ( 4, 16 ) int -> r12 "impSpillLclRefs"
+; V25 tmp2 [V25,T49] ( 3, 2 ) int -> rax
+; V26 tmp3 [V26,T24] ( 4, 16 ) int -> r12 "impSpillLclRefs"
; V27 tmp4 [V27,T38] ( 2, 8 ) ref -> rsi class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
; V28 tmp5 [V28,T39] ( 2, 8 ) ref -> rax "CASTCLASS eval op1"
;* V29 tmp6 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <<unknown class>>
-; V30 tmp7 [V30,T07] ( 4, 32 ) ref -> registers "CASTCLASS eval op1"
+; V30 tmp7 [V30,T08] ( 4, 32 ) ref -> registers "CASTCLASS eval op1"
;* V31 tmp8 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "spilling QMark2" <<unknown class>>
;* V32 tmp9 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <System.Type>
;* V33 tmp10 [V33 ] ( 0, 0 ) struct (16) zero-ref "non-inline candidate call" <System.ReadOnlySpan`1[System.__Canon]>
;* V34 tmp11 [V34 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[System.__Canon]>
;* V35 tmp12 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V36 tmp13 [V36,T19] ( 8, 16 ) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
+; V36 tmp13 [V36,T20] ( 8, 16 ) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
;* V37 tmp14 [V37 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V38 tmp15 [V38,T20] ( 8, 16 ) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
+; V38 tmp15 [V38,T21] ( 8, 16 ) ref -> rax class-hnd "Inlining Arg" <<unknown class>>
;* V39 tmp16 [V39 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V40 tmp17 [V40 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP
;* V41 tmp18 [V41 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
;* V42 tmp19 [V42 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-INDEP
;* V43 tmp20 [V43 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
-; V44 tmp21 [V44,T43] ( 6, 6 ) byref -> [rbp-0x88] "field V37._reference (fldOffset=0x0)" P-INDEP
-; V45 tmp22 [V45,T45] ( 6, 6 ) int -> [rbp-0x3C] "field V37._length (fldOffset=0x8)" P-INDEP
-; V46 tmp23 [V46,T44] ( 6, 6 ) byref -> r8 "field V39._reference (fldOffset=0x0)" P-INDEP
-; V47 tmp24 [V47,T46] ( 6, 6 ) int -> r9 "field V39._length (fldOffset=0x8)" P-INDEP
-; V48 tmp25 [V48,T28] ( 3, 12 ) ref -> rdi "argument with side effect"
+; V44 tmp21 [V44,T44] ( 6, 6 ) byref -> [rbp-0x88] "field V37._reference (fldOffset=0x0)" P-INDEP
+; V45 tmp22 [V45,T46] ( 6, 6 ) int -> [rbp-0x3C] "field V37._length (fldOffset=0x8)" P-INDEP
+; V46 tmp23 [V46,T45] ( 6, 6 ) byref -> r8 "field V39._reference (fldOffset=0x0)" P-INDEP
+; V47 tmp24 [V47,T47] ( 6, 6 ) int -> r9 "field V39._length (fldOffset=0x8)" P-INDEP
+; V48 tmp25 [V48,T29] ( 3, 12 ) ref -> rdi "argument with side effect"
; V49 tmp26 [V49,T00] ( 6, 96 ) ref -> rdi "argument with side effect"
; V50 tmp27 [V50,T06] ( 6, 48 ) ref -> rdi "argument with side effect"
-; V51 tmp28 [V51,T08] ( 4, 32 ) ref -> rax "argument with side effect"
-; V52 tmp29 [V52,T29] ( 3, 12 ) ref -> rdi "argument with side effect"
-; V53 tmp30 [V53,T30] ( 3, 12 ) ref -> rax "argument with side effect"
-; V54 tmp31 [V54,T31] ( 3, 12 ) ref -> rdi "argument with side effect"
-; V55 tmp32 [V55,T32] ( 3, 12 ) ref -> rax "argument with side effect"
-; V56 tmp33 [V56,T33] ( 3, 12 ) ref -> rdi "argument with side effect"
-; V57 tmp34 [V57,T34] ( 3, 12 ) ref -> rax "argument with side effect"
+; V51 tmp28 [V51,T09] ( 4, 32 ) ref -> rax "argument with side effect"
+; V52 tmp29 [V52,T30] ( 3, 12 ) ref -> rdi "argument with side effect"
+; V53 tmp30 [V53,T31] ( 3, 12 ) ref -> rax "argument with side effect"
+; V54 tmp31 [V54,T32] ( 3, 12 ) ref -> rdi "argument with side effect"
+; V55 tmp32 [V55,T33] ( 3, 12 ) ref -> rax "argument with side effect"
+; V56 tmp33 [V56,T34] ( 3, 12 ) ref -> rdi "argument with side effect"
+; V57 tmp34 [V57,T35] ( 3, 12 ) ref -> rax "argument with side effect"
; V58 tmp35 [V58,T40] ( 2, 8 ) ref -> rsi "argument with side effect"
; V59 tmp36 [V59,T13] ( 6, 24 ) ref -> rdi "argument with side effect"
; V60 tmp37 [V60,T14] ( 6, 24 ) ref -> rdi "argument with side effect"
-; V61 tmp38 [V61,T21] ( 4, 16 ) ref -> [rbp-0x90] "argument with side effect"
-; V62 tmp39 [V62,T22] ( 4, 16 ) ref -> rax "argument with side effect"
-; V63 tmp40 [V63,T26] ( 6, 12 ) ref -> rdi "argument with side effect"
-; V64 tmp41 [V64,T27] ( 6, 12 ) ref -> rdi "argument with side effect"
+; V61 tmp38 [V61,T22] ( 4, 16 ) ref -> [rbp-0x90] "argument with side effect"
+; V62 tmp39 [V62,T23] ( 4, 16 ) ref -> rax "argument with side effect"
+; V63 tmp40 [V63,T27] ( 6, 12 ) ref -> rdi "argument with side effect"
+; V64 tmp41 [V64,T28] ( 6, 12 ) ref -> rdi "argument with side effect"
; V65 tmp42 [V65,T37] ( 4, 8 ) ref -> rdi "argument with side effect"
; V66 tmp43 [V66,T52] ( 2, 0 ) ref -> rsi single-def "argument with side effect"
-; V67 cse0 [V67,T09] ( 4, 31.68) long -> [rbp-0x48] spill-single-def "CSE - moderate"
-; V68 cse1 [V68,T25] ( 10, 13.29) int -> [rbp-0x4C] spill-single-def "CSE - moderate"
+; V67 cse0 [V67,T10] ( 4, 31.68) long -> [rbp-0x48] spill-single-def "CSE - moderate"
+; V68 cse1 [V68,T25] ( 10, 14.77) int -> [rbp-0x4C] spill-single-def "CSE - moderate"
; V69 cse2 [V69,T04] ( 5, 63.36) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 136
@@ -107,16 +107,16 @@ G_M58711_IG03: ; bbWeight=0.50, gcrefRegs=800C {rdx rbx r15}, byrefRegs=0
G_M58711_IG04: ; bbWeight=4, gcrefRegs=800C {rdx rbx r15}, byrefRegs=0000 {}, byref, isz
mov eax, edi
cmp gword ptr [rbx+8*rax+0x10], 0
- je G_M58711_IG85
+ je G_M58711_IG83
inc edi
cmp dword ptr [rbx+0x08], edi
jg SHORT G_M58711_IG04
;; size=21 bbWeight=4 PerfScore 34.00
G_M58711_IG05: ; bbWeight=1, gcrefRegs=800C {rdx rbx r15}, byrefRegs=0000 {}, byref, isz
test rdx, rdx
- je G_M58711_IG84
+ je G_M58711_IG82
cmp dword ptr [rdx+0x08], 0
- je G_M58711_IG84
+ je G_M58711_IG82
mov rdi, rdx
; gcrRegs +[rdi]
call <unknown method>
@@ -143,11 +143,11 @@ G_M58711_IG08: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
mov edx, dword ptr [r14+0x08]
mov dword ptr [rbp-0x4C], edx
test edx, edx
- jle G_M58711_IG19
+ jle G_M58711_IG20
;; size=20 bbWeight=1 PerfScore 5.50
G_M58711_IG09: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
test rbx, rbx
- je G_M58711_IG18
+ je G_M58711_IG19
;; size=9 bbWeight=4 PerfScore 5.00
G_M58711_IG10: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov dword ptr [rbp-0x2C], ecx
@@ -162,14 +162,14 @@ G_M58711_IG10: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000
; GC ptr vars +{V18}
mov ecx, dword ptr [rbp-0x34]
cmp dword ptr [rax+0x08], ecx
- jne G_M58711_IG38
+ jne G_M58711_IG18
xor r13d, r13d
test ecx, ecx
jle G_M58711_IG17
;; size=43 bbWeight=2 PerfScore 31.50
G_M58711_IG11: ; bbWeight=1, gcVars=0000000000010000 {V18}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
cmp dword ptr [rbx+0x08], ecx
- jl G_M58711_IG23
+ jl G_M58711_IG24
;; size=9 bbWeight=1 PerfScore 4.00
G_M58711_IG12: ; bbWeight=15.84, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref
mov edx, r13d
@@ -191,7 +191,7 @@ G_M58711_IG12: ; bbWeight=15.84, gcrefRegs=C009 {rax rbx r14 r15}, byrefR
; gcrRegs -[rax rsi rdi]
; gcr arg pop 0
test eax, eax
- jne G_M58711_IG21
+ jne G_M58711_IG22
;; size=47 bbWeight=15.84 PerfScore 233.64
G_M58711_IG13: ; bbWeight=7.92, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
lea rdi, gword ptr [(reloc)]
@@ -199,7 +199,7 @@ G_M58711_IG13: ; bbWeight=7.92, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
mov rax, gword ptr [rbp-0x70]
; gcrRegs +[rax]
cmp rax, rdi
- je G_M58711_IG21
+ je G_M58711_IG22
mov rdi, rax
mov gword ptr [rbp-0x70], rax
mov rcx, qword ptr [rax]
@@ -208,7 +208,7 @@ G_M58711_IG13: ; bbWeight=7.92, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
; gcrRegs -[rax rdi]
; gcr arg pop 0
test eax, eax
- je SHORT G_M58711_IG20
+ je SHORT G_M58711_IG21
mov rax, qword ptr [rbp-0x58]
mov rdi, gword ptr [rbx+8*rax+0x10]
; gcrRegs +[rdi]
@@ -219,7 +219,7 @@ G_M58711_IG13: ; bbWeight=7.92, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0
mov rcx, rax
; gcrRegs +[rcx]
test rcx, rcx
- je G_M58711_IG29
+ je G_M58711_IG30
;; size=74 bbWeight=7.92 PerfScore 164.34
G_M58711_IG14: ; bbWeight=3.96, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
@@ -227,9 +227,9 @@ G_M58711_IG14: ; bbWeight=3.96, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRe
mov gword ptr [rbp-0x78], rcx
; GC ptr vars +{V20}
cmp qword ptr [rcx], rdi
- jne G_M58711_IG29
+ jne G_M58711_IG30
;; size=20 bbWeight=3.96 PerfScore 21.78
-G_M58711_IG15: ; bbWeight=7.92, gcVars=0000000000010802 {V18 V19 V20}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M58711_IG15: ; bbWeight=7.92, gcVars=0000000000011002 {V18 V19 V20}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rcx]
mov rdi, gword ptr [rbp-0x70]
; gcrRegs +[rdi]
@@ -247,25 +247,27 @@ G_M58711_IG15: ; bbWeight=7.92, gcVars=0000000000010802 {V18 V19 V20}, gc
; gcrRegs -[rax rsi rdi]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M58711_IG21
+ jne SHORT G_M58711_IG22
;; size=30 bbWeight=7.92 PerfScore 67.32
-G_M58711_IG16: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M58711_IG16: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V18}
- jmp G_M58711_IG29
- ;; size=5 bbWeight=2 PerfScore 4.00
+ jmp G_M58711_IG30
+ ;; size=5 bbWeight=3.96 PerfScore 7.92
G_M58711_IG17: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- jmp G_M58711_IG29
+ jmp G_M58711_IG30
;; size=5 bbWeight=1 PerfScore 2.00
-G_M58711_IG18: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M58711_IG18: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ jmp G_M58711_IG37
+ ;; size=5 bbWeight=1 PerfScore 2.00
+G_M58711_IG19: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
mov dword ptr [rbp-0x2C], ecx
- jmp G_M58711_IG29
+ jmp G_M58711_IG30
;; size=8 bbWeight=2 PerfScore 6.00
-G_M58711_IG19: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
- mov ecx, dword ptr [rbp-0x34]
- mov r8d, dword ptr [rbp-0x4C]
- jmp G_M58711_IG39
- ;; size=12 bbWeight=0.50 PerfScore 2.00
-G_M58711_IG20: ; bbWeight=7.92, gcVars=0000000000010002 {V18 V19}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M58711_IG20: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+ mov ecx, dword ptr [rbp-0x4C]
+ jmp G_M58711_IG38
+ ;; size=8 bbWeight=0.50 PerfScore 1.50
+G_M58711_IG21: ; bbWeight=7.92, gcVars=0000000000010002 {V18 V19}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V16 V18 V19}
mov rsi, qword ptr [rbp-0x58]
mov rsi, gword ptr [rbx+8*rsi+0x10]
@@ -278,25 +280,25 @@ G_M58711_IG20: ; bbWeight=7.92, gcVars=0000000000010002 {V18 V19}, gcrefR
; gcrRegs -[rsi rdi]
; gcr arg pop 0
...
+2 (+0.51%) : 3157.dasm - Internal.Reflection.Core.Execution.ExecutionEnvironment:GetMethodInvoker(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.Reflection.Runtime.General.QMethodDefinition,System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[],System.Reflection.MemberInfo,byref):Internal.Reflection.Core.Execution.MethodBaseInvoker:this (FullOpts)
@@ -7,27 +7,27 @@
; partially interruptible
; Final local variable assignments
;
-; V00 this [V00,T09] ( 3, 2.50) ref -> r14 this class-hnd exact single-def <Internal.Reflection.Execution.ExecutionEnvironmentImplementation>
-; V01 arg1 [V01,T07] ( 5, 4.50) ref -> r15 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo>
+; V00 this [V00,T09] ( 3, 3.98) ref -> r14 this class-hnd exact single-def <Internal.Reflection.Execution.ExecutionEnvironmentImplementation>
+; V01 arg1 [V01,T08] ( 5, 4.50) ref -> r15 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo>
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.Reflection.Runtime.General.QMethodDefinition>
; V03 arg3 [V03,T03] ( 6, 10.50) ref -> rbx class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[]>
-; V04 arg4 [V04,T10] ( 3, 2.50) ref -> r13 class-hnd single-def <System.Reflection.MemberInfo>
-; V05 arg5 [V05,T14] ( 2, 1.50) byref -> [rbp+0x10] single-def
+; V04 arg4 [V04,T12] ( 3, 2.50) ref -> [rbp-0x48] class-hnd single-def <System.Reflection.MemberInfo>
+; V05 arg5 [V05,T15] ( 2, 1.50) byref -> [rbp+0x10] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) struct ( 8) zero-ref <System.RuntimeTypeHandle>
-; V07 loc1 [V07,T08] ( 6, 5.29) ref -> [rbp-0x48] class-hnd exact spill-single-def <System.RuntimeTypeHandle[]>
-; V08 loc2 [V08,T13] ( 3, 1.50) ref -> r15 class-hnd single-def <Internal.Reflection.Core.Execution.MethodBaseInvoker>
+; V07 loc1 [V07,T07] ( 6, 6.77) ref -> [rbp-0x50] class-hnd exact spill-single-def <System.RuntimeTypeHandle[]>
+; V08 loc2 [V08,T13] ( 3, 4.46) ref -> r15 class-hnd single-def <Internal.Reflection.Core.Execution.MethodBaseInvoker>
; V09 loc3 [V09,T02] ( 5, 16.50) int -> [rbp-0x2C]
; V10 loc4 [V10,T01] ( 11, 16.58) int -> [rbp-0x30]
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Reflection.Runtime.MethodInfos.OpenMethodInvoker>
;* V13 tmp2 [V13 ] ( 0, 0 ) struct ( 8) zero-ref "Strict ordering of exceptions for Array store" <System.RuntimeTypeHandle>
;* V14 tmp3 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Reflection.Runtime.MethodInfos.OpenMethodInvoker>
-; V15 tmp4 [V15,T11] ( 2, 1.50) ref -> r12 single-def "field V02._reader (fldOffset=0x0)" P-INDEP
-; V16 tmp5 [V16,T12] ( 2, 1.50) int -> [rbp-0x34] single-def "field V02._handle (fldOffset=0x8)" P-INDEP
-; V17 tmp6 [V17,T15] ( 2, 1 ) long -> r15 "field V06._value (fldOffset=0x0)" P-INDEP
+; V15 tmp4 [V15,T10] ( 2, 2.98) ref -> r13 single-def "field V02._reader (fldOffset=0x0)" P-INDEP
+; V16 tmp5 [V16,T11] ( 2, 2.98) int -> r12 single-def "field V02._handle (fldOffset=0x8)" P-INDEP
+; V17 tmp6 [V17,T14] ( 2, 2.48) long -> r15 "field V06._value (fldOffset=0x0)" P-INDEP
; V18 tmp7 [V18,T06] ( 4, 8 ) long -> rax "field V13._value (fldOffset=0x0)" P-INDEP
; V19 tmp8 [V19,T00] ( 3, 24 ) ref -> rdi "argument with side effect"
-; V20 cse0 [V20,T05] ( 8, 10.25) int -> [rbp-0x38] "CSE - aggressive"
+; V20 cse0 [V20,T05] ( 8, 10.25) int -> [rbp-0x34] "CSE - aggressive"
; V21 cse1 [V21,T04] ( 3, 11.88) long -> [rbp-0x40] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 40
@@ -41,21 +41,21 @@ G_M64832_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rbx
sub rsp, 40
lea rbp, [rsp+0x50]
- mov dword ptr [rbp-0x34], ecx
+ mov gword ptr [rbp-0x48], r9
+ ; GC ptr vars +{V04}
mov r14, rdi
; gcrRegs +[r14]
mov r15, rsi
; gcrRegs +[r15]
- mov r12, rdx
- ; gcrRegs +[r12]
+ mov r13, rdx
+ ; gcrRegs +[r13]
+ mov r12d, ecx
mov rbx, r8
; gcrRegs +[rbx]
- mov r13, r9
- ; gcrRegs +[r13]
mov rcx, bword ptr [rbp+0x10]
; byrRegs +[rcx]
- ;; size=41 bbWeight=1 PerfScore 10.00
-G_M64832_IG02: ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0002 {rcx}, byref, isz
+ ;; size=42 bbWeight=1 PerfScore 10.00
+G_M64832_IG02: ; bbWeight=1, gcVars=0000000000001000 {V04}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0002 {rcx}, gcvars, byref, isz
xor rdi, rdi
; gcrRegs +[rdi]
mov bword ptr [rbp+0x10], rcx
@@ -68,8 +68,9 @@ G_M64832_IG02: ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefR
test eax, eax
je SHORT G_M64832_IG05
;; size=25 bbWeight=1 PerfScore 8.75
-G_M64832_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r12-r15]
+G_M64832_IG03: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rbx r13-r15]
+ ; GC ptr vars -{V04}
lea rdi, [(reloc)] ; System.Reflection.Runtime.MethodInfos.OpenMethodInvoker
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -85,15 +86,16 @@ G_M64832_IG04: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M64832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax] +[rbx r12-r15]
+G_M64832_IG05: ; bbWeight=0.50, gcVars=0000000000001000 {V04}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rax] +[rbx r13-r15]
+ ; GC ptr vars +{V04}
xor eax, eax
mov ecx, dword ptr [rbx+0x08]
- mov dword ptr [rbp-0x38], ecx
+ mov dword ptr [rbp-0x34], ecx
test ecx, ecx
jle SHORT G_M64832_IG07
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M64832_IG06: ; bbWeight=4, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M64832_IG06: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rbp-0x2C], eax
mov edi, eax
mov rdi, gword ptr [rbx+8*rdi+0x10]
@@ -103,37 +105,37 @@ G_M64832_IG06: ; bbWeight=4, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefR
; gcrRegs -[rdi]
test eax, eax
jne SHORT G_M64832_IG03
- mov eax, dword ptr [rbp-0x38]
+ mov eax, dword ptr [rbp-0x34]
mov edi, dword ptr [rbp-0x2C]
inc edi
- mov dword ptr [rbp-0x38], eax
+ mov dword ptr [rbp-0x34], eax
cmp eax, edi
mov eax, edi
jg SHORT G_M64832_IG06
;; size=40 bbWeight=4 PerfScore 57.00
-G_M64832_IG07: ; bbWeight=0.50, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M64832_IG07: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, r15
; gcrRegs +[rdi]
call System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:get_TypeHandle():System.RuntimeTypeHandle:this
; gcrRegs -[rdi r15]
mov r15, rax
- mov esi, dword ptr [rbp-0x38]
+ mov esi, dword ptr [rbp-0x34]
lea rdi, [(reloc)] ; System.RuntimeTypeHandle[]
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
- mov gword ptr [rbp-0x48], rax
+ mov gword ptr [rbp-0x50], rax
; GC ptr vars +{V07}
xor ecx, ecx
- mov edx, dword ptr [rbp-0x38]
+ mov edx, dword ptr [rbp-0x34]
test edx, edx
jle SHORT G_M64832_IG13
;; size=39 bbWeight=0.50 PerfScore 3.75
-G_M64832_IG08: ; bbWeight=0.25, gcVars=0000000000000100 {V07}, gcrefRegs=7009 {rax rbx r12 r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
- mov dword ptr [rbp-0x38], edx
+G_M64832_IG08: ; bbWeight=0.25, gcVars=0000000000001080 {V04 V07}, gcrefRegs=6009 {rax rbx r13 r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov dword ptr [rbp-0x34], edx
cmp dword ptr [rax+0x08], edx
jl SHORT G_M64832_IG11
;; size=8 bbWeight=0.25 PerfScore 1.25
-G_M64832_IG09: ; bbWeight=3.96, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M64832_IG09: ; bbWeight=3.96, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
mov dword ptr [rbp-0x30], ecx
mov esi, ecx
@@ -143,24 +145,24 @@ G_M64832_IG09: ; bbWeight=3.96, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRe
cmp dword ptr [rdi], edi
call System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:get_TypeHandle():System.RuntimeTypeHandle:this
; gcrRegs -[rdi]
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx]
mov rdi, qword ptr [rbp-0x40]
mov qword ptr [rcx+8*rdi+0x10], rax
mov edi, dword ptr [rbp-0x30]
inc edi
- cmp dword ptr [rbp-0x38], edi
+ cmp dword ptr [rbp-0x34], edi
mov ecx, edi
; gcrRegs -[rcx]
jg SHORT G_M64832_IG09
;; size=46 bbWeight=3.96 PerfScore 62.37
-G_M64832_IG10: ; bbWeight=0.50, gcrefRegs=7000 {r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M64832_IG10: ; bbWeight=1.98, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
- mov rax, gword ptr [rbp-0x48]
+ mov rax, gword ptr [rbp-0x50]
; gcrRegs +[rax]
jmp SHORT G_M64832_IG13
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M64832_IG11: ; bbWeight=0.04, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=1.98 PerfScore 5.94
+G_M64832_IG11: ; bbWeight=0.04, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rbx]
mov dword ptr [rbp-0x30], ecx
mov edi, ecx
@@ -170,28 +172,28 @@ G_M64832_IG11: ; bbWeight=0.04, gcrefRegs=7008 {rbx r12 r13 r14}, byrefRe
call System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:get_TypeHandle():System.RuntimeTypeHandle:this
; gcrRegs -[rdi]
mov edx, dword ptr [rbp-0x30]
- mov r9, gword ptr [rbp-0x48]
+ mov r9, gword ptr [rbp-0x50]
; gcrRegs +[r9]
cmp edx, dword ptr [r9+0x08]
- jae SHORT G_M64832_IG17
+ jae SHORT G_M64832_IG18
mov ecx, edx
mov qword ptr [r9+8*rcx+0x10], rax
inc edx
- mov ecx, dword ptr [rbp-0x38]
+ mov ecx, dword ptr [rbp-0x34]
cmp ecx, edx
- mov dword ptr [rbp-0x38], ecx
- jg SHORT G_M64832_IG16
+ mov dword ptr [rbp-0x34], ecx
+ jg SHORT G_M64832_IG17
;; size=49 bbWeight=0.04 PerfScore 0.72
-G_M64832_IG12: ; bbWeight=0.02, gcrefRegs=7200 {r9 r12 r13 r14}, byrefRegs=0000 {}, byref
+G_M64832_IG12: ; bbWeight=0.02, gcrefRegs=6200 {r9 r13 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
mov rax, r9
; gcrRegs +[rax]
;; size=3 bbWeight=0.02 PerfScore 0.01
-G_M64832_IG13: ; bbWeight=0.50, gcrefRegs=7001 {rax r12 r13 r14}, byrefRegs=0000 {}, byref, isz
+G_M64832_IG13: ; bbWeight=1.98, gcrefRegs=6001 {rax r13 r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r9]
- mov rdx, r12
+ mov rdx, r13
; gcrRegs +[rdx]
- mov ecx, dword ptr [rbp-0x34]
+ mov ecx, r12d
mov rdi, r14
; gcrRegs +[rdi]
mov rsi, r15
@@ -200,19 +202,23 @@ G_M64832_IG13: ; bbWeight=0.50, gcrefRegs=7001 {rax r12 r13 r14}, byrefRe
cmp dword ptr [rdi], edi
; GC ptr vars -{V07}
call Internal.Reflection.Execution.ExecutionEnvironmentImplementation:TryGetMethodInvoker(System.RuntimeTypeHandle,System.Reflection.Runtime.General.QMethodDefinition,System.RuntimeTypeHandle[]):Internal.Reflection.Core.Execution.MethodBaseInvoker:this
- ; gcrRegs -[rdx rdi r8 r12 r14]
+ ; gcrRegs -[rdx rdi r8 r13-r14]
mov r15, rax
; gcrRegs +[r15]
test r15, r15
- jne SHORT G_M64832_IG14
+ jne SHORT G_M64832_IG15
+ ;; size=30 bbWeight=1.98 PerfScore 13.36
+G_M64832_IG14: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rdi, qword ptr [(reloc)]
mov rdi, gword ptr [rdi+0x08]
; gcrRegs +[rdi]
- mov rsi, r13
+ mov rsi, gword ptr [rbp-0x48]
; gcrRegs +[rsi]
cmp dword ptr [rdi], edi
+ ; GC ptr vars -{V04}
call <unknown method>
- ; gcrRegs -[rsi rdi r13]
+ ; gcrRegs -[rsi rdi] +[rax]
mov rdi, bword ptr [rbp+0x10]
; byrRegs +[rdi]
mov rsi, rax
@@ -220,12 +226,12 @@ G_M64832_IG13: ; bbWeight=0.50, gcrefRegs=7001 {rax r12 r13 r14}, byrefRe
call CORINFO_HELP_CHECKED_ASSIGN_REF
; gcrRegs -[rax rsi]
; byrRegs -[rdi]
- ;; size=63 bbWeight=0.50 PerfScore 9.00
-G_M64832_IG14: ; bbWeight=0.50, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref
...
+7 (+1.44%) : 22156.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
@@ -8,19 +8,19 @@
; Final local variable assignments
;
; V00 this [V00,T10] ( 4, 3 ) ref -> r14 this class-hnd exact single-def <System.Globalization.GregorianCalendarHelper>
-; V01 arg1 [V01,T07] ( 6, 4.50) int -> rbx single-def
+; V01 arg1 [V01,T08] ( 6, 4.50) int -> r15 single-def
; V02 arg2 [V02,T06] ( 5, 7 ) int -> rdx
-; V03 arg3 [V03,T08] ( 5, 3.50) ubyte -> r15 single-def
+; V03 arg3 [V03,T07] ( 5, 4.98) ubyte -> rbx single-def
; V04 loc0 [V04,T05] ( 5, 9 ) ref -> r14 class-hnd exact single-def <<unknown class>>
; V05 loc1 [V05,T01] ( 6, 17 ) int -> r13
-; V06 loc2 [V06,T04] ( 8, 10 ) ref -> [rbp-0x30] class-hnd exact <<unknown class>>
-; V07 loc3 [V07,T02] ( 7, 12.50) int -> rbx
+; V06 loc2 [V06,T04] ( 8, 10 ) ref -> [rbp-0x30] class-hnd exact spill-single-def <<unknown class>>
+; V07 loc3 [V07,T02] ( 7, 12.50) int -> r15
; V08 loc4 [V08,T00] ( 12, 17.29) int -> rdi
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T15] ( 3, 0 ) ref -> r15 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V11 tmp2 [V11,T20] ( 2, 0 ) ref -> r14 class-hnd exact "impImportAndPushBox" <System.String>
+; V10 tmp1 [V10,T15] ( 3, 0 ) ref -> rbx class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V11 tmp2 [V11,T20] ( 2, 0 ) ref -> r15 class-hnd exact "impImportAndPushBox" <System.String>
; V12 tmp3 [V12,T16] ( 3, 0 ) ref -> r13 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V13 tmp4 [V13,T17] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V13 tmp4 [V13,T17] ( 3, 0 ) ref -> r14 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V14 tmp5 [V14,T18] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V15 tmp6 [V15,T19] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V16 tmp7 [V16,T12] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
@@ -46,18 +46,18 @@ G_M29959_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
lea rbp, [rsp+0x30]
mov r14, rdi
; gcrRegs +[r14]
- mov ebx, esi
- mov r15d, ecx
+ mov r15d, esi
+ mov ebx, ecx
;; size=24 bbWeight=1 PerfScore 8.25
G_M29959_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- test ebx, ebx
+ test r15d, r15d
jge SHORT G_M29959_IG06
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M29959_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
- test r15b, r15b
+ test bl, bl
jne G_M29959_IG22
- ;; size=9 bbWeight=0.50 PerfScore 0.62
+ ;; size=8 bbWeight=0.50 PerfScore 0.62
G_M29959_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
@@ -94,23 +94,27 @@ G_M29959_IG08: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
mov eax, r13d
mov rcx, gword ptr [r14+8*rax+0x10]
; gcrRegs +[rcx]
+ mov gword ptr [rbp-0x30], rcx
+ ; GC ptr vars +{V06}
cmp edx, dword ptr [rcx+0x28]
je SHORT G_M29959_IG10
inc r13d
cmp r12d, r13d
jg SHORT G_M29959_IG08
- ;; size=21 bbWeight=4 PerfScore 31.00
+ ;; size=25 bbWeight=4 PerfScore 35.00
G_M29959_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx r14]
+ ; GC ptr vars -{V06}
jmp G_M29959_IG20
;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M29959_IG10: ; bbWeight=0.50, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref, isz
+G_M29959_IG10: ; bbWeight=0.50, gcVars=0000000000000010 {V06}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx r14]
- cmp ebx, dword ptr [rcx+0x30]
+ ; GC ptr vars +{V04 V06}
+ cmp r15d, dword ptr [rcx+0x30]
jl G_M29959_IG19
- cmp ebx, dword ptr [rcx+0x34]
+ cmp r15d, dword ptr [rcx+0x34]
jg SHORT G_M29959_IG13
- ;; size=14 bbWeight=0.50 PerfScore 4.00
+ ;; size=16 bbWeight=0.50 PerfScore 4.00
G_M29959_IG11: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
mov eax, dword ptr [rcx+0x2C]
@@ -125,7 +129,7 @@ G_M29959_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29959_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M29959_IG13: ; bbWeight=0.50, gcVars=0000000000000010 {V06}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r14]
lea rsi, [(reloc)]
add rsi, 4
@@ -134,8 +138,6 @@ G_M29959_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
jl SHORT G_M29959_IG14
test edi, edi
jg SHORT G_M29959_IG19
- mov gword ptr [rbp-0x30], rcx
- ; GC ptr vars +{V06}
lea rdi, gword ptr [(reloc)]
; gcrRegs +[rdi]
call System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):ubyte
@@ -145,14 +147,13 @@ G_M29959_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
mov rcx, gword ptr [rbp-0x30]
; gcrRegs +[rcx]
jne SHORT G_M29959_IG19
- ;; size=45 bbWeight=0.50 PerfScore 5.00
-G_M29959_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V06}
- sub ebx, dword ptr [rcx+0x34]
+ ;; size=41 bbWeight=0.50 PerfScore 4.50
+G_M29959_IG14: ; bbWeight=0.50, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref, isz
+ sub r15d, dword ptr [rcx+0x34]
lea edi, [r13-0x01]
test edi, edi
jl SHORT G_M29959_IG19
- ;; size=11 bbWeight=0.50 PerfScore 2.38
+ ;; size=12 bbWeight=0.50 PerfScore 2.38
G_M29959_IG15: ; bbWeight=0.25, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref, isz
cmp r12d, edi
jle SHORT G_M29959_IG18
@@ -163,16 +164,16 @@ G_M29959_IG16: ; bbWeight=3.96, gcrefRegs=4002 {rcx r14}, byrefRegs=0000
; gcrRegs +[rax]
mov eax, dword ptr [rax+0x34]
; gcrRegs -[rax]
- cmp eax, ebx
+ cmp eax, r15d
jge SHORT G_M29959_IG11
- sub ebx, eax
+ sub r15d, eax
dec edi
jns SHORT G_M29959_IG16
- ;; size=20 bbWeight=3.96 PerfScore 27.72
-G_M29959_IG17: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=22 bbWeight=3.96 PerfScore 27.72
+G_M29959_IG17: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
jmp SHORT G_M29959_IG19
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M29959_IG18: ; bbWeight=0.04, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r14]
cmp edi, r12d
@@ -182,23 +183,24 @@ G_M29959_IG18: ; bbWeight=0.04, gcrefRegs=4002 {rcx r14}, byrefRegs=0000
; gcrRegs +[rax]
mov eax, dword ptr [rax+0x34]
; gcrRegs -[rax]
- cmp eax, ebx
+ cmp eax, r15d
jge SHORT G_M29959_IG11
- sub ebx, eax
+ sub r15d, eax
dec edi
jns SHORT G_M29959_IG18
- ;; size=25 bbWeight=0.04 PerfScore 0.33
-G_M29959_IG19: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=27 bbWeight=0.04 PerfScore 0.33
+G_M29959_IG19: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
- test r15b, r15b
+ test bl, bl
jne SHORT G_M29959_IG23
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M29959_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=1.98 PerfScore 2.48
+G_M29959_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx]
- test r15b, r15b
+ ; GC ptr vars -{V04 V06}
+ test bl, bl
jne G_M29959_IG24
jmp G_M29959_IG04
- ;; size=14 bbWeight=0.50 PerfScore 1.62
+ ;; size=13 bbWeight=0.50 PerfScore 1.62
G_M29959_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
@@ -227,59 +229,60 @@ G_M29959_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
; gcr arg pop 0
;; size=46 bbWeight=0 PerfScore 0.00
-G_M29959_IG23: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rcx]
- mov rbx, rcx
- ; gcrRegs +[rbx]
+G_M29959_IG23: ; bbWeight=0, gcVars=0000000000000010 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V04 V06}
lea rdi, [(reloc)] ; <unknown class>
call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[rcx] +[rax]
+ ; gcrRegs +[rax]
+ ; gcr arg pop 0
+ mov rbx, rax
+ ; gcrRegs +[rbx]
+ call <unknown method>
; gcr arg pop 0
mov r15, rax
; gcrRegs +[r15]
- call <unknown method>
- ; gcr arg pop 0
- mov r14, rax
+ mov r14, gword ptr [rbp-0x30]
; gcrRegs +[r14]
- mov edi, dword ptr [rbx+0x30]
- mov dword ptr [r15+0x08], edi
+ mov edi, dword ptr [r14+0x30]
+ mov dword ptr [rbx+0x08], edi
lea rdi, [(reloc)] ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcr arg pop 0
mov r13, rax
; gcrRegs +[r13]
- mov edi, dword ptr [rbx+0x34]
+ mov edi, dword ptr [r14+0x34]
mov dword ptr [r13+0x08], edi
lea rdi, [(reloc)] ; <unknown class>
+ ; GC ptr vars -{V04 V06}
call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[rbx]
+ ; gcrRegs -[r14]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov r14, rax
+ ; gcrRegs +[r14]
mov rdx, r13
; gcrRegs +[rdx]
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi]
- mov rdi, r14
+ mov rdi, r15
; gcrRegs +[rdi]
call <unknown method>
- ; gcrRegs -[rdx rsi rdi r13-r15]
+ ; gcrRegs -[rdx rbx rsi rdi r13 r15]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rdi, rbx
+ mov rdi, r14
; gcrRegs +[rdi]
lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
call <unknown method>
; gcrRegs -[rax rdx rsi rdi]
; gcr arg pop 0
- mov rdi, rbx
+ mov rdi, r14
...
+7 (+1.46%) : 4493.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
@@ -8,18 +8,18 @@
; Final local variable assignments
;
; V00 this [V00,T10] ( 4, 3 ) ref -> r14 this class-hnd exact single-def <System.Globalization.GregorianCalendarHelper>
-; V01 arg1 [V01,T07] ( 6, 4.50) int -> rbx single-def
+; V01 arg1 [V01,T08] ( 6, 4.50) int -> r15 single-def
; V02 arg2 [V02,T06] ( 5, 7 ) int -> rdx
-; V03 arg3 [V03,T08] ( 5, 3.50) ubyte -> r15 single-def
+; V03 arg3 [V03,T07] ( 5, 4.98) ubyte -> rbx single-def
; V04 loc0 [V04,T05] ( 5, 9 ) ref -> r14 class-hnd exact single-def <<unknown class>>
; V05 loc1 [V05,T01] ( 6, 17 ) int -> r13
-; V06 loc2 [V06,T04] ( 8, 10 ) ref -> [rbp-0x30] class-hnd exact <<unknown class>>
-; V07 loc3 [V07,T02] ( 7, 12.50) int -> rbx
+; V06 loc2 [V06,T04] ( 8, 10 ) ref -> [rbp-0x30] class-hnd exact spill-single-def <<unknown class>>
+; V07 loc3 [V07,T02] ( 7, 12.50) int -> r15
; V08 loc4 [V08,T00] ( 12, 17.29) int -> rdi
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V10 tmp1 [V10,T15] ( 3, 0 ) ref -> r15 class-hnd exact "Single-def Box Helper" <<unknown class>>
+; V10 tmp1 [V10,T15] ( 3, 0 ) ref -> rbx class-hnd exact "Single-def Box Helper" <<unknown class>>
; V11 tmp2 [V11,T16] ( 3, 0 ) ref -> r14 class-hnd exact "Single-def Box Helper" <<unknown class>>
-; V12 tmp3 [V12,T17] ( 3, 0 ) ref -> rbx class-hnd exact "NewObj constructor temp" <<unknown class>>
+; V12 tmp3 [V12,T17] ( 3, 0 ) ref -> r15 class-hnd exact "NewObj constructor temp" <<unknown class>>
; V13 tmp4 [V13,T18] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V14 tmp5 [V14,T19] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V15 tmp6 [V15,T12] ( 2, 1 ) ubyte -> rax "Inline return value spill temp"
@@ -43,18 +43,18 @@ G_M29959_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
lea rbp, [rsp+0x30]
mov r14, rdi
; gcrRegs +[r14]
- mov ebx, esi
- mov r15d, ecx
+ mov r15d, esi
+ mov ebx, ecx
;; size=24 bbWeight=1 PerfScore 8.25
G_M29959_IG02: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- test ebx, ebx
+ test r15d, r15d
jge SHORT G_M29959_IG06
- ;; size=4 bbWeight=1 PerfScore 1.25
+ ;; size=5 bbWeight=1 PerfScore 1.25
G_M29959_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
- test r15b, r15b
+ test bl, bl
jne G_M29959_IG22
- ;; size=9 bbWeight=0.50 PerfScore 0.62
+ ;; size=8 bbWeight=0.50 PerfScore 0.62
G_M29959_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
@@ -91,23 +91,27 @@ G_M29959_IG08: ; bbWeight=4, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr
mov eax, r13d
mov rcx, gword ptr [r14+8*rax+0x10]
; gcrRegs +[rcx]
+ mov gword ptr [rbp-0x30], rcx
+ ; GC ptr vars +{V06}
cmp edx, dword ptr [rcx+0x28]
je SHORT G_M29959_IG10
inc r13d
cmp r12d, r13d
jg SHORT G_M29959_IG08
- ;; size=21 bbWeight=4 PerfScore 31.00
+ ;; size=25 bbWeight=4 PerfScore 35.00
G_M29959_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx r14]
+ ; GC ptr vars -{V06}
jmp G_M29959_IG20
;; size=5 bbWeight=0.50 PerfScore 1.00
-G_M29959_IG10: ; bbWeight=0.50, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref, isz
+G_M29959_IG10: ; bbWeight=0.50, gcVars=0000000000000010 {V06}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx r14]
- cmp ebx, dword ptr [rcx+0x30]
+ ; GC ptr vars +{V04 V06}
+ cmp r15d, dword ptr [rcx+0x30]
jl G_M29959_IG19
- cmp ebx, dword ptr [rcx+0x34]
+ cmp r15d, dword ptr [rcx+0x34]
jg SHORT G_M29959_IG13
- ;; size=14 bbWeight=0.50 PerfScore 4.00
+ ;; size=16 bbWeight=0.50 PerfScore 4.00
G_M29959_IG11: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs -[r14]
mov eax, dword ptr [rcx+0x2C]
@@ -122,7 +126,7 @@ G_M29959_IG12: ; bbWeight=0.50, epilog, nogc, extend
pop rbp
ret
;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M29959_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M29959_IG13: ; bbWeight=0.50, gcVars=0000000000000010 {V06}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r14]
lea rsi, [(reloc)]
add rsi, 4
@@ -131,8 +135,6 @@ G_M29959_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
jl SHORT G_M29959_IG14
test edi, edi
jg SHORT G_M29959_IG19
- mov gword ptr [rbp-0x30], rcx
- ; GC ptr vars +{V06}
lea rdi, gword ptr [(reloc)]
; gcrRegs +[rdi]
call System.LocalAppContextSwitches:GetCachedSwitchValueInternal(System.String,byref):ubyte
@@ -142,14 +144,13 @@ G_M29959_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=400
mov rcx, gword ptr [rbp-0x30]
; gcrRegs +[rcx]
jne SHORT G_M29959_IG19
- ;; size=45 bbWeight=0.50 PerfScore 5.00
-G_M29959_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars -{V06}
- sub ebx, dword ptr [rcx+0x34]
+ ;; size=41 bbWeight=0.50 PerfScore 4.50
+G_M29959_IG14: ; bbWeight=0.50, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref, isz
+ sub r15d, dword ptr [rcx+0x34]
lea edi, [r13-0x01]
test edi, edi
jl SHORT G_M29959_IG19
- ;; size=11 bbWeight=0.50 PerfScore 2.38
+ ;; size=12 bbWeight=0.50 PerfScore 2.38
G_M29959_IG15: ; bbWeight=0.25, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref, isz
cmp r12d, edi
jle SHORT G_M29959_IG18
@@ -160,16 +161,16 @@ G_M29959_IG16: ; bbWeight=3.96, gcrefRegs=4002 {rcx r14}, byrefRegs=0000
; gcrRegs +[rax]
mov eax, dword ptr [rax+0x34]
; gcrRegs -[rax]
- cmp eax, ebx
+ cmp eax, r15d
jge SHORT G_M29959_IG11
- sub ebx, eax
+ sub r15d, eax
dec edi
jns SHORT G_M29959_IG16
- ;; size=20 bbWeight=3.96 PerfScore 27.72
-G_M29959_IG17: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=22 bbWeight=3.96 PerfScore 27.72
+G_M29959_IG17: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
jmp SHORT G_M29959_IG19
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M29959_IG18: ; bbWeight=0.04, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r14]
cmp edi, r12d
@@ -179,23 +180,24 @@ G_M29959_IG18: ; bbWeight=0.04, gcrefRegs=4002 {rcx r14}, byrefRegs=0000
; gcrRegs +[rax]
mov eax, dword ptr [rax+0x34]
; gcrRegs -[rax]
- cmp eax, ebx
+ cmp eax, r15d
jge SHORT G_M29959_IG11
- sub ebx, eax
+ sub r15d, eax
dec edi
jns SHORT G_M29959_IG18
- ;; size=25 bbWeight=0.04 PerfScore 0.33
-G_M29959_IG19: ; bbWeight=0.50, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=27 bbWeight=0.04 PerfScore 0.33
+G_M29959_IG19: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r14]
- test r15b, r15b
+ test bl, bl
jne SHORT G_M29959_IG23
- ;; size=5 bbWeight=0.50 PerfScore 0.62
-G_M29959_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=1.98 PerfScore 2.48
+G_M29959_IG20: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rcx]
- test r15b, r15b
+ ; GC ptr vars -{V04 V06}
+ test bl, bl
jne G_M29959_IG24
jmp G_M29959_IG04
- ;; size=14 bbWeight=0.50 PerfScore 1.62
+ ;; size=13 bbWeight=0.50 PerfScore 1.62
G_M29959_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
@@ -222,55 +224,56 @@ G_M29959_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi]
; gcr arg pop 0
;; size=45 bbWeight=0 PerfScore 0.00
-G_M29959_IG23: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rcx]
- mov rbx, rcx
- ; gcrRegs +[rbx]
+G_M29959_IG23: ; bbWeight=0, gcVars=0000000000000010 {V06}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; GC ptr vars +{V04 V06}
lea rdi, [(reloc)] ; <unknown class>
call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[rcx] +[rax]
+ ; gcrRegs +[rax]
; gcr arg pop 0
- mov r15, rax
+ mov rbx, rax
+ ; gcrRegs +[rbx]
+ mov r15, gword ptr [rbp-0x30]
; gcrRegs +[r15]
- mov edi, dword ptr [rbx+0x30]
- mov dword ptr [r15+0x08], edi
+ mov edi, dword ptr [r15+0x30]
+ mov dword ptr [rbx+0x08], edi
lea rdi, [(reloc)] ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcr arg pop 0
mov r14, rax
; gcrRegs +[r14]
- mov edi, dword ptr [rbx+0x34]
+ mov edi, dword ptr [r15+0x34]
mov dword ptr [r14+0x08], edi
lea rdi, [(reloc)] ; <unknown class>
+ ; GC ptr vars -{V04 V06}
call CORINFO_HELP_NEWSFAST
- ; gcrRegs -[rbx]
+ ; gcrRegs -[r15]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov r15, rax
+ ; gcrRegs +[r15]
mov rdx, r14
; gcrRegs +[rdx]
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi]
lea rdi, gword ptr [(reloc)]
; gcrRegs +[rdi]
call <unknown method>
- ; gcrRegs -[rdx rsi rdi r14-r15]
+ ; gcrRegs -[rdx rbx rsi rdi r14]
; gcr arg pop 0
mov rdx, rax
; gcrRegs +[rdx]
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
lea rsi, gword ptr [(reloc)]
; gcrRegs +[rsi]
call <unknown method>
; gcrRegs -[rax rdx rsi rdi]
; gcr arg pop 0
- mov rdi, rbx
+ mov rdi, r15
; gcrRegs +[rdi]
call CORINFO_HELP_THROW
- ; gcrRegs -[rbx rdi]
+ ; gcrRegs -[rdi r15]
; gcr arg pop 0
- ;; size=106 bbWeight=0 PerfScore 0.00
+ ;; size=108 bbWeight=0 PerfScore 0.00
G_M29959_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rdi, [(reloc)] ; <unknown class>
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.linux.x64.checked.mch |
78 |
11 |
16 |
51 |
-126 |
+105 |
benchmarks.run_pgo.linux.x64.checked.mch |
2,158 |
1,406 |
516 |
236 |
-19,720 |
+5,117 |
benchmarks.run_tiered.linux.x64.checked.mch |
30 |
5 |
3 |
22 |
-118 |
+39 |
coreclr_tests.run.linux.x64.checked.mch |
3,530 |
473 |
97 |
2,960 |
-5,260 |
+746 |
libraries.crossgen2.linux.x64.checked.mch |
292 |
39 |
73 |
180 |
-455 |
+788 |
libraries.pmi.linux.x64.checked.mch |
394 |
80 |
108 |
206 |
-1,758 |
+1,077 |
libraries_tests.run.linux.x64.Release.mch |
578 |
152 |
244 |
182 |
-2,154 |
+1,546 |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
549 |
135 |
192 |
222 |
-2,035 |
+3,009 |
realworld.run.linux.x64.checked.mch |
103 |
19 |
26 |
58 |
-298 |
+349 |
smoke_tests.nativeaot.linux.x64.checked.mch |
37 |
5 |
3 |
29 |
-57 |
+16 |
|
7,749 |
2,325 |
1,278 |
4,146 |
-31,981 |
+12,792 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.linux.x64.checked.mch |
31,386 |
2,008 |
29,378 |
50 (0.16%) |
50 (0.16%) |
benchmarks.run_pgo.linux.x64.checked.mch |
130,177 |
50,713 |
79,464 |
63 (0.05%) |
63 (0.05%) |
benchmarks.run_tiered.linux.x64.checked.mch |
60,408 |
46,324 |
14,084 |
46 (0.08%) |
46 (0.08%) |
coreclr_tests.run.linux.x64.checked.mch |
391,292 |
185,267 |
206,025 |
109 (0.03%) |
109 (0.03%) |
libraries.crossgen2.linux.x64.checked.mch |
264,392 |
15 |
264,377 |
347 (0.13%) |
347 (0.13%) |
libraries.pmi.linux.x64.checked.mch |
297,005 |
6 |
296,999 |
66 (0.02%) |
66 (0.02%) |
libraries_tests.run.linux.x64.Release.mch |
81,974 |
53,841 |
28,133 |
8 (0.01%) |
8 (0.01%) |
librariestestsnotieredcompilation.run.linux.x64.Release.mch |
303,541 |
21,933 |
281,608 |
2,285 (0.75%) |
2,285 (0.75%) |
realworld.run.linux.x64.checked.mch |
33,237 |
45 |
33,192 |
11 (0.03%) |
11 (0.03%) |
smoke_tests.nativeaot.linux.x64.checked.mch |
27,352 |
10 |
27,342 |
101 (0.37%) |
101 (0.37%) |
|
1,620,764 |
360,162 |
1,260,602 |
3,086 (0.19%) |
3,086 (0.19%) |
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: 11931108 (overridden on cmd)
Total bytes of diff: 11931087 (overridden on cmd)
Total bytes of delta: -21 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
22 : 3044.dasm (0.86 % of base)
18 : 11659.dasm (4.13 % of base)
17 : 17116.dasm (0.61 % of base)
8 : 17426.dasm (0.14 % of base)
7 : 14249.dasm (1.97 % of base)
6 : 16489.dasm (0.52 % of base)
5 : 16084.dasm (0.74 % of base)
4 : 5632.dasm (0.18 % of base)
4 : 14090.dasm (0.25 % of base)
3 : 17018.dasm (0.34 % of base)
3 : 5485.dasm (0.07 % of base)
2 : 4254.dasm (0.07 % of base)
2 : 10519.dasm (0.23 % of base)
2 : 3665.dasm (0.08 % of base)
1 : 11628.dasm (0.07 % of base)
1 : 22517.dasm (0.06 % of base)
Top file improvements (bytes):
-35 : 59.dasm (-1.72 % of base)
-29 : 20286.dasm (-0.65 % of base)
-29 : 21369.dasm (-0.68 % of base)
-9 : 6117.dasm (-0.33 % of base)
-7 : 10583.dasm (-0.31 % of base)
-5 : 22348.dasm (-0.31 % of base)
-4 : 9796.dasm (-0.23 % of base)
-3 : 5682.dasm (-0.55 % of base)
-2 : 14597.dasm (-0.34 % of base)
-2 : 9670.dasm (-0.44 % of base)
-1 : 4811.dasm (-0.06 % of base)
27 total files with Code Size differences (11 improved, 16 regressed), 28 unchanged.
Top method regressions (bytes):
22 (0.86 % of base) : 3044.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
18 (4.13 % of base) : 11659.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
17 (0.61 % of base) : 17116.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
8 (0.14 % of base) : 17426.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
7 (1.97 % of base) : 14249.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
6 (0.52 % of base) : 16489.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
5 (0.74 % of base) : 16084.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.18 % of base) : 5632.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:BuildFactoryExpression(System.Reflection.ConstructorInfo,System.Nullable`1[int][],System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.BlockExpression (FullOpts)
4 (0.25 % of base) : 14090.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
3 (0.34 % of base) : 17018.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (FullOpts)
3 (0.07 % of base) : 5485.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
2 (0.07 % of base) : 4254.dasm - System.Diagnostics.StackTrace:ToString(int,System.Text.StringBuilder):this (FullOpts)
2 (0.08 % of base) : 3665.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (FullOpts)
2 (0.23 % of base) : 10519.dasm - System.Xml.Serialization.CodeIdentifier:GetCSharpName(System.Type,System.Type[],int,System.Text.StringBuilder):int (FullOpts)
1 (0.06 % of base) : 22517.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
1 (0.07 % of base) : 11628.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,ubyte[],System.Reflection.Emit.Label[],System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder):int:this (FullOpts)
Top method improvements (bytes):
-35 (-1.72 % of base) : 59.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
-29 (-0.65 % of base) : 20286.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-29 (-0.68 % of base) : 21369.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-9 (-0.33 % of base) : 6117.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
-7 (-0.31 % of base) : 10583.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-5 (-0.31 % of base) : 22348.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
-4 (-0.23 % of base) : 9796.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
-3 (-0.55 % of base) : 5682.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
-2 (-0.44 % of base) : 9670.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
-2 (-0.34 % of base) : 14597.dasm - System.Xml.XmlBinaryNodeWriter:WriteBase64Text(ubyte[],int,ubyte[],int,int):this (FullOpts)
-1 (-0.06 % of base) : 4811.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):this (FullOpts)
Top method regressions (percentages):
18 (4.13 % of base) : 11659.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
7 (1.97 % of base) : 14249.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
22 (0.86 % of base) : 3044.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
5 (0.74 % of base) : 16084.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)
17 (0.61 % of base) : 17116.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
6 (0.52 % of base) : 16489.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
3 (0.34 % of base) : 17018.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (FullOpts)
4 (0.25 % of base) : 14090.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
2 (0.23 % of base) : 10519.dasm - System.Xml.Serialization.CodeIdentifier:GetCSharpName(System.Type,System.Type[],int,System.Text.StringBuilder):int (FullOpts)
4 (0.18 % of base) : 5632.dasm - Microsoft.Extensions.DependencyInjection.ActivatorUtilities:BuildFactoryExpression(System.Reflection.ConstructorInfo,System.Nullable`1[int][],System.Linq.Expressions.Expression,System.Linq.Expressions.Expression):System.Linq.Expressions.BlockExpression (FullOpts)
8 (0.14 % of base) : 17426.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
2 (0.08 % of base) : 3665.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (FullOpts)
3 (0.07 % of base) : 5485.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
1 (0.07 % of base) : 11628.dasm - System.Runtime.Serialization.XmlFormatReaderGenerator+CriticalHelper:ReadMembers(System.Runtime.Serialization.DataContracts.ClassDataContract,ubyte[],System.Reflection.Emit.Label[],System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder):int:this (FullOpts)
2 (0.07 % of base) : 4254.dasm - System.Diagnostics.StackTrace:ToString(int,System.Text.StringBuilder):this (FullOpts)
1 (0.06 % of base) : 22517.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
Top method improvements (percentages):
-35 (-1.72 % of base) : 59.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
-29 (-0.68 % of base) : 21369.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-29 (-0.65 % of base) : 20286.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-3 (-0.55 % of base) : 5682.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
-2 (-0.44 % of base) : 9670.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
-2 (-0.34 % of base) : 14597.dasm - System.Xml.XmlBinaryNodeWriter:WriteBase64Text(ubyte[],int,ubyte[],int,int):this (FullOpts)
-9 (-0.33 % of base) : 6117.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
-5 (-0.31 % of base) : 22348.dasm - BenchmarksGame.FannkuchRedux_5:run(int,int,int) (FullOpts)
-7 (-0.31 % of base) : 10583.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-4 (-0.23 % of base) : 9796.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
-1 (-0.06 % of base) : 4811.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):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: 57210207 (overridden on cmd)
Total bytes of diff: 57195604 (overridden on cmd)
Total bytes of delta: -14603 (-0.03 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
58 : 52329.dasm (10.27 % of base)
58 : 65544.dasm (10.27 % of base)
58 : 66558.dasm (10.27 % of base)
58 : 92572.dasm (10.27 % of base)
58 : 115615.dasm (10.27 % of base)
58 : 25154.dasm (10.27 % of base)
58 : 25783.dasm (10.27 % of base)
58 : 41045.dasm (1.32 % of base)
58 : 45344.dasm (10.27 % of base)
58 : 83034.dasm (10.27 % of base)
58 : 87246.dasm (10.27 % of base)
58 : 104715.dasm (10.27 % of base)
58 : 52829.dasm (10.27 % of base)
58 : 98494.dasm (10.27 % of base)
58 : 105985.dasm (10.27 % of base)
58 : 115898.dasm (10.27 % of base)
58 : 123276.dasm (10.27 % of base)
58 : 127864.dasm (10.27 % of base)
46 : 35107.dasm (1.04 % of base)
45 : 100750.dasm (1.04 % of base)
Top file improvements (bytes):
-102 : 104711.dasm (-4.63 % of base)
-102 : 105981.dasm (-4.63 % of base)
-102 : 52825.dasm (-4.63 % of base)
-102 : 66553.dasm (-4.63 % of base)
-102 : 93690.dasm (-4.63 % of base)
-102 : 109313.dasm (-4.63 % of base)
-102 : 115895.dasm (-4.63 % of base)
-102 : 123273.dasm (-4.63 % of base)
-102 : 25150.dasm (-4.63 % of base)
-102 : 25774.dasm (-4.63 % of base)
-102 : 26825.dasm (-4.63 % of base)
-102 : 38454.dasm (-4.63 % of base)
-102 : 57822.dasm (-4.63 % of base)
-102 : 83030.dasm (-4.63 % of base)
-102 : 87242.dasm (-4.63 % of base)
-102 : 99058.dasm (-4.63 % of base)
-102 : 52326.dasm (-4.63 % of base)
-102 : 88026.dasm (-4.63 % of base)
-102 : 98491.dasm (-4.63 % of base)
-102 : 115611.dasm (-4.63 % of base)
64 total files with Code Size differences (41 improved, 23 regressed), 20 unchanged.
Top method regressions (bytes):
58 (10.27 % of base) : 52329.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 65544.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 66558.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 92572.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 115615.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 25154.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 25783.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 45344.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 83034.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 87246.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 104715.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 52829.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 98494.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 105985.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 115898.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 123276.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 127864.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (1.32 % of base) : 41045.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
46 (1.04 % of base) : 35107.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
45 (1.04 % of base) : 100750.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
Top method improvements (bytes):
-102 (-4.63 % of base) : 104711.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 105981.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 52825.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 66553.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 93690.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 109313.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 115895.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 123273.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 25150.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 25774.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 26825.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 38454.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 57822.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 83030.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 87242.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 99058.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 52326.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 88026.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 98491.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-102 (-4.63 % of base) : 115611.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
Top method regressions (percentages):
58 (10.27 % of base) : 52329.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 65544.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 66558.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 92572.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 115615.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 25154.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 25783.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 45344.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 83034.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 87246.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 104715.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 52829.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 98494.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 105985.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 115898.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 123276.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
58 (10.27 % of base) : 127864.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
15 (8.02 % of base) : 12368.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
29 (5.64 % of base) : 8053.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
18 (5.11 % of base) : 124024.dasm - System.Text.RegularExpressions.Tests.Perf_Regex_Cache:CreatePatterns(int,int):System.String[] (Tier1-OSR)
Top method improvements (percentages):
-15 (-22.06 % of base) : 98648.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
-30 (-12.66 % of base) : 55267.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-30 (-12.66 % of base) : 98516.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-30 (-12.66 % of base) : 99071.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-30 (-12.66 % of base) : 61259.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-30 (-12.66 % of base) : 92591.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
-42 (-9.21 % of base) : 93960.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-41 (-9.01 % of base) : 44221.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-30 (-6.76 % of base) : 62379.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-30 (-6.76 % of base) : 63281.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-30 (-6.73 % of base) : 87881.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-38 (-6.35 % of base) : 90657.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-38 (-6.35 % of base) : 101490.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-38 (-6.35 % of base) : 21627.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-38 (-6.35 % of base) : 42014.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-38 (-6.35 % of base) : 62359.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-38 (-6.35 % of base) : 63275.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-38 (-6.35 % of base) : 87886.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-38 (-6.35 % of base) : 120611.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-38 (-6.35 % of base) : 125015.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
benchmarks.run_tiered.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 18554062 (overridden on cmd)
Total bytes of diff: 18553983 (overridden on cmd)
Total bytes of delta: -79 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
22 : 34261.dasm (0.86 % of base)
15 : 37387.dasm (0.51 % of base)
2 : 12582.dasm (0.08 % of base)
Top file improvements (bytes):
-35 : 687.dasm (-1.72 % of base)
-29 : 48710.dasm (-0.68 % of base)
-29 : 48835.dasm (-0.65 % of base)
-18 : 12141.dasm (-2.88 % of base)
-7 : 37389.dasm (-0.91 % of base)
8 total files with Code Size differences (5 improved, 3 regressed), 22 unchanged.
Top method regressions (bytes):
22 (0.86 % of base) : 34261.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
15 (0.51 % of base) : 37387.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
2 (0.08 % of base) : 12582.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
Top method improvements (bytes):
-35 (-1.72 % of base) : 687.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-29 (-0.68 % of base) : 48710.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-29 (-0.65 % of base) : 48835.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-18 (-2.88 % of base) : 12141.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
-7 (-0.91 % of base) : 37389.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
Top method regressions (percentages):
22 (0.86 % of base) : 34261.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
15 (0.51 % of base) : 37387.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
2 (0.08 % of base) : 12582.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
Top method improvements (percentages):
-18 (-2.88 % of base) : 12141.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
-35 (-1.72 % of base) : 687.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
-7 (-0.91 % of base) : 37389.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
-29 (-0.68 % of base) : 48710.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-29 (-0.65 % of base) : 48835.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
8 total methods with Code Size differences (5 improved, 3 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: 247129711 (overridden on cmd)
Total bytes of diff: 247125197 (overridden on cmd)
Total bytes of delta: -4514 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
27 : 60837.dasm (3.04 % of base)
27 : 368665.dasm (0.42 % of base)
26 : 62641.dasm (3.45 % of base)
25 : 90429.dasm (2.61 % of base)
24 : 56683.dasm (4.83 % of base)
24 : 85039.dasm (4.83 % of base)
24 : 92586.dasm (4.83 % of base)
17 : 49546.dasm (10.90 % of base)
17 : 60492.dasm (1.90 % of base)
17 : 315515.dasm (1.57 % of base)
16 : 276985.dasm (4.82 % of base)
15 : 1445.dasm (2.27 % of base)
15 : 50100.dasm (2.27 % of base)
15 : 51757.dasm (2.27 % of base)
15 : 90630.dasm (2.27 % of base)
15 : 91108.dasm (1.97 % of base)
15 : 98692.dasm (2.27 % of base)
14 : 62642.dasm (0.94 % of base)
14 : 371264.dasm (3.85 % of base)
14 : 369127.dasm (3.85 % of base)
Top file improvements (bytes):
-55 : 293022.dasm (-0.54 % of base)
-44 : 224417.dasm (-2.46 % of base)
-44 : 253459.dasm (-2.46 % of base)
-40 : 253491.dasm (-2.30 % of base)
-40 : 224433.dasm (-2.31 % of base)
-35 : 97020.dasm (-1.70 % of base)
-35 : 370050.dasm (-1.72 % of base)
-29 : 233141.dasm (-1.81 % of base)
-29 : 233205.dasm (-1.83 % of base)
-29 : 253443.dasm (-1.80 % of base)
-29 : 253475.dasm (-1.80 % of base)
-29 : 253507.dasm (-1.79 % of base)
-29 : 51450.dasm (-6.59 % of base)
-29 : 64302.dasm (-6.79 % of base)
-29 : 233125.dasm (-1.81 % of base)
-29 : 233189.dasm (-1.82 % of base)
-29 : 233157.dasm (-1.80 % of base)
-29 : 233221.dasm (-1.81 % of base)
-29 : 233237.dasm (-1.82 % of base)
-29 : 233173.dasm (-1.81 % of base)
76 total files with Code Size differences (45 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
27 (0.42 % of base) : 368665.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
27 (3.04 % of base) : 60837.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
26 (3.45 % of base) : 62641.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
25 (2.61 % of base) : 90429.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.Reflection.Metadata.EntityHandle]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (Tier1)
24 (4.83 % of base) : 56683.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
24 (4.83 % of base) : 85039.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
24 (4.83 % of base) : 92586.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
17 (10.90 % of base) : 49546.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
17 (1.57 % of base) : 315515.dasm - JitTest_lcsvalbox_lcs_cs.LCS:findLCS(System.Object[,,,],ushort[][],int[]) (FullOpts)
17 (1.90 % of base) : 60492.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
16 (4.82 % of base) : 276985.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
15 (1.97 % of base) : 91108.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
15 (2.27 % of base) : 1445.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)
15 (2.27 % of base) : 50100.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)
15 (2.27 % of base) : 51757.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)
15 (2.27 % of base) : 90630.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)
15 (2.27 % of base) : 98692.dasm - System.Runtime.Serialization.SerializationInfo:ThrowIfDeserializationInProgress(System.String,byref) (Tier1)
14 (3.85 % of base) : 371264.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
14 (3.85 % of base) : 369127.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
14 (0.94 % of base) : 62642.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
Top method improvements (bytes):
-55 (-0.54 % of base) : 293022.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-44 (-2.46 % of base) : 224417.dasm - JIT.HardwareIntrinsics.X86._Avx1.SimpleTernaryOpTest__BlendVariableDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
-44 (-2.46 % of base) : 253459.dasm - JIT.HardwareIntrinsics.X86._Sse41.SimpleTernaryOpTest__BlendVariableDouble:ValidateResult(double[],double[],double[],double[],System.String):this (FullOpts)
-40 (-2.31 % of base) : 224433.dasm - JIT.HardwareIntrinsics.X86._Avx1.SimpleTernaryOpTest__BlendVariableSingle:ValidateResult(float[],float[],float[],float[],System.String):this (FullOpts)
-40 (-2.30 % of base) : 253491.dasm - JIT.HardwareIntrinsics.X86._Sse41.SimpleTernaryOpTest__BlendVariableSingle:ValidateResult(float[],float[],float[],float[],System.String):this (FullOpts)
-35 (-1.70 % of base) : 97020.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
-35 (-1.72 % of base) : 370050.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
-29 (-1.81 % of base) : 233125.dasm - JIT.HardwareIntrinsics.X86._Avx2.SimpleTernaryOpTest__BlendVariableByte:ValidateResult(ubyte[],ubyte[],ubyte[],ubyte[],System.String):this (FullOpts)
-29 (-1.80 % of base) : 233157.dasm - JIT.HardwareIntrinsics.X86._Avx2.SimpleTernaryOpTest__BlendVariableInt16:ValidateResult(short[],short[],short[],short[],System.String):this (FullOpts)
-29 (-1.82 % of base) : 233189.dasm - JIT.HardwareIntrinsics.X86._Avx2.SimpleTernaryOpTest__BlendVariableInt32:ValidateResult(int[],int[],int[],int[],System.String):this (FullOpts)
-29 (-1.81 % of base) : 233221.dasm - JIT.HardwareIntrinsics.X86._Avx2.SimpleTernaryOpTest__BlendVariableInt64:ValidateResult(long[],long[],long[],long[],System.String):this (FullOpts)
-29 (-1.81 % of base) : 233141.dasm - JIT.HardwareIntrinsics.X86._Avx2.SimpleTernaryOpTest__BlendVariableSByte:ValidateResult(byte[],byte[],byte[],byte[],System.String):this (FullOpts)
-29 (-1.81 % of base) : 233173.dasm - JIT.HardwareIntrinsics.X86._Avx2.SimpleTernaryOpTest__BlendVariableUInt16:ValidateResult(ushort[],ushort[],ushort[],ushort[],System.String):this (FullOpts)
-29 (-1.83 % of base) : 233205.dasm - JIT.HardwareIntrinsics.X86._Avx2.SimpleTernaryOpTest__BlendVariableUInt32:ValidateResult(uint[],uint[],uint[],uint[],System.String):this (FullOpts)
-29 (-1.82 % of base) : 233237.dasm - JIT.HardwareIntrinsics.X86._Avx2.SimpleTernaryOpTest__BlendVariableUInt64:ValidateResult(ulong[],ulong[],ulong[],ulong[],System.String):this (FullOpts)
-29 (-1.80 % of base) : 253443.dasm - JIT.HardwareIntrinsics.X86._Sse41.SimpleTernaryOpTest__BlendVariableByte:ValidateResult(ubyte[],ubyte[],ubyte[],ubyte[],System.String):this (FullOpts)
-29 (-1.79 % of base) : 253507.dasm - JIT.HardwareIntrinsics.X86._Sse41.SimpleTernaryOpTest__BlendVariableInt16:ValidateResult(short[],short[],short[],short[],System.String):this (FullOpts)
-29 (-1.80 % of base) : 253475.dasm - JIT.HardwareIntrinsics.X86._Sse41.SimpleTernaryOpTest__BlendVariableSByte:ValidateResult(byte[],byte[],byte[],byte[],System.String):this (FullOpts)
-29 (-6.59 % of base) : 51450.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-29 (-6.79 % of base) : 64302.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
Top method regressions (percentages):
17 (10.90 % of base) : 49546.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
6 (5.26 % of base) : 42565.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
24 (4.83 % of base) : 56683.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
24 (4.83 % of base) : 85039.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
24 (4.83 % of base) : 92586.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
16 (4.82 % of base) : 276985.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
14 (3.85 % of base) : 371264.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
14 (3.85 % of base) : 369127.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
26 (3.45 % of base) : 62641.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
27 (3.04 % of base) : 60837.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
4 (2.78 % of base) : 76263.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
4 (2.78 % of base) : 77320.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
4 (2.78 % of base) : 86776.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
4 (2.78 % of base) : 87514.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
4 (2.78 % of base) : 90423.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
25 (2.61 % of base) : 90429.dasm - System.Collections.Generic.Dictionary`2[System.ValueTuple`2[System.__Canon,System.__Canon],System.Reflection.Metadata.EntityHandle]:TryGetValue(System.ValueTuple`2[System.__Canon,System.__Canon],byref):ubyte:this (Tier1)
4 (2.60 % of base) : 49777.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
4 (2.60 % of base) : 90273.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
8 (2.53 % of base) : 95111.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
5 (2.39 % of base) : 303109.dasm - Pointers+TestTwoParams`2[int,Pointers+Struct]:PointerArray(ulong[],ulong[]):System.ValueTuple`2[int[],Pointers+Struct[]]:this (FullOpts)
Top method improvements (percentages):
-9 (-7.44 % of base) : 40815.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-29 (-6.79 % of base) : 64302.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-28 (-6.60 % of base) : 49256.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-29 (-6.59 % of base) : 51450.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-27 (-6.32 % of base) : 68887.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-7 (-5.88 % of base) : 42085.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 43413.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 53285.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 55478.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 56482.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 57082.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 64293.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 66645.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 68189.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 74982.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 76086.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 77146.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 78077.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 87477.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-7 (-5.88 % of base) : 91013.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (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: 44465520 (overridden on cmd)
Total bytes of diff: 44465853 (overridden on cmd)
Total bytes of delta: 333 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
126 : 177035.dasm (1.38 % of base)
109 : 170058.dasm (2.14 % of base)
58 : 233032.dasm (7.82 % of base)
30 : 17112.dasm (1.74 % of base)
28 : 20851.dasm (0.76 % of base)
26 : 116872.dasm (0.60 % of base)
23 : 22112.dasm (2.11 % of base)
22 : 182304.dasm (1.05 % of base)
21 : 231960.dasm (0.08 % of base)
20 : 48782.dasm (6.06 % of base)
20 : 73960.dasm (2.14 % of base)
20 : 131224.dasm (6.06 % of base)
20 : 153061.dasm (2.14 % of base)
17 : 120904.dasm (0.67 % of base)
14 : 170452.dasm (5.38 % of base)
13 : 207004.dasm (4.17 % of base)
13 : 263801.dasm (3.43 % of base)
13 : 9629.dasm (3.64 % of base)
9 : 27619.dasm (0.36 % of base)
9 : 46807.dasm (0.20 % of base)
Top file improvements (bytes):
-42 : 128497.dasm (-5.55 % of base)
-42 : 45449.dasm (-5.55 % of base)
-37 : 232882.dasm (-1.34 % of base)
-28 : 96280.dasm (-1.06 % of base)
-25 : 121820.dasm (-1.57 % of base)
-23 : 73643.dasm (-0.42 % of base)
-21 : 231761.dasm (-1.11 % of base)
-19 : 168340.dasm (-0.94 % of base)
-19 : 236165.dasm (-0.93 % of base)
-18 : 231763.dasm (-0.86 % of base)
-16 : 232661.dasm (-1.24 % of base)
-14 : 27757.dasm (-0.94 % of base)
-14 : 2210.dasm (-0.74 % of base)
-13 : 100050.dasm (-0.63 % of base)
-12 : 24108.dasm (-0.83 % of base)
-12 : 253414.dasm (-0.50 % of base)
-10 : 116716.dasm (-1.25 % of base)
-8 : 183858.dasm (-0.81 % of base)
-7 : 100009.dasm (-0.56 % of base)
-7 : 38089.dasm (-1.27 % of base)
52 total files with Code Size differences (23 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
126 (1.38 % of base) : 177035.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
109 (2.14 % of base) : 170058.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
58 (7.82 % of base) : 233032.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
30 (1.74 % of base) : 17112.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (FullOpts)
28 (0.76 % of base) : 20851.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (FullOpts)
26 (0.60 % of base) : 116872.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
23 (2.11 % of base) : 22112.dasm - System.Diagnostics.Tracing.ManifestBuilder:TranslateToManifestConvention(System.String,System.String):System.String:this (FullOpts)
22 (1.05 % of base) : 182304.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
21 (0.08 % of base) : 231960.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 (6.06 % of base) : 48782.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
20 (6.06 % of base) : 131224.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
20 (2.14 % of base) : 73960.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)
20 (2.14 % of base) : 153061.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)
17 (0.67 % of base) : 120904.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
14 (5.38 % of base) : 170452.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
13 (3.43 % of base) : 263801.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
13 (3.64 % of base) : 9629.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
13 (4.17 % of base) : 207004.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
9 (0.20 % of base) : 46807.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
9 (0.36 % of base) : 27619.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
Top method improvements (bytes):
-42 (-5.55 % of base) : 128497.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-42 (-5.55 % of base) : 45449.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-37 (-1.34 % of base) : 232882.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
-28 (-1.06 % of base) : 96280.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildDelegateRelaxationLambda(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundMethodGroup,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundLambda:this (FullOpts)
-25 (-1.57 % of base) : 121820.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter:SpillLValue(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,ubyte,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-23 (-0.42 % of base) : 73643.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 (-1.11 % of base) : 231761.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
-19 (-0.94 % of base) : 168340.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-19 (-0.93 % of base) : 236165.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-18 (-0.86 % of base) : 231763.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-16 (-1.24 % of base) : 232661.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception:this (FullOpts)
-14 (-0.94 % of base) : 27757.dasm - System.Data.ForeignKeyConstraint:CascadeDelete(System.Data.DataRow):this (FullOpts)
-14 (-0.74 % of base) : 2210.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-13 (-0.63 % of base) : 100050.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
-12 (-0.83 % of base) : 24108.dasm - System.Data.ForeignKeyConstraint:CheckConstraint(System.Data.DataRow,int):this (FullOpts)
-12 (-0.50 % of base) : 253414.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-10 (-1.25 % of base) : 116716.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyTupleConversion(Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref):int (FullOpts)
-8 (-0.81 % of base) : 183858.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-7 (-0.56 % of base) : 100009.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:DetermineDefaultPropertyName(System.Collections.Generic.Dictionary`2[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.String:this (FullOpts)
-7 (-1.27 % of base) : 38089.dasm - Microsoft.FSharp.Collections.ArrayModule:Partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):System.Tuple`2[System.__Canon[],System.__Canon[]] (FullOpts)
Top method regressions (percentages):
58 (7.82 % of base) : 233032.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
20 (6.06 % of base) : 48782.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
20 (6.06 % of base) : 131224.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
14 (5.38 % of base) : 170452.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
13 (4.17 % of base) : 207004.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
6 (4.03 % of base) : 195230.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
6 (4.03 % of base) : 158226.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
13 (3.64 % of base) : 9629.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
13 (3.43 % of base) : 263801.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
7 (2.15 % of base) : 253254.dasm - System.Numerics.BigInteger:System.Numerics.IBinaryInteger<System.Numerics.BigInteger>.TryWriteLittleEndian(System.Span`1[ubyte],byref):ubyte:this (FullOpts)
20 (2.14 % of base) : 73960.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)
20 (2.14 % of base) : 153061.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)
109 (2.14 % of base) : 170058.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
23 (2.11 % of base) : 22112.dasm - System.Diagnostics.Tracing.ManifestBuilder:TranslateToManifestConvention(System.String,System.String):System.String:this (FullOpts)
2 (2.11 % of base) : 139917.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:AdvanceIfMatches(System.String):ubyte:this (FullOpts)
2 (2.11 % of base) : 57915.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:AdvanceIfMatches(System.String):ubyte:this (FullOpts)
7 (2.01 % of base) : 253253.dasm - System.Numerics.BigInteger:System.Numerics.IBinaryInteger<System.Numerics.BigInteger>.TryWriteBigEndian(System.Span`1[ubyte],byref):ubyte:this (FullOpts)
30 (1.74 % of base) : 17112.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodTokenNoLock(System.Reflection.MethodInfo,ubyte):int:this (FullOpts)
6 (1.69 % of base) : 99306.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.MetadataOrSourceAssemblySymbol:GetDeclaredSpecialTypeMember(int):Microsoft.CodeAnalysis.VisualBasic.Symbol:this (FullOpts)
5 (1.69 % of base) : 239187.dasm - System.Runtime.Serialization.Formatters.Binary.BinaryFormatterWriter:WriteRectangleArray(System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,int,int[],int[]):this (FullOpts)
Top method improvements (percentages):
-42 (-5.55 % of base) : 128497.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-42 (-5.55 % of base) : 45449.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-25 (-1.57 % of base) : 121820.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter:SpillLValue(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,ubyte,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-37 (-1.34 % of base) : 232882.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
-4 (-1.29 % of base) : 155278.dasm - Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (FullOpts)
-4 (-1.29 % of base) : 192483.dasm - Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (FullOpts)
-7 (-1.27 % of base) : 38089.dasm - Microsoft.FSharp.Collections.ArrayModule:Partition[System.__Canon](Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,ubyte],System.__Canon[]):System.Tuple`2[System.__Canon[],System.__Canon[]] (FullOpts)
-10 (-1.25 % of base) : 116716.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyTupleConversion(Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref):int (FullOpts)
-16 (-1.24 % of base) : 232661.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception:this (FullOpts)
-21 (-1.11 % of base) : 231761.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexGet(System.Object,System.Object[],System.String[]):System.Object (FullOpts)
-28 (-1.06 % of base) : 96280.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildDelegateRelaxationLambda(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundMethodGroup,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundLambda:this (FullOpts)
-19 (-0.94 % of base) : 168340.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-14 (-0.94 % of base) : 27757.dasm - System.Data.ForeignKeyConstraint:CascadeDelete(System.Data.DataRow):this (FullOpts)
-19 (-0.93 % of base) : 236165.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-18 (-0.86 % of base) : 231763.dasm - Microsoft.VisualBasic.CompilerServices.LateBinding:LateIndexSet(System.Object,System.Object[],System.String[]) (FullOpts)
-12 (-0.83 % of base) : 24108.dasm - System.Data.ForeignKeyConstraint:CheckConstraint(System.Data.DataRow,int):this (FullOpts)
-8 (-0.81 % of base) : 183858.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-14 (-0.74 % of base) : 2210.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-13 (-0.63 % of base) : 100050.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOverloadsErrors(Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):this (FullOpts)
-5 (-0.60 % of base) : 23763.dasm - System.Data.DataTable:set_PrimaryKey(System.Data.DataColumn[]):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: 60382760 (overridden on cmd)
Total bytes of diff: 60382079 (overridden on cmd)
Total bytes of delta: -681 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
85 : 126683.dasm (1.43 % of base)
64 : 173831.dasm (8.82 % of base)
63 : 229731.dasm (13.91 % of base)
41 : 73152.dasm (0.65 % of base)
37 : 129853.dasm (0.67 % of base)
32 : 208429.dasm (5.99 % of base)
32 : 275925.dasm (3.00 % of base)
32 : 144125.dasm (5.99 % of base)
29 : 179574.dasm (0.67 % of base)
29 : 111513.dasm (0.85 % of base)
27 : 43488.dasm (0.59 % of base)
27 : 198659.dasm (0.42 % of base)
27 : 174211.dasm (0.10 % of base)
25 : 142537.dasm (3.58 % of base)
25 : 206960.dasm (3.58 % of base)
22 : 171711.dasm (0.86 % of base)
21 : 126383.dasm (0.79 % of base)
18 : 160321.dasm (4.13 % of base)
17 : 49660.dasm (0.82 % of base)
17 : 49903.dasm (0.28 % of base)
Top file improvements (bytes):
-889 : 103547.dasm (-5.12 % of base)
-108 : 126692.dasm (-3.47 % of base)
-88 : 130794.dasm (-1.86 % of base)
-55 : 192590.dasm (-0.54 % of base)
-42 : 48513.dasm (-5.52 % of base)
-41 : 103391.dasm (-1.98 % of base)
-29 : 173828.dasm (-0.93 % of base)
-27 : 16775.dasm (-1.38 % of base)
-27 : 51612.dasm (-0.87 % of base)
-25 : 222677.dasm (-2.79 % of base)
-23 : 107055.dasm (-0.56 % of base)
-21 : 103410.dasm (-0.64 % of base)
-20 : 236363.dasm (-3.91 % of base)
-18 : 131723.dasm (-0.61 % of base)
-17 : 103800.dasm (-0.42 % of base)
-17 : 186602.dasm (-0.83 % of base)
-17 : 256213.dasm (-0.82 % of base)
-16 : 253532.dasm (-1.35 % of base)
-16 : 126523.dasm (-2.14 % of base)
-13 : 107604.dasm (-0.92 % of base)
63 total files with Code Size differences (30 improved, 33 regressed), 20 unchanged.
Top method regressions (bytes):
85 (1.43 % of base) : 126683.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
64 (8.82 % of base) : 173831.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
63 (13.91 % of base) : 229731.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
41 (0.65 % of base) : 73152.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeTypeParameters(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol]:this (FullOpts)
37 (0.67 % of base) : 129853.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
32 (5.99 % of base) : 208429.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
32 (5.99 % of base) : 144125.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
32 (3.00 % of base) : 275925.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
29 (0.67 % of base) : 179574.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
29 (0.85 % of base) : 111513.dasm - Microsoft.CodeAnalysis.VisualBasic.SyntaxTreeSemanticModel:GetCrefOrNameAttributeReferenceSymbols(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,ubyte,byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]:this (FullOpts)
27 (0.42 % of base) : 198659.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
27 (0.59 % of base) : 43488.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)
27 (0.10 % of base) : 174211.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)
25 (3.58 % of base) : 142537.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
25 (3.58 % of base) : 206960.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
22 (0.86 % of base) : 171711.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
21 (0.79 % of base) : 126383.dasm - Microsoft.CodeAnalysis.VisualBasic.UseTwiceRewriter:UseTwiceLateInvocation(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BoundLateInvocation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedLocal]):Microsoft.CodeAnalysis.VisualBasic.UseTwiceRewriter+Result (FullOpts)
18 (4.13 % of base) : 160321.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
17 (0.28 % of base) : 49903.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
17 (0.82 % of base) : 49660.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
Top method improvements (bytes):
-889 (-5.12 % of base) : 103547.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
-108 (-3.47 % of base) : 126692.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CombineCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,int,System.Collections.Immutable.ImmutableArray`1[System.String],byref) (FullOpts)
-88 (-1.86 % of base) : 130794.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
-55 (-0.54 % of base) : 192590.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-42 (-5.52 % of base) : 48513.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-41 (-1.98 % of base) : 103391.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-29 (-0.93 % of base) : 173828.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
-27 (-0.87 % of base) : 51612.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildArgumentsInEvaluationOrder(Microsoft.CodeAnalysis.Operations.CSharpOperationFactory,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.CSharpCompilation):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Operations.IArgumentOperation] (FullOpts)
-27 (-1.38 % of base) : 16775.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-25 (-2.79 % of base) : 222677.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-23 (-0.56 % of base) : 107055.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ReducedExtensionMethodSymbol:Create(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,int,byref):Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol (FullOpts)
-21 (-0.64 % of base) : 103410.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BuildDelegateRelaxationLambda(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.VisualBasic.BoundMethodGroup,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundLambda:this (FullOpts)
-20 (-3.91 % of base) : 236363.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-18 (-0.61 % of base) : 131723.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter:SpillLValue(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,ubyte,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-17 (-0.42 % of base) : 103800.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindUsingBlock(Microsoft.CodeAnalysis.VisualBasic.Syntax.UsingBlockSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundStatement:this (FullOpts)
-17 (-0.83 % of base) : 186602.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-17 (-0.82 % of base) : 256213.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-16 (-1.35 % of base) : 253532.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-16 (-2.14 % of base) : 126523.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyTupleConversion(Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref):int (FullOpts)
-13 (-0.92 % of base) : 107604.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceFile:BindImports(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref,byref,System.Threading.CancellationToken,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (FullOpts)
Top method regressions (percentages):
63 (13.91 % of base) : 229731.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
64 (8.82 % of base) : 173831.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
32 (5.99 % of base) : 208429.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
32 (5.99 % of base) : 144125.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
16 (5.67 % of base) : 191767.dasm - System.Dynamic.ExpandoObject+ValueCollection:Contains(System.Object):ubyte:this (FullOpts)
16 (4.42 % of base) : 51931.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
18 (4.13 % of base) : 160321.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
6 (4.05 % of base) : 145583.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
6 (4.05 % of base) : 209841.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
14 (3.85 % of base) : 199184.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
25 (3.58 % of base) : 142537.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
25 (3.58 % of base) : 206960.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
6 (3.30 % of base) : 240930.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
32 (3.00 % of base) : 275925.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
11 (2.68 % of base) : 294972.dasm - System.Diagnostics.Activity+BaggageLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.String]):this (FullOpts)
9 (2.36 % of base) : 235588.dasm - System.Xml.Xsl.XsltOld.SequentialOutput:WriteWithReplace(System.String,ushort[],System.String[]):this (FullOpts)
2 (2.11 % of base) : 62830.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:AdvanceIfMatches(System.String):ubyte:this (FullOpts)
7 (1.83 % of base) : 31342.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
7 (1.81 % of base) : 182785.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
5 (1.77 % of base) : 276125.dasm - System.Net.HttpEndPointListener:AddSpecial(System.Collections.Generic.List`1[System.Net.ListenerPrefix],System.Net.ListenerPrefix) (FullOpts)
Top method improvements (percentages):
-7 (-11.67 % of base) : 19004.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-6 (-10.71 % of base) : 19016.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-42 (-5.52 % of base) : 48513.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-889 (-5.12 % of base) : 103547.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
-20 (-3.91 % of base) : 236363.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-108 (-3.47 % of base) : 126692.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CombineCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,int,System.Collections.Immutable.ImmutableArray`1[System.String],byref) (FullOpts)
-25 (-2.79 % of base) : 222677.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-16 (-2.14 % of base) : 126523.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyTupleConversion(Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref):int (FullOpts)
-8 (-2.06 % of base) : 91983.dasm - Microsoft.Diagnostics.Tracing.Parsers.Kernel.DiskIOTraceData:get_DiskServiceTimeMSec():double:this (FullOpts)
-41 (-1.98 % of base) : 103391.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-88 (-1.86 % of base) : 130794.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
-4 (-1.42 % of base) : 191849.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
-27 (-1.38 % of base) : 16775.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-16 (-1.35 % of base) : 253532.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-10 (-1.16 % of base) : 126698.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CompareParameterTypeGenericDepth(Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,byref,byref):ubyte (FullOpts)
-4 (-1.04 % of base) : 206199.dasm - Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (FullOpts)
-4 (-1.04 % of base) : 141723.dasm - Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (FullOpts)
-29 (-0.93 % of base) : 173828.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
-13 (-0.92 % of base) : 107604.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceFile:BindImports(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref,byref,System.Threading.CancellationToken,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (FullOpts)
-11 (-0.91 % of base) : 174222.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception: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: 31730046 (overridden on cmd)
Total bytes of diff: 31729438 (overridden on cmd)
Total bytes of delta: -608 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
25 : 9478.dasm (3.94 % of base)
25 : 16612.dasm (3.94 % of base)
25 : 17711.dasm (3.94 % of base)
25 : 17875.dasm (3.94 % of base)
25 : 18419.dasm (3.94 % of base)
25 : 20385.dasm (3.94 % of base)
25 : 13834.dasm (3.94 % of base)
25 : 7864.dasm (3.94 % of base)
25 : 8125.dasm (3.94 % of base)
24 : 60712.dasm (0.93 % of base)
24 : 70171.dasm (3.56 % of base)
21 : 15361.dasm (8.40 % of base)
21 : 14931.dasm (8.40 % of base)
21 : 17397.dasm (8.40 % of base)
16 : 34417.dasm (0.62 % of base)
15 : 39611.dasm (5.86 % of base)
15 : 62583.dasm (5.86 % of base)
15 : 6803.dasm (5.86 % of base)
15 : 76591.dasm (5.86 % of base)
15 : 31739.dasm (5.86 % of base)
Top file improvements (bytes):
-32 : 68971.dasm (-4.87 % of base)
-32 : 51588.dasm (-4.28 % of base)
-32 : 60038.dasm (-4.99 % of base)
-22 : 9213.dasm (-3.35 % of base)
-22 : 33496.dasm (-3.35 % of base)
-21 : 50778.dasm (-4.20 % of base)
-21 : 54501.dasm (-4.23 % of base)
-21 : 66922.dasm (-4.23 % of base)
-21 : 68911.dasm (-0.82 % of base)
-21 : 70263.dasm (-4.20 % of base)
-21 : 9838.dasm (-4.20 % of base)
-21 : 10986.dasm (-4.23 % of base)
-21 : 15931.dasm (-4.20 % of base)
-21 : 18677.dasm (-4.23 % of base)
-21 : 19587.dasm (-4.20 % of base)
-21 : 21235.dasm (-4.23 % of base)
-21 : 2944.dasm (-2.15 % of base)
-21 : 68788.dasm (-4.20 % of base)
-21 : 71758.dasm (-4.20 % of base)
-21 : 8763.dasm (-4.23 % of base)
89 total files with Code Size differences (41 improved, 48 regressed), 20 unchanged.
Top method regressions (bytes):
25 (3.94 % of base) : 9478.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
25 (3.94 % of base) : 16612.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
25 (3.94 % of base) : 17711.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
25 (3.94 % of base) : 17875.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
25 (3.94 % of base) : 18419.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
25 (3.94 % of base) : 20385.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
25 (3.94 % of base) : 13834.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
25 (3.94 % of base) : 7864.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
25 (3.94 % of base) : 8125.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
24 (3.56 % of base) : 70171.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
24 (0.93 % of base) : 60712.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
21 (8.40 % of base) : 15361.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
21 (8.40 % of base) : 14931.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
21 (8.40 % of base) : 17397.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
16 (0.62 % of base) : 34417.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
15 (5.86 % of base) : 39611.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 62583.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 6803.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 76591.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 31739.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
Top method improvements (bytes):
-32 (-4.87 % of base) : 68971.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
-32 (-4.28 % of base) : 51588.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
-32 (-4.99 % of base) : 60038.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
-22 (-3.35 % of base) : 9213.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
-22 (-3.35 % of base) : 33496.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
-21 (-2.15 % of base) : 2944.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-21 (-4.20 % of base) : 50778.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.23 % of base) : 54501.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.23 % of base) : 66922.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.20 % of base) : 70263.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.20 % of base) : 9838.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.23 % of base) : 10986.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.20 % of base) : 15931.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.23 % of base) : 18677.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.20 % of base) : 19587.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.23 % of base) : 21235.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.20 % of base) : 68788.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.20 % of base) : 71758.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-4.23 % of base) : 8763.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-21 (-0.82 % of base) : 68911.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
Top method regressions (percentages):
21 (8.40 % of base) : 15361.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
21 (8.40 % of base) : 14931.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
21 (8.40 % of base) : 17397.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 39611.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 62583.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 6803.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 76591.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 31739.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 40707.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 20222.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 20557.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 20710.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 23102.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 23237.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 26324.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 35287.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 35599.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 42999.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 46803.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
15 (5.86 % of base) : 48289.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
Top method improvements (percentages):
-32 (-4.99 % of base) : 60038.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
-32 (-4.87 % of base) : 68971.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
-19 (-4.51 % of base) : 23071.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.35 % of base) : 9304.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.33 % of base) : 9456.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.33 % of base) : 10091.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.33 % of base) : 39586.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 6410.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 6529.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 7086.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 71893.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 7911.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 35850.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 4050.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 51549.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 20370.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 51717.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 66579.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 71733.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-18 (-4.31 % of base) : 7823.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (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: 130006275 (overridden on cmd)
Total bytes of diff: 130007249 (overridden on cmd)
Total bytes of delta: 974 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
114 : 275637.dasm (4.33 % of base)
79 : 291741.dasm (4.77 % of base)
78 : 291597.dasm (4.65 % of base)
78 : 291616.dasm (4.65 % of base)
78 : 291638.dasm (4.65 % of base)
78 : 291662.dasm (4.65 % of base)
78 : 291703.dasm (4.65 % of base)
78 : 291732.dasm (4.65 % of base)
64 : 60115.dasm (8.82 % of base)
63 : 291579.dasm (3.79 % of base)
63 : 61432.dasm (13.91 % of base)
62 : 291494.dasm (3.70 % of base)
62 : 291504.dasm (3.70 % of base)
62 : 291514.dasm (3.70 % of base)
62 : 291528.dasm (3.70 % of base)
62 : 291538.dasm (3.70 % of base)
62 : 291550.dasm (3.70 % of base)
62 : 291560.dasm (3.70 % of base)
48 : 133182.dasm (3.93 % of base)
44 : 266818.dasm (3.43 % of base)
Top file improvements (bytes):
-120 : 277677.dasm (-3.11 % of base)
-111 : 277551.dasm (-3.09 % of base)
-92 : 277443.dasm (-4.49 % of base)
-80 : 277317.dasm (-5.31 % of base)
-76 : 12678.dasm (-1.65 % of base)
-59 : 135402.dasm (-4.06 % of base)
-55 : 24649.dasm (-0.54 % of base)
-50 : 276894.dasm (-3.27 % of base)
-47 : 272450.dasm (-2.60 % of base)
-47 : 277510.dasm (-7.26 % of base)
-43 : 277662.dasm (-3.45 % of base)
-42 : 23935.dasm (-5.52 % of base)
-40 : 121993.dasm (-0.57 % of base)
-40 : 272434.dasm (-2.17 % of base)
-29 : 275601.dasm (-1.37 % of base)
-29 : 58207.dasm (-0.94 % of base)
-27 : 275454.dasm (-2.18 % of base)
-26 : 285564.dasm (-1.29 % of base)
-25 : 285569.dasm (-0.79 % of base)
-25 : 285572.dasm (-0.71 % of base)
54 total files with Code Size differences (29 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
114 (4.33 % of base) : 275637.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2524_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
79 (4.77 % of base) : 291741.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32913_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291597.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32907_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291616.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32908_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291638.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32909_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291662.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32910_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291703.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32911_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291732.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32912_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (8.82 % of base) : 60115.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
63 (3.79 % of base) : 291579.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32906_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
63 (13.91 % of base) : 61432.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
62 (3.70 % of base) : 291494.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32898_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291504.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32899_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291514.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32900_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291528.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32901_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291538.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32902_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291550.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32903_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291560.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32904_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
48 (3.93 % of base) : 133182.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:WrapPartitionedStreamHelper[int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int],System.Linq.Parallel.PartitionedStream`2[int,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],int,System.Threading.CancellationToken):this (FullOpts)
44 (3.37 % of base) : 267078.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTextEqualsTooLargeToMatch(System.String) (FullOpts)
Top method improvements (bytes):
-120 (-3.11 % of base) : 277677.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5141_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-111 (-3.09 % of base) : 277551.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29469_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-92 (-4.49 % of base) : 277443.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4839_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-80 (-5.31 % of base) : 277317.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4691_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-76 (-1.65 % of base) : 12678.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-59 (-4.06 % of base) : 135402.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,int]:WrapPartitionedStreamHelper[int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int],System.Linq.Parallel.PartitionedStream`2[int,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[int],int,System.Threading.CancellationToken):this (FullOpts)
-55 (-0.54 % of base) : 24649.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-50 (-3.27 % of base) : 276894.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4555_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-47 (-2.60 % of base) : 272450.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28946_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-47 (-7.26 % of base) : 277510.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4901_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-43 (-3.45 % of base) : 277662.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5122_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-42 (-5.52 % of base) : 23935.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-40 (-2.17 % of base) : 272434.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28945_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-40 (-0.57 % of base) : 121993.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F41B8911E2F21D4DC5E3A6E6E037C09C91843DEA626D26CDD1D82984E3611395A__GetRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-29 (-0.94 % of base) : 58207.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
-29 (-1.37 % of base) : 275601.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2481_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-27 (-2.18 % of base) : 275454.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2346_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-26 (-1.29 % of base) : 285564.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31422_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-25 (-0.79 % of base) : 285569.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31015_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-25 (-0.71 % of base) : 285572.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31016_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method regressions (percentages):
63 (13.91 % of base) : 61432.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
64 (8.82 % of base) : 60115.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InferTypeArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
79 (4.77 % of base) : 291741.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32913_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291597.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32907_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291616.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32908_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291638.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32909_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291662.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32910_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291703.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32911_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
78 (4.65 % of base) : 291732.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32912_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
114 (4.33 % of base) : 275637.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2524_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
18 (4.13 % of base) : 102400.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
48 (3.93 % of base) : 133182.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:WrapPartitionedStreamHelper[int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int],System.Linq.Parallel.PartitionedStream`2[int,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],int,System.Threading.CancellationToken):this (FullOpts)
63 (3.79 % of base) : 291579.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32906_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291494.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32898_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291504.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32899_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291514.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32900_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291528.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32901_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291538.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32902_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291550.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32903_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
62 (3.70 % of base) : 291560.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32904_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-47 (-7.26 % of base) : 277510.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4901_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-42 (-5.52 % of base) : 23935.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
-80 (-5.31 % of base) : 277317.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4691_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-92 (-4.49 % of base) : 277443.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4839_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-59 (-4.06 % of base) : 135402.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,int]:WrapPartitionedStreamHelper[int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int],System.Linq.Parallel.PartitionedStream`2[int,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[int],int,System.Threading.CancellationToken):this (FullOpts)
-20 (-3.91 % of base) : 170822.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-43 (-3.45 % of base) : 277662.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5122_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-50 (-3.27 % of base) : 276894.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4555_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-120 (-3.11 % of base) : 277677.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5141_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-111 (-3.09 % of base) : 277551.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29469_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-22 (-2.66 % of base) : 290753.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32529_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-47 (-2.60 % of base) : 272450.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28946_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-22 (-2.59 % of base) : 275075.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1573_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-22 (-2.59 % of base) : 275076.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1578_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-22 (-2.59 % of base) : 275077.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1583_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-14 (-2.53 % of base) : 34786.dasm - LamarCodeGeneration.Util.ExpressionCompiler:TryCompile(byref,System.Type,System.Type[],System.Type,System.Linq.Expressions.Expression,System.Collections.Generic.IReadOnlyList`1[System.Linq.Expressions.ParameterExpression],ubyte):System.Object (FullOpts)
-14 (-2.40 % of base) : 275781.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2820_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-2.29 % of base) : 194938.dasm - DataContractJsonSerializerTests:DCJS_DecimalAsRoot() (FullOpts)
-11 (-2.29 % of base) : 195858.dasm - DataContractJsonSerializerTests:DCJS_DecimalAsRoot() (FullOpts)
-27 (-2.18 % of base) : 275454.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2346_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
realworld.run.linux.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 13217933 (overridden on cmd)
Total bytes of diff: 13217984 (overridden on cmd)
Total bytes of delta: 51 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
120 : 14042.dasm (1.53 % of base)
35 : 6693.dasm (4.10 % of base)
28 : 19665.dasm (1.53 % of base)
18 : 16721.dasm (1.88 % of base)
17 : 19684.dasm (0.28 % of base)
17 : 20255.dasm (0.61 % of base)
16 : 27614.dasm (4.42 % of base)
11 : 20066.dasm (1.16 % of base)
11 : 3197.dasm (0.17 % of base)
10 : 27041.dasm (0.47 % of base)
9 : 11707.dasm (2.05 % of base)
8 : 20808.dasm (0.14 % of base)
6 : 21914.dasm (0.38 % of base)
6 : 18459.dasm (0.52 % of base)
6 : 12339.dasm (0.49 % of base)
5 : 21686.dasm (1.20 % of base)
4 : 7819.dasm (0.51 % of base)
4 : 7843.dasm (0.55 % of base)
3 : 19143.dasm (0.34 % of base)
3 : 15870.dasm (0.54 % of base)
Top file improvements (bytes):
-152 : 6525.dasm (-0.17 % of base)
-35 : 59.dasm (-1.72 % of base)
-29 : 22574.dasm (-0.46 % of base)
-22 : 13456.dasm (-0.29 % of base)
-11 : 2988.dasm (-0.10 % of base)
-11 : 13861.dasm (-0.57 % of base)
-7 : 13476.dasm (-0.22 % of base)
-6 : 27435.dasm (-0.19 % of base)
-4 : 10210.dasm (-0.08 % of base)
-4 : 24387.dasm (-1.24 % of base)
-3 : 32207.dasm (-0.55 % of base)
-3 : 22554.dasm (-0.22 % of base)
-2 : 28974.dasm (-0.07 % of base)
-2 : 32159.dasm (-0.09 % of base)
-2 : 11958.dasm (-0.10 % of base)
-2 : 29718.dasm (-0.04 % of base)
-1 : 32215.dasm (-0.11 % of base)
-1 : 6050.dasm (-0.02 % of base)
-1 : 25979.dasm (-0.13 % of base)
41 total files with Code Size differences (19 improved, 22 regressed), 21 unchanged.
Top method regressions (bytes):
120 (1.53 % of base) : 14042.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
35 (4.10 % of base) : 6693.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
28 (1.53 % of base) : 19665.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
18 (1.88 % of base) : 16721.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)
17 (0.28 % of base) : 19684.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
17 (0.61 % of base) : 20255.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
16 (4.42 % of base) : 27614.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
11 (0.17 % of base) : 3197.dasm - FSharp.Compiler.CompilerImports:TcConfig.TryResolveLibsUsingMSBuildRules.Static(FSharp.Compiler.CompilerConfig+TcConfig,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+AssemblyReference],FSharp.Compiler.Text.Range,FSharp.Compiler.CompilerImports+ResolveAssemblyReferenceMode):System.Tuple`2[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerImports+AssemblyResolution],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CompilerConfig+UnresolvedAssemblyReference]] (FullOpts)
11 (1.16 % of base) : 20066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.SymbolFactory:SubstituteTypeParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]]],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
10 (0.47 % of base) : 27041.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (FullOpts)
9 (2.05 % of base) : 11707.dasm - SixLabors.ImageSharp.Memory.MemoryGroupSpanCache:Create[SixLabors.ImageSharp.PixelFormats.Rgba32](System.Buffers.IMemoryOwner`1[SixLabors.ImageSharp.PixelFormats.Rgba32][]):SixLabors.ImageSharp.Memory.MemoryGroupSpanCache (FullOpts)
8 (0.14 % of base) : 20808.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
6 (0.52 % of base) : 18459.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
6 (0.38 % of base) : 21914.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeArguments(Microsoft.CodeAnalysis.ISymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]]):this (FullOpts)
6 (0.49 % of base) : 12339.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
5 (1.20 % of base) : 21686.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
4 (0.51 % of base) : 7819.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingComparable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
4 (0.55 % of base) : 7843.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingEquatable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
3 (0.24 % of base) : 27654.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
3 (0.34 % of base) : 19143.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (FullOpts)
Top method improvements (bytes):
-152 (-0.17 % of base) : 6525.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
-35 (-1.72 % of base) : 59.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
-29 (-0.46 % of base) : 22574.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)
-22 (-0.29 % of base) : 13456.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
-11 (-0.10 % of base) : 2988.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
-11 (-0.57 % of base) : 13861.dasm - Microsoft.ML.Data.MetricWriter:GetConfusionTableAsArray(Microsoft.ML.IDataView,int,int,int[],int,byref,byref):double[][] (FullOpts)
-7 (-0.22 % of base) : 13476.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
-6 (-0.19 % of base) : 27435.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.08 % of base) : 10210.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
-4 (-1.24 % of base) : 24387.dasm - Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (FullOpts)
-3 (-0.22 % of base) : 22554.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetParamArrayArgument(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],System.Collections.Immutable.ImmutableArray`1[System.String],int,int,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.TypedConstant (FullOpts)
-3 (-0.55 % of base) : 32207.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
-2 (-0.07 % of base) : 28974.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-2 (-0.10 % of base) : 11958.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
-2 (-0.09 % of base) : 32159.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
-2 (-0.04 % of base) : 29718.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-1 (-0.02 % of base) : 6050.dasm - FSharp.Compiler.TypedTreePickle:unpickleObjWithDanglingCcus[System.__Canon](System.String,FSharp.Compiler.AbstractIL.IL+ILScopeRef,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILModuleDef],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.IO.ReadOnlyByteMemory):FSharp.Compiler.TypedTreePickle+PickledDataWithReferences`1[System.__Canon] (FullOpts)
-1 (-0.13 % of base) : 25979.dasm - Microsoft.CodeAnalysis.CSharp.Binder+WithQueryLambdaParametersBinder:BindRangeVariable(Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.RangeVariableSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-1 (-0.11 % of base) : 32215.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
Top method regressions (percentages):
16 (4.42 % of base) : 27614.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeDeclarationUsingStatement(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundBlock,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundLocalDeclaration],Microsoft.CodeAnalysis.CSharp.MethodArgumentInfo,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.SyntaxToken):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
35 (4.10 % of base) : 6693.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
2 (2.11 % of base) : 17888.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:AdvanceIfMatches(System.String):ubyte:this (FullOpts)
9 (2.05 % of base) : 11707.dasm - SixLabors.ImageSharp.Memory.MemoryGroupSpanCache:Create[SixLabors.ImageSharp.PixelFormats.Rgba32](System.Buffers.IMemoryOwner`1[SixLabors.ImageSharp.PixelFormats.Rgba32][]):SixLabors.ImageSharp.Memory.MemoryGroupSpanCache (FullOpts)
18 (1.88 % of base) : 16721.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)
28 (1.53 % of base) : 19665.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
120 (1.53 % of base) : 14042.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
5 (1.20 % of base) : 21686.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:CheckForMissingRequiredParameter(Microsoft.CodeAnalysis.CSharp.OverloadResolution+ParameterMap,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],ubyte,ubyte):System.Nullable`1[int] (FullOpts)
11 (1.16 % of base) : 20066.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.SymbolFactory:SubstituteTypeParameters(Microsoft.CodeAnalysis.CSharp.Symbols.Metadata.PE.PEModuleSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ModifierInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol]]]],System.Collections.Immutable.ImmutableArray`1[ubyte]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:this (FullOpts)
17 (0.61 % of base) : 20255.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
4 (0.55 % of base) : 7843.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingEquatable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
3 (0.54 % of base) : 15870.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
6 (0.52 % of base) : 18459.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
4 (0.51 % of base) : 7819.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingComparable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
6 (0.49 % of base) : 12339.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
10 (0.47 % of base) : 27041.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (FullOpts)
6 (0.38 % of base) : 21914.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeArguments(Microsoft.CodeAnalysis.ISymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]]):this (FullOpts)
3 (0.34 % of base) : 19143.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (FullOpts)
17 (0.28 % of base) : 19684.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
3 (0.24 % of base) : 27654.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildParamsArray(Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.BoundExpression):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
Top method improvements (percentages):
-35 (-1.72 % of base) : 59.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
-4 (-1.24 % of base) : 24387.dasm - Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (FullOpts)
-11 (-0.57 % of base) : 13861.dasm - Microsoft.ML.Data.MetricWriter:GetConfusionTableAsArray(Microsoft.ML.IDataView,int,int,int[],int,byref,byref):double[][] (FullOpts)
-3 (-0.55 % of base) : 32207.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
-29 (-0.46 % of base) : 22574.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)
-22 (-0.29 % of base) : 13456.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
-7 (-0.22 % of base) : 13476.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
-3 (-0.22 % of base) : 22554.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetParamArrayArgument(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],System.Collections.Immutable.ImmutableArray`1[System.String],int,int,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.TypedConstant (FullOpts)
-6 (-0.19 % of base) : 27435.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-152 (-0.17 % of base) : 6525.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
-1 (-0.13 % of base) : 25979.dasm - Microsoft.CodeAnalysis.CSharp.Binder+WithQueryLambdaParametersBinder:BindRangeVariable(Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.RangeVariableSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-1 (-0.11 % of base) : 32215.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
-2 (-0.10 % of base) : 11958.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
-11 (-0.10 % of base) : 2988.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
-2 (-0.09 % of base) : 32159.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
-4 (-0.08 % of base) : 10210.dasm - FSharp.Compiler.CheckDeclarations:k@828-10(FSharp.Compiler.TypedTree+CcuThunk,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],ubyte,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,ubyte],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.ScopedPragma],FSharp.Compiler.Syntax.QualifiedNameOfFile,ubyte,System.Tuple`2[ubyte,ubyte],FSharp.Compiler.InfoReader+InfoReader,FSharp.Compiler.CheckExpressions+TcFileState,Microsoft.FSharp.Core.FSharpRef`1[FSharp.Compiler.TypedTree+ModuleOrNamespaceType],FSharp.Compiler.TypedTree+ModuleOrNamespaceExpr,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[int,FSharp.Compiler.TypedTree+Attrib]],FSharp.Compiler.CheckExpressions+TcEnv):System.Tuple`5[FSharp.Compiler.CheckDeclarations+TopAttribs,FSharp.Compiler.TypedTree+TypedImplFile,FSharp.Compiler.TypedTree+ModuleOrNamespaceType,FSharp.Compiler.CheckExpressions+TcEnv,ubyte] (FullOpts)
-2 (-0.07 % of base) : 28974.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.CSharpAttributeData:CreateMetadataArray(Microsoft.CodeAnalysis.TypedConstant,Microsoft.CodeAnalysis.Emit.EmitContext):Microsoft.CodeAnalysis.CodeGen.MetadataCreateArray:this (FullOpts)
-2 (-0.04 % of base) : 29718.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-1 (-0.02 % of base) : 6050.dasm - FSharp.Compiler.TypedTreePickle:unpickleObjWithDanglingCcus[System.__Canon](System.String,FSharp.Compiler.AbstractIL.IL+ILScopeRef,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILModuleDef],Microsoft.FSharp.Core.FSharpFunc`2[System.__Canon,System.__Canon],FSharp.Compiler.IO.ReadOnlyByteMemory):FSharp.Compiler.TypedTreePickle+PickledDataWithReferences`1[System.__Canon] (FullOpts)
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: 4173941 (overridden on cmd)
Total bytes of diff: 4173900 (overridden on cmd)
Total bytes of delta: -41 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
7 : 22156.dasm (1.44 % of base)
7 : 4493.dasm (1.46 % of base)
2 : 3157.dasm (0.51 % of base)
Top file improvements (bytes):
-17 : 21911.dasm (-0.93 % of base)
-17 : 2376.dasm (-0.93 % of base)
-16 : 8175.dasm (-0.77 % of base)
-5 : 3162.dasm (-2.16 % of base)
-2 : 1309.dasm (-0.16 % of base)
8 total files with Code Size differences (5 improved, 3 regressed), 29 unchanged.
Top method regressions (bytes):
7 (1.44 % of base) : 22156.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
7 (1.46 % of base) : 4493.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
2 (0.51 % of base) : 3157.dasm - Internal.Reflection.Core.Execution.ExecutionEnvironment:GetMethodInvoker(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.Reflection.Runtime.General.QMethodDefinition,System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[],System.Reflection.MemberInfo,byref):Internal.Reflection.Core.Execution.MethodBaseInvoker:this (FullOpts)
Top method improvements (bytes):
-17 (-0.93 % of base) : 21911.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-17 (-0.93 % of base) : 2376.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-16 (-0.77 % of base) : 8175.dasm - System.Threading.WaitSubsystem+WaitableObject:Wait(System.Threading.WaitSubsystem+WaitableObject[],int,ubyte,System.Threading.WaitSubsystem+ThreadWaitInfo,int,ubyte,ubyte):int (FullOpts)
-5 (-2.16 % of base) : 3162.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CanInstantiationsShareCode(System.RuntimeTypeHandle[],System.RuntimeTypeHandle[],int):ubyte:this (FullOpts)
-2 (-0.16 % of base) : 1309.dasm - System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly:UncachedGetTypeCoreCaseSensitive(System.String):System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:this (FullOpts)
Top method regressions (percentages):
7 (1.46 % of base) : 4493.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
7 (1.44 % of base) : 22156.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
2 (0.51 % of base) : 3157.dasm - Internal.Reflection.Core.Execution.ExecutionEnvironment:GetMethodInvoker(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.Reflection.Runtime.General.QMethodDefinition,System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[],System.Reflection.MemberInfo,byref):Internal.Reflection.Core.Execution.MethodBaseInvoker:this (FullOpts)
Top method improvements (percentages):
-5 (-2.16 % of base) : 3162.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CanInstantiationsShareCode(System.RuntimeTypeHandle[],System.RuntimeTypeHandle[],int):ubyte:this (FullOpts)
-17 (-0.93 % of base) : 2376.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-17 (-0.93 % of base) : 21911.dasm - System.DefaultBinder:SelectProperty(int,System.Reflection.PropertyInfo[],System.Type,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.PropertyInfo:this (FullOpts)
-16 (-0.77 % of base) : 8175.dasm - System.Threading.WaitSubsystem+WaitableObject:Wait(System.Threading.WaitSubsystem+WaitableObject[],int,ubyte,System.Threading.WaitSubsystem+ThreadWaitInfo,int,ubyte,ubyte):int (FullOpts)
-2 (-0.16 % of base) : 1309.dasm - System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly:UncachedGetTypeCoreCaseSensitive(System.String):System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:this (FullOpts)
8 total methods with Code Size differences (5 improved, 3 regressed).
osx arm64
Diffs are based on 1,733,061 contexts (561,303 MinOpts, 1,171,758 FullOpts).
MISSED contexts: 3,460 (0.20%)
Overall (-2,384 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.osx.arm64.checked.mch |
11,100,460 |
+48 |
benchmarks.run_pgo.osx.arm64.checked.mch |
24,781,864 |
-1,880 |
benchmarks.run_tiered.osx.arm64.checked.mch |
15,471,592 |
+68 |
coreclr_tests.run.osx.arm64.checked.mch |
390,212,620 |
-56 |
libraries.crossgen2.osx.arm64.checked.mch |
63,299,348 |
+168 |
libraries.pmi.osx.arm64.checked.mch |
80,228,576 |
+316 |
libraries_tests.run.osx.arm64.Release.mch |
72,838,780 |
-1,368 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
159,903,272 |
+384 |
realworld.run.osx.arm64.checked.mch |
15,077,516 |
-64 |
FullOpts (-2,384 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.osx.arm64.checked.mch |
11,099,724 |
+48 |
benchmarks.run_pgo.osx.arm64.checked.mch |
8,787,452 |
-1,880 |
benchmarks.run_tiered.osx.arm64.checked.mch |
3,949,956 |
+68 |
coreclr_tests.run.osx.arm64.checked.mch |
138,801,044 |
-56 |
libraries.crossgen2.osx.arm64.checked.mch |
63,297,720 |
+168 |
libraries.pmi.osx.arm64.checked.mch |
80,107,448 |
+316 |
libraries_tests.run.osx.arm64.Release.mch |
12,453,800 |
-1,368 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
146,843,912 |
+384 |
realworld.run.osx.arm64.checked.mch |
14,513,564 |
-64 |
Example diffs
benchmarks.run.osx.arm64.checked.mch
-12 (-1.24%) : 1552.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 12, 7 ) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T04] ( 12, 11.44) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T14] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T12] ( 8, 7.02) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
-; V04 loc2 [V04,T21] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T23] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
; V05 loc3 [V05,T00] ( 11, 17.08) int -> x0
; V06 loc4 [V06,T02] ( 8, 16 ) ref -> x15 class-hnd <System.Type>
-; V07 loc5 [V07,T08] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
-; V08 loc6 [V08,T20] ( 6, 1.83) ref -> x1 class-hnd exact <System.Type[]>
+; V07 loc5 [V07,T09] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
+; V08 loc6 [V08,T18] ( 6, 3.31) ref -> x1 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x0
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,36 +25,36 @@
;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType>
; V16 tmp5 [V16,T26] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp7 [V18,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp7 [V18,T21] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V19 tmp8 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp10 [V21,T22] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
-; V22 tmp11 [V22 ] ( 4, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
-; V23 tmp12 [V23,T18] ( 2, 2 ) long -> x0 "impAppendStmt"
+; V21 tmp10 [V21,T16] ( 2, 3.96) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
+; V22 tmp11 [V22 ] ( 4, 7.92) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
+; V23 tmp12 [V23,T11] ( 2, 7.92) long -> x0 "impAppendStmt"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V27 tmp16 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T14] ( 3, 4 ) ref -> x0 "Single return block return value"
-; V31 FramesRoot [V31,T13] ( 6, 4 ) long -> x20 "Pinvoke FrameListRoot"
-; V32 PInvokeFrame [V32 ] ( 8, 6 ) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp19 [V30,T13] ( 3, 6.96) ref -> x0 "Single return block return value"
+; V31 FramesRoot [V31,T08] ( 6, 9.92) long -> x21 "Pinvoke FrameListRoot"
+; V32 PInvokeFrame [V32 ] ( 8, 11.92) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V33 tmp22 [V33 ] ( 0, 0 ) long -> zero-ref "field V24._ptr (fldOffset=0x0)" P-INDEP
-; V34 tmp23 [V34,T23] ( 2, 1 ) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp24 [V35,T19] ( 2, 2 ) long -> x1 "argument with side effect"
-; V36 tmp25 [V36,T15] ( 2, 2 ) ref -> x20 single-def "argument with side effect"
-; V37 tmp26 [V37,T16] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V34 tmp23 [V34,T17] ( 2, 3.96) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp24 [V35,T22] ( 2, 2 ) long -> x1 "argument with side effect"
+; V36 tmp25 [V36,T19] ( 2, 2 ) ref -> x21 single-def "argument with side effect"
+; V37 tmp26 [V37,T20] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V39 tmp28 [V39,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V40 tmp29 [V40,T28] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V41 PSPSym [V41,T24] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym"
-; V42 cse0 [V42,T04] ( 10, 12.50) int -> x21 "CSE - aggressive"
-; V43 cse1 [V43,T09] ( 6, 8.54) byref -> x22 hoist multi-def "CSE - aggressive"
-; V44 cse2 [V44,T12] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
-; V45 cse3 [V45,T05] ( 3, 11.88) long -> x14 "CSE - aggressive"
-; V46 cse4 [V46,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V42 cse0 [V42,T05] ( 10, 12.50) int -> x22 "CSE - aggressive"
+; V43 cse1 [V43,T10] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
+; V44 cse2 [V44,T15] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
+; V45 cse3 [V45,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V46 cse4 [V46,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
; Lcl frame size = 112
@@ -71,21 +71,23 @@ G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x2, [fp, #0x78] // [V41 PSPSym]
str x0, [fp, #0x68] // [V00 this]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=52 bbWeight=1 PerfScore 11.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
add x0, fp, #32 // [V32 PInvokeFrame+0x08]
mov x1, x12
bl CORINFO_HELP_INIT_PINVOKE_FRAME
- mov x20, x0
+ mov x21, x0
mov x1, sp
str x1, [fp, #0x40] // [V32 PInvokeFrame+0x28]
mov x1, fp
str x1, [fp, #0x50] // [V32 PInvokeFrame+0x38]
- cbz x19, G_M59170_IG21
- ldr w21, [x19, #0x08]
- mov w1, w21
+ cbz x20, G_M59170_IG21
+ ldr w22, [x20, #0x08]
+ mov w1, w22
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -94,33 +96,28 @@ G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=800
; gcr arg pop 0
str x0, [fp, #0x60] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
- ldr x0, [x1, #0x50]
+ ldr x0, [x19, #0x50]
; gcrRegs -[x0]
bl <unknown method>
- ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
cbz w0, G_M59170_IG22
mov w0, wzr
- cmp w21, #0
+ cmp w22, #0
ble G_M59170_IG07
- ;; size=96 bbWeight=1 PerfScore 24.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- ldr w14, [x2, #0x08]
- cmp w14, w21
+ ;; size=88 bbWeight=1 PerfScore 20.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ ldr w14, [x1, #0x08]
+ cmp w14, w22
blt G_M59170_IG06
- add x22, x19, #16
- ; byrRegs +[x22]
+ add x23, x20, #16
+ ; byrRegs +[x23]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80002 {x1 x19}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x20]
mov w14, w0
- ldr x15, [x22, x14, LSL #3]
+ ldr x15, [x23, x14, LSL #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x12, [x15]
@@ -129,7 +126,7 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
movk xip0, #1 LSL #32
cmp x12, xip0
bne G_M59170_IG12
- add x12, x2, #16
+ add x12, x1, #16
; byrRegs +[x12]
add x14, x12, x14, LSL #3
; byrRegs +[x14]
@@ -137,20 +134,20 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
; gcrRegs -[x15]
; byrRegs -[x12 x14]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG04
;; size=60 bbWeight=3.96 PerfScore 59.40
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ; byrRegs -[x22]
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x23]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2] +[x19]
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- add x22, x19, #16
- ; byrRegs +[x22]
- ldr x15, [x22, w0, UXTW #3]
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x20]
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ add x23, x20, #16
+ ; byrRegs +[x23]
+ ldr x15, [x23, w0, UXTW #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x14, [x15]
@@ -159,30 +156,30 @@ G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x12, #1 LSL #32
cmp x14, x12
bne G_M59170_IG12
- ldr w14, [x2, #0x08]
+ ldr w14, [x1, #0x08]
cmp w0, w14
bhs G_M59170_IG20
- add x14, x2, #16
+ add x14, x1, #16
; byrRegs +[x14]
add x14, x14, x0, LSL #3
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x2 x15]
- ; byrRegs -[x14 x22]
+ ; gcrRegs -[x1 x15]
+ ; byrRegs -[x14 x23]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG06
;; size=76 bbWeight=0.04 PerfScore 0.86
-G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG07: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
str xzr, [fp, #0x70] // [V22 tmp11]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x1]
+ movz x2, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
add x1, fp, #112 // [V22 tmp11]
mov w2, #1
@@ -194,22 +191,22 @@ G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
str x3, [fp, #0x48] // [V32 PInvokeFrame+0x30]
add x3, fp, #32 // [V32 PInvokeFrame+0x08]
; byrRegs +[x3]
- str x3, [x20, #0x10]
- strb wzr, [x20, #0x0C]
- ;; size=72 bbWeight=0.50 PerfScore 7.25
-G_M59170_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ str x3, [x21, #0x10]
+ strb wzr, [x21, #0x0C]
...
-4 (-0.76%) : 24570.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T11] ( 3, 3 ) ref -> x20 this class-hnd single-def <Microsoft.Extensions.Logging.LogValuesFormatter>
-; V01 arg1 [V01,T09] ( 4, 3.50) ref -> x19 class-hnd single-def <System.Object[]>
-; V02 loc0 [V02,T05] ( 10, 9.25) ref -> x21 class-hnd <System.Object[]>
+; V00 this [V00,T09] ( 3, 3.98) ref -> x19 this class-hnd single-def <Microsoft.Extensions.Logging.LogValuesFormatter>
+; V01 arg1 [V01,T10] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Object[]>
+; V02 loc0 [V02,T04] ( 10, 10.23) ref -> x21 class-hnd <System.Object[]>
; V03 loc1 [V03,T00] ( 21, 42.75) int -> registers
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T13] ( 2, 2 ) ref -> x0 single-def
-; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x1 single-def
-; V08 tmp3 [V08,T10] ( 5, 5 ) ref -> x2
+; V06 tmp1 [V06,T13] ( 2, 2.98) ref -> x0 single-def
+; V07 tmp2 [V07,T14] ( 2, 2.98) ref -> x1 single-def
+; V08 tmp3 [V08,T11] ( 4, 5.46) ref -> x2
; V09 tmp4 [V09,T12] ( 3, 3 ) int -> x22 "impSpillLclRefs"
; V10 tmp5 [V10,T06] ( 4, 8.50) ref -> x26 class-hnd "Inline return value spill temp" <System.Object>
; V11 tmp6 [V11 ] ( 5, 18 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
@@ -25,7 +25,7 @@
; V14 tmp9 [V14 ] ( 10, 18 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
; V15 tmp10 [V15,T01] ( 6, 20 ) ref -> x22 class-hnd "Inlining Arg" <System.Object>
; V16 cse0 [V16,T03] ( 5, 12.25) byref -> x24 hoist "CSE - aggressive"
-; V17 cse1 [V17,T04] ( 7, 10 ) int -> x23 "CSE - aggressive"
+; V17 cse1 [V17,T05] ( 7, 10 ) int -> x23 "CSE - aggressive"
; V18 cse2 [V18,T07] ( 4, 8.25) long -> x25 hoist "CSE - aggressive"
;
; Lcl frame size = 16
@@ -38,13 +38,13 @@ G_M27341_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0x50]
mov fp, sp
stp xzr, xzr, [fp, #0x10] // [V14 tmp9], [V11 tmp6]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
+ mov x20, x1
+ ; gcrRegs +[x20]
;; size=36 bbWeight=1 PerfScore 7.50
G_M27341_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x21, x19
+ mov x21, x20
; gcrRegs +[x21]
cbz x21, G_M27341_IG21
;; size=8 bbWeight=1 PerfScore 1.50
@@ -96,13 +96,13 @@ G_M27341_IG08: ; bbWeight=4, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRe
cmp w23, w22
bgt G_M27341_IG05
;; size=28 bbWeight=4 PerfScore 30.00
-G_M27341_IG09: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x19 x26]
+G_M27341_IG09: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1 x20 x26]
; byrRegs -[x24]
b G_M27341_IG21
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs -[x21] +[x19 x26]
+ ; gcrRegs -[x21] +[x20 x26]
; byrRegs +[x24]
mov w1, w23
movz x0, #0xD1FFAB1E
@@ -112,7 +112,7 @@ G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefReg
; gcrRegs +[x0]
mov x21, x0
; gcrRegs +[x21]
- mov x0, x19
+ mov x0, x20
mov x1, x21
; gcrRegs +[x1]
mov w2, w22
@@ -121,9 +121,9 @@ G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefReg
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
add w1, w22, #1
- sxtw w19, w1
+ sxtw w20, w1
sxtw x1, w22
mov x0, x21
; gcrRegs +[x0]
@@ -131,14 +131,14 @@ G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefReg
; gcrRegs +[x2]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2 x26]
- cmp w23, w19
+ cmp w23, w20
ble G_M27341_IG21
;; size=88 bbWeight=0.50 PerfScore 7.75
-G_M27341_IG11: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
- tbnz w19, #31, G_M27341_IG17
+G_M27341_IG11: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
+ tbnz w20, #31, G_M27341_IG17
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M27341_IG12: ; bbWeight=3.96, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
- ldr x22, [x24, w19, UXTW #3]
+G_M27341_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
+ ldr x22, [x24, w20, UXTW #3]
; gcrRegs +[x22]
str xzr, [fp, #0x10] // [V14 tmp9]
str xzr, [fp, #0x10] // [V14 tmp9]
@@ -154,34 +154,34 @@ G_M27341_IG12: ; bbWeight=3.96, gcrefRegs=300000 {x20 x21}, byrefRegs=100
; gcrRegs -[x1]
cbnz w0, G_M27341_IG14
;; size=48 bbWeight=3.96 PerfScore 51.48
-G_M27341_IG13: ; bbWeight=1.98, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG13: ; bbWeight=1.98, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=1000000 {x24}, byref
mov x2, x22
; gcrRegs +[x2]
b G_M27341_IG15
;; size=8 bbWeight=1.98 PerfScore 2.97
-G_M27341_IG14: ; bbWeight=1.98, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG14: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref
; gcrRegs -[x2 x22]
ldr x2, [fp, #0x10] // [V14 tmp9]
; gcrRegs +[x2]
;; size=4 bbWeight=1.98 PerfScore 3.96
-G_M27341_IG15: ; bbWeight=3.96, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=1000000 {x24}, byref, isz
+G_M27341_IG15: ; bbWeight=3.96, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=1000000 {x24}, byref, isz
str xzr, [fp, #0x10] // [V14 tmp9]
- sxtw x1, w19
+ sxtw x1, w20
mov x0, x21
; gcrRegs +[x0]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
- add w19, w19, #1
- cmp w23, w19
+ add w20, w20, #1
+ cmp w23, w20
bgt G_M27341_IG12
;; size=28 bbWeight=3.96 PerfScore 19.80
-G_M27341_IG16: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M27341_IG16: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x24]
b G_M27341_IG21
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M27341_IG17: ; bbWeight=0.04, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M27341_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
; byrRegs +[x24]
- ldr x22, [x24, w19, UXTW #3]
+ ldr x22, [x24, w20, UXTW #3]
; gcrRegs +[x22]
str xzr, [fp, #0x10] // [V14 tmp9]
str xzr, [fp, #0x10] // [V14 tmp9]
@@ -197,28 +197,28 @@ G_M27341_IG17: ; bbWeight=0.04, gcrefRegs=300000 {x20 x21}, byrefRegs=100
; gcrRegs -[x1]
cbnz w0, G_M27341_IG19
;; size=48 bbWeight=0.04 PerfScore 0.52
-G_M27341_IG18: ; bbWeight=0.02, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG18: ; bbWeight=0.02, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=1000000 {x24}, byref
mov x2, x22
; gcrRegs +[x2]
b G_M27341_IG20
;; size=8 bbWeight=0.02 PerfScore 0.03
-G_M27341_IG19: ; bbWeight=0.02, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG19: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref
; gcrRegs -[x2 x22]
ldr x2, [fp, #0x10] // [V14 tmp9]
; gcrRegs +[x2]
;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M27341_IG20: ; bbWeight=0.04, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=1000000 {x24}, byref, isz
+G_M27341_IG20: ; bbWeight=0.04, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=1000000 {x24}, byref, isz
str xzr, [fp, #0x10] // [V14 tmp9]
- sxtw x1, w19
+ sxtw x1, w20
mov x0, x21
; gcrRegs +[x0]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
- add w19, w19, #1
- cmp w23, w19
+ add w20, w20, #1
+ cmp w23, w20
bgt G_M27341_IG17
;; size=28 bbWeight=0.04 PerfScore 0.20
-G_M27341_IG21: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M27341_IG21: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x24]
movz x0, #0xD1FFAB1E // code for System.Globalization.CultureInfo:get_InvariantCulture():System.Globalization.CultureInfo
movk x0, #0xD1FFAB1E LSL #16
@@ -226,23 +226,28 @@ G_M27341_IG21: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
ldr x0, [x0]
blr x0
; gcrRegs +[x0]
- ldr x1, [x20, #0x10]
+ ldr x1, [x19, #0x10]
; gcrRegs +[x1]
mov x2, x21
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x2, #0
- csel x2, x2, x3, ne
+ cbnz x2, G_M27341_IG23
+ ;; size=32 bbWeight=1.98 PerfScore 19.80
+G_M27341_IG22: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2 x19 x21]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
+G_M27341_IG23: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for System.String:Format(System.IFormatProvider,System.Text.CompositeFormat,System.Object[]):System.String
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x1-x2 x20-x21]
- ;; size=68 bbWeight=1 PerfScore 17.00
-G_M27341_IG22: ; bbWeight=1, epilog, nogc, extend
+ ; gcrRegs -[x1-x2]
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M27341_IG24: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
@@ -251,7 +256,7 @@ G_M27341_IG22: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
-; Total bytes of code 528, prolog size 28, PerfScore 212.00, instruction count 132, allocated bytes for code 528 (MethodHash=19de9532) for method Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
+; Total bytes of code 524, prolog size 28, PerfScore 223.01, instruction count 131, allocated bytes for code 524 (MethodHash=19de9532) for method Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -262,7 +267,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 132 (0x00084) Actual length = 528 (0x000210)
+ Function Length : 131 (0x00083) Actual length = 524 (0x00020c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-0.14%) : 17010.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
@@ -269,7 +269,7 @@
; V258 tmp219 [V258,T175] ( 2, 2 ) ref -> x24 single-def "field V83._array (fldOffset=0x0)" P-INDEP
;* V259 tmp220 [V259,T178] ( 0, 0 ) int -> zero-ref single-def "field V83._index (fldOffset=0x8)" P-INDEP
; V260 tmp221 [V260,T148] ( 5, 10.50) ref -> x1 "field V87._value (fldOffset=0x0)" P-INDEP
-; V261 tmp222 [V261,T163] ( 3, 6 ) ref -> x28 "field V87._equalityComparer (fldOffset=0x8)" P-INDEP
+; V261 tmp222 [V261,T163] ( 3, 6 ) ref -> x27 "field V87._equalityComparer (fldOffset=0x8)" P-INDEP
; V262 tmp223 [V262,T164] ( 2, 4 ) ref -> x1 "field V88._value (fldOffset=0x0)" P-INDEP
; V263 tmp224 [V263,T165] ( 2, 4 ) ref -> x27 "field V88._equalityComparer (fldOffset=0x8)" P-INDEP
; V264 tmp225 [V264,T169] ( 2, 4 ) ref -> x27 "field V101._root (fldOffset=0x0)" P-INDEP
@@ -440,46 +440,33 @@ G_M7105_IG05: ; bbWeight=4, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x2
blr x2
; gcrRegs -[x0-x1]
; byrRegs +[x0]
- cbz x0, G_M7105_IG07
+ cbz x0, G_M7105_IG47
;; size=36 bbWeight=4 PerfScore 52.00
G_M7105_IG06: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0001 {x0}, byref
ldp x1, x27, [x0]
; gcrRegs +[x1 x27]
- b G_M7105_IG08
- ;; size=8 bbWeight=2 PerfScore 10.00
-G_M7105_IG07: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x27]
+ ;; size=4 bbWeight=2 PerfScore 8.00
+G_M7105_IG07: ; bbWeight=4, gcrefRegs=DF80002 {x1 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- ldp x1, x28, [x23, #0x18]
- ; gcrRegs +[x1 x28]
- b G_M7105_IG09
- ;; size=8 bbWeight=2 PerfScore 10.00
-G_M7105_IG08: ; bbWeight=2, gcrefRegs=DF80002 {x1 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x28] +[x27]
- mov x28, x27
- ; gcrRegs +[x28]
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M7105_IG09: ; bbWeight=4, gcrefRegs=15F80002 {x1 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x27]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M7105_IG11
+ cbz x2, G_M7105_IG09
;; size=8 bbWeight=4 PerfScore 6.00
-G_M7105_IG10: ; bbWeight=1, gcrefRegs=15F80006 {x1 x2 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG08: ; bbWeight=1, gcrefRegs=DF80006 {x1 x2 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
cmp x0, x3
- beq G_M7105_IG16
+ beq G_M7105_IG48
;; size=24 bbWeight=1 PerfScore 6.00
-G_M7105_IG11: ; bbWeight=2, gcrefRegs=15F80002 {x1 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG09: ; bbWeight=2, gcrefRegs=DF80002 {x1 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2]
mov x2, x1
; gcrRegs +[x2]
- cbz x2, G_M7105_IG15
+ cbz x2, G_M7105_IG46
;; size=8 bbWeight=2 PerfScore 3.00
-G_M7105_IG12: ; bbWeight=1, gcrefRegs=15F80006 {x1 x2 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG10: ; bbWeight=1, gcrefRegs=DF80006 {x1 x2 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref, isz
ldr x0, [x2]
movz x3, #0xD1FFAB1E
movk x3, #0xD1FFAB1E LSL #16
@@ -487,9 +474,9 @@ G_M7105_IG12: ; bbWeight=1, gcrefRegs=15F80006 {x1 x2 x19 x20 x21 x22 x23
cmp x0, x3
str x2, [fp, #0xD1FFAB1E] // [V99 tmp60]
; GC ptr vars +{V99}
- beq G_M7105_IG14
+ beq G_M7105_IG12
;; size=28 bbWeight=1 PerfScore 7.00
-G_M7105_IG13: ; bbWeight=0.50, gcrefRegs=15F80002 {x1 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref
+G_M7105_IG11: ; bbWeight=0.50, gcrefRegs=DF80002 {x1 x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
; GC ptr vars -{V99}
mov x0, x3
@@ -498,9 +485,9 @@ G_M7105_IG13: ; bbWeight=0.50, gcrefRegs=15F80002 {x1 x19 x20 x21 x22 x23
str x0, [fp, #0xD1FFAB1E] // [V99 tmp60]
; GC ptr vars +{V99}
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M7105_IG14: ; bbWeight=2, gcVars=000000000000400000000000000000000000000000000000 {V99}, gcrefRegs=15F80000 {x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M7105_IG12: ; bbWeight=2, gcVars=000000000000400000000000000000000000000000000000 {V99}, gcrefRegs=DF80000 {x19 x20 x21 x22 x23 x24 x26 x27}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- mov x0, x28
+ mov x0, x27
; gcrRegs +[x0]
mov x2, x26
; gcrRegs +[x2]
@@ -512,103 +499,12 @@ G_M7105_IG14: ; bbWeight=2, gcVars=00000000000040000000000000000000000000
ldr x3, [x11]
; GC ptr vars -{V99}
blr x3
- ; gcrRegs -[x0-x2 x28]
- b G_M7105_IG23
- ;; size=36 bbWeight=2 PerfScore 19.00
-G_M7105_IG15: ; bbWeight=1, gcrefRegs=15F80004 {x2 x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref
- ; gcrRegs +[x2 x28]
- str x2, [fp, #0xD1FFAB1E] // [V99 tmp60]
- ; GC ptr vars +{V99}
- b G_M7105_IG14
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M7105_IG16: ; bbWeight=2, gcrefRegs=5F80004 {x2 x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x28]
- ; GC ptr vars -{V99}
- ldp x28, x27, [x2, #0x08]
- ; gcrRegs +[x27-x28]
- cbnz x26, G_M7105_IG17
- mov w1, wzr
- b G_M7105_IG18
- ;; size=16 bbWeight=2 PerfScore 13.00
-G_M7105_IG17: ; bbWeight=2, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2]
- mov x0, x28
- ; gcrRegs +[x0]
- mov x1, x26
- ; gcrRegs +[x1]
- movz x11, #0xD1FFAB1E // code for <unknown method>
- movk x11, #0xD1FFAB1E LSL #16
- movk x11, #1 LSL #32
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x0-x1]
- sxtw w1, w0
- ;; size=32 bbWeight=2 PerfScore 14.00
-G_M7105_IG18: ; bbWeight=2, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
- add x2, fp, #0xD1FFAB1E // [V106 tmp67]
- mov x0, x27
- ; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for System.Collections.Immutable.SortedInt32KeyNode`1[System.Collections.Immutable.ImmutableHashSet`1+HashBucket[System.__Canon]]:TryGetValue(int,byref):ubyte:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- ldr wzr, [x0]
- blr x3
- ; gcrRegs -[x0 x27]
- cbz w0, G_M7105_IG22
- ldr x0, [fp, #0xD1FFAB1E] // [V273 tmp234]
- ; gcrRegs +[x0]
- cbnz x0, G_M7105_IG19
- mov w27, wzr
- b G_M7105_IG21
- ;; size=52 bbWeight=2 PerfScore 30.00
-G_M7105_IG19: ; bbWeight=2, gcrefRegs=15F80000 {x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- mov x0, x28
- ; gcrRegs +[x0]
- ldr x2, [fp, #0xD1FFAB1E] // [V272 tmp233]
- ; gcrRegs +[x2]
- mov x1, x26
- ; gcrRegs +[x1]
- movz x11, #0xD1FFAB1E // code for <unknown method>
- movk x11, #0xD1FFAB1E LSL #16
- movk x11, #1 LSL #32
- ldr x3, [x11]
- blr x3
- ; gcrRegs -[x0-x2]
- cbnz w0, G_M7105_IG20
- ldr x0, [fp, #0xD1FFAB1E] // [V273 tmp234]
- ; gcrRegs +[x0]
- ldr w3, [x0, #0x20]
- mov x1, x26
- ; gcrRegs +[x1]
- mov x4, x28
- ; gcrRegs +[x4]
- mov w2, wzr
- movz x5, #0xD1FFAB1E // code for <unknown method>
- movk x5, #0xD1FFAB1E LSL #16
- movk x5, #1 LSL #32
- ldr x5, [x5]
- blr x5
- ; gcrRegs -[x0-x1 x4 x28]
- cmp w0, #0
- cset x27, ge
- b G_M7105_IG21
- ;; size=88 bbWeight=2 PerfScore 47.00
-G_M7105_IG20: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref
- mov w27, #1
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M7105_IG21: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref
- sxtw w0, w27
- b G_M7105_IG23
- ;; size=8 bbWeight=2 PerfScore 3.00
-G_M7105_IG22: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=2 PerfScore 1.00
-G_M7105_IG23: ; bbWeight=4, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0-x2 x27]
+ ;; size=32 bbWeight=2 PerfScore 17.00
+G_M7105_IG13: ; bbWeight=4, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
cbz w0, G_M7105_IG89
;; size=4 bbWeight=4 PerfScore 4.00
-G_M7105_IG24: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG14: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x26}, byrefRegs=0000 {}, byref, isz
str xzr, [fp, #0xD1FFAB1E] // [V09 loc6]
mov x0, x26
; gcrRegs +[x0]
@@ -624,7 +520,7 @@ G_M7105_IG24: ; bbWeight=2, gcrefRegs=5F80000 {x19 x20 x21 x22 x23 x24 x2
cmp w27, #0
ble G_M7105_IG89
;; size=48 bbWeight=2 PerfScore 36.00
-G_M7105_IG25: ; bbWeight=16, gcrefRegs=15F80000 {x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG15: ; bbWeight=16, gcrefRegs=15F80000 {x19 x20 x21 x22 x23 x24 x26 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
add x0, x28, #16
; byrRegs +[x0]
@@ -633,9 +529,9 @@ G_M7105_IG25: ; bbWeight=16, gcrefRegs=15F80000 {x19 x20 x21 x22 x23 x24
ldr x0, [fp, #0xD1FFAB1E] // [V221 tmp182]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbz x0, G_M7105_IG27
+ cbz x0, G_M7105_IG17
;; size=16 bbWeight=16 PerfScore 104.00
-G_M7105_IG26: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG16: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x0, [fp, #0xD1FFAB1E] // [V221 tmp182]
; gcrRegs +[x0]
@@ -646,7 +542,7 @@ G_M7105_IG26: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x
; byrRegs -[x0]
cbnz w0, G_M7105_IG94
;; size=16 bbWeight=8 PerfScore 52.00
-G_M7105_IG27: ; bbWeight=16, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG17: ; bbWeight=16, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
mov x0, x27
; gcrRegs +[x0]
ldr x1, [x27]
@@ -661,7 +557,7 @@ G_M7105_IG27: ; bbWeight=16, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24
ccmp w1, #15, z, ne
bne G_M7105_IG88
;; size=44 bbWeight=16 PerfScore 232.00
-G_M7105_IG28: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG18: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
mov x0, x27
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Symbols.SymbolExtensions:IsImplementableInterfaceMember(Microsoft.CodeAnalysis.CSharp.Symbol):ubyte
@@ -695,16 +591,16 @@ G_M7105_IG28: ; bbWeight=8, gcrefRegs=1DF80000 {x19 x20 x21 x22 x23 x24 x
mov w0, wzr
; gcrRegs -[x0]
;; size=96 bbWeight=8 PerfScore 220.00
-G_M7105_IG29: ; bbWeight=8, gcrefRegs=1DF80004 {x2 x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
+G_M7105_IG19: ; bbWeight=8, gcrefRegs=1DF80004 {x2 x19 x20 x21 x22 x23 x24 x26 x27 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
cbz w0, G_M7105_IG88
cmp w0, #1
bne G_M7105_IG58
mov x3, x2
; gcrRegs +[x3]
- cbz x3, G_M7105_IG55
+ cbz x3, G_M7105_IG45
...
+16 (+0.80%) : 1631.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):this (FullOpts)
@@ -8,7 +8,7 @@
; 0 inlinees with PGO data; 8 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 22, 19.50) ref -> x19 this class-hnd single-def <ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]>
+; V00 this [V00,T03] ( 22, 20.48) ref -> x19 this class-hnd single-def <ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]>
; V01 arg1 [V01,T06] ( 8, 8 ) ref -> x20 class-hnd single-def <int[]>
; V02 arg2 [V02,T08] ( 9, 7.02) ref -> x21 class-hnd single-def <ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[]>
; V03 arg3 [V03,T09] ( 8, 5.75) ref -> x22 class-hnd <System.Reflection.MethodInfo[]>
@@ -16,14 +16,14 @@
; V05 arg5 [V05,T13] ( 4, 4 ) ubyte -> x24 single-def
; V06 arg6 [V06,T20] ( 3, 3 ) ubyte -> x27 single-def
; V07 arg7 [V07,T17] ( 4, 3.50) ref -> x25 class-hnd single-def <ProtoBuf.Meta.CallbackSet>
-; V08 arg8 [V08,T11] ( 12, 6.50) ref -> x23 class-hnd <System.Type>
-; V09 arg9 [V09,T30] ( 1, 1 ) ref -> [fp+0x88] class-hnd single-def <System.Reflection.MethodInfo>
+; V08 arg8 [V08,T11] ( 12, 7.48) ref -> x23 class-hnd <System.Type>
+; V09 arg9 [V09,T29] ( 1, 1.98) ref -> x28 class-hnd single-def <System.Reflection.MethodInfo>
; V10 arg10 [V10,T31] ( 1, 1 ) int -> [fp+0x90] single-def
; V11 loc0 [V11,T10] ( 6, 7.50) ubyte -> [fp+0x24]
-; V12 loc1 [V12,T05] ( 13, 11.50) ref -> [fp+0x18] class-hnd exact spill-single-def <System.RuntimeType>
+; V12 loc1 [V12,T05] ( 13, 11.50) ref -> [fp+0x10] class-hnd exact spill-single-def <System.RuntimeType>
; V13 loc2 [V13,T02] ( 17, 23.02) int -> [fp+0x20]
;* V14 loc3 [V14,T32] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.MethodInfo[]>
-; V15 loc4 [V15,T04] ( 5, 16.50) int -> x20
+; V15 loc4 [V15,T04] ( 5, 16.50) int -> x28
;* V16 loc5 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MethodInfo>
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V18 tmp1 [V18,T40] ( 2, 0 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
@@ -35,7 +35,7 @@
; V24 tmp7 [V24,T23] ( 4, 4 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V25 tmp8 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V26 tmp9 [V26,T35] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V27 tmp10 [V27,T29] ( 3, 1.50) int -> x0
+; V27 tmp10 [V27,T30] ( 3, 1.50) int -> x0
; V28 tmp11 [V28,T36] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V29 tmp12 [V29,T37] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
; V30 tmp13 [V30,T38] ( 3, 0 ) ref -> x23 class-hnd exact "NewObj constructor temp" <<unknown class>>
@@ -66,10 +66,10 @@
; V55 tmp38 [V55,T56] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V56 tmp39 [V56,T57] ( 2, 0 ) ref -> x21 single-def "argument with side effect"
; V57 tmp40 [V57,T58] ( 2, 0 ) ref -> x2 single-def "argument with side effect"
-; V58 cse0 [V58,T07] ( 8, 9.50) int -> x28 "CSE - aggressive"
-; V59 cse1 [V59,T19] ( 4, 5.50) int -> x21 "CSE - aggressive"
-; V60 cse2 [V60,T22] ( 2, 4.25) byref -> x27 hoist "CSE - moderate"
-; V61 cse3 [V61,T12] ( 7, 6 ) byref -> x3 multi-def "CSE - aggressive"
+; V58 cse0 [V58,T07] ( 8, 9.50) int -> [fp+0x1C] spill-single-def "CSE - aggressive"
+; V59 cse1 [V59,T19] ( 4, 5.50) int -> x20 "CSE - aggressive"
+; V60 cse2 [V60,T22] ( 2, 4.25) byref -> x21 hoist "CSE - moderate"
+; V61 cse3 [V61,T12] ( 7, 6 ) byref -> x4 multi-def "CSE - aggressive"
; V62 cse4 [V62,T15] ( 3, 5.94) int -> x11 "CSE - aggressive"
; V63 cse5 [V63,T33] ( 3, 0.06) int -> x11 "CSE - conservative"
; V64 rat0 [V64,T21] ( 3, 4.40) long -> x0 "Spilling to split statement for tree"
@@ -103,13 +103,14 @@ G_M2714_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w27, w6
mov x25, x7
; gcrRegs +[x25]
- ldr x23, [fp, #0x80] // [V08 arg8]
- ; gcrRegs +[x23]
- ;; size=68 bbWeight=1 PerfScore 13.50
-G_M2714_IG02: ; bbWeight=1, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+ ldp x23, x28, [fp, #0x80] // [V08 arg8], [V09 arg9]
+ ; gcrRegs +[x23 x28]
+ ;; size=68 bbWeight=1 PerfScore 14.50
+G_M2714_IG02: ; bbWeight=1, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
cbz x20, G_M2714_IG43
- ldr w28, [x20, #0x08]
- mov w4, w28
+ ldr w6, [x20, #0x08]
+ str w6, [fp, #0x1C] // [V58 cse0]
+ mov w4, w6
mov x1, x20
; gcrRegs +[x1]
mov x2, x21
@@ -119,11 +120,11 @@ G_M2714_IG02: ; bbWeight=1, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25},
movk x0, #1 LSL #32
mov w3, wzr
mov x5, xzr
- movz x6, #0xD1FFAB1E // code for System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int])
- movk x6, #0xD1FFAB1E LSL #16
- movk x6, #1 LSL #32
- ldr x6, [x6]
- blr x6
+ movz x7, #0xD1FFAB1E // code for System.Array:Sort[int,System.__Canon](int[],System.__Canon[],int,int,System.Collections.Generic.IComparer`1[int])
+ movk x7, #0xD1FFAB1E LSL #16
+ movk x7, #1 LSL #32
+ ldr x7, [x7]
+ blr x7
; gcrRegs -[x1-x2]
; gcr arg pop 0
ldr w0, [fp, #0x90] // [V10 arg10]
@@ -136,39 +137,41 @@ G_M2714_IG02: ; bbWeight=1, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25},
bl CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE
; gcrRegs +[x0]
; gcr arg pop 0
- str x0, [fp, #0x18] // [V12 loc1]
+ str x0, [fp, #0x10] // [V12 loc1]
; GC ptr vars +{V12}
mov w2, wzr
- cmp w28, #0
+ ldr w3, [fp, #0x1C] // [V58 cse0]
+ cmp w3, #0
ble G_M2714_IG16
- ;; size=108 bbWeight=1 PerfScore 33.50
-G_M2714_IG03: ; bbWeight=0.50, gcVars=0000000000000020 {V12}, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=116 bbWeight=1 PerfScore 36.50
+G_M2714_IG03: ; bbWeight=0.50, gcVars=0000000000000020 {V12}, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
cbz x21, G_M2714_IG11
ldr w0, [x21, #0x08]
- cmp w0, w28
+ cmp w0, w3
blt G_M2714_IG11
;; size=16 bbWeight=0.50 PerfScore 2.75
-G_M2714_IG04: ; bbWeight=3.96, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+G_M2714_IG04: ; bbWeight=3.96, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
cbz w2, G_M2714_IG06
;; size=4 bbWeight=3.96 PerfScore 3.96
-G_M2714_IG05: ; bbWeight=1.98, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- add x3, x20, #16
- ; byrRegs +[x3]
- ldr w0, [x3, w2, UXTW #2]
+G_M2714_IG05: ; bbWeight=1.98, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
+ add x4, x20, #16
+ ; byrRegs +[x4]
+ ldr w0, [x4, w2, UXTW #2]
sub w11, w2, #1
- cmp w11, w28
+ cmp w11, w3
bhs G_M2714_IG42
- ldr w11, [x3, w11, UXTW #2]
+ ldr w11, [x4, w11, UXTW #2]
cmp w0, w11
+ ldr w3, [fp, #0x1C] // [V58 cse0]
beq G_M2714_IG44
- ;; size=32 bbWeight=1.98 PerfScore 19.80
-G_M2714_IG06: ; bbWeight=3.96, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x3]
- ldr w4, [fp, #0x24] // [V11 loc0]
- cbnz w4, G_M2714_IG08
+ ;; size=36 bbWeight=1.98 PerfScore 23.76
+G_M2714_IG06: ; bbWeight=3.96, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x4]
+ ldr w5, [fp, #0x24] // [V11 loc0]
+ cbnz w5, G_M2714_IG08
;; size=8 bbWeight=3.96 PerfScore 11.88
-G_M2714_IG07: ; bbWeight=1.98, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+G_M2714_IG07: ; bbWeight=1.98, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
add x0, x21, #16
; byrRegs +[x0]
str w2, [fp, #0x20] // [V13 loc2]
@@ -178,51 +181,52 @@ G_M2714_IG07: ; bbWeight=1.98, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25
movz x11, #0xD1FFAB1E // code for <unknown method>
movk x11, #0xD1FFAB1E LSL #16
movk x11, #1 LSL #32
- ldr x3, [x11]
- blr x3
+ ldr x4, [x11]
+ blr x4
; gcr arg pop 0
- ldr x1, [fp, #0x18] // [V12 loc1]
+ ldr x1, [fp, #0x10] // [V12 loc1]
; gcrRegs +[x1]
cmp x0, x1
beq G_M2714_IG10
- mov w4, #1
- sxtw w2, w4
+ mov w5, #1
+ sxtw w2, w5
str w2, [fp, #0x24] // [V11 loc0]
- ldr w2, [fp, #0x20] // [V13 loc2]
+ ldp w3, w2, [fp, #0x1C] // [V58 cse0], [V13 loc2]
;; size=60 bbWeight=1.98 PerfScore 34.65
-G_M2714_IG08: ; bbWeight=3.96, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+G_M2714_IG08: ; bbWeight=3.96, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
add w2, w2, #1
- cmp w28, w2
+ cmp w3, w2
bgt G_M2714_IG04
;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M2714_IG09: ; bbWeight=1, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref
+G_M2714_IG09: ; bbWeight=1.98, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref
b G_M2714_IG16
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M2714_IG10: ; bbWeight=0.99, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref
- ldr w2, [fp, #0x20] // [V13 loc2]
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M2714_IG10: ; bbWeight=0.99, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref
+ ldp w3, w2, [fp, #0x1C] // [V58 cse0], [V13 loc2]
b G_M2714_IG08
;; size=8 bbWeight=0.99 PerfScore 2.97
-G_M2714_IG11: ; bbWeight=0.04, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+G_M2714_IG11: ; bbWeight=0.04, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
cbz w2, G_M2714_IG13
;; size=4 bbWeight=0.04 PerfScore 0.04
-G_M2714_IG12: ; bbWeight=0.02, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- add x3, x20, #16
- ; byrRegs +[x3]
- ldr w0, [x3, w2, UXTW #2]
+G_M2714_IG12: ; bbWeight=0.02, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
+ add x4, x20, #16
+ ; byrRegs +[x4]
+ ldr w0, [x4, w2, UXTW #2]
sub w11, w2, #1
- cmp w11, w28
+ cmp w11, w3
bhs G_M2714_IG42
- ldr w11, [x3, w11, UXTW #2]
+ ldr w11, [x4, w11, UXTW #2]
cmp w0, w11
+ ldr w3, [fp, #0x1C] // [V58 cse0]
beq G_M2714_IG44
- ;; size=32 bbWeight=0.02 PerfScore 0.20
-G_M2714_IG13: ; bbWeight=0.04, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x3]
- ldr w4, [fp, #0x24] // [V11 loc0]
- cbnz w4, G_M2714_IG15
+ ;; size=36 bbWeight=0.02 PerfScore 0.24
+G_M2714_IG13: ; bbWeight=0.04, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x4]
+ ldr w5, [fp, #0x24] // [V11 loc0]
+ cbnz w5, G_M2714_IG15
;; size=8 bbWeight=0.04 PerfScore 0.12
-G_M2714_IG14: ; bbWeight=0.02, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25}, byrefRegs=0000 {}, byref, isz
+G_M2714_IG14: ; bbWeight=0.02, gcrefRegs=12F80000 {x19 x20 x21 x22 x23 x25 x28}, byrefRegs=0000 {}, byref, isz
ldr w0, [x21, #0x08]
cmp w2, w0
bhs G_M2714_IG42
@@ -235,37 +239,37 @@ G_M2714_IG14: ; bbWeight=0.02, gcrefRegs=2F80000 {x19 x20 x21 x22 x23 x25
movz x11, #0xD1FFAB1E
movk x11, #0xD1FFAB1E LSL #16
movk x11, #1 LSL #32
- ldr x3, [x11]
- blr x3
+ ldr x4, [x11]
+ blr x4
; gcr arg pop 0
- ldr x2, [fp, #0x18] // [V12 loc1]
+ ldr x2, [fp, #0x10] // [V12 loc1]
; gcrRegs +[x2]
cmp x0, x2
beq G_M2714_IG36
- mov w4, #1
- str w4, [fp, #0x24] // [V11 loc0]
- ldr w2, [fp, #0x20] // [V13 loc2]
+ mov w5, #1
+ str w5, [fp, #0x24] // [V11 loc0]
+ ldp w3, w2, [fp, #0x1C] // [V58 cse0], [V13 loc2]
; gcrRegs -[x2]
;; size=68 bbWeight=0.02 PerfScore 0.43
...
+8 (+1.12%) : 11950.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
@@ -74,12 +74,12 @@ G_M17197_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
mov w24, wzr
sxtw w25, w22
cmp w25, w23
- bge G_M17197_IG09
+ bge G_M17197_IG08
;; size=28 bbWeight=1 PerfScore 11.50
G_M17197_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr w26, [x0, #0x08]
cmp w25, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
add x27, x0, #16
; byrRegs +[x27]
ldrb w28, [x27, w25, UXTW #2]
@@ -96,7 +96,7 @@ G_M17197_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
add w0, w25, #1
sxtw w4, w0
cmp w4, w23
- bge G_M17197_IG10
+ bge G_M17197_IG09
;; size=72 bbWeight=0.50 PerfScore 8.75
G_M17197_IG04: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
orr w0, w4, w23
@@ -107,40 +107,40 @@ G_M17197_IG04: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
G_M17197_IG05: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
ldrb w28, [x27, w4, UXTW #2]
ldrb w0, [x22, w28, UXTW #2]
- tbz w0, #1, G_M17197_IG10
+ tbz w0, #1, G_M17197_IG09
orr w24, w24, w28
add w4, w4, #1
cmp w4, w23
blt G_M17197_IG05
;; size=28 bbWeight=3.96 PerfScore 37.62
-G_M17197_IG06: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
+G_M17197_IG06: ; bbWeight=1.98, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
mov w0, w28
mov w28, w0
- b G_M17197_IG10
- ;; size=12 bbWeight=0.50 PerfScore 1.00
+ b G_M17197_IG09
+ ;; size=12 bbWeight=1.98 PerfScore 3.96
G_M17197_IG07: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
cmp w4, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
ldrb w28, [x27, w4, UXTW #2]
ldrb w0, [x22, w28, UXTW #2]
- tbz w0, #1, G_M17197_IG10
+ tbz w0, #1, G_M17197_IG09
orr w24, w24, w28
add w4, w4, #1
cmp w4, w23
blt G_M17197_IG07
- ;; size=36 bbWeight=0.04 PerfScore 0.44
-G_M17197_IG08: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
- b G_M17197_IG10
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG09: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ mov w0, w28
+ mov w28, w0
+ b G_M17197_IG09
+ ;; size=48 bbWeight=0.04 PerfScore 0.52
+G_M17197_IG08: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
mov w24, #128
- b G_M17197_IG22
+ b G_M17197_IG20
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M17197_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG09: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
; byrRegs +[x27]
cmp w28, #58
- bne G_M17197_IG11
+ bne G_M17197_IG10
str w4, [fp, #0x1C] // [V03 loc0]
sub w2, w4, w25
mov w0, #97
@@ -148,17 +148,17 @@ G_M17197_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
cmp w2, #1
ccmp w3, w0, nc, eq
ccmp w3, w1, 0, ge
- bgt G_M17197_IG12
+ bgt G_M17197_IG11
sub w0, w3, #96
str w0, [x21, #0x10]
- b G_M17197_IG13
+ b G_M17197_IG12
;; size=52 bbWeight=0.50 PerfScore 4.50
-G_M17197_IG11: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M17197_IG10: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
mov w22, w4
- b G_M17197_IG22
+ b G_M17197_IG20
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M17197_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
+G_M17197_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
; byrRegs +[x27]
mov x0, x21
; gcrRegs +[x0]
@@ -172,72 +172,70 @@ G_M17197_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; gcrRegs -[x0]
; gcr arg pop 0
;; size=32 bbWeight=0.50 PerfScore 4.75
-G_M17197_IG13: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
ldr w4, [fp, #0x1C] // [V03 loc0]
add w4, w4, #1
sxtw w1, w4
cmp w1, w23
- bge G_M17197_IG20
+ bge G_M17197_IG18
cmp w1, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
ldrb w28, [x27, w1, UXTW #2]
ldrb w4, [x22, w28, UXTW #2]
- tbnz w4, #0, G_M17197_IG14
+ tbnz w4, #0, G_M17197_IG13
orr w24, w24, #128
;; size=44 bbWeight=0.50 PerfScore 6.75
-G_M17197_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG13: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
orr w24, w24, w28
add w4, w1, #1
sxtw w28, w4
cmp w28, w23
- bge G_M17197_IG21
+ bge G_M17197_IG19
;; size=20 bbWeight=0.50 PerfScore 1.50
-G_M17197_IG15: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG14: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
orr w0, w28, w23
cmp w0, #0
ccmp w26, w23, nc, ge
- blt G_M17197_IG18
+ blt G_M17197_IG17
;; size=16 bbWeight=0.25 PerfScore 0.62
-G_M17197_IG16: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG15: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
ldrb w0, [x27, w28, UXTW #2]
ldrb w2, [x22, w0, UXTW #2]
- tbz w2, #1, G_M17197_IG21
+ tbz w2, #1, G_M17197_IG19
orr w24, w24, w0
add w28, w28, #1
cmp w28, w23
- blt G_M17197_IG16
+ blt G_M17197_IG15
;; size=28 bbWeight=3.96 PerfScore 37.62
-G_M17197_IG17: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M17197_IG16: ; bbWeight=1.98, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
- b G_M17197_IG21
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG18: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+ b G_M17197_IG19
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M17197_IG17: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
; byrRegs +[x27]
cmp w28, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
ldrb w0, [x27, w28, UXTW #2]
ldrb w2, [x22, w0, UXTW #2]
- tbz w2, #1, G_M17197_IG21
+ tbz w2, #1, G_M17197_IG19
orr w24, w24, w0
add w28, w28, #1
cmp w28, w23
- blt G_M17197_IG18
- ;; size=36 bbWeight=0.04 PerfScore 0.44
-G_M17197_IG19: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ blt G_M17197_IG17
+ b G_M17197_IG19
+ ;; size=40 bbWeight=0.04 PerfScore 0.48
+G_M17197_IG18: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
- b G_M17197_IG21
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG20: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
orr w24, w24, #128
mov w28, w4
;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG21: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M17197_IG19: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
sub w0, w28, w1
mov w2, #1
str w2, [x19, #0x10]
stp w1, w0, [x19, #0x18]
cmp w24, #128
- blt G_M17197_IG24
+ blt G_M17197_IG22
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.PrefixHandle:GetString():System.String:this
@@ -257,9 +255,9 @@ G_M17197_IG21: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M17197_IG23
+ b G_M17197_IG21
;; size=80 bbWeight=0.50 PerfScore 9.00
-G_M17197_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M17197_IG20: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
str wzr, [x21, #0x10]
sub w0, w22, w25
@@ -268,9 +266,9 @@ G_M17197_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
stp w25, w0, [x19, #0x18]
cmp w24, #128
mov w28, w22
- blt G_M17197_IG24
+ blt G_M17197_IG22
;; size=32 bbWeight=0.50 PerfScore 3.00
-G_M17197_IG23: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M17197_IG21: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
mov x0, x19
; gcrRegs +[x0]
@@ -292,7 +290,7 @@ G_M17197_IG23: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=52 bbWeight=0.50 PerfScore 6.25
-G_M17197_IG24: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M17197_IG22: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
sub w1, w28, w25
@@ -300,7 +298,7 @@ G_M17197_IG24: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
add w1, w1, w2
str w1, [x0, #0x50]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M17197_IG25: ; bbWeight=1, epilog, nogc, extend
+G_M17197_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -309,14 +307,14 @@ G_M17197_IG25: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M17197_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17197_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
...
+12 (+1.68%) : 1996.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
@@ -8,36 +8,36 @@
; 0 inlinees with PGO data; 23 single block inlinees; 8 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 34,119.50) byref -> x19 this single-def
-; V01 arg1 [V01,T12] ( 8, 5 ) byref -> x21 single-def
-; V02 arg2 [V02,T09] ( 9, 13 ) byref -> x20 single-def
-; V03 arg3 [V03,T13] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
-; V04 loc0 [V04,T11] ( 3, 12 ) int -> x2
-; V05 loc1 [V05,T17] ( 3, 1.50) int -> x3
-; V06 loc2 [V06,T06] ( 9, 25.50) int -> x23
-; V07 loc3 [V07,T20] ( 2, 1 ) int -> x23
-; V08 loc4 [V08,T21] ( 2, 1 ) ushort -> x24
-; V09 loc5 [V09 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
-; V10 loc6 [V10 ] ( 2, 1 ) int -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
+; V00 this [V00,T00] ( 34, 56.50) byref -> x19 this single-def
+; V01 arg1 [V01,T10] ( 8, 5 ) byref -> x21 single-def
+; V02 arg2 [V02,T05] ( 9, 13 ) byref -> x20 single-def
+; V03 arg3 [V03,T12] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
+; V04 loc0 [V04,T07] ( 3, 12 ) int -> x2
+; V05 loc1 [V05,T17] ( 3, 1.75) int -> x3
+; V06 loc2 [V06,T01] ( 9, 25.50) int -> x23
+; V07 loc3 [V07,T21] ( 2, 1 ) int -> x23
+; V08 loc4 [V08,T22] ( 2, 1 ) ushort -> x24
+; V09 loc5 [V09 ] ( 2, 1 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
+; V10 loc6 [V10 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V13 tmp2 [V13,T03] ( 3, 96 ) int -> x0 "Span.get_Item index"
-; V14 tmp3 [V14,T02] ( 3, 96 ) byref -> x1 "Span.get_Item ptrToSpan"
-; V15 tmp4 [V15,T08] ( 3, 24 ) int -> x2 "Span.get_Item index"
-; V16 tmp5 [V16,T07] ( 3, 24 ) byref -> x0 "Span.get_Item ptrToSpan"
-; V17 tmp6 [V17,T16] ( 3, 3 ) int -> x2 "Span.get_Item index"
-; V18 tmp7 [V18,T15] ( 3, 3 ) byref -> x3 "Span.get_Item ptrToSpan"
+; V13 tmp2 [V13,T08] ( 3, 12 ) int -> x0 "Span.get_Item index"
+; V14 tmp3 [V14,T06] ( 3, 12 ) byref -> x25 "Span.get_Item ptrToSpan"
+; V15 tmp4 [V15,T03] ( 3, 24 ) int -> x2 "Span.get_Item index"
+; V16 tmp5 [V16,T02] ( 3, 24 ) byref -> x0 "Span.get_Item ptrToSpan"
+; V17 tmp6 [V17,T15] ( 3, 3 ) int -> x2 "Span.get_Item index"
+; V18 tmp7 [V18,T14] ( 3, 3 ) byref -> x3 "Span.get_Item ptrToSpan"
;* V19 tmp8 [V19 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V20 tmp9 [V20,T14] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
-; V21 tmp10 [V21,T05] ( 5, 28 ) ushort -> x23 "Inlining Arg"
+; V20 tmp9 [V20,T23] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
+; V21 tmp10 [V21,T11] ( 5, 5 ) ushort -> x23 "Inlining Arg"
;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V23 tmp12 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V25 tmp14 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V28 tmp17 [V28,T04] ( 2, 32 ) ubyte -> x0 "Inline return value spill temp"
-; V29 tmp18 [V29,T00] ( 5,160 ) ushort -> x23 "Inlining Arg"
+; V28 tmp17 [V28,T13] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V29 tmp18 [V29,T04] ( 5, 20 ) ushort -> x24 "Inlining Arg"
;* V30 tmp19 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V31 tmp20 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V32 tmp21 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -68,17 +68,20 @@
;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "field V34._length (fldOffset=0x8)" P-INDEP
;* V58 tmp47 [V58 ] ( 0, 0 ) byref -> zero-ref "field V35._reference (fldOffset=0x0)" P-INDEP
;* V59 tmp48 [V59 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
-; V60 cse0 [V60,T18] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V61 cse1 [V61,T10] ( 4, 12.50) int -> x23 "CSE - moderate"
-; V62 cse2 [V62,T19] ( 3, 1.50) int -> x2 "CSE - moderate"
+; V60 cse0 [V60,T16] ( 3, 2 ) int -> x2 "CSE - moderate"
+; V61 cse1 [V61,T18] ( 3, 1.50) int -> x24 "CSE - moderate"
+; V62 cse2 [V62,T19] ( 3, 1.50) int -> x23 "CSE - moderate"
+; V63 cse3 [V63,T20] ( 3, 1.50) int -> x2 "CSE - moderate"
+; V64 cse4 [V64,T09] ( 6, 9.25) byref -> x25 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x28]
+ stp x21, x22, [sp, #0x38]
+ stp x23, x24, [sp, #0x48]
+ str x25, [sp, #0x58]
mov fp, sp
mov x19, x0
; byrRegs +[x19]
@@ -88,23 +91,21 @@ G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x20]
mov x22, x3
; gcrRegs +[x22]
- ;; size=36 bbWeight=1 PerfScore 6.50
+ ;; size=40 bbWeight=1 PerfScore 7.50
G_M44776_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
str wzr, [x20]
ldr w0, [x19, #0x08]
ldr w1, [x19, #0x18]
cmp w0, w1
- bge G_M44776_IG12
+ bge G_M44776_IG08
;; size=20 bbWeight=1 PerfScore 8.50
-G_M44776_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG03: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldrh w23, [x19, #0x0C]
- sub w0, w23, #48
- cmp w0, #9
- bls G_M44776_IG13
+ sub w24, w23, #48
+ cmp w24, #9
+ bls G_M44776_IG09
cmp w23, #0xD1FFAB1E
- bhs G_M44776_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
-G_M44776_IG04: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ bhs G_M44776_IG04
cmp w23, #0xD1FFAB1E
cset x0, lo
movz x1, #0xD1FFAB1E // code for <unknown method>
@@ -117,12 +118,10 @@ G_M44776_IG04: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x1
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
ldrb w0, [x0, w23, UXTW #2]
- tbnz w0, #7, G_M44776_IG11
- ;; size=48 bbWeight=2 PerfScore 24.00
-G_M44776_IG05: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
- b G_M44776_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M44776_IG06: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ tbnz w0, #7, G_M44776_IG07
+ b G_M44776_IG18
+ ;; size=76 bbWeight=0.50 PerfScore 9.75
+G_M44776_IG04: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
mov w0, w23
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
@@ -130,25 +129,24 @@ G_M44776_IG06: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x1
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M44776_IG11
- ;; size=28 bbWeight=2 PerfScore 14.00
-G_M44776_IG07: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
- b G_M44776_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M44776_IG08: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ cbnz w0, G_M44776_IG07
+ b G_M44776_IG18
+ ;; size=32 bbWeight=0.50 PerfScore 4.00
+G_M44776_IG05: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldr w0, [x19, #0x08]
- add x1, x19, #16
+ add x25, x19, #16
+ ; byrRegs +[x25]
+ ldr w1, [x25, #0x08]
+ cmp w0, w1
+ bhs G_M44776_IG20
+ ldr x1, [x25]
; byrRegs +[x1]
- ldr w2, [x1, #0x08]
- cmp w0, w2
- bhs G_M44776_IG22
- ldr x1, [x1]
ldrh w0, [x1, w0, UXTW #2]
strh w0, [x19, #0x0C]
- ldrh w23, [x19, #0x0C]
- cmp w23, #0xD1FFAB1E
- bhs G_M44776_IG10
- cmp w23, #0xD1FFAB1E
+ ldrh w24, [x19, #0x0C]
+ cmp w24, #0xD1FFAB1E
+ bhs G_M44776_IG06
+ cmp w24, #0xD1FFAB1E
cset x0, lo
movz x1, #0xD1FFAB1E // code for <unknown method>
; byrRegs -[x1]
@@ -156,18 +154,17 @@ G_M44776_IG08: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
+ ; byrRegs -[x25]
; gcr arg pop 0
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
- ldrb w0, [x0, w23, UXTW #2]
+ ldrb w0, [x0, w24, UXTW #2]
tbz w0, #7, G_M44776_IG03
- ;; size=92 bbWeight=16 PerfScore 504.00
-G_M44776_IG09: ; bbWeight=8, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
- b G_M44776_IG11
- ;; size=4 bbWeight=8 PerfScore 8.00
-G_M44776_IG10: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
- mov w0, w23
+ b G_M44776_IG07
+ ;; size=96 bbWeight=2 PerfScore 65.00
+G_M44776_IG06: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ mov w0, w24
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -175,49 +172,52 @@ G_M44776_IG10: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x
blr x1
; gcr arg pop 0
cbz w0, G_M44776_IG03
- ;; size=28 bbWeight=16 PerfScore 112.00
-G_M44776_IG11: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ ;; size=28 bbWeight=2 PerfScore 14.00
+G_M44776_IG07: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldr w0, [x19, #0x08]
add w23, w0, #1
str w23, [x19, #0x08]
ldr w0, [x19, #0x18]
cmp w23, w0
- blt G_M44776_IG08
+ blt G_M44776_IG05
;; size=24 bbWeight=4 PerfScore 36.00
-G_M44776_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+G_M44776_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x22]
; byrRegs -[x19-x20]
mov w2, #6
str w2, [x21]
- b G_M44776_IG21
+ b G_M44776_IG19
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M44776_IG13: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG09: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
; gcrRegs +[x22]
; byrRegs +[x19-x20]
- sub w2, w23, #48
- str w2, [x20]
+ str w24, [x20]
ldr w2, [x19, #0x08]
sxtw w3, w2
add w23, w2, #1
str w23, [x19, #0x08]
ldr w2, [x19, #0x18]
cmp w23, w2
- bge G_M44776_IG15
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M44776_IG14: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ bge G_M44776_IG12
+ ;; size=32 bbWeight=0.50 PerfScore 5.25
+G_M44776_IG10: ; bbWeight=0.25, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ add x25, x19, #16
+ ; byrRegs +[x25]
+ ;; size=4 bbWeight=0.25 PerfScore 0.12
+G_M44776_IG11: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=2380000 {x19 x20 x21 x25}, byref, isz
ldr w2, [x19, #0x08]
- add x0, x19, #16
...
benchmarks.run_pgo.osx.arm64.checked.mch
-16 (-15.38%) : 56608.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
@@ -10,11 +10,11 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Lowering.InstructionReplacement>
-; V01 loc0 [V01,T02] ( 4,100.25) int -> x1
-; V02 loc1 [V02,T01] ( 7,299.99) int -> registers
+; V01 loc0 [V01,T02] ( 4,100.26) int -> x1
+; V02 loc1 [V02,T01] ( 5,299.99) int -> registers
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 9,600.00) int -> x0 "impSpillLclRefs"
-; V05 cse0 [V05,T03] ( 4,100.01) int -> x3 "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 6,600.00) int -> x0 "impSpillLclRefs"
+; V05 cse0 [V05,T03] ( 3,100.01) int -> x3 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,40 +28,34 @@ G_M4100_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
movz w3, #0xD1FFAB1E
movk w3, #152 LSL #16
cmp w0, w3
- bge G_M4100_IG07
+ bge G_M4100_IG05
;; size=20 bbWeight=0.01 PerfScore 0.03
G_M4100_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov w0, #1
lsl w0, w0, w1
tst w2, w0
- beq G_M4100_IG06
+ beq G_M4100_IG07
;; size=16 bbWeight=99.99 PerfScore 249.98
-G_M4100_IG04: ; bbWeight=99.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sxtw w0, w2
- add w2, w0, #1
- cmp w0, w3
- bge G_M4100_IG07
- ;; size=16 bbWeight=99.86 PerfScore 249.65
-G_M4100_IG05: ; bbWeight=99.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M4100_IG03
- ;; size=4 bbWeight=99.92 PerfScore 99.92
-G_M4100_IG06: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add w1, w1, #1
+G_M4100_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sxtw w0, w2
add w2, w0, #1
cmp w0, w3
blt G_M4100_IG03
- ;; size=20 bbWeight=0.13 PerfScore 0.39
-G_M4100_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=99.99 PerfScore 249.98
+G_M4100_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M4100_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=0.01 PerfScore 0.00
+G_M4100_IG06: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #48
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0.01 PerfScore 0.02
+G_M4100_IG07: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ add w1, w1, #1
+ b G_M4100_IG04
+ ;; size=8 bbWeight=0.13 PerfScore 0.19
-; Total bytes of code 104, prolog size 12, PerfScore 600.00, instruction count 26, allocated bytes for code 104 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
+; Total bytes of code 88, prolog size 12, PerfScore 500.24, instruction count 22, allocated bytes for code 88 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -72,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-8.33%) : 65089.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet1[System.String],System.ReadOnlySpan
1[System.String],int):ubyte (Tier1-OSR)
@@ -14,7 +14,7 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[System.String]>
; V02 arg2 [V02,T05] ( 5, 2 ) int -> x20
; V03 loc0 [V03,T06] ( 3, 3 ) struct (16) [fp+0x70] do-not-enreg[SF] ld-addr-op tier0-frame <System.ReadOnlySpan`1[System.String]>
-; V04 loc1 [V04,T00] ( 9,499.96) int -> [fp+0x6C] tier0-frame
+; V04 loc1 [V04,T00] ( 6,499.96) int -> [fp+0x6C] tier0-frame
; V05 loc2 [V05,T03] ( 2,199.98) ref -> x1 class-hnd <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T09] ( 2, 0 ) int -> x20 "dup spill"
@@ -22,11 +22,11 @@
; V09 tmp3 [V09,T07] ( 1, 1 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V10 tmp4 [V10,T08] ( 1, 1 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V11 tmp5 [V11,T04] ( 2,100.99) byref -> x21 single-def "V03.[000..008)"
-; V12 tmp6 [V12,T02] ( 5,200.99) int -> x22 "V03.[008..012)"
+; V12 tmp6 [V12,T02] ( 4,200.99) int -> x22 "V03.[008..012)"
;
; Lcl frame size = 8
-G_M49737_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M49737_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
@@ -42,11 +42,11 @@ G_M49737_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr w22, [fp, #0x78] // [V03 loc0+0x08]
ldr w23, [fp, #0x6C] // [V04 loc1]
cmp w23, w22
- bge G_M49737_IG07
+ bge G_M49737_IG05
;; size=20 bbWeight=1 PerfScore 7.50
G_M49737_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w22
- bhs G_M49737_IG05
+ bhs G_M49737_IG07
ldr x1, [x21, w23, UXTW #3]
; gcrRegs +[x1]
ldrsb wzr, [x19]
@@ -59,45 +59,37 @@ G_M49737_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- cbz w0, G_M49737_IG06
- add w23, w23, #1
- cmp w23, w22
- bge G_M49737_IG07
- ;; size=60 bbWeight=99.99 PerfScore 1699.83
-G_M49737_IG04: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
- b G_M49737_IG03
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M49737_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x21]
- bl CORINFO_HELP_RNGCHKFAIL
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs +[x19]
- ; byrRegs +[x21]
- sub w20, w20, #1
- tbnz w20, #31, G_M49737_IG09
+ cbz w0, G_M49737_IG08
+ ;; size=48 bbWeight=99.99 PerfScore 1499.85
+G_M49737_IG04: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
add w23, w23, #1
cmp w23, w22
blt G_M49737_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M49737_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=99.99 PerfScore 199.98
+G_M49737_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x21]
mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M49737_IG06: ; bbWeight=0.01, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
add sp, sp, #96
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M49737_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, wzr
+ ;; size=24 bbWeight=0.01 PerfScore 0.07
+G_M49737_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M49737_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+ ; gcrRegs +[x19]
+ ; byrRegs +[x21]
+ sub w20, w20, #1
+ tbz w20, #31, G_M49737_IG04
+ mov w0, wzr
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M49737_IG09: ; bbWeight=0, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -106,7 +98,7 @@ G_M49737_IG10: ; bbWeight=0, epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 20, PerfScore 1715.83, instruction count 48, allocated bytes for code 192 (MethodHash=abf53db6) for method System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 1715.90, instruction count 44, allocated bytes for code 176 (MethodHash=abf53db6) for method System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -117,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-8.33%) : 31762.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet1[System.String],System.ReadOnlySpan
1[System.String],int):ubyte (Tier1-OSR)
@@ -14,7 +14,7 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[System.String]>
; V02 arg2 [V02,T05] ( 5, 2 ) int -> x20
; V03 loc0 [V03,T06] ( 3, 3 ) struct (16) [fp+0x70] do-not-enreg[SF] ld-addr-op tier0-frame <System.ReadOnlySpan`1[System.String]>
-; V04 loc1 [V04,T00] ( 9,499.96) int -> [fp+0x6C] tier0-frame
+; V04 loc1 [V04,T00] ( 6,499.96) int -> [fp+0x6C] tier0-frame
; V05 loc2 [V05,T03] ( 2,199.98) ref -> x1 class-hnd <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T09] ( 2, 0 ) int -> x20 "dup spill"
@@ -22,11 +22,11 @@
; V09 tmp3 [V09,T07] ( 1, 1 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V10 tmp4 [V10,T08] ( 1, 1 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V11 tmp5 [V11,T04] ( 2,100.99) byref -> x21 single-def "V03.[000..008)"
-; V12 tmp6 [V12,T02] ( 5,200.99) int -> x22 "V03.[008..012)"
+; V12 tmp6 [V12,T02] ( 4,200.99) int -> x22 "V03.[008..012)"
;
; Lcl frame size = 8
-G_M49737_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M49737_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
@@ -42,11 +42,11 @@ G_M49737_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr w22, [fp, #0x78] // [V03 loc0+0x08]
ldr w23, [fp, #0x6C] // [V04 loc1]
cmp w23, w22
- bge G_M49737_IG07
+ bge G_M49737_IG05
;; size=20 bbWeight=1 PerfScore 7.50
G_M49737_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w22
- bhs G_M49737_IG05
+ bhs G_M49737_IG07
ldr x1, [x21, w23, UXTW #3]
; gcrRegs +[x1]
ldrsb wzr, [x19]
@@ -59,45 +59,37 @@ G_M49737_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- cbz w0, G_M49737_IG06
- add w23, w23, #1
- cmp w23, w22
- bge G_M49737_IG07
- ;; size=60 bbWeight=99.99 PerfScore 1699.83
-G_M49737_IG04: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
- b G_M49737_IG03
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M49737_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x21]
- bl CORINFO_HELP_RNGCHKFAIL
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs +[x19]
- ; byrRegs +[x21]
- sub w20, w20, #1
- tbnz w20, #31, G_M49737_IG09
+ cbz w0, G_M49737_IG08
+ ;; size=48 bbWeight=99.99 PerfScore 1499.85
+G_M49737_IG04: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
add w23, w23, #1
cmp w23, w22
blt G_M49737_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M49737_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=99.99 PerfScore 199.98
+G_M49737_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x21]
mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M49737_IG06: ; bbWeight=0.01, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
add sp, sp, #96
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M49737_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, wzr
+ ;; size=24 bbWeight=0.01 PerfScore 0.07
+G_M49737_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M49737_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+ ; gcrRegs +[x19]
+ ; byrRegs +[x21]
+ sub w20, w20, #1
+ tbz w20, #31, G_M49737_IG04
+ mov w0, wzr
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M49737_IG09: ; bbWeight=0, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -106,7 +98,7 @@ G_M49737_IG10: ; bbWeight=0, epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 20, PerfScore 1715.83, instruction count 48, allocated bytes for code 192 (MethodHash=abf53db6) for method System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 1715.90, instruction count 44, allocated bytes for code 176 (MethodHash=abf53db6) for method System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -117,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+4.08%) : 32703.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
@@ -6,7 +6,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 191.38
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 191.38
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 6,302 ) byref -> x0 single-def
@@ -47,7 +47,7 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; gcrRegs +[x5]
ldr w6, [x5, #0x08]
cmp w1, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x5, x5, #16
; gcrRegs -[x5]
; byrRegs +[x5]
@@ -55,7 +55,7 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; gcrRegs +[x7]
ldr w8, [x7, #0x08]
cmp w2, w8
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x7, x7, #16
; gcrRegs -[x7]
; byrRegs +[x7]
@@ -63,13 +63,13 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; byrRegs -[x7]
add w8, w1, #1
cmp w8, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
ldr x5, [x5, w8, UXTW #3]
; gcrRegs +[x5]
; byrRegs -[x5]
ldr w6, [x5, #0x08]
cmp w3, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x5, x5, #16
; gcrRegs -[x5]
; byrRegs +[x5]
@@ -87,32 +87,38 @@ G_M3693_IG05: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, by
cmp w2, #50
ble G_M3693_IG03
;; size=12 bbWeight=4.00 PerfScore 8.01
-G_M3693_IG06: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- add w3, w3, #1
- cmp w3, #50
- bgt G_M3693_IG08
+G_M3693_IG06: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ b G_M3693_IG08
+ ;; size=4 bbWeight=0.08 PerfScore 0.08
+G_M3693_IG07: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
mov w2, #1
b G_M3693_IG03
- ;; size=20 bbWeight=0.08 PerfScore 0.27
-G_M3693_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.08 PerfScore 0.12
+G_M3693_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ add w3, w3, #1
+ cmp w3, #50
+ bgt G_M3693_IG10
+ b G_M3693_IG07
+ ;; size=16 bbWeight=0.08 PerfScore 0.24
+G_M3693_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3693_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M3693_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
ldr w0, [x0, #0x08]
; byrRegs -[x0]
cmp w0, #1
cset x0, eq
;; size=12 bbWeight=0 PerfScore 0.00
-G_M3693_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M3693_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #48
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 20, PerfScore 3918.78, instruction count 49, allocated bytes for code 196 (MethodHash=1e6cf192) for method Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
+; Total bytes of code 204, prolog size 20, PerfScore 3918.94, instruction count 51, allocated bytes for code 204 (MethodHash=1e6cf192) for method Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -123,7 +129,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ 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)
+8 (+4.08%) : 32700.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
@@ -6,7 +6,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 90.43
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 90.43
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 6,302.00) byref -> x0 single-def
@@ -47,7 +47,7 @@ G_M3693_IG04: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=0001 {x0},
; gcrRegs +[x5]
ldr w6, [x5, #0x08]
cmp w1, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x5, x5, #16
; gcrRegs -[x5]
; byrRegs +[x5]
@@ -55,7 +55,7 @@ G_M3693_IG04: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=0001 {x0},
; gcrRegs +[x7]
ldr w8, [x7, #0x08]
cmp w2, w8
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x7, x7, #16
; gcrRegs -[x7]
; byrRegs +[x7]
@@ -63,13 +63,13 @@ G_M3693_IG04: ; bbWeight=100.00, gcrefRegs=0000 {}, byrefRegs=0001 {x0},
; byrRegs -[x7]
add w8, w1, #1
cmp w8, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
ldr x5, [x5, w8, UXTW #3]
; gcrRegs +[x5]
; byrRegs -[x5]
ldr w6, [x5, #0x08]
cmp w3, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x5, x5, #16
; gcrRegs -[x5]
; byrRegs +[x5]
@@ -87,32 +87,38 @@ G_M3693_IG05: ; bbWeight=3.99, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, by
cmp w2, #50
ble G_M3693_IG03
;; size=12 bbWeight=3.99 PerfScore 7.98
-G_M3693_IG06: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- add w3, w3, #1
- cmp w3, #50
- bgt G_M3693_IG08
+G_M3693_IG06: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ b G_M3693_IG08
+ ;; size=4 bbWeight=0.09 PerfScore 0.09
+G_M3693_IG07: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
mov w2, #1
b G_M3693_IG03
- ;; size=20 bbWeight=0.09 PerfScore 0.31
-G_M3693_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.09 PerfScore 0.13
+G_M3693_IG08: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ add w3, w3, #1
+ cmp w3, #50
+ bgt G_M3693_IG10
+ b G_M3693_IG07
+ ;; size=16 bbWeight=0.09 PerfScore 0.27
+G_M3693_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3693_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M3693_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
ldr w0, [x0, #0x08]
; byrRegs -[x0]
cmp w0, #1
cset x0, eq
;; size=12 bbWeight=0 PerfScore 0.00
-G_M3693_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M3693_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #48
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 20, PerfScore 3918.79, instruction count 49, allocated bytes for code 196 (MethodHash=1e6cf192) for method Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
+; Total bytes of code 204, prolog size 20, PerfScore 3918.97, instruction count 51, allocated bytes for code 204 (MethodHash=1e6cf192) for method Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -123,7 +129,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ 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)
+16 (+5.26%) : 37200.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (Tier1)
@@ -15,15 +15,15 @@
;* V03 loc0 [V03 ] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T11] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <int[]>
-; V06 tmp2 [V06,T13] ( 2, 2 ) int -> x8 "Inline return value spill temp"
-; V07 tmp3 [V07,T06] ( 4, 6.10) byref -> x0 single-def "Inline stloc first use temp"
-; V08 tmp4 [V08,T02] ( 3, 8.10) long -> x3 "Inlining Arg"
-; V09 tmp5 [V09,T04] ( 4, 7.15) int -> x4 "Inline stloc first use temp"
-; V10 tmp6 [V10,T00] ( 5, 9.20) int -> x5 "Inline stloc first use temp"
-; V11 tmp7 [V11,T03] ( 5, 7.83) byref -> x6 "Inline stloc first use temp"
-; V12 tmp8 [V12,T01] ( 5, 8.20) int -> x7 "Inline stloc first use temp"
-; V13 tmp9 [V13,T10] ( 2, 4.10) long -> x8 "Inline stloc first use temp"
-; V14 tmp10 [V14,T12] ( 3, 2.68) long -> x8 "Inline stloc first use temp"
+; V06 tmp2 [V06,T13] ( 2, 1.84) int -> x6 "Inline return value spill temp"
+; V07 tmp3 [V07,T06] ( 4, 6.10) byref -> x21 single-def "Inline stloc first use temp"
+; V08 tmp4 [V08,T02] ( 3, 8.10) long -> x20 "Inlining Arg"
+; V09 tmp5 [V09,T04] ( 4, 7.15) int -> x3 "Inline stloc first use temp"
+; V10 tmp6 [V10,T00] ( 5, 9.20) int -> x4 "Inline stloc first use temp"
+; V11 tmp7 [V11,T03] ( 5, 7.83) byref -> x0 "Inline stloc first use temp"
+; V12 tmp8 [V12,T01] ( 5, 8.20) int -> x5 "Inline stloc first use temp"
+; V13 tmp9 [V13,T10] ( 2, 4.10) long -> x6 "Inline stloc first use temp"
+; V14 tmp10 [V14,T12] ( 3, 2.52) long -> x6 "Inline stloc first use temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V16 tmp12 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V17 tmp13 [V17,T08] ( 3, 6 ) ref -> x1 class-hnd "Inlining Arg" <System.Object>
@@ -34,12 +34,13 @@
; Lcl frame size = 8
G_M34926_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x30]!
+ stp x19, x20, [sp, #0x18]
+ str x21, [sp, #0x28]
mov fp, sp
mov x19, x0
; byrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=20 bbWeight=1 PerfScore 4.00
G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=80000 {x19}, byref
; gcrRegs +[x2]
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
@@ -47,69 +48,52 @@ G_M34926_IG02: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=80000 {x19},
movk x0, #1 LSL #32
ldr x0, [x0]
; gcrRegs +[x0]
- ldr x3, [x2]
- add x0, x0, #16
+ ldr x20, [x2]
+ add x21, x0, #16
+ ; byrRegs +[x21]
+ ror x0, x20, #32
; gcrRegs -[x0]
- ; byrRegs +[x0]
- ror x4, x3, #32
- eor x4, x4, x1
- movz x5, #0xD1FFAB1E
- movk x5, #0xD1FFAB1E LSL #16
- movk x5, #0xD1FFAB1E LSL #32
- movk x5, #0xD1FFAB1E LSL #48
- mul x4, x4, x5
- ldr w5, [x0]
- lsr x4, x4, x5
- mov w5, wzr
+ eor x0, x0, x1
+ movz x3, #0xD1FFAB1E
+ movk x3, #0xD1FFAB1E LSL #16
+ movk x3, #0xD1FFAB1E LSL #32
+ movk x3, #0xD1FFAB1E LSL #48
+ mul x0, x0, x3
+ ldr w3, [x21]
+ lsr x3, x0, x3
+ mov w4, wzr
;; size=64 bbWeight=1 PerfScore 17.50
-G_M34926_IG03: ; bbWeight=2.05, gcrefRegs=0004 {x2}, byrefRegs=80001 {x0 x19}, byref, isz
- add w6, w4, #1
- mov w7, #24
- smull x6, w6, w7
- add x6, x0, x6
- ; byrRegs +[x6]
- ldar w7, [x6]
- ldr x8, [x6, #0x08]
- and w7, w7, #0xD1FFAB1E
- cmp x8, x3
- beq G_M34926_IG07
+G_M34926_IG03: ; bbWeight=2.05, gcrefRegs=0004 {x2}, byrefRegs=280000 {x19 x21}, byref, isz
+ add w0, w3, #1
+ mov w5, #24
+ smull x0, w0, w5
+ add x0, x21, x0
+ ; byrRegs +[x0]
+ ldar w5, [x0]
+ ldr x6, [x0, #0x08]
+ and w5, w5, #0xD1FFAB1E
+ cmp x6, x20
+ beq G_M34926_IG09
;; size=36 bbWeight=2.05 PerfScore 23.59
-G_M34926_IG04: ; bbWeight=1.21, gcrefRegs=0004 {x2}, byrefRegs=80001 {x0 x19}, byref, isz
- ; byrRegs -[x6]
- cbz w7, G_M34926_IG10
+G_M34926_IG04: ; bbWeight=1.21, gcrefRegs=0004 {x2}, byrefRegs=280000 {x19 x21}, byref, isz
+ ; byrRegs -[x0]
+ cbz w5, G_M34926_IG07
;; size=4 bbWeight=1.21 PerfScore 1.21
-G_M34926_IG05: ; bbWeight=2.05, gcrefRegs=0004 {x2}, byrefRegs=80001 {x0 x19}, byref, isz
- add w5, w5, #1
- add w4, w4, w5
- ldr w8, [x0, #0x04]
- and w4, w4, w8
- cmp w5, #8
- blt G_M34926_IG03
- ;; size=24 bbWeight=2.05 PerfScore 12.31
-G_M34926_IG06: ; bbWeight=0.00, gcrefRegs=0004 {x2}, byrefRegs=80000 {x19}, byref
- ; byrRegs -[x0]
- b G_M34926_IG10
- ;; size=4 bbWeight=0.00 PerfScore 0.00
-G_M34926_IG07: ; bbWeight=0.84, gcrefRegs=0004 {x2}, byrefRegs=80041 {x0 x6 x19}, byref, isz
- ; byrRegs +[x0 x6]
- ldr x8, [x6, #0x10]
- eor x8, x8, x1
- cmp x8, #1
- bhi G_M34926_IG04
- ;; size=16 bbWeight=0.84 PerfScore 4.21
-G_M34926_IG08: ; bbWeight=0.84, gcrefRegs=0004 {x2}, byrefRegs=80040 {x6 x19}, byref, isz
- ; byrRegs -[x0]
- dmb ishld
- ldr w0, [x6]
- cmp w7, w0
- bne G_M34926_IG10
- ;; size=16 bbWeight=0.84 PerfScore 12.17
-G_M34926_IG09: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs -[x6]
- cmp w8, #1
- beq G_M34926_IG12
+G_M34926_IG05: ; bbWeight=2.05, gcrefRegs=0004 {x2}, byrefRegs=280000 {x19 x21}, byref, isz
+ add w4, w4, #1
+ add w3, w3, w4
+ ldr w6, [x21, #0x04]
+ and w3, w3, w6
+ cmp w4, #8
+ bge G_M34926_IG07
+ b G_M34926_IG03
+ ;; size=28 bbWeight=2.05 PerfScore 14.36
+G_M34926_IG06: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=80000 {x19}, byref, isz
+ ; byrRegs -[x21]
+ cmp w6, #1
+ beq G_M34926_IG11
;; size=8 bbWeight=1 PerfScore 1.50
-G_M34926_IG10: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=80000 {x19}, byref, isz
+G_M34926_IG07: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=80000 {x19}, byref, isz
mov x0, x1
mov x1, x2
; gcrRegs +[x1]
@@ -118,7 +102,7 @@ G_M34926_IG10: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=80000 {x19},
; gcr arg pop 0
mov x1, x0
; gcrRegs +[x1]
- cbz x1, G_M34926_IG14
+ cbz x1, G_M34926_IG13
mov x0, x19
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -127,14 +111,30 @@ G_M34926_IG10: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=80000 {x19},
; byrRegs -[x0 x19]
; gcr arg pop 0
;; size=28 bbWeight=1 PerfScore 5.00
-G_M34926_IG11: ; bbWeight=1, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M34926_IG08: ; 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 4.00
-G_M34926_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=80000 {x19}, gcvars, byref
+ ;; size=16 bbWeight=1 PerfScore 5.00
+G_M34926_IG09: ; bbWeight=0.84, gcVars=0000000000000000 {}, gcrefRegs=0004 {x2}, byrefRegs=280001 {x0 x19 x21}, gcvars, byref, isz
; gcrRegs +[x2]
- ; byrRegs +[x19]
+ ; byrRegs +[x0 x19 x21]
+ ldr x6, [x0, #0x10]
+ eor x6, x6, x1
+ cmp x6, #1
+ bhi G_M34926_IG04
+ ;; size=16 bbWeight=0.84 PerfScore 4.21
+G_M34926_IG10: ; bbWeight=0.84, gcrefRegs=0004 {x2}, byrefRegs=80001 {x0 x19}, byref, isz
+ ; byrRegs -[x21]
+ dmb ishld
+ ldr w0, [x0]
+ ; byrRegs -[x0]
+ cmp w5, w0
+ bne G_M34926_IG07
+ b G_M34926_IG06
+ ;; size=20 bbWeight=0.84 PerfScore 13.01
+G_M34926_IG11: ; bbWeight=0, gcrefRegs=0004 {x2}, byrefRegs=80000 {x19}, byref
mov x0, x19
; byrRegs +[x0]
mov x1, x2
@@ -144,12 +144,13 @@ G_M34926_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {
; byrRegs -[x0 x19]
; gcr arg pop 0
;; size=12 bbWeight=0 PerfScore 0.00
-G_M34926_IG13: ; bbWeight=0, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M34926_IG12: ; bbWeight=0, epilog, nogc, extend
+ ldr x21, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
-G_M34926_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M34926_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -173,7 +174,7 @@ G_M34926_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 304, prolog size 16, PerfScore 84.48, instruction count 76, allocated bytes for code 304 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (Tier1)
+; Total bytes of code 320, prolog size 20, PerfScore 89.37, instruction count 80, allocated bytes for code 320 (MethodHash=f2f07791) for method System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (Tier1)
; ============================================================
Unwind Info:
@@ -184,7 +185,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 76 (0x0004c) Actual length = 304 (0x000130)
+ Function Length : 80 (0x00050) Actual length = 320 (0x000140)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -195,10 +196,9 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 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
benchmarks.run_tiered.osx.arm64.checked.mch
-12 (-1.24%) : 20301.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 12, 7 ) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T04] ( 12, 11.44) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T14] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T12] ( 8, 7.02) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
-; V04 loc2 [V04,T21] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T23] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
; V05 loc3 [V05,T00] ( 11, 17.08) int -> x0
; V06 loc4 [V06,T02] ( 8, 16 ) ref -> x15 class-hnd <System.Type>
-; V07 loc5 [V07,T08] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
-; V08 loc6 [V08,T20] ( 6, 1.83) ref -> x1 class-hnd exact <System.Type[]>
+; V07 loc5 [V07,T09] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
+; V08 loc6 [V08,T18] ( 6, 3.31) ref -> x1 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x0
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,36 +25,36 @@
;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType>
; V16 tmp5 [V16,T26] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp7 [V18,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp7 [V18,T21] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V19 tmp8 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp10 [V21,T22] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
-; V22 tmp11 [V22 ] ( 4, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
-; V23 tmp12 [V23,T18] ( 2, 2 ) long -> x0 "impAppendStmt"
+; V21 tmp10 [V21,T16] ( 2, 3.96) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
+; V22 tmp11 [V22 ] ( 4, 7.92) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
+; V23 tmp12 [V23,T11] ( 2, 7.92) long -> x0 "impAppendStmt"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V27 tmp16 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T14] ( 3, 4 ) ref -> x0 "Single return block return value"
-; V31 FramesRoot [V31,T13] ( 6, 4 ) long -> x20 "Pinvoke FrameListRoot"
-; V32 PInvokeFrame [V32 ] ( 8, 6 ) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp19 [V30,T13] ( 3, 6.96) ref -> x0 "Single return block return value"
+; V31 FramesRoot [V31,T08] ( 6, 9.92) long -> x21 "Pinvoke FrameListRoot"
+; V32 PInvokeFrame [V32 ] ( 8, 11.92) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V33 tmp22 [V33 ] ( 0, 0 ) long -> zero-ref "field V24._ptr (fldOffset=0x0)" P-INDEP
-; V34 tmp23 [V34,T23] ( 2, 1 ) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp24 [V35,T19] ( 2, 2 ) long -> x1 "argument with side effect"
-; V36 tmp25 [V36,T15] ( 2, 2 ) ref -> x20 single-def "argument with side effect"
-; V37 tmp26 [V37,T16] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V34 tmp23 [V34,T17] ( 2, 3.96) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp24 [V35,T22] ( 2, 2 ) long -> x1 "argument with side effect"
+; V36 tmp25 [V36,T19] ( 2, 2 ) ref -> x21 single-def "argument with side effect"
+; V37 tmp26 [V37,T20] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V39 tmp28 [V39,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V40 tmp29 [V40,T28] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V41 PSPSym [V41,T24] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym"
-; V42 cse0 [V42,T04] ( 10, 12.50) int -> x21 "CSE - aggressive"
-; V43 cse1 [V43,T09] ( 6, 8.54) byref -> x22 hoist multi-def "CSE - aggressive"
-; V44 cse2 [V44,T12] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
-; V45 cse3 [V45,T05] ( 3, 11.88) long -> x14 "CSE - aggressive"
-; V46 cse4 [V46,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V42 cse0 [V42,T05] ( 10, 12.50) int -> x22 "CSE - aggressive"
+; V43 cse1 [V43,T10] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
+; V44 cse2 [V44,T15] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
+; V45 cse3 [V45,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V46 cse4 [V46,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
; Lcl frame size = 112
@@ -71,21 +71,23 @@ G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x2, [fp, #0x78] // [V41 PSPSym]
str x0, [fp, #0x68] // [V00 this]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=52 bbWeight=1 PerfScore 11.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
add x0, fp, #32 // [V32 PInvokeFrame+0x08]
mov x1, x12
bl CORINFO_HELP_INIT_PINVOKE_FRAME
- mov x20, x0
+ mov x21, x0
mov x1, sp
str x1, [fp, #0x40] // [V32 PInvokeFrame+0x28]
mov x1, fp
str x1, [fp, #0x50] // [V32 PInvokeFrame+0x38]
- cbz x19, G_M59170_IG21
- ldr w21, [x19, #0x08]
- mov w1, w21
+ cbz x20, G_M59170_IG21
+ ldr w22, [x20, #0x08]
+ mov w1, w22
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -94,33 +96,28 @@ G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=800
; gcr arg pop 0
str x0, [fp, #0x60] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
- ldr x0, [x1, #0x50]
+ ldr x0, [x19, #0x50]
; gcrRegs -[x0]
bl <unknown method>
- ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
cbz w0, G_M59170_IG22
mov w0, wzr
- cmp w21, #0
+ cmp w22, #0
ble G_M59170_IG07
- ;; size=96 bbWeight=1 PerfScore 24.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- ldr w14, [x2, #0x08]
- cmp w14, w21
+ ;; size=88 bbWeight=1 PerfScore 20.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ ldr w14, [x1, #0x08]
+ cmp w14, w22
blt G_M59170_IG06
- add x22, x19, #16
- ; byrRegs +[x22]
+ add x23, x20, #16
+ ; byrRegs +[x23]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80002 {x1 x19}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x20]
mov w14, w0
- ldr x15, [x22, x14, LSL #3]
+ ldr x15, [x23, x14, LSL #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x12, [x15]
@@ -129,7 +126,7 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
movk xip0, #1 LSL #32
cmp x12, xip0
bne G_M59170_IG12
- add x12, x2, #16
+ add x12, x1, #16
; byrRegs +[x12]
add x14, x12, x14, LSL #3
; byrRegs +[x14]
@@ -137,20 +134,20 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
; gcrRegs -[x15]
; byrRegs -[x12 x14]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG04
;; size=60 bbWeight=3.96 PerfScore 59.40
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ; byrRegs -[x22]
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x23]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2] +[x19]
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- add x22, x19, #16
- ; byrRegs +[x22]
- ldr x15, [x22, w0, UXTW #3]
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x20]
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ add x23, x20, #16
+ ; byrRegs +[x23]
+ ldr x15, [x23, w0, UXTW #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x14, [x15]
@@ -159,30 +156,30 @@ G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x12, #1 LSL #32
cmp x14, x12
bne G_M59170_IG12
- ldr w14, [x2, #0x08]
+ ldr w14, [x1, #0x08]
cmp w0, w14
bhs G_M59170_IG20
- add x14, x2, #16
+ add x14, x1, #16
; byrRegs +[x14]
add x14, x14, x0, LSL #3
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x2 x15]
- ; byrRegs -[x14 x22]
+ ; gcrRegs -[x1 x15]
+ ; byrRegs -[x14 x23]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG06
;; size=76 bbWeight=0.04 PerfScore 0.86
-G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG07: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
str xzr, [fp, #0x70] // [V22 tmp11]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x1]
+ movz x2, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
add x1, fp, #112 // [V22 tmp11]
mov w2, #1
@@ -194,22 +191,22 @@ G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
str x3, [fp, #0x48] // [V32 PInvokeFrame+0x30]
add x3, fp, #32 // [V32 PInvokeFrame+0x08]
; byrRegs +[x3]
- str x3, [x20, #0x10]
- strb wzr, [x20, #0x0C]
- ;; size=72 bbWeight=0.50 PerfScore 7.25
-G_M59170_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ str x3, [x21, #0x10]
+ strb wzr, [x21, #0x0C]
...
-8 (-1.01%) : 31181.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
@@ -8,34 +8,34 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 10, 4.10) ref -> x0 class-hnd single-def <double[][]>
-; V01 arg1 [V01,T05] ( 12, 31.97) int -> x1 single-def
-; V02 arg2 [V02,T12] ( 4, 6 ) ref -> x2 class-hnd single-def <int[]>
-; V03 arg3 [V03,T14] ( 7, 4.05) ref -> x3 class-hnd single-def <double[]>
-; V04 loc0 [V04,T01] ( 41, 85.81) int -> x5
-; V05 loc1 [V05,T00] ( 37, 88.07) int -> registers
-; V06 loc2 [V06,T16] ( 3, 6 ) int -> x4
+; V00 arg0 [V00,T14] ( 10, 4.10) ref -> x0 class-hnd single-def <double[][]>
+; V01 arg1 [V01,T07] ( 12, 31.97) int -> x1 single-def
+; V02 arg2 [V02,T13] ( 4, 6 ) ref -> x2 class-hnd single-def <int[]>
+; V03 arg3 [V03,T15] ( 7, 4.05) ref -> x3 class-hnd single-def <double[]>
+; V04 loc0 [V04,T00] ( 41,101.33) int -> x4
+; V05 loc1 [V05,T01] ( 37, 88.07) int -> registers
+; V06 loc2 [V06,T17] ( 3, 6 ) int -> x5
; V07 loc3 [V07,T21] ( 3, 4.50) int -> x6
-; V08 loc4 [V08,T24] ( 17, 60 ) double -> d16
+; V08 loc4 [V08,T24] ( 17, 63.88) double -> d16
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T26] ( 2, 8 ) double -> d17 "Strict ordering of exceptions for Array store"
-; V11 tmp2 [V11,T25] ( 4, 16 ) double -> d17 "Strict ordering of exceptions for Array store"
+; V11 tmp2 [V11,T25] ( 4, 31.52) double -> d17 "Strict ordering of exceptions for Array store"
; V12 tmp3 [V12,T09] ( 5, 16.08) ref -> x9 "arr expr"
; V13 tmp4 [V13,T02] ( 8, 64.64) ref -> registers "arr expr"
-; V14 tmp5 [V14,T07] ( 6, 24 ) ref -> x2 "arr expr"
-; V15 cse0 [V15,T06] ( 8, 26.89) ref -> x6 multi-def "CSE - aggressive"
+; V14 tmp5 [V14,T03] ( 6, 47.28) ref -> x3 "arr expr"
+; V15 cse0 [V15,T06] ( 8, 34.65) ref -> x6 multi-def "CSE - aggressive"
; V16 cse1 [V16,T20] ( 6, 5.54) ref -> x10 multi-def "CSE - aggressive"
-; V17 cse2 [V17,T04] ( 14, 42.01) byref -> x7 hoist "CSE - aggressive"
-; V18 cse3 [V18,T19] ( 8, 5.86) byref -> x8 hoist "CSE - aggressive"
+; V17 cse2 [V17,T05] ( 14, 45.89) byref -> x7 hoist "CSE - aggressive"
+; V18 cse3 [V18,T12] ( 8, 9.74) byref -> x8 hoist "CSE - aggressive"
; V19 cse4 [V19,T10] ( 13, 15.93) int -> x9 hoist multi-def "CSE - aggressive"
-; V20 cse5 [V20,T15] ( 4, 6 ) int -> x4 "CSE - aggressive"
+; V20 cse5 [V20,T16] ( 4, 6 ) int -> x2 "CSE - aggressive"
; V21 cse6 [V21,T22] ( 11, 3.32) int -> registers hoist multi-def "CSE - aggressive"
-; V22 cse7 [V22,T08] ( 7, 20.95) long -> x11 "CSE - aggressive"
-; V23 cse8 [V23,T03] ( 3, 47.04) long -> x3 "CSE - aggressive"
+; V22 cse7 [V22,T08] ( 7, 32.59) long -> x10 "CSE - aggressive"
+; V23 cse8 [V23,T04] ( 3, 47.04) long -> x11 "CSE - aggressive"
; V24 cse9 [V24,T11] ( 3, 11.88) long -> x11 "CSE - aggressive"
-; V25 cse10 [V25,T17] ( 3, 6 ) long -> x10 "CSE - aggressive"
-; V26 cse11 [V26,T18] ( 3, 6 ) long -> x4 "CSE - aggressive"
-; V27 cse12 [V27,T23] ( 6, 0.36) long -> x11 "CSE - conservative"
+; V25 cse10 [V25,T18] ( 3, 6 ) long -> x10 "CSE - aggressive"
+; V26 cse11 [V26,T19] ( 3, 6 ) long -> x5 "CSE - aggressive"
+; V27 cse12 [V27,T23] ( 6, 0.36) long -> x10 "CSE - conservative"
;
; Lcl frame size = 0
@@ -47,7 +47,7 @@ G_M64421_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w1, [fp, #0x64]
ldp x3, x2, [fp, #0x50]
; gcrRegs +[x2-x3]
- ldp w4, w5, [fp, #0x48]
+ ldp w5, w4, [fp, #0x48]
ldr w6, [fp, #0x40]
ldr d16, [fp, #0x38]
;; size=32 bbWeight=0.01 PerfScore 0.14
@@ -63,111 +63,111 @@ G_M64421_IG03: ; bbWeight=1, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x
b G_M64421_IG05
;; size=8 bbWeight=1 PerfScore 4.00
G_M64421_IG04: ; bbWeight=2, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x7 x8}, byref, isz
- ldr w4, [x2, #0x08]
- cmp w5, w4
- bhs G_M64421_IG29
- add x4, x2, #16
- ; byrRegs +[x4]
- mov w10, w5
- ldr w4, [x4, x10, LSL #2]
- ; byrRegs -[x4]
- cmp w4, w9
- bhs G_M64421_IG29
- mov w4, w4
- ldr d16, [x7, x4, LSL #3]
+ ldr w5, [x2, #0x08]
+ cmp w4, w5
+ bhs G_M64421_IG28
+ add x5, x2, #16
+ ; byrRegs +[x5]
+ mov w10, w4
+ ldr w5, [x5, x10, LSL #2]
+ ; byrRegs -[x5]
cmp w5, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
+ mov w5, w5
+ ldr d16, [x7, x5, LSL #3]
+ cmp w4, w9
+ bhs G_M64421_IG28
ldr d17, [x7, x10, LSL #3]
- str d17, [x7, x4, LSL #3]
+ str d17, [x7, x5, LSL #3]
cmn w6, #1
bne G_M64421_IG22
fcmp d16, #0.0
beq G_M64421_IG05
- sxtw w6, w5
+ sxtw w6, w4
;; size=76 bbWeight=2 PerfScore 48.00
G_M64421_IG05: ; bbWeight=8, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x7 x8}, byref, isz
- cmp w5, w9
- bhs G_M64421_IG29
- str d16, [x7, w5, UXTW #3]
- add w5, w5, #1
- cmp w5, w1
+ cmp w4, w9
+ bhs G_M64421_IG28
+ str d16, [x7, w4, UXTW #3]
+ add w4, w4, #1
+ cmp w4, w1
blt G_M64421_IG04
;; size=24 bbWeight=8 PerfScore 36.00
G_M64421_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
; gcrRegs -[x2-x3]
- sub w4, w1, #1
- sxtw w5, w4
- tbnz w5, #31, G_M64421_IG21
+ sub w2, w1, #1
+ sxtw w4, w2
+ tbnz w4, #31, G_M64421_IG21
;; size=12 bbWeight=1 PerfScore 2.00
G_M64421_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
cbz x0, G_M64421_IG16
- cmp w9, w5
+ cmp w9, w4
ble G_M64421_IG16
- ldr w10, [x0, #0x08]
- cmp w10, w5
+ ldr w5, [x0, #0x08]
+ cmp w5, w4
ble G_M64421_IG16
;; size=24 bbWeight=0.50 PerfScore 3.50
G_M64421_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
; gcrRegs -[x0]
- mov w11, w5
- ldr d16, [x7, x11, LSL #3]
- cmp w5, w4
+ mov w10, w4
+ ldr d16, [x7, x10, LSL #3]
+ cmp w4, w2
beq G_M64421_IG14
;; size=16 bbWeight=3.96 PerfScore 19.80
G_M64421_IG09: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- add w0, w5, #1
+ add w0, w4, #1
cmp w0, w1
bge G_M64421_IG14
;; size=12 bbWeight=1.98 PerfScore 3.96
G_M64421_IG10: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- cmp w10, w5
+ cmp w5, w4
bls G_M64421_IG13
- ldr x6, [x8, x11, LSL #3]
+ ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
cbz x6, G_M64421_IG13
orr w3, w0, w1
tbnz w3, #31, G_M64421_IG13
- ldr w2, [x6, #0x08]
- cmp w2, w1
+ ldr w3, [x6, #0x08]
+ cmp w3, w1
blt G_M64421_IG13
cmp w9, w1
blt G_M64421_IG13
;; size=44 bbWeight=0.99 PerfScore 12.87
G_M64421_IG11: ; bbWeight=15.68, gcrefRegs=0040 {x6}, byrefRegs=0180 {x7 x8}, byref, isz
- mov x2, x6
- ; gcrRegs +[x2]
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- mov w3, w0
- ldr d17, [x2, x3, LSL #3]
- ldr d18, [x7, x3, LSL #3]
+ mov x3, x6
+ ; gcrRegs +[x3]
+ add x3, x3, #16
+ ; gcrRegs -[x3]
+ ; byrRegs +[x3]
+ mov w11, w0
+ ldr d17, [x3, x11, LSL #3]
+ ldr d18, [x7, x11, LSL #3]
fmul d17, d17, d18
fsub d16, d16, d17
add w0, w0, #1
cmp w0, w1
blt G_M64421_IG11
;; size=40 bbWeight=15.68 PerfScore 243.06
-G_M64421_IG12: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref
+G_M64421_IG12: ; bbWeight=7.84, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref
; gcrRegs -[x6]
- ; byrRegs -[x2]
+ ; byrRegs -[x3]
b G_M64421_IG14
- ;; size=4 bbWeight=3.96 PerfScore 3.96
+ ;; size=4 bbWeight=7.84 PerfScore 7.84
G_M64421_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- ldr x6, [x8, x11, LSL #3]
+ ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- mov x2, x6
- ; gcrRegs +[x2]
- ldr w6, [x2, #0x08]
+ mov x3, x6
+ ; gcrRegs +[x3]
+ ldr w6, [x3, #0x08]
; gcrRegs -[x6]
cmp w0, w6
- bhs G_M64421_IG29
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- ldr d17, [x2, w0, UXTW #3]
+ bhs G_M64421_IG28
+ add x3, x3, #16
+ ; gcrRegs -[x3]
+ ; byrRegs +[x3]
+ ldr d17, [x3, w0, UXTW #3]
cmp w0, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
ldr d18, [x7, w0, UXTW #3]
fmul d17, d17, d18
fsub d16, d16, d17
@@ -175,123 +175,119 @@ G_M64421_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}
cmp w0, w1
blt G_M64421_IG13
;; size=60 bbWeight=0.16 PerfScore 3.80
-G_M64421_IG14: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- ; byrRegs -[x2]
- ldr x6, [x8, x11, LSL #3]
+G_M64421_IG14: ; bbWeight=7.84, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
+ ; byrRegs -[x3]
+ ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- mov x2, x6
- ; gcrRegs +[x2]
- ldr w0, [x2, #0x08]
- cmp w5, w0
- bhs G_M64421_IG29
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- ldr d17, [x2, x11, LSL #3]
...
+0 (0.00%) : 6245.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1)
@@ -36,12 +36,12 @@ G_M28111_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=28 bbWeight=1 PerfScore 5.50
G_M28111_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w3, w4
- cbnz x19, G_M28111_IG11
+ cbnz x19, G_M28111_IG10
;; size=8 bbWeight=1 PerfScore 1.50
G_M28111_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
cmp w3, w21
- bge G_M28111_IG20
+ bge G_M28111_IG19
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M28111_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
cbz x20, G_M28111_IG07
@@ -57,68 +57,66 @@ G_M28111_IG05: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=400000 {x22}
; gcrRegs -[x20]
ldr x0, [x22, w3, UXTW #3]
; gcrRegs +[x0]
- cbz x0, G_M28111_IG09
+ cbz x0, G_M28111_IG08
add w3, w3, #1
cmp w3, w21
blt G_M28111_IG05
;; size=20 bbWeight=3.96 PerfScore 23.76
-G_M28111_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG06: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
; byrRegs -[x22]
- b G_M28111_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ b G_M28111_IG19
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M28111_IG07: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
ldr w0, [x20, #0x08]
cmp w3, w0
- bhs G_M28111_IG24
+ bhs G_M28111_IG23
add x22, x20, #16
; byrRegs +[x22]
ldr x0, [x22, w3, UXTW #3]
; gcrRegs +[x0]
- cbz x0, G_M28111_IG09
+ cbz x0, G_M28111_IG08
add w3, w3, #1
cmp w3, w21
blt G_M28111_IG07
- ;; size=36 bbWeight=0.04 PerfScore 0.44
+ b G_M28111_IG19
+ ;; size=40 bbWeight=0.04 PerfScore 0.48
G_M28111_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20]
; byrRegs -[x22]
- b G_M28111_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28111_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M28111_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M28111_IG09: ; 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
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M28111_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28111_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
sxtw w23, w3
cmp w23, w21
- bge G_M28111_IG20
+ bge G_M28111_IG19
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M28111_IG12: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M28111_IG17
+G_M28111_IG11: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M28111_IG16
orr w0, w23, w21
- tbnz w0, #31, G_M28111_IG17
+ tbnz w0, #31, G_M28111_IG16
ldr w0, [x20, #0x08]
cmp w0, w21
- blt G_M28111_IG17
+ blt G_M28111_IG16
add x22, x20, #16
; byrRegs +[x22]
;; size=28 bbWeight=0.25 PerfScore 1.88
-G_M28111_IG13: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M28111_IG12: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x20]
ldr x0, [x22, w23, UXTW #3]
; gcrRegs +[x0]
- cbz x0, G_M28111_IG15
+ cbz x0, G_M28111_IG14
;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M28111_IG14: ; bbWeight=1.98, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
+G_M28111_IG13: ; bbWeight=1.98, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
mov x1, x19
; gcrRegs +[x1]
ldr x2, [x0]
@@ -127,30 +125,30 @@ G_M28111_IG14: ; bbWeight=1.98, gcrefRegs=80001 {x0 x19}, byrefRegs=40000
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbnz w0, G_M28111_IG22
+ cbnz w0, G_M28111_IG21
;; size=24 bbWeight=1.98 PerfScore 22.77
-G_M28111_IG15: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M28111_IG14: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w23, w23, #1
cmp w23, w21
- blt G_M28111_IG13
+ blt G_M28111_IG12
;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M28111_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG15: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x22]
- b G_M28111_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28111_IG17: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ b G_M28111_IG19
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M28111_IG16: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x20]
ldr w0, [x20, #0x08]
cmp w23, w0
- bhs G_M28111_IG24
+ bhs G_M28111_IG23
add x22, x20, #16
; byrRegs +[x22]
ldr x0, [x22, w23, UXTW #3]
; gcrRegs +[x0]
- cbz x0, G_M28111_IG19
+ cbz x0, G_M28111_IG18
;; size=24 bbWeight=0.04 PerfScore 0.36
-G_M28111_IG18: ; bbWeight=0.02, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG17: ; bbWeight=0.02, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x22]
mov x1, x19
; gcrRegs +[x1]
@@ -160,41 +158,41 @@ G_M28111_IG18: ; bbWeight=0.02, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbnz w0, G_M28111_IG22
+ cbnz w0, G_M28111_IG21
;; size=24 bbWeight=0.02 PerfScore 0.23
-G_M28111_IG19: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG18: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w23, w23, #1
cmp w23, w21
- blt G_M28111_IG17
+ blt G_M28111_IG16
;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M28111_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG19: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
movn w0, #0
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M28111_IG21: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=1.98 PerfScore 0.99
+G_M28111_IG20: ; bbWeight=1.98, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M28111_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1.98 PerfScore 11.88
+G_M28111_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w23
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M28111_IG23: ; bbWeight=0.50, epilog, nogc, extend
+G_M28111_IG22: ; 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
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M28111_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M28111_IG23: ; 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 364, prolog size 28, PerfScore 95.15, instruction count 91, allocated bytes for code 364 (MethodHash=c83f9230) for method System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
+; Total bytes of code 364, prolog size 28, PerfScore 107.27, instruction count 91, allocated bytes for code 364 (MethodHash=c83f9230) for method System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
; ============================================================
Unwind Info:
+4 (+0.29%) : 5968.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>cDisplayClass24_0+<b0>d[ubyte]:MoveNext():this (Tier1-OSR)
@@ -9,29 +9,29 @@
; 0 inlinees with PGO data; 27 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 14, 77 ) byref -> [fp+0xF0] this EH-live single-def tier0-frame
+; V00 this [V00,T02] ( 14, 18 ) byref -> [fp+0xF0] this EH-live single-def tier0-frame
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 loc1 [V02,T09] ( 3, 20 ) ref -> x19 class-hnd exact <<unknown class>>
-; V03 loc2 [V03 ] ( 4, 13 ) struct (16) [fp+0xD0] do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op tier0-frame <System.Threading.Tasks.ValueTask`1[ubyte]>
-; V04 loc3 [V04,T18] ( 1, 1 ) struct ( 8) [fp+0xC8] do-not-enreg[S] ld-addr-op tier0-frame <System.Threading.CancellationToken>
-; V05 loc4 [V05,T13] ( 3, 12 ) ubyte -> x21
+; V02 loc1 [V02,T03] ( 3, 17 ) ref -> x19 class-hnd exact <<unknown class>>
+; V03 loc2 [V03 ] ( 4, 4 ) struct (16) [fp+0xD0] do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op tier0-frame <System.Threading.Tasks.ValueTask`1[ubyte]>
+; V04 loc3 [V04,T21] ( 1, 1 ) struct ( 8) [fp+0xC8] do-not-enreg[S] ld-addr-op tier0-frame <System.Threading.CancellationToken>
+; V05 loc4 [V05,T16] ( 3, 3 ) ubyte -> x21
;* V06 loc5 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc6 [V07 ] ( 9, 27 ) struct (16) [fp+0xB0] do-not-enreg[XSF] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
-; V08 loc7 [V08 ] ( 4, 77 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <ubyte[]>
+; V07 loc6 [V07 ] ( 9, 9 ) struct (16) [fp+0xB0] do-not-enreg[XSF] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
+; V08 loc7 [V08 ] ( 4, 21 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <ubyte[]>
;* V09 loc8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V12 tmp2 [V12,T07] ( 3, 24 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
+; V12 tmp2 [V12,T09] ( 3, 6 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[ubyte]>
-; V14 tmp4 [V14,T28] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;* V15 tmp5 [V15,T27] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
+; V14 tmp4 [V14,T27] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;* V15 tmp5 [V15,T26] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]>
;* V18 tmp8 [V18 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
-;* V19 tmp9 [V19,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp10 [V20,T04] ( 7, 28 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V21 tmp11 [V21,T14] ( 2, 8 ) int -> x0
-; V22 tmp12 [V22,T11] ( 3, 12 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
+;* V19 tmp9 [V19,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V20 tmp10 [V20,T05] ( 7, 7 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V21 tmp11 [V21,T17] ( 2, 2 ) int -> x0
+; V22 tmp12 [V22,T14] ( 3, 3 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -39,38 +39,37 @@
;* V27 tmp17 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp18 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V30 tmp20 [V30,T10] ( 4, 16 ) ubyte -> x21 "Inline return value spill temp"
-; V31 tmp21 [V31,T05] ( 7, 28 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V32 tmp22 [V32,T15] ( 2, 8 ) int -> x0
-; V33 tmp23 [V33,T08] ( 5, 20 ) ref -> x21 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
+; V30 tmp20 [V30,T11] ( 4, 4 ) ubyte -> x21 "Inline return value spill temp"
+; V31 tmp21 [V31,T06] ( 7, 7 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V32 tmp22 [V32,T18] ( 2, 2 ) int -> x0
+; V33 tmp23 [V33,T07] ( 6, 6 ) ref -> x21 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
;* V34 tmp24 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V35 tmp25 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp26 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp27 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp28 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V39 tmp29 [V39,T02] ( 7, 48 ) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]>
+; V39 tmp29 [V39,T04] ( 7, 12 ) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]>
;* V40 tmp30 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V41 tmp31 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V42 tmp32 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V43 tmp33 [V43,T16] ( 3, 8 ) ref -> x22 class-hnd "Inline stloc first use temp" <System.AggregateException>
+; V43 tmp33 [V43,T19] ( 3, 2 ) ref -> x22 class-hnd "Inline stloc first use temp" <System.AggregateException>
;* V44 tmp34 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V45 tmp35 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp36 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp37 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp38 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]>
-; V49 tmp39 [V49,T17] ( 3, 6 ) byref -> x14 single-def "Inlining Arg"
-;* V50 tmp40 [V50,T25] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
-; V51 tmp41 [V51,T19] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
-;* V52 tmp42 [V52,T21] ( 0, 0 ) ref -> zero-ref "field V40._source (fldOffset=0x0)" P-INDEP
+; V49 tmp39 [V49,T10] ( 3, 6 ) byref -> x14 single-def "Inlining Arg"
+;* V50 tmp40 [V50,T24] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
+; V51 tmp41 [V51,T12] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
+;* V52 tmp42 [V52,T22] ( 0, 0 ) ref -> zero-ref "field V40._source (fldOffset=0x0)" P-INDEP
;* V53 tmp43 [V53 ] ( 0, 0 ) ref -> zero-ref "field V42._source (fldOffset=0x0)" P-INDEP
-; V54 tmp44 [V54,T00] ( 3,384 ) ref -> x2 "argument with side effect"
-; V55 tmp45 [V55,T03] ( 3, 48 ) ref -> x0 "argument with side effect"
-; V56 tmp46 [V56,T20] ( 2, 4 ) ref -> x1 "argument with side effect"
-; V57 PSPSym [V57,T26] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V58 cse0 [V58,T06] ( 6, 24 ) byref -> x21 "CSE - aggressive"
-; V59 cse1 [V59,T12] ( 3, 12 ) byref -> x20 "CSE - aggressive"
-; V60 cse2 [V60,T24] ( 2, 2 ) byref -> x14 "CSE - moderate"
-; V61 cse3 [V61,T23] ( 3, 3 ) ref -> x0 "CSE - moderate"
+; V54 tmp44 [V54,T00] ( 3, 48 ) ref -> x2 "argument with side effect"
+; V55 tmp45 [V55,T01] ( 3, 48 ) ref -> x0 "argument with side effect"
+; V56 tmp46 [V56,T13] ( 2, 4 ) ref -> x1 "argument with side effect"
+; V57 PSPSym [V57,T25] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V58 cse0 [V58,T08] ( 6, 6 ) byref -> x21 "CSE - aggressive"
+; V59 cse1 [V59,T20] ( 2, 2 ) byref -> x14 "CSE - moderate"
+; V60 cse2 [V60,T15] ( 3, 3 ) ref -> x0 "CSE - moderate"
;
; Lcl frame size = 16
@@ -86,11 +85,11 @@ G_M63909_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
ldr x19, [fp, #0xE0]
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 9.00
-G_M63909_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
- ; GC ptr vars +{V00}
- b G_M63909_IG24
+G_M63909_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
+ ; GC ptr vars +{V00 V02}
+ b G_M63909_IG23
;; size=4 bbWeight=1 PerfScore 1.00
-G_M63909_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M63909_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr x0, [fp, #0xF0] // [V00 this]
; byrRegs +[x0]
@@ -111,14 +110,14 @@ G_M63909_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
ldrb w1, [x1, #0x1D]
; gcrRegs -[x1]
- cbz w1, G_M63909_IG18
- ;; size=48 bbWeight=4 PerfScore 96.00
-G_M63909_IG04: ; bbWeight=4, nogc, extend
+ cbz w1, G_M63909_IG17
+ ;; size=48 bbWeight=1 PerfScore 24.00
+G_M63909_IG04: ; bbWeight=1, nogc, extend
ldp x0, x1, [fp, #0xD0]
; gcrRegs -[x0]
stp x0, x1, [fp, #0xB0]
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M63909_IG05: ; bbWeight=4, isz, extend
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M63909_IG05: ; bbWeight=1, isz, extend
ldr x20, [fp, #0xB0] // [V07 loc6]
; gcrRegs +[x20]
cbz x20, G_M63909_IG06
@@ -162,11 +161,11 @@ G_M63909_IG05: ; bbWeight=4, isz, extend
blr x2
; gcr arg pop 0
b G_M63909_IG07
- ;; size=132 bbWeight=4 PerfScore 106.00
-G_M63909_IG06: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M63909_IG11
- ;; size=4 bbWeight=4 PerfScore 4.00
-G_M63909_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=132 bbWeight=1 PerfScore 26.50
+G_M63909_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M63909_IG10
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M63909_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -175,7 +174,7 @@ G_M63909_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbz x0, G_M63909_IG09
+ cbz x0, G_M63909_IG08
add x0, x0, #52
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -183,14 +182,10 @@ G_M63909_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; byrRegs -[x0]
mov w1, #0xD1FFAB1E
tst w0, w1
- bne G_M63909_IG11
- ;; size=44 bbWeight=4 PerfScore 38.00
-G_M63909_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- b G_M63909_IG10
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M63909_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19-x20]
+ bne G_M63909_IG10
+ b G_M63909_IG09
+ ;; size=48 bbWeight=1 PerfScore 10.50
+G_M63909_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
ldrsh w1, [fp, #0xB8] // [V07 loc6+0x08]
@@ -201,9 +196,9 @@ G_M63909_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0 x20]
; gcr arg pop 0
- cbnz w0, G_M63909_IG11
- ;; size=32 bbWeight=4 PerfScore 36.00
-G_M63909_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M63909_IG10
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M63909_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
ldr x0, [fp, #0xF0] // [V00 this]
; byrRegs +[x0]
@@ -236,13 +231,13 @@ G_M63909_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M63909_IG31
+ b G_M63909_IG29
;; size=84 bbWeight=1 PerfScore 22.50
-G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M63909_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19]
ldr x20, [fp, #0xB0] // [V07 loc6]
; gcrRegs +[x20]
- cbz x20, G_M63909_IG12
+ cbz x20, G_M63909_IG11
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -251,7 +246,7 @@ G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M63909_IG12
+ cbnz x0, G_M63909_IG11
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -269,7 +264,7 @@ G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cset x0, ne
; gcrRegs -[x0]
tst w0, #255
- bne G_M63909_IG13
+ bne G_M63909_IG12
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -282,14 +277,14 @@ G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x2]
blr x2
; gcr arg pop 0
- b G_M63909_IG13
- ;; size=132 bbWeight=4 PerfScore 106.00
-G_M63909_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz x20, G_M63909_IG13
+ b G_M63909_IG12
+ ;; size=132 bbWeight=1 PerfScore 26.50
+G_M63909_IG11: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M63909_IG12
ldrb w21, [fp, #0xBA] // [V07 loc6+0x0a]
- b G_M63909_IG17
- ;; size=12 bbWeight=4 PerfScore 16.00
-G_M63909_IG13: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ b G_M63909_IG16
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M63909_IG12: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20
; gcrRegs +[x1]
...
+8 (+0.29%) : 24588.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
@@ -17,10 +17,10 @@
; V06 arg6 [V06,T31] ( 8, 8 ) ref -> x24 class-hnd single-def <System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[]>
; V07 arg7 [V07,T14] ( 7, 19.29) ref -> x21 class-hnd single-def <System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[]>
; V08 arg8 [V08,T45] ( 4, 4 ) ref -> [fp+0x148] class-hnd single-def <System.Security.Cryptography.AsymmetricAlgorithm[]>
-; V09 arg9 [V09,T12] ( 8, 22.99) int -> x20 single-def
-; V10 loc0 [V10,T13] ( 19, 22.06) int -> [fp+0xEC]
+; V09 arg9 [V09,T13] ( 8, 22.99) int -> x20 single-def
+; V10 loc0 [V10,T07] ( 19, 27.92) int -> [fp+0xEC]
; V11 loc1 [V11 ] ( 6, 12 ) struct (16) [fp+0xD8] do-not-enreg[SFAR] multireg-arg multireg-ret must-init <System.ReadOnlyMemory`1[ubyte]>
-; V12 loc2 [V12,T08] ( 7, 24.16) ref -> [fp+0x50] class-hnd <System.Security.Cryptography.Asn1.AttributeAsn[]>
+; V12 loc2 [V12,T09] ( 7, 24.16) ref -> [fp+0x50] class-hnd <System.Security.Cryptography.Asn1.AttributeAsn[]>
; V13 loc3 [V13,T02] ( 10, 68 ) int -> [fp+0xD4]
;* V14 loc4 [V14 ] ( 0, 0 ) struct (16) zero-ref <System.Security.Cryptography.Asn1.AttributeAsn>
; V15 loc5 [V15 ] ( 24, 24 ) struct (16) [fp+0xC0] do-not-enreg[SBR] multireg-ret must-init ld-addr-op <System.ReadOnlyMemory`1[ubyte]>
@@ -28,7 +28,7 @@
; V17 loc7 [V17,T17] ( 5, 18 ) ref -> [fp+0x40] class-hnd exact <System.String>
; V18 loc8 [V18,T18] ( 5, 18 ) ref -> [fp+0x38] class-hnd <<unknown class>>
; V19 loc9 [V19,T19] ( 5, 18 ) ref -> [fp+0x30] class-hnd <<unknown class>>
-; V20 loc10 [V20,T01] ( 18, 68.32) int -> [fp+0xBC]
+; V20 loc10 [V20,T01] ( 18, 74.18) int -> [fp+0xBC]
;# V21 OutArgs [V21 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V22 tmp1 [V22,T21] ( 4, 16 ) ref -> x4 class-hnd exact "dup spill" <System.Security.Cryptography.Asn1.AttributeAsn[]>
; V23 tmp2 [V23,T24] ( 8, 14 ) ref -> registers
@@ -70,7 +70,7 @@
; V59 tmp38 [V59,T28] ( 6, 12 ) int -> [fp+0xE0] do-not-enreg[] "field V11._index (fldOffset=0x8)" P-DEP
; V60 tmp39 [V60,T29] ( 6, 12 ) int -> [fp+0xE4] do-not-enreg[] "field V11._length (fldOffset=0xc)" P-DEP
; V61 tmp40 [V61,T03] ( 11, 56.08) ref -> x8 "field V14.AttrType (fldOffset=0x0)" P-INDEP
-; V62 tmp41 [V62,T07] ( 7, 26.02) ref -> [fp+0x20] "field V14.AttrValues (fldOffset=0x8)" P-INDEP
+; V62 tmp41 [V62,T08] ( 7, 26.02) ref -> [fp+0x20] "field V14.AttrValues (fldOffset=0x8)" P-INDEP
; V63 tmp42 [V63,T15] ( 18, 18 ) ref -> [fp+0xC0] do-not-enreg[] "field V15._object (fldOffset=0x0)" P-DEP
; V64 tmp43 [V64,T48] ( 4, 4 ) int -> [fp+0xC8] do-not-enreg[] "field V15._index (fldOffset=0x8)" P-DEP
; V65 tmp44 [V65,T40] ( 6, 6 ) int -> [fp+0xCC] do-not-enreg[] "field V15._length (fldOffset=0xc)" P-DEP
@@ -94,7 +94,7 @@
;* V83 tmp62 [V83 ] ( 0, 0 ) int -> zero-ref "field V53._length (fldOffset=0x8)" P-INDEP
; V84 tmp63 [V84,T00] ( 6, 96 ) byref -> x7 "BlockOp address local"
; V85 tmp64 [V85,T30] ( 6, 12 ) struct (16) [fp+0xA8] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
-; V86 tmp65 [V86,T09] ( 6, 24 ) struct (16) [fp+0x98] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
+; V86 tmp65 [V86,T10] ( 6, 24 ) struct (16) [fp+0x98] do-not-enreg[SFA] multireg-arg must-init "argument with side effect" <System.ReadOnlyMemory`1[ubyte]>
; V87 tmp66 [V87,T55] ( 2, 0 ) ref -> x1 "argument with side effect"
; V88 tmp67 [V88 ] ( 4, 8 ) struct (32) [fp+0x78] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn>
; V89 cse0 [V89,T41] ( 3, 5.94) ref -> x15 "CSE - moderate"
@@ -103,13 +103,13 @@
; V92 cse3 [V92,T25] ( 5, 13.86) long -> [fp+0x70] spill-single-def "CSE - moderate"
; V93 cse4 [V93,T52] ( 3, 0.10) long -> [fp+0x68] spill-single-def "CSE - conservative"
; V94 cse5 [V94,T16] ( 18, 18 ) ref -> x1 multi-def "CSE - aggressive"
-; V95 cse6 [V95,T10] ( 3, 23.76) int -> [fp+0x64] spill-single-def "CSE - aggressive"
+; V95 cse6 [V95,T11] ( 3, 23.76) int -> [fp+0x64] spill-single-def "CSE - aggressive"
; V96 cse7 [V96,T04] ( 6, 40 ) ref -> x10 multi-def "CSE - aggressive"
-; V97 cse8 [V97,T11] ( 3, 23.76) int -> x1 "CSE - aggressive"
+; V97 cse8 [V97,T12] ( 3, 23.76) int -> x1 "CSE - aggressive"
; V98 cse9 [V98,T35] ( 8, 8 ) long -> [fp+0x58] multi-def "CSE - moderate"
-; V99 cse10 [V99,T44] ( 5, 4.02) int -> x5 multi-def "CSE - moderate"
-; V100 cse11 [V100,T38] ( 6, 6 ) byref -> x6 multi-def "CSE - moderate"
-; V101 cse12 [V101,T37] ( 4, 7.92) long -> x5 "CSE - moderate"
+; V99 cse10 [V99,T44] ( 5, 4.02) int -> x6 multi-def "CSE - moderate"
+; V100 cse11 [V100,T38] ( 6, 6 ) byref -> x7 multi-def "CSE - moderate"
+; V101 cse12 [V101,T37] ( 4, 7.92) long -> x6 "CSE - moderate"
; TEMP_01 byref -> [fp+0x10]
;
; Lcl frame size = 224
@@ -151,21 +151,21 @@ G_M36482_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=104 bbWeight=1 PerfScore 21.50
G_M36482_IG02: ; bbWeight=1, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
sub w19, w19, #1
- tbnz w19, #31, G_M36482_IG66
+ tbnz w19, #31, G_M36482_IG67
;; size=8 bbWeight=1 PerfScore 1.50
G_M36482_IG03: ; bbWeight=0.50, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
- cbz x26, G_M36482_IG36
- cbz x25, G_M36482_IG36
- cbz x23, G_M36482_IG36
+ cbz x26, G_M36482_IG37
+ cbz x25, G_M36482_IG37
+ cbz x23, G_M36482_IG37
ldr w0, [x26, #0x08]
cmp w0, w19
- ble G_M36482_IG36
+ ble G_M36482_IG37
ldr w0, [x25, #0x08]
cmp w0, w19
- ble G_M36482_IG36
+ ble G_M36482_IG37
ldr w0, [x23, #0x08]
cmp w0, w19
- ble G_M36482_IG36
+ ble G_M36482_IG37
;; size=48 bbWeight=0.50 PerfScore 8.25
G_M36482_IG04: ; bbWeight=3.96, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
movn w3, #0
@@ -224,7 +224,7 @@ G_M36482_IG07: ; bbWeight=15.84, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x2
cmp x8, x10
beq G_M36482_IG09
;; size=48 bbWeight=15.84 PerfScore 190.08
-G_M36482_IG08: ; bbWeight=7.92, gcVars=0000000000000180 {V12 V62}, gcrefRegs=7E00500 {x8 x10 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
+G_M36482_IG08: ; bbWeight=7.92, gcVars=0000000000000300 {V12 V62}, gcrefRegs=7E00500 {x8 x10 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
; gcrRegs -[x4 x9] +[x10]
; byrRegs -[x7]
cbz x8, G_M36482_IG10
@@ -254,7 +254,7 @@ G_M36482_IG09: ; bbWeight=7.92, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x2
str x9, [fp, #0x20] // [V62 tmp41]
cbnz w0, G_M36482_IG12
;; size=16 bbWeight=7.92 PerfScore 55.44
-G_M36482_IG10: ; bbWeight=15.84, gcVars=0000000000000100 {V12}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
+G_M36482_IG10: ; bbWeight=15.84, gcVars=0000000000000200 {V12}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
; gcrRegs -[x9]
; GC ptr vars -{V62}
ldr w6, [fp, #0xD4] // [V13 loc3]
@@ -270,8 +270,8 @@ G_M36482_IG11: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=7E0
; GC ptr vars -{V12}
b G_M36482_IG20
;; size=4 bbWeight=3.96 PerfScore 3.96
-G_M36482_IG12: ; bbWeight=1.98, gcVars=0000000000000080 {V62}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, nogc
- ; GC ptr vars +{V07 V62}
+G_M36482_IG12: ; bbWeight=1.98, gcVars=0000000000000100 {V62}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, nogc
+ ; GC ptr vars +{V08 V62}
ldr x9, [fp, #0x20] // [V62 tmp41]
; gcrRegs +[x9]
ldp x0, x1, [x9, #0x10]
@@ -284,7 +284,7 @@ G_M36482_IG13: ; bbWeight=1.98, isz, extend
movk x3, #0xD1FFAB1E LSL #16
movk x3, #1 LSL #32
ldr x3, [x3]
- ; GC ptr vars -{V07 V62}
+ ; GC ptr vars -{V08 V62}
blr x3
; gcrRegs -[x9]
; gcr arg pop 0
@@ -383,7 +383,7 @@ G_M36482_IG17: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x2
add x0, x4, w0, UXTW
mov w3, w3
cmp x0, x3
- bhi G_M36482_IG68
+ bhi G_M36482_IG69
add x2, x2, x4
str x2, [fp, #0x28] // [V39 tmp18]
; GC ptr vars +{V39}
@@ -476,7 +476,7 @@ G_M36482_IG22: ; bbWeight=3.96, isz, extend
ldr w1, [fp, #0xEC] // [V10 loc0]
cmn w1, #1
ccmp w20, #0, nzc, eq
- ble G_M36482_IG29
+ ble G_M36482_IG27
;; size=100 bbWeight=3.96 PerfScore 136.62
G_M36482_IG23: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
ldr x2, [fp, #0x70] // [V92 cse3]
@@ -515,13 +515,13 @@ G_M36482_IG23: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x2
mov x4, x0
; gcrRegs +[x4]
mov w1, wzr
- cbz x21, G_M36482_IG27
+ cbz x21, G_M36482_IG28
;; size=104 bbWeight=1.98 PerfScore 68.31
G_M36482_IG24: ; bbWeight=0.99, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
; gcrRegs -[x0]
ldr w3, [x21, #0x08]
cmp w3, w20
- blt G_M36482_IG27
+ blt G_M36482_IG28
;; size=12 bbWeight=0.99 PerfScore 4.46
G_M36482_IG25: ; bbWeight=15.68, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
str w1, [fp, #0xBC] // [V20 loc10]
@@ -544,7 +544,7 @@ G_M36482_IG25: ; bbWeight=15.68, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x2
; gcrRegs -[x0-x2 x4]
; byrRegs -[x3]
; gcr arg pop 0
- cbnz w0, G_M36482_IG28
+ cbnz w0, G_M36482_IG29
ldr w1, [fp, #0xBC] // [V20 loc10]
add w1, w1, #1
cmp w1, w20
@@ -555,14 +555,19 @@ G_M36482_IG25: ; bbWeight=15.68, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x2
G_M36482_IG26: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref
; gcrRegs -[x4]
; GC ptr vars -{V17 V18 V19}
- b G_M36482_IG29
- ;; size=4 bbWeight=3.96 PerfScore 3.96
-G_M36482_IG27: ; bbWeight=0.16, gcVars=0000000000060000 {V17 V18}, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
+ ldr w4, [fp, #0xEC] // [V10 loc0]
+ b G_M36482_IG30
+ ;; size=8 bbWeight=3.96 PerfScore 11.88
+G_M36482_IG27: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref
+ ldr w4, [fp, #0xEC] // [V10 loc0]
+ b G_M36482_IG30
+ ;; size=8 bbWeight=1.98 PerfScore 5.94
+G_M36482_IG28: ; bbWeight=0.16, gcVars=0000000000060000 {V17 V18}, gcrefRegs=7E00010 {x4 x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref, isz
; gcrRegs +[x4]
; GC ptr vars +{V17 V18}
ldr w3, [x21, #0x08]
cmp w1, w3
- bhs G_M36482_IG67
+ bhs G_M36482_IG68
str w1, [fp, #0xBC] // [V20 loc10]
ubfiz x3, x1, #6, #32
add x3, x3, #16
@@ -583,64 +588,63 @@ G_M36482_IG27: ; bbWeight=0.16, gcVars=0000000000060000 {V17 V18}, gcrefR
; gcrRegs -[x0-x2 x4]
; byrRegs -[x3]
; gcr arg pop 0
- cbnz w0, G_M36482_IG28
+ cbnz w0, G_M36482_IG29
ldr w1, [fp, #0xBC] // [V20 loc10]
add w1, w1, #1
cmp w1, w20
ldr x4, [fp, #0x30] // [V19 loc9]
; gcrRegs +[x4]
- blt G_M36482_IG27
- b G_M36482_IG29
- ;; size=92 bbWeight=0.16 PerfScore 4.12
-G_M36482_IG28: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref
+ blt G_M36482_IG28
+ ldr w4, [fp, #0xEC] // [V10 loc0]
; gcrRegs -[x4]
+ b G_M36482_IG30
+ ;; size=96 bbWeight=0.16 PerfScore 4.44
+G_M36482_IG29: ; bbWeight=7.84, gcVars=0000000000000000 {}, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, gcvars, byref
; GC ptr vars -{V17 V18 V19}
ldr w1, [fp, #0xBC] // [V20 loc10]
sxtw w4, w1
- str w4, [fp, #0xEC] // [V10 loc0]
- ;; size=12 bbWeight=1.98 PerfScore 6.93
-G_M36482_IG29: ; bbWeight=3.96, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
- ldr w1, [fp, #0xEC] // [V10 loc0]
- cmn w1, #1
- beq G_M36482_IG34
- ;; size=12 bbWeight=3.96 PerfScore 13.86
-G_M36482_IG30: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
- ldr x4, [fp, #0xD1FFAB1E] // [V08 arg8]
- ; gcrRegs +[x4]
- ldr w5, [x4, #0x08]
- cmp w1, w5
- bhs G_M36482_IG67
- str x4, [fp, #0xD1FFAB1E] // [V08 arg8]
- add x6, x4, #16
- ; byrRegs +[x6]
- mov w5, w1
- ldr x15, [x6, x5, LSL #3]
+ ;; size=8 bbWeight=7.84 PerfScore 19.60
+G_M36482_IG30: ; bbWeight=3.96, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
+ cmn w4, #1
+ beq G_M36482_IG35
+ ;; size=8 bbWeight=3.96 PerfScore 5.94
+G_M36482_IG31: ; bbWeight=1.98, gcrefRegs=7E00000 {x21 x22 x23 x24 x25 x26}, byrefRegs=8000000 {x27}, byref, isz
+ ldr x5, [fp, #0xD1FFAB1E] // [V08 arg8]
+ ; gcrRegs +[x5]
+ ldr w6, [x5, #0x08]
+ cmp w4, w6
+ bhs G_M36482_IG68
+ str x5, [fp, #0xD1FFAB1E] // [V08 arg8]
+ add x7, x5, #16
+ ; byrRegs +[x7]
...
+4 (+0.45%) : 27315.dasm - System.Collections.Concurrent.ConcurrentDictionary2[int,int]:GrowTable(System.Collections.Concurrent.ConcurrentDictionary
2+Tables[int,int],ubyte,ubyte):this (Tier1-OSR)
@@ -9,7 +9,7 @@
; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T21] ( 6, 4 ) ref -> [fp+0x180] this class-hnd EH-live single-def tier0-frame <System.Collections.Concurrent.ConcurrentDictionary`2[int,int]>
+; V00 this [V00,T22] ( 6, 4 ) ref -> [fp+0x180] this class-hnd EH-live single-def tier0-frame <System.Collections.Concurrent.ConcurrentDictionary`2[int,int]>
;* V01 arg1 [V01 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[int,int]>
;* V02 arg2 [V02 ] ( 0, 0 ) ubyte -> zero-ref single-def
;* V03 arg3 [V03 ] ( 0, 0 ) ubyte -> zero-ref single-def
@@ -17,12 +17,12 @@
;* V05 loc1 [V05 ] ( 0, 0 ) int -> zero-ref
; V06 loc2 [V06,T16] ( 4, 24 ) ref -> x21 class-hnd <System.Collections.Generic.IEqualityComparer`1[int]>
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V08 loc4 [V08,T27] ( 1, 0.50) ref -> x23 class-hnd <System.Object[]>
-; V09 loc5 [V09,T28] ( 1, 0.50) ref -> x24 class-hnd exact <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[int,int][]>
+; V08 loc4 [V08,T24] ( 1, 1.98) ref -> x23 class-hnd <System.Object[]>
+; V09 loc5 [V09,T25] ( 1, 1.98) ref -> x24 class-hnd exact <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[int,int][]>
; V10 loc6 [V10,T14] ( 4, 32 ) ref -> x20 class-hnd exact <int[]>
; V11 loc7 [V11,T09] ( 7, 48.50) ref -> x19 class-hnd exact <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[int,int]>
;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref
-; V13 loc9 [V13,T22] ( 3, 5 ) ref -> x22 class-hnd exact <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[int,int][]>
+; V13 loc9 [V13,T23] ( 3, 5 ) ref -> x22 class-hnd exact <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[int,int][]>
; V14 loc10 [V14,T17] ( 11, 17.29) int -> [fp+0x11C] tier0-frame
;* V15 loc11 [V15 ] ( 0, 0 ) struct ( 8) zero-ref <System.Collections.Concurrent.ConcurrentDictionary`2+VolatileNode[int,int]>
; V16 loc12 [V16,T01] ( 18,104 ) ref -> x28 class-hnd <System.Collections.Concurrent.ConcurrentDictionary`2+Node[int,int]>
@@ -54,19 +54,19 @@
; V42 tmp21 [V42,T06] ( 4, 64 ) int -> x2 "Inlining Arg"
; V43 tmp22 [V43,T07] ( 4, 64 ) int -> x3 "Inlining Arg"
; V44 tmp23 [V44,T05] ( 4, 64 ) ref -> x15 class-hnd "Inlining Arg" <System.Collections.Concurrent.ConcurrentDictionary`2+Node[int,int]>
-; V45 tmp24 [V45,T25] ( 2, 1 ) int -> x14 "Inline return value spill temp"
-; V46 tmp25 [V46,T23] ( 3, 3 ) int -> x14 "Inlining Arg"
-; V47 tmp26 [V47,T19] ( 4, 8 ) ref -> x28 "field V15._node (fldOffset=0x0)" P-INDEP
+; V45 tmp24 [V45,T26] ( 3, 1.50) int -> x14 "Inline return value spill temp"
+; V46 tmp25 [V46,T19] ( 3, 8.92) int -> x14 "Inlining Arg"
+; V47 tmp26 [V47,T20] ( 4, 8 ) ref -> x28 "field V15._node (fldOffset=0x0)" P-INDEP
;* V48 tmp27 [V48 ] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
;* V49 tmp28 [V49 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
;* V50 tmp29 [V50 ] ( 0, 0 ) ref -> zero-ref "argument with side effect"
;* V51 tmp30 [V51 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; V52 tmp31 [V52,T03] ( 6, 96 ) int -> x6 "fgMakeTemp is creating a new local variable"
-; V53 PSPSym [V53,T26] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V53 PSPSym [V53,T28] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
; V54 cse0 [V54,T18] ( 4, 16.26) long -> x27 hoist multi-def "CSE - moderate"
; V55 cse1 [V55,T13] ( 3, 47.52) int -> x5 "CSE - aggressive"
-; V56 cse2 [V56,T20] ( 5, 6.04) int -> x25 "CSE - moderate"
-; V57 cse3 [V57,T24] ( 2, 1 ) byref -> x14 "CSE - moderate"
+; V56 cse2 [V56,T21] ( 5, 6.04) int -> x25 "CSE - moderate"
+; V57 cse3 [V57,T27] ( 2, 1 ) byref -> x14 "CSE - moderate"
;
; Lcl frame size = 16
@@ -89,7 +89,7 @@ G_M37192_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
ldr x22, [fp, #0xD1FFAB1E]
; gcrRegs +[x22]
;; size=52 bbWeight=1 PerfScore 18.00
-G_M37192_IG02: ; bbWeight=1, gcVars=0000000000200000 {V00}, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37192_IG02: ; bbWeight=1, gcVars=0000000000400000 {V00}, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars +{V00}
ldr w25, [x22, #0x08]
ldr w26, [fp, #0xD1FFAB1E] // [V14 loc10]
@@ -97,7 +97,7 @@ G_M37192_IG02: ; bbWeight=1, gcVars=0000000000200000 {V00}, gcrefRegs=1F8
ble G_M37192_IG10
;; size=16 bbWeight=1 PerfScore 6.50
G_M37192_IG03: ; bbWeight=0.25, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
- tbnz w26, #31, G_M37192_IG14
+ tbnz w26, #31, G_M37192_IG15
movz x27, #0xD1FFAB1E
movk x27, #0xD1FFAB1E LSL #16
movk x27, #1 LSL #32
@@ -154,12 +154,12 @@ G_M37192_IG08: ; bbWeight=15.84, gcrefRegs=11F80000 {x19 x20 x21 x22 x23
ldr w6, [x6, #0x08]
; gcrRegs -[x6]
cmp w6, #0
- beq G_M37192_IG12
+ beq G_M37192_IG13
udiv w7, w4, w6
msub w7, w7, w6, w4
str w7, [fp, #0xE8] // [V20 loc16]
cmp w4, w5
- bhs G_M37192_IG13
+ bhs G_M37192_IG14
ubfiz x4, x4, #3, #32
add x4, x4, #16
add x4, x3, x4
@@ -196,7 +196,7 @@ G_M37192_IG08: ; bbWeight=15.84, gcrefRegs=11F80000 {x19 x20 x21 x22 x23
ldr w1, [x20, #0x08]
ldr w28, [fp, #0xE8] // [V20 loc16]
cmp w28, w1
- bhs G_M37192_IG13
+ bhs G_M37192_IG14
add x1, x20, #16
; byrRegs +[x1]
ubfiz x0, x28, #2, #32
@@ -205,13 +205,13 @@ G_M37192_IG08: ; bbWeight=15.84, gcrefRegs=11F80000 {x19 x20 x21 x22 x23
ldr w1, [x5]
; byrRegs -[x1]
adds w1, w1, #1
- bvs G_M37192_IG11
+ bvs G_M37192_IG12
str w1, [x5]
ldr x28, [fp, #0xF8] // [V18 loc14]
; gcrRegs +[x28]
cbnz x28, G_M37192_IG05
;; size=212 bbWeight=15.84 PerfScore 1298.88
-G_M37192_IG09: ; bbWeight=3.96, gcVars=0000000000200000 {V00}, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37192_IG09: ; bbWeight=3.96, gcVars=0000000000400000 {V00}, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x28]
; byrRegs -[x5]
; GC ptr vars -{V18}
@@ -219,16 +219,18 @@ G_M37192_IG09: ; bbWeight=3.96, gcVars=0000000000200000 {V00}, gcrefRegs=
cmp w25, w26
bgt G_M37192_IG04
;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M37192_IG10: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M37192_IG10: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20-x22]
ldr w14, [x24, #0x08]
ldr w15, [x23, #0x08]
cmp w15, #0
- beq G_M37192_IG12
+ beq G_M37192_IG13
udiv w14, w14, w15
- mov w15, #1
cmp w14, #1
- csel w14, w15, w14, le
+ ble G_M37192_IG22
+ ;; size=28 bbWeight=1.98 PerfScore 39.60
+G_M37192_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x23-x24]
ldr x0, [fp, #0xD1FFAB1E] // [V00 this]
; gcrRegs +[x0]
str w14, [x0, #0x10]
@@ -237,42 +239,42 @@ G_M37192_IG10: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x19 x23-x24]
+ ; gcrRegs -[x15 x19]
; byrRegs -[x14]
- b G_M37192_IG21
- ;; size=56 bbWeight=0.50 PerfScore 13.00
-G_M37192_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M37192_IG23
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
+G_M37192_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
bl CORINFO_HELP_OVERFLOW
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M37192_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37192_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROWDIVZERO
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M37192_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37192_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M37192_IG14: ; bbWeight=0.04, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M37192_IG15: ; bbWeight=0.04, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x24]
cmp w26, w25
- bhs G_M37192_IG13
+ bhs G_M37192_IG14
ubfiz x1, x26, #3, #32
add x1, x1, #16
ldr x28, [x22, x1]
; gcrRegs +[x28]
- cbz x28, G_M37192_IG20
+ cbz x28, G_M37192_IG21
;; size=24 bbWeight=0.04 PerfScore 0.28
-G_M37192_IG15: ; bbWeight=0.01, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref
+G_M37192_IG16: ; bbWeight=0.01, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref
movz x27, #0xD1FFAB1E
movk x27, #0xD1FFAB1E LSL #16
movk x27, #1 LSL #32
;; size=12 bbWeight=0.01 PerfScore 0.02
-G_M37192_IG16: ; bbWeight=0.16, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M37192_IG18
+G_M37192_IG17: ; bbWeight=0.16, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
+ cbz x21, G_M37192_IG19
;; size=4 bbWeight=0.16 PerfScore 0.16
-G_M37192_IG17: ; bbWeight=0.08, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref
+G_M37192_IG18: ; bbWeight=0.08, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref
ldr w1, [x28, #0x10]
mov x0, x21
; gcrRegs +[x0]
@@ -284,12 +286,12 @@ G_M37192_IG17: ; bbWeight=0.08, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x
; gcrRegs -[x0]
; gcr arg pop 0
sxtw w1, w0
- b G_M37192_IG19
+ b G_M37192_IG20
;; size=36 bbWeight=0.08 PerfScore 0.84
-G_M37192_IG18: ; bbWeight=0.08, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref
+G_M37192_IG19: ; bbWeight=0.08, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref
ldr w1, [x28, #0x18]
;; size=4 bbWeight=0.08 PerfScore 0.24
-G_M37192_IG19: ; bbWeight=0.16, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
+G_M37192_IG20: ; bbWeight=0.16, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x24 x28}, byrefRegs=0000 {}, byref, isz
add x2, x28, #8
; byrRegs +[x2]
ldar x2, [x2]
@@ -312,14 +314,14 @@ G_M37192_IG19: ; bbWeight=0.16, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x
; gcrRegs +[x5]
ldr w6, [x5, #0x08]
cmp w6, #0
- beq G_M37192_IG12
+ beq G_M37192_IG13
udiv w5, w4, w6
; gcrRegs -[x5]
msub w5, w5, w6, w4
str w5, [fp, #0xE8] // [V20 loc16]
ldr w6, [x3, #0x08]
cmp w4, w6
- bhs G_M37192_IG13
+ bhs G_M37192_IG14
ubfiz x4, x4, #3, #32
add x4, x4, #16
add x3, x3, x4
@@ -357,7 +359,7 @@ G_M37192_IG19: ; bbWeight=0.16, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x
ldr w14, [x20, #0x08]
ldr w28, [fp, #0xE8] // [V20 loc16]
cmp w28, w14
- bhs G_M37192_IG13
+ bhs G_M37192_IG14
add x14, x20, #16
; byrRegs +[x14]
ubfiz x15, x28, #2, #32
@@ -366,23 +368,28 @@ G_M37192_IG19: ; bbWeight=0.16, gcrefRegs=11F80000 {x19 x20 x21 x22 x23 x
ldr w14, [x5]
; byrRegs -[x14]
adds w14, w14, #1
- bvs G_M37192_IG11
+ bvs G_M37192_IG12
str w14, [x5]
ldr x28, [fp, #0xF8] // [V18 loc14]
; gcrRegs +[x28]
- cbnz x28, G_M37192_IG16
+ cbnz x28, G_M37192_IG17
;; size=212 bbWeight=0.16 PerfScore 13.52
-G_M37192_IG20: ; bbWeight=0.04, gcVars=0000000000200000 {V00}, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M37192_IG21: ; bbWeight=0.04, gcVars=0000000000400000 {V00}, gcrefRegs=1F80000 {x19 x20 x21 x22 x23 x24}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x28]
; byrRegs -[x5]
; GC ptr vars -{V18}
add w26, w26, #1
cmp w25, w26
- bgt G_M37192_IG14
...
coreclr_tests.run.osx.arm64.checked.mch
-16 (-7.84%) : 4333.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,113 +11,107 @@
;
; V00 arg0 [V00,T01] ( 8, 15.66) long -> x0 single-def
; V01 arg1 [V01,T03] ( 7, 5.31) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.60) long -> x19
-; V03 loc1 [V03,T02] ( 10, 13.58) long -> x2
-; V04 loc2 [V04,T00] ( 10, 21.02) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.60) long -> x2
+; V03 loc1 [V03,T02] ( 10, 13.58) long -> x3
+; V04 loc2 [V04,T00] ( 10, 21.02) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG10
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG08
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG12
+ cbz x1, G_M24157_IG11
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG09
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG08
;; size=28 bbWeight=1 PerfScore 12.50
G_M24157_IG03: ; bbWeight=3.43, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG10
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG11
;; size=12 bbWeight=3.43 PerfScore 15.44
G_M24157_IG04: ; bbWeight=3.41, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x08]
- cmp x4, x0
- beq G_M24157_IG10
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG11
;; size=12 bbWeight=3.41 PerfScore 15.37
G_M24157_IG05: ; bbWeight=3.20, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG10
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG11
;; size=12 bbWeight=3.20 PerfScore 14.38
G_M24157_IG06: ; bbWeight=3.03, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG10
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG11
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG03
;; size=28 bbWeight=3.03 PerfScore 21.23
G_M24157_IG07: ; bbWeight=0.60, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG12
+ cbz x3, G_M24157_IG09
;; size=4 bbWeight=0.60 PerfScore 0.60
-G_M24157_IG08: ; bbWeight=0.60, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG08: ; bbWeight=0.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG11
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG08
+ ;; size=28 bbWeight=0.29 PerfScore 2.05
+G_M24157_IG09: ; bbWeight=0.60, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- bne G_M24157_IG14
+ bne G_M24157_IG13
;; size=16 bbWeight=0.60 PerfScore 3.01
-G_M24157_IG09: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG10: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0.31 PerfScore 0.15
-G_M24157_IG10: ; bbWeight=0.71, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG11: ; bbWeight=0.71, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
;; size=4 bbWeight=0.71 PerfScore 0.35
-G_M24157_IG11: ; bbWeight=0.71, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG12: ; bbWeight=0.71, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.71 PerfScore 2.83
-G_M24157_IG12: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.71 PerfScore 1.41
+G_M24157_IG13: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG10
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG12
- ;; size=28 bbWeight=0.29 PerfScore 2.05
-G_M24157_IG13: ; bbWeight=0.15, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG08
- ;; size=4 bbWeight=0.15 PerfScore 0.15
-G_M24157_IG14: ; bbWeight=0.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.29 PerfScore 1.32
-G_M24157_IG15: ; bbWeight=0.29, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG14: ; bbWeight=0.29, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.29 PerfScore 1.17
+ ;; size=8 bbWeight=0.29 PerfScore 0.59
-; Total bytes of code 204, prolog size 12, PerfScore 93.04, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 89.89, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -128,10 +122,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-16 (-7.84%) : 213801.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,113 +11,107 @@
;
; V00 arg0 [V00,T01] ( 8, 16.70) long -> x0 single-def
; V01 arg1 [V01,T03] ( 7, 5.37) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.68) long -> x19
-; V03 loc1 [V03,T02] ( 10, 14.91) long -> x2
-; V04 loc2 [V04,T00] ( 10, 22.87) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.68) long -> x2
+; V03 loc1 [V03,T02] ( 10, 14.91) long -> x3
+; V04 loc2 [V04,T00] ( 10, 22.87) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG09
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG07
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG11
+ cbz x1, G_M24157_IG11
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG09
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG07
;; size=28 bbWeight=1 PerfScore 12.50
G_M24157_IG03: ; bbWeight=3.63, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG09
- ldr x4, [x3, #0x08]
- cmp x4, x0
- beq G_M24157_IG09
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG11
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG11
;; size=24 bbWeight=3.63 PerfScore 32.65
G_M24157_IG04: ; bbWeight=3.37, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG09
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG11
;; size=12 bbWeight=3.37 PerfScore 15.15
G_M24157_IG05: ; bbWeight=3.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG09
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG11
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG03
;; size=28 bbWeight=3.33 PerfScore 23.31
G_M24157_IG06: ; bbWeight=0.68, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG11
+ cbz x3, G_M24157_IG09
;; size=4 bbWeight=0.68 PerfScore 0.68
-G_M24157_IG07: ; bbWeight=0.68, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG07: ; bbWeight=0.43, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG11
+ ;; size=12 bbWeight=0.43 PerfScore 1.95
+G_M24157_IG08: ; bbWeight=0.41, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG07
+ ;; size=16 bbWeight=0.41 PerfScore 1.03
+G_M24157_IG09: ; bbWeight=0.68, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- bne G_M24157_IG14
+ bne G_M24157_IG13
;; size=16 bbWeight=0.68 PerfScore 3.42
-G_M24157_IG08: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG10: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0.37 PerfScore 0.18
-G_M24157_IG09: ; bbWeight=0.68, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG11: ; bbWeight=0.68, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
;; size=4 bbWeight=0.68 PerfScore 0.34
-G_M24157_IG10: ; bbWeight=0.68, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG12: ; bbWeight=0.68, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.68 PerfScore 2.74
-G_M24157_IG11: ; bbWeight=0.43, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.68 PerfScore 1.37
+G_M24157_IG13: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG09
- ;; size=12 bbWeight=0.43 PerfScore 1.95
-G_M24157_IG12: ; bbWeight=0.41, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG11
- ;; size=16 bbWeight=0.41 PerfScore 1.03
-G_M24157_IG13: ; bbWeight=0.21, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG07
- ;; size=4 bbWeight=0.21 PerfScore 0.21
-G_M24157_IG14: ; bbWeight=0.32, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.32 PerfScore 1.42
-G_M24157_IG15: ; bbWeight=0.32, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG14: ; bbWeight=0.32, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.32 PerfScore 1.26
+ ;; size=8 bbWeight=0.32 PerfScore 0.63
-; Total bytes of code 204, prolog size 12, PerfScore 99.35, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 96.14, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -128,10 +122,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-16 (-7.84%) : 214749.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,109 +11,103 @@
;
; V00 arg0 [V00,T01] ( 8, 18.14) long -> x0 single-def
; V01 arg1 [V01,T03] ( 7, 5.37) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.73) long -> x19
-; V03 loc1 [V03,T02] ( 10, 15.97) long -> x2
-; V04 loc2 [V04,T00] ( 10, 24.95) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.73) long -> x2
+; V03 loc1 [V03,T02] ( 10, 15.97) long -> x3
+; V04 loc2 [V04,T00] ( 10, 24.95) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG08
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG06
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG10
+ cbz x1, G_M24157_IG09
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG07
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG06
;; size=28 bbWeight=1 PerfScore 12.50
G_M24157_IG03: ; bbWeight=3.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG08
- ldr x4, [x3, #0x08]
- cmp x4, x0
- beq G_M24157_IG08
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG09
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG09
;; size=24 bbWeight=3.99 PerfScore 35.91
G_M24157_IG04: ; bbWeight=3.72, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG08
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG08
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG09
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG09
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG03
;; size=40 bbWeight=3.72 PerfScore 42.75
G_M24157_IG05: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG10
+ cbz x3, G_M24157_IG07
;; size=4 bbWeight=0.73 PerfScore 0.73
-G_M24157_IG06: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG06: ; bbWeight=0.37, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG09
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG06
+ ;; size=28 bbWeight=0.37 PerfScore 2.56
+G_M24157_IG07: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- bne G_M24157_IG12
+ bne G_M24157_IG11
;; size=16 bbWeight=0.73 PerfScore 3.64
-G_M24157_IG07: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG08: ; bbWeight=0.37, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0.37 PerfScore 0.18
-G_M24157_IG08: ; bbWeight=0.64, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG09: ; bbWeight=0.64, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
;; size=4 bbWeight=0.64 PerfScore 0.32
-G_M24157_IG09: ; bbWeight=0.64, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG10: ; bbWeight=0.64, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.64 PerfScore 2.55
-G_M24157_IG10: ; bbWeight=0.37, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.64 PerfScore 1.27
+G_M24157_IG11: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG08
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG10
- ;; size=28 bbWeight=0.37 PerfScore 2.56
-G_M24157_IG11: ; bbWeight=0.18, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG06
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M24157_IG12: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.36 PerfScore 1.63
-G_M24157_IG13: ; bbWeight=0.36, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG12: ; bbWeight=0.36, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.36 PerfScore 1.45
+ ;; size=8 bbWeight=0.36 PerfScore 0.73
-; Total bytes of code 204, prolog size 12, PerfScore 106.90, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 103.72, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -124,10 +118,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
+24 (+4.69%) : 491159.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 6, 8 ) byref -> x19 this single-def
+; V00 this [V00,T03] ( 6, 8.98) byref -> x19 this single-def
; V01 loc0 [V01,T04] ( 6, 8 ) int -> x21 single-def
-; V02 loc1 [V02,T08] ( 6, 3.58) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
+; V02 loc1 [V02,T09] ( 6, 3.08) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Reflection.Metadata.SignatureHeader>
; V04 loc3 [V04,T00] ( 10, 17.04) int -> x22
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -22,7 +22,7 @@
; V11 tmp6 [V11,T07] ( 4, 4 ) long -> x0 single-def "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V13 tmp8 [V13,T13] ( 2, 1 ) ubyte -> x1 "Inline return value spill temp"
-; V14 tmp9 [V14,T09] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
+; V14 tmp9 [V14,T08] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
; V15 tmp10 [V15,T02] ( 6, 12 ) byref -> x20 single-def "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp"
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
@@ -52,7 +52,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
; byrRegs +[x1]
ldp x2, x0, [x1, #0x10]
cmp x0, x2
- beq G_M22286_IG12
+ beq G_M22286_IG15
add x2, x0, #1
str x2, [x1, #0x18]
ldrb w1, [x0]
@@ -60,12 +60,12 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
and w1, w1, #15
cmp w1, #5
ccmp w1, #9, z, gt
- beq G_M22286_IG13
+ beq G_M22286_IG16
;; size=48 bbWeight=1 PerfScore 13.50
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
uxtb w1, w1
cmp w1, #10
- bne G_M22286_IG13
+ bne G_M22286_IG16
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
ldr x1, [x20, #0x18]
@@ -87,9 +87,9 @@ G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
str x1, [x20, #0x18]
movn w1, #0xD1FFAB1E LSL #16
cmp w21, w1
- beq G_M22286_IG14
+ beq G_M22286_IG17
cmp w21, #0
- ble G_M22286_IG15
+ ble G_M22286_IG18
sxtw x1, w21
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -130,10 +130,10 @@ G_M22286_IG06: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=880000
cmp w22, w21
blt G_M22286_IG06
;; size=48 bbWeight=3.96 PerfScore 41.58
-G_M22286_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG07: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
; byrRegs -[x23]
b G_M22286_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
mov x0, x19
; byrRegs +[x0]
@@ -146,7 +146,7 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
; byrRegs -[x0]
ldr w14, [x20, #0x08]
cmp w22, w14
- bhs G_M22286_IG11
+ bhs G_M22286_IG14
add x23, x20, #16
; byrRegs +[x23]
add x14, x23, x22, LSL #3
@@ -160,25 +160,39 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
cmp w22, w21
blt G_M22286_IG08
;; size=64 bbWeight=0.04 PerfScore 0.62
-G_M22286_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG09: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cmp x0, #0
- csel x0, xzr, x20, ne
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M22286_IG10: ; bbWeight=1, epilog, nogc, extend
+ cbnz x0, G_M22286_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 7.92
+G_M22286_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ; byrRegs -[x19]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG11: ; 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
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
- ; byrRegs -[x19]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG13: ; 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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:OutOfBounds()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -186,7 +200,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -205,7 +219,7 @@ G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=48 bbWeight=0 PerfScore 0.00
-G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:InvalidCompressedInteger()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -213,7 +227,7 @@ G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -234,22 +248,25 @@ G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 512, prolog size 24, PerfScore 106.45, instruction count 128, allocated bytes for code 512 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
+; Total bytes of code 536, prolog size 24, PerfScore 111.85, instruction count 134, allocated bytes for code 536 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 128 (0x00080) Actual length = 512 (0x000200)
+ Function Length : 134 (0x00086) Actual length = 536 (0x000218)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+12 (+6.25%) : 197801.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,7 +11,7 @@
;
; V00 arg0 [V00,T02] ( 8, 5.42) long -> x0 single-def
; V01 arg1 [V01,T00] ( 7, 6 ) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 4 ) long -> x2
+; V02 loc0 [V02,T04] ( 5, 4 ) long -> x2
; V03 loc1 [V03,T01] ( 10, 7.58) long -> x3
; V04 loc2 [V04,T03] ( 10, 7 ) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -24,74 +24,81 @@ G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG05
+ cbz x1, G_M24157_IG06
ldr x2, [x1]
ldrh w3, [x2, #0x0E]
cbz x3, G_M24157_IG04
ldr x4, [x2, #0x40]
cmp x3, #4
- blt G_M24157_IG07
+ blt G_M24157_IG08
;; size=28 bbWeight=1 PerfScore 12.50
G_M24157_IG03: ; bbWeight=0.71, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x5, [x4]
cmp x5, x0
- beq G_M24157_IG05
+ beq G_M24157_IG06
ldr x5, [x4, #0x08]
cmp x5, x0
- beq G_M24157_IG05
+ beq G_M24157_IG06
ldr x5, [x4, #0x10]
cmp x5, x0
- beq G_M24157_IG05
+ beq G_M24157_IG06
ldr x5, [x4, #0x18]
cmp x5, x0
- beq G_M24157_IG05
+ beq G_M24157_IG06
add x4, x4, #32
sub x3, x3, #4
cmp x3, #4
bge G_M24157_IG03
- cbnz x3, G_M24157_IG07
+ cbnz x3, G_M24157_IG08
;; size=68 bbWeight=0.71 PerfScore 15.30
-G_M24157_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG04: ; bbWeight=0.57, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- bne G_M24157_IG09
+ bne G_M24157_IG10
+ ;; size=16 bbWeight=0.57 PerfScore 2.84
+G_M24157_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1]
mov x1, xzr
- ;; size=20 bbWeight=1 PerfScore 5.50
-G_M24157_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x1]
+ ;; size=4 bbWeight=1 PerfScore 0.50
+G_M24157_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
-G_M24157_IG06: ; bbWeight=1, epilog, nogc, extend
+G_M24157_IG07: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=1 PerfScore 2.00
-G_M24157_IG07: ; bbWeight=0.58, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M24157_IG08: ; bbWeight=0.58, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
ldr x5, [x4]
cmp x5, x0
- beq G_M24157_IG05
+ beq G_M24157_IG06
add x4, x4, #8
sub x3, x3, #1
cmp x3, #0
- bgt G_M24157_IG07
+ bgt G_M24157_IG08
;; size=28 bbWeight=0.58 PerfScore 4.04
-G_M24157_IG08: ; bbWeight=0.43, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG04
- ;; size=4 bbWeight=0.43 PerfScore 0.43
-G_M24157_IG09: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG09: ; bbWeight=0.43, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
+ mov w3, #0xD1FFAB1E
+ tst w2, w3
+ beq G_M24157_IG05
+ ;; size=16 bbWeight=0.43 PerfScore 2.16
+G_M24157_IG10: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0 PerfScore 0.00
-G_M24157_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M24157_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 8, PerfScore 41.77, instruction count 48, allocated bytes for code 192 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 204, prolog size 8, PerfScore 41.34, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -102,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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)
+28 (+6.54%) : 397651.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
@@ -7,16 +7,16 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T06] ( 7, 4.08) ref -> x19 class-hnd single-def <double[][]>
-; V01 loc1 [V01,T07] ( 4, 4 ) ref -> x20 class-hnd single-def <double[][]>
-; V02 loc2 [V02,T02] ( 15, 34.16) int -> x21
+; V00 loc0 [V00,T07] ( 7, 5.06) ref -> x19 class-hnd single-def <double[][]>
+; V01 loc1 [V01,T05] ( 4, 6.94) ref -> x20 class-hnd single-def <double[][]>
+; V02 loc2 [V02,T02] ( 15, 45.80) int -> x21
; V03 loc3 [V03,T00] ( 19, 84.32) int -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T01] ( 8, 64.64) ref -> registers "arr expr"
-; V06 tmp2 [V06,T04] ( 3, 6 ) ref -> x0 single-def "arr expr"
+; V06 tmp2 [V06,T04] ( 3, 11.88) ref -> x0 single-def "arr expr"
; V07 cse0 [V07,T03] ( 6, 18.97) ref -> x2 multi-def "CSE - aggressive"
; V08 cse1 [V08,T09] ( 5, 1.85) byref -> x23 hoist multi-def "CSE - aggressive"
-; V09 cse2 [V09,T05] ( 5, 5.16) int -> x22 hoist multi-def "CSE - aggressive"
+; V09 cse2 [V09,T06] ( 5, 5.16) int -> x22 hoist multi-def "CSE - aggressive"
; V10 cse3 [V10,T08] ( 4, 2.15) long -> x1 hoist multi-def "CSE - aggressive"
; V11 cse4 [V11,T10] ( 2, 0.20) long -> x1 hoist "CSE - conservative"
;
@@ -91,11 +91,11 @@ G_M31008_IG06: ; bbWeight=15.68, gcrefRegs=180004 {x2 x19 x20}, byrefRegs
cmp w0, #40
ble G_M31008_IG06
;; size=32 bbWeight=15.68 PerfScore 133.29
-G_M31008_IG07: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+G_M31008_IG07: ; bbWeight=7.84, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
; gcrRegs -[x2]
; byrRegs -[x1]
b G_M31008_IG10
- ;; size=4 bbWeight=3.96 PerfScore 3.96
+ ;; size=4 bbWeight=7.84 PerfScore 7.84
G_M31008_IG08: ; bbWeight=0.01, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
mov w1, w21
;; size=4 bbWeight=0.01 PerfScore 0.00
@@ -104,7 +104,7 @@ G_M31008_IG09: ; bbWeight=0.16, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; gcrRegs +[x2]
ldr w3, [x2, #0x08]
cmp w0, w3
- bhs G_M31008_IG17
+ bhs G_M31008_IG20
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
@@ -115,16 +115,16 @@ G_M31008_IG09: ; bbWeight=0.16, gcrefRegs=180000 {x19 x20}, byrefRegs=800
cmp w0, #40
ble G_M31008_IG09
;; size=44 bbWeight=0.16 PerfScore 2.46
-G_M31008_IG10: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M31008_IG10: ; bbWeight=7.84, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x2]
add w21, w21, #1
cmp w21, #40
ble G_M31008_IG04
- ;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M31008_IG11: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=7.84 PerfScore 15.68
+G_M31008_IG11: ; bbWeight=1.98, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x23]
b G_M31008_IG15
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M31008_IG12: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w0, #1
ldr w22, [x19, #0x08]
@@ -134,12 +134,12 @@ G_M31008_IG12: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
;; size=16 bbWeight=0.04 PerfScore 0.18
G_M31008_IG13: ; bbWeight=0.16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w21, w22
- bhs G_M31008_IG17
+ bhs G_M31008_IG20
ldr x2, [x23, x1, LSL #3]
; gcrRegs +[x2]
ldr w3, [x2, #0x08]
cmp w0, w3
- bhs G_M31008_IG17
+ bhs G_M31008_IG20
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
@@ -156,7 +156,7 @@ G_M31008_IG14: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
cmp w21, #40
ble G_M31008_IG12
;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M31008_IG15: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M31008_IG15: ; bbWeight=1.98, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
mov x1, x20
@@ -171,27 +171,39 @@ G_M31008_IG15: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcr arg pop 0
ldr w0, [x20, #0x08]
cmp w0, #1
- bls G_M31008_IG17
+ bls G_M31008_IG20
ldr x0, [x20, #0x18]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #1
- bls G_M31008_IG17
+ bls G_M31008_IG20
ldr d16, [x0, #0x18]
ldr d17, [@RWD00]
fcmp d16, d17
- cset x0, eq
- ; gcrRegs -[x0]
- ;; size=76 bbWeight=1 PerfScore 25.50
-G_M31008_IG16: ; bbWeight=1, epilog, nogc, extend
+ bne G_M31008_IG18
+ ;; size=76 bbWeight=1.98 PerfScore 51.48
+G_M31008_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x20]
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M31008_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
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M31008_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x20]
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M31008_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M31008_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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M31008_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_unix #0
@@ -199,22 +211,25 @@ G_M31008_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
RWD00 dq 40D7430000000000h ; 23820
-; Total bytes of code 428, prolog size 20, PerfScore 222.44, instruction count 107, allocated bytes for code 428 (MethodHash=e2b186df) for method Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
+; Total bytes of code 456, prolog size 20, PerfScore 261.55, instruction count 114, allocated bytes for code 456 (MethodHash=e2b186df) for method Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
+ Function Length : 114 (0x00072) Actual length = 456 (0x0001c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.crossgen2.osx.arm64.checked.mch
-20 (-2.23%) : 9579.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
@@ -9,121 +9,117 @@
; 0 inlinees with PGO data; 8 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 11, 6.50) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T08] ( 11, 9.46) ref -> [fp+0x20] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T12] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T11] ( 8, 7.02) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
; V04 loc2 [V04,T20] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
-; V05 loc3 [V05,T00] ( 11, 17.08) int -> x22
-; V06 loc4 [V06,T04] ( 6, 12 ) ref -> x2 class-hnd <System.Type>
+; V05 loc3 [V05,T00] ( 11, 17.08) int -> x23
+; V06 loc4 [V06,T04] ( 6, 12 ) ref -> x1 class-hnd <System.Type>
; V07 loc5 [V07,T05] ( 6, 12 ) ref -> x0 class-hnd <System.RuntimeType>
-; V08 loc6 [V08,T19] ( 6, 1.83) ref -> x0 class-hnd exact <System.Type[]>
+; V08 loc6 [V08,T14] ( 6, 3.31) ref -> x0 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x1
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V12 tmp1 [V12,T02] ( 4, 16 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Type>
;* V13 tmp2 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeMethodHandleInternal>
-; V14 tmp3 [V14,T14] ( 2, 2 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
+; V14 tmp3 [V14,T16] ( 2, 2 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
;* V15 tmp4 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.RuntimeMethodHandleInternal>
; V16 tmp5 [V16,T25] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T24] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp6 [V17,T24] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V18 tmp7 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.RuntimeMethodHandleInternal>
-; V19 tmp8 [V19,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V19 tmp8 [V19,T18] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeMethodHandleInternal>
;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V23 tmp12 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V24 tmp13 [V24,T21] ( 2, 1 ) long -> x11 "field V13.m_handle (fldOffset=0x0)" P-INDEP
+; V24 tmp13 [V24,T21] ( 2, 1 ) long -> x0 "field V13.m_handle (fldOffset=0x0)" P-INDEP
; V25 tmp14 [V25,T22] ( 2, 1 ) long -> x1 "field V15.m_handle (fldOffset=0x0)" P-INDEP
;* V26 tmp15 [V26 ] ( 0, 0 ) long -> zero-ref "field V18.m_handle (fldOffset=0x0)" P-INDEP
-; V27 tmp16 [V27,T18] ( 2, 2 ) long -> x11 "field V20.m_handle (fldOffset=0x0)" P-INDEP
-; V28 tmp17 [V28,T15] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V29 tmp18 [V29,T16] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V27 tmp16 [V27,T19] ( 2, 2 ) long -> x11 "field V20.m_handle (fldOffset=0x0)" P-INDEP
+; V28 tmp17 [V28,T10] ( 2, 7.92) ref -> x1 single-def "argument with side effect"
+; V29 tmp18 [V29,T17] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V30 tmp19 [V30,T26] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V31 tmp20 [V31,T27] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V32 PSPSym [V32,T23] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V33 cse0 [V33,T13] ( 3, 2.50) long -> x21 "CSE - aggressive"
-; V34 cse1 [V34,T03] ( 9, 12 ) int -> x20 "CSE - aggressive"
-; V35 cse2 [V35,T08] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
-; V36 cse3 [V36,T12] ( 4, 4.29) byref -> x11 hoist multi-def "CSE - moderate"
-; V37 cse4 [V37,T06] ( 3, 11.88) long -> x19 "CSE - aggressive"
+; V32 PSPSym [V32,T23] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V33 cse0 [V33,T15] ( 3, 2.50) long -> x22 "CSE - aggressive"
+; V34 cse1 [V34,T03] ( 9, 12 ) int -> x21 "CSE - aggressive"
+; V35 cse2 [V35,T09] ( 6, 8.54) byref -> x24 hoist multi-def "CSE - aggressive"
+; V36 cse3 [V36,T13] ( 4, 4.29) byref -> x11 hoist multi-def "CSE - moderate"
+; V37 cse4 [V37,T06] ( 3, 11.88) long -> x20 "CSE - aggressive"
; V38 cse5 [V38,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- str x23, [sp, #0x48]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
mov fp, sp
- add x2, sp, #80
- stp x0, x2, [fp, #0x18] // [V00 this], [V32 PSPSym]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x20] // [V00 this], [V32 PSPSym]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- cbz x19, G_M59170_IG18
- ldr w20, [x19, #0x08]
- mov w21, w20
- mov x0, x21
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=36 bbWeight=1 PerfScore 7.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x20, G_M59170_IG18
+ ldr w21, [x20, #0x08]
+ mov w22, w21
+ mov x0, x22
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcrRegs +[x0]
; gcr arg pop 0
- str x0, [fp, #0x10] // [V02 loc0]
+ str x0, [fp, #0x18] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x1]
- ldr x11, [x1, #0x50]
+ ldr x11, [x19, #0x50]
mov x0, x11
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
cbz w0, G_M59170_IG19
- ldr x1, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x1]
- mov w22, wzr
- cmp w20, #0
+ mov w23, wzr
+ cmp w21, #0
ble G_M59170_IG07
- ;; size=84 bbWeight=1 PerfScore 26.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x10] // [V02 loc0]
+ ;; size=76 bbWeight=1 PerfScore 22.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
- cmp w11, w20
+ cmp w11, w21
blt G_M59170_IG06
- add x23, x19, #16
- ; byrRegs +[x23]
+ add x24, x20, #16
+ ; byrRegs +[x24]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0002 {x1}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x0 x19]
- mov w19, w22
- ldr x2, [x23, x19, LSL #3]
- ; gcrRegs +[x2]
- cbz x2, G_M59170_IG20
- mov x0, x2
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
+ ; gcrRegs -[x0 x20]
+ mov w20, w23
+ ldr x1, [x24, x20, LSL #3]
+ ; gcrRegs +[x1]
+ cbz x1, G_M59170_IG20
+ mov x0, x1
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- ; gcrRegs -[x2]
- blr x2
+ ldr x1, [x11]
; gcrRegs -[x1]
+ blr x1
; gcr arg pop 0
cbz x0, G_M59170_IG08
- ldr x1, [fp, #0x10] // [V02 loc0]
+ ldr x1, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x1]
add x14, x1, #16
; byrRegs +[x14]
- add x14, x14, x19, LSL #3
+ add x14, x14, x20, LSL #3
mov x15, x0
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
@@ -132,67 +128,62 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0002 {x1}, byrefRegs=800000 {x2
blr x12
; gcrRegs -[x0-x1 x15]
; byrRegs -[x14]
- add w22, w22, #1
- cmp w20, w22
- ldr x1, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x1]
+ add w23, w23, #1
+ cmp w21, w23
bgt G_M59170_IG04
- ;; size=84 bbWeight=3.96 PerfScore 95.04
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; byrRegs -[x23]
+ ;; size=80 bbWeight=3.96 PerfScore 87.12
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x24]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19]
- add x23, x19, #16
- ; byrRegs +[x23]
- ldr x2, [x23, w22, UXTW #3]
- ; gcrRegs +[x2]
- cbz x2, G_M59170_IG20
- mov x0, x2
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x20]
+ add x24, x20, #16
+ ; byrRegs +[x24]
+ ldr x1, [x24, w23, UXTW #3]
+ ; gcrRegs +[x1]
+ cbz x1, G_M59170_IG20
+ mov x0, x1
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- ; gcrRegs -[x2]
- blr x2
+ ldr x1, [x11]
; gcrRegs -[x1]
+ blr x1
; gcr arg pop 0
cbz x0, G_M59170_IG08
- ldr x1, [fp, #0x10] // [V02 loc0]
+ ldr x1, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x1]
ldr w14, [x1, #0x08]
- cmp w22, w14
+ cmp w23, w14
bhs G_M59170_IG17
add x14, x1, #16
; byrRegs +[x14]
- add x14, x14, x22, LSL #3
+ add x14, x14, x23, LSL #3
mov x15, x0
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x0 x15]
- ; byrRegs -[x14 x23]
- add w22, w22, #1
- cmp w20, w22
- ldr x1, [fp, #0x18] // [V00 this]
+ ; gcrRegs -[x0-x1 x15]
...
-16 (-2.16%) : 114850.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
@@ -9,63 +9,59 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 24,134.50) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEventDispatcher>
-; V01 arg1 [V01,T10] ( 11, 45 ) long -> x20 single-def
-; V02 loc0 [V02,T03] ( 7,137 ) int -> x21
-; V03 loc1 [V03,T11] ( 6, 44 ) ushort -> x11
-; V04 loc2 [V04,T12] ( 5, 40 ) long -> x0
-; V05 loc3 [V05,T06] ( 6,108 ) int -> x2
-; V06 loc4 [V06,T02] ( 7,176 ) long -> x5
+; V00 this [V00,T01] ( 24, 24.50) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEventDispatcher>
+; V01 arg1 [V01,T07] ( 11, 8.50) long -> x20 single-def
+; V02 loc0 [V02,T05] ( 7, 21.50) int -> x21
+; V03 loc1 [V03,T09] ( 6, 9 ) ushort -> x11
+; V04 loc2 [V04,T11] ( 5, 8 ) long -> x0
+; V05 loc3 [V05,T06] ( 6, 18 ) int -> x2
+; V06 loc4 [V06,T00] ( 7, 28 ) long -> x5
;* V07 loc5 [V07 ] ( 0, 0 ) long -> zero-ref
-; V08 loc6 [V08,T18] ( 6, 6 ) ref -> x24 class-hnd <Microsoft.Diagnostics.Tracing.TraceEvent>
-; V09 loc7 [V09,T09] ( 2, 64 ) ubyte -> x0
+; V08 loc6 [V08,T15] ( 6, 3 ) ref -> x23 class-hnd <Microsoft.Diagnostics.Tracing.TraceEvent>
+; V09 loc7 [V09,T12] ( 2, 8 ) ubyte -> x0
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V13 tmp3 [V13,T15] ( 3, 12 ) ref -> x11 "arr expr"
-; V14 tmp4 [V14,T00] ( 3,192 ) ref -> x1 "arr expr"
-; V15 tmp5 [V15,T01] ( 3,192 ) ref -> x2 "argument with side effect"
-; V16 cse0 [V16,T08] ( 2, 72 ) long -> x4 hoist "CSE - aggressive"
-; V17 cse1 [V17,T13] ( 3, 32 ) int -> x3 "CSE - aggressive"
-; V18 cse2 [V18,T16] ( 3, 12 ) ref -> x11 "CSE - aggressive"
-; V19 cse3 [V19,T17] ( 3, 12 ) ref -> x0 "CSE - aggressive"
-; V20 cse4 [V20,T05] ( 23,133.50) long -> x22 hoist "CSE - aggressive"
-; V21 cse5 [V21,T14] ( 11, 30 ) long -> x25 multi-def "CSE - aggressive"
-; V22 cse6 [V22,T07] ( 3, 80 ) int -> x1 "CSE - aggressive"
-; V23 cse7 [V23,T19] ( 2, 5 ) long -> x23 hoist "CSE - aggressive"
+; V13 tmp3 [V13,T16] ( 3, 3 ) ref -> x11 "arr expr"
+; V14 tmp4 [V14,T02] ( 3, 24 ) ref -> x1 "arr expr"
+; V15 tmp5 [V15,T03] ( 3, 24 ) ref -> x2 "argument with side effect"
+; V16 cse0 [V16,T10] ( 2, 9 ) long -> x4 hoist "CSE - aggressive"
+; V17 cse1 [V17,T13] ( 3, 6 ) int -> x3 "CSE - aggressive"
+; V18 cse2 [V18,T17] ( 3, 1.50) ref -> x11 "CSE - moderate"
+; V19 cse3 [V19,T18] ( 3, 1.50) ref -> x0 "CSE - moderate"
+; V20 cse4 [V20,T04] ( 23, 23.50) long -> x22 hoist "CSE - aggressive"
+; V21 cse5 [V21,T14] ( 11, 5.50) long -> x24 multi-def "CSE - aggressive"
+; V22 cse6 [V22,T08] ( 3, 10 ) int -> x1 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M63325_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M63325_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov w21, wzr
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x22, [x11]
- adrp x23, [HIGH RELOC #0xD1FFAB1E]
- add x23, x23, [LOW RELOC #0xD1FFAB1E]
- ;; size=24 bbWeight=1 PerfScore 5.50
-G_M63325_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 4.50
+G_M63325_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrh w11, [x20, #0x28]
ldrh w0, [x20, #0x04]
tbz w0, #8, G_M63325_IG05
- ;; size=12 bbWeight=8 PerfScore 56.00
-G_M63325_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M63325_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldrb w0, [x20, #0x2D]
add w11, w11, w0
uxth w11, w11
- ;; size=12 bbWeight=2 PerfScore 8.00
-G_M63325_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M63325_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldrsb wzr, [x20]
add x0, x20, #24
ldr w1, [x0]
@@ -80,15 +76,15 @@ G_M63325_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs +[x4]
ldr x4, [x4, #0x38]
; byrRegs -[x4]
- ;; size=40 bbWeight=8 PerfScore 132.00
-G_M63325_IG06: ; bbWeight=64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=1 PerfScore 16.50
+G_M63325_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w5, #20
smaddl x5, w2, w5, x4
ldr w6, [x5]
cmp w6, w1
bne G_M63325_IG08
- ;; size=20 bbWeight=64 PerfScore 640.00
-G_M63325_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=8 PerfScore 80.00
+G_M63325_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w6, [x5, #0x04]
ldr w7, [x0, #0x04]
cmp w6, w7
@@ -104,16 +100,16 @@ G_M63325_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldrh w6, [x5, #0x10]
cmp w6, w11
beq G_M63325_IG09
- ;; size=60 bbWeight=8 PerfScore 216.00
-G_M63325_IG08: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=60 bbWeight=2 PerfScore 54.00
+G_M63325_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w5, [x5, #0x12]
cbz w5, G_M63325_IG10
add w2, w2, w11, LSL #1
add w2, w2, #1
and w2, w2, w3
b G_M63325_IG06
- ;; size=24 bbWeight=16 PerfScore 112.00
-G_M63325_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=4 PerfScore 28.00
+G_M63325_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add x11, x19, x22
; byrRegs +[x11]
ldr x11, [x11, #0x10]
@@ -121,16 +117,16 @@ G_M63325_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs -[x11]
ldr w0, [x11, #0x08]
cmp w2, w0
- bhs G_M63325_IG20
+ bhs G_M63325_IG18
add x11, x11, #16
; gcrRegs -[x11]
; byrRegs +[x11]
- ldr x24, [x11, w2, UXTW #3]
- ; gcrRegs +[x24]
- cbnz x24, G_M63325_IG17
- ;; size=32 bbWeight=2 PerfScore 25.00
-G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
+ ldr x23, [x11, w2, UXTW #3]
+ ; gcrRegs +[x23]
+ cbnz x23, G_M63325_IG15
+ ;; size=32 bbWeight=0.50 PerfScore 6.25
+G_M63325_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x23]
; byrRegs -[x11]
add x11, x19, x22
; byrRegs +[x11]
@@ -139,8 +135,8 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs -[x11]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ldr x25, [x0]
- add x11, x11, x25
+ ldr x24, [x0]
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
str x20, [x11, #0x48]
@@ -148,7 +144,7 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x11, [x11, #0x20]
; gcrRegs +[x11]
; byrRegs -[x11]
- add x11, x11, x25
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
ldr x0, [x20, #0x60]
@@ -157,7 +153,7 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x11, [x11, #0x20]
; gcrRegs +[x11]
; byrRegs -[x11]
- add x11, x11, x25
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
add x0, x19, x22
@@ -169,9 +165,9 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x11, [x11, #0x20]
; gcrRegs +[x11]
; byrRegs -[x11]
- add x0, x11, x25
+ add x0, x11, x24
; byrRegs +[x0]
- add x11, x11, x25
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
ldr x11, [x11, #0x48]
@@ -191,24 +187,22 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs +[x11]
ldrh w11, [x11, #0x48]
; byrRegs -[x11]
- cbnz w11, G_M63325_IG12
- ;; size=140 bbWeight=4 PerfScore 192.00
-G_M63325_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
+ cbnz w11, G_M63325_IG11
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
mov w0, wzr
+ ; byrRegs -[x0]
ldr x1, [x11]
blr x1
; gcr arg pop 0
- ;; size=20 bbWeight=2 PerfScore 11.00
-G_M63325_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=160 bbWeight=0.50 PerfScore 26.75
+G_M63325_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add x0, x19, x22
; byrRegs +[x0]
ldr x0, [x0, #0x20]
; gcrRegs +[x0]
; byrRegs -[x0]
- add x0, x0, x25
+ add x0, x0, x24
; gcrRegs -[x0]
; byrRegs +[x0]
mov w11, #255
@@ -217,24 +211,25 @@ G_M63325_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x0, [x0, #0x28]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbz x0, G_M63325_IG15
+ cbz x0, G_M63325_IG13
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w21
- ble G_M63325_IG15
+ ble G_M63325_IG13
add x0, x19, x22
; byrRegs +[x0]
ldr x0, [x0, #0x20]
; gcrRegs +[x0]
; byrRegs -[x0]
- mov x11, x23
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
...
-12 (-0.79%) : 174471.dasm - System.Text.RegularExpressions.Generated.FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952_Regex13+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
@@ -9,58 +9,58 @@
; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 22,110 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner>
-; V01 arg1 [V01 ] ( 11, 23.50) struct (16) [fp+0x40] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T01] ( 34, 94.50) int -> [fp+0x3C]
-; V03 loc1 [V03,T38] ( 3, 2.50) int -> x21
-; V04 loc2 [V04,T30] ( 3, 12 ) int -> x20
-; V05 loc3 [V05,T19] ( 4, 12.50) int -> x20
-; V06 loc4 [V06,T05] ( 2, 32.50) int -> [fp+0x38] spill-single-def
-; V07 loc5 [V07,T13] ( 5, 16.50) int -> [fp+0x34]
-; V08 loc6 [V08,T27] ( 5, 13 ) int -> x25
-; V09 loc7 [V09,T07] ( 7, 27 ) int -> x23
-; V10 loc8 [V10 ] ( 9, 23 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op
-; V11 loc9 [V11 ] ( 37,113.50) struct (16) [fp+0x18] do-not-enreg[XSAR] multireg-arg multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V12 loc10 [V12,T09] ( 6, 22 ) int -> x26
-; V13 loc11 [V13,T22] ( 3, 16 ) int -> x20
-; V14 loc12 [V14,T31] ( 3, 12 ) int -> x28
-; V15 loc13 [V15,T10] ( 6, 22 ) int -> x26
-; V16 loc14 [V16,T11] ( 6, 22 ) int -> x26
+; V00 this [V00,T01] ( 22, 74.50) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner>
+; V01 arg1 [V01 ] ( 11, 20 ) struct (16) [fp+0x30] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V02 loc0 [V02,T00] ( 34, 87.50) int -> registers
+; V03 loc1 [V03,T35] ( 3, 2.50) int -> x21
+; V04 loc2 [V04,T24] ( 3, 12 ) int -> x20
+; V05 loc3 [V05,T26] ( 4, 5.50) int -> x20
+; V06 loc4 [V06,T32] ( 2, 4.50) int -> [fp+0x2C] spill-single-def
+; V07 loc5 [V07,T29] ( 5, 2.50) int -> x28
+; V08 loc6 [V08,T34] ( 5, 2.50) int -> x25
+; V09 loc7 [V09,T05] ( 7, 27 ) int -> x23
+; V10 loc8 [V10 ] ( 9, 23 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
+; V11 loc9 [V11 ] ( 37,106.50) struct (16) [fp+0x10] do-not-enreg[XSAR] multireg-arg multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
+; V12 loc10 [V12,T21] ( 6, 15 ) int -> x26
+; V13 loc11 [V13,T16] ( 3, 16 ) int -> x20
+; V14 loc12 [V14,T25] ( 3, 12 ) int -> x28
+; V15 loc13 [V15,T08] ( 6, 22 ) int -> x26
+; V16 loc14 [V16,T09] ( 6, 22 ) int -> x26
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
; V19 tmp2 [V19,T03] ( 3, 36 ) byref -> x26 "non-inline candidate call"
;* V20 tmp3 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp4 [V21 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-; V22 tmp5 [V22,T34] ( 2, 8 ) int -> x23 "dup spill"
-; V23 tmp6 [V23,T20] ( 4, 16 ) int -> x11 "dup spill"
-; V24 tmp7 [V24,T28] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
-; V25 tmp8 [V25,T21] ( 4, 16 ) int -> x11 "dup spill"
-; V26 tmp9 [V26,T29] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V22 tmp5 [V22,T28] ( 2, 8 ) int -> x23 "dup spill"
+; V23 tmp6 [V23,T14] ( 4, 16 ) int -> x11 "dup spill"
+; V24 tmp7 [V24,T22] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V25 tmp8 [V25,T15] ( 4, 16 ) int -> x11 "dup spill"
+; V26 tmp9 [V26,T23] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
;* V27 tmp10 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp11 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp12 [V29 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V30 tmp13 [V30 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp14 [V31 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp15 [V32,T18] ( 3, 17 ) int -> x0 "dup spill"
+; V32 tmp15 [V32,T33] ( 3, 3 ) int -> x0 "dup spill"
;* V33 tmp16 [V33 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V34 tmp17 [V34 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V35 tmp18 [V35 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V36 tmp19 [V36 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp20 [V37 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
-; V38 tmp21 [V38,T15] ( 3, 18 ) ref -> x1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V39 tmp22 [V39,T14] ( 4, 20 ) int -> x3 "Inline stloc first use temp"
-; V40 tmp23 [V40,T08] ( 3, 24 ) int -> x2 "Inlining Arg"
+; V38 tmp21 [V38,T11] ( 3, 18 ) ref -> x1 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V39 tmp22 [V39,T10] ( 4, 20 ) int -> x3 "Inline stloc first use temp"
+; V40 tmp23 [V40,T07] ( 3, 24 ) int -> x2 "Inlining Arg"
; V41 tmp24 [V41,T04] ( 2, 36 ) int -> x20 "Inlining Arg"
-; V42 tmp25 [V42 ] ( 10, 22.50) byref -> [fp+0x40] do-not-enreg[X] addr-exposed single-def "field V01._reference (fldOffset=0x0)" P-DEP
-; V43 tmp26 [V43 ] ( 10, 22.50) int -> [fp+0x48] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
-; V44 tmp27 [V44 ] ( 22, 69.50) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP
-; V45 tmp28 [V45 ] ( 29, 84.50) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
+; V42 tmp25 [V42 ] ( 10, 19 ) byref -> [fp+0x30] do-not-enreg[X] addr-exposed single-def "field V01._reference (fldOffset=0x0)" P-DEP
+; V43 tmp26 [V43 ] ( 10, 19 ) int -> [fp+0x38] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
+; V44 tmp27 [V44 ] ( 22, 62.50) byref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP
+; V45 tmp28 [V45 ] ( 29, 77.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
;* V46 tmp29 [V46 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-DEP
;* V47 tmp30 [V47 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-DEP
-; V48 tmp31 [V48,T23] ( 2, 16 ) byref -> x2 "field V20._reference (fldOffset=0x0)" P-INDEP
-; V49 tmp32 [V49,T25] ( 2, 16 ) int -> x3 "field V20._length (fldOffset=0x8)" P-INDEP
-; V50 tmp33 [V50,T24] ( 2, 16 ) byref -> x26 "field V21._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp34 [V51,T26] ( 2, 16 ) int -> x28 "field V21._length (fldOffset=0x8)" P-INDEP
+; V48 tmp31 [V48,T17] ( 2, 16 ) byref -> x2 "field V20._reference (fldOffset=0x0)" P-INDEP
+; V49 tmp32 [V49,T19] ( 2, 16 ) int -> x3 "field V20._length (fldOffset=0x8)" P-INDEP
+; V50 tmp33 [V50,T18] ( 2, 16 ) byref -> x26 "field V21._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp34 [V51,T20] ( 2, 16 ) int -> x28 "field V21._length (fldOffset=0x8)" P-INDEP
;* V52 tmp35 [V52 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-DEP
;* V53 tmp36 [V53 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-DEP
;* V54 tmp37 [V54 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-DEP
@@ -69,8 +69,8 @@
;* V57 tmp40 [V57 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-DEP
;* V58 tmp41 [V58 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-DEP
;* V59 tmp42 [V59 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-DEP
-; V60 tmp43 [V60,T33] ( 2, 8 ) byref -> x0 "field V31._reference (fldOffset=0x0)" P-INDEP
-; V61 tmp44 [V61,T35] ( 2, 8 ) int -> x1 "field V31._length (fldOffset=0x8)" P-INDEP
+; V60 tmp43 [V60,T36] ( 2, 1 ) byref -> x0 "field V31._reference (fldOffset=0x0)" P-INDEP
+; V61 tmp44 [V61,T37] ( 2, 1 ) int -> x1 "field V31._length (fldOffset=0x8)" P-INDEP
;* V62 tmp45 [V62 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-DEP
;* V63 tmp46 [V63 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-DEP
;* V64 tmp47 [V64 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-DEP
@@ -81,27 +81,26 @@
;* V69 tmp52 [V69 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-DEP
;* V70 tmp53 [V70 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-DEP
;* V71 tmp54 [V71 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-DEP
-; V72 cse0 [V72,T32] ( 2, 9 ) byref -> x25 hoist "CSE - moderate"
-; V73 cse1 [V73,T36] ( 4, 6 ) long -> x24 "CSE - moderate"
-; V74 cse2 [V74,T16] ( 3, 18 ) int -> x0 "CSE - aggressive"
-; V75 cse3 [V75,T17] ( 3, 18 ) int -> x11 "CSE - aggressive"
-; V76 cse4 [V76,T37] ( 3, 6 ) byref -> x1 "CSE - moderate"
-; V77 cse5 [V77,T02] ( 6, 68.50) long -> x27 "CSE - aggressive"
-; V78 cse6 [V78,T06] ( 11, 29 ) long -> x22 "CSE - aggressive"
-; V79 cse7 [V79,T12] ( 7, 21 ) long -> x28 multi-def "CSE - aggressive"
+; V72 cse0 [V72,T27] ( 2, 9 ) byref -> x25 hoist "CSE - moderate"
+; V73 cse1 [V73,T30] ( 4, 6 ) long -> x24 "CSE - moderate"
+; V74 cse2 [V74,T12] ( 3, 18 ) int -> x0 "CSE - aggressive"
+; V75 cse3 [V75,T13] ( 3, 18 ) int -> x11 "CSE - aggressive"
+; V76 cse4 [V76,T31] ( 3, 6 ) byref -> x1 "CSE - moderate"
+; V77 cse5 [V77,T02] ( 6, 40.50) long -> x27 "CSE - aggressive"
+; V78 cse6 [V78,T06] ( 11, 25.50) long -> x22 "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M58872_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xA0]!
- stp x19, x20, [sp, #0x50]
- stp x21, x22, [sp, #0x60]
- stp x23, x24, [sp, #0x70]
- stp x25, x26, [sp, #0x80]
- stp x27, x28, [sp, #0x90]
+ stp fp, lr, [sp, #-0x90]!
+ stp x19, x20, [sp, #0x40]
+ stp x21, x22, [sp, #0x50]
+ stp x23, x24, [sp, #0x60]
+ stp x25, x26, [sp, #0x70]
+ stp x27, x28, [sp, #0x80]
mov fp, sp
- str xzr, [fp, #0x18] // [V11 loc9]
- stp x1, x2, [fp, #0x40] // [V01 arg1], [V01 arg1+0x08]
+ str xzr, [fp, #0x10] // [V11 loc9]
+ stp x1, x2, [fp, #0x30] // [V01 arg1], [V01 arg1+0x08]
mov x19, x0
; gcrRegs +[x19]
;; size=40 bbWeight=1 PerfScore 9.00
@@ -111,8 +110,8 @@ G_M58872_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x0, [x0]
ldr w20, [x19, x0]
sxtw w21, w20
- str wzr, [fp, #0x28] // [V10 loc8]
- add x0, fp, #64 // [V01 arg1]
+ str wzr, [fp, #0x20] // [V10 loc8]
+ add x0, fp, #48 // [V01 arg1]
mov w1, w21
adrp x22, [HIGH RELOC #0xD1FFAB1E] // function address
add x22, x22, [LOW RELOC #0xD1FFAB1E]
@@ -120,7 +119,7 @@ G_M58872_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x11]
blr x2
; byrRegs +[x0]
- stp x0, x1, [fp, #0x18] // [V11 loc9], [V11 loc9+0x08]
+ stp x0, x1, [fp, #0x10] // [V11 loc9], [V11 loc9+0x08]
mov w23, wzr
adrp x0, [HIGH RELOC #0xD1FFAB1E]
; byrRegs -[x0]
@@ -144,7 +143,7 @@ G_M58872_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x2
sxtw w2, w0
ldr x1, [x26]
; gcrRegs +[x1]
- ldr w3, [fp, #0x28] // [V10 loc8]
+ ldr w3, [fp, #0x20] // [V10 loc8]
ldr w0, [x1, #0x08]
add w11, w3, #1
cmp w0, w11
@@ -159,15 +158,15 @@ G_M58872_IG04: ; bbWeight=2, gcrefRegs=80002 {x1 x19}, byrefRegs=2000000
; byrRegs +[x1]
str w2, [x1, w3, UXTW #2]
str w20, [x1, w11, UXTW #2]
- ldr w1, [fp, #0x28] // [V10 loc8]
+ ldr w1, [fp, #0x20] // [V10 loc8]
; byrRegs -[x1]
add w1, w1, #2
- str w1, [fp, #0x28] // [V10 loc8]
+ str w1, [fp, #0x20] // [V10 loc8]
b G_M58872_IG06
;; size=36 bbWeight=2 PerfScore 17.00
G_M58872_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=6000000 {x25 x26}, byref
; byrRegs +[x26]
- add x1, fp, #40 // [V10 loc8]
+ add x1, fp, #32 // [V10 loc8]
mov w3, w20
mov x0, x26
; byrRegs +[x0]
@@ -179,9 +178,9 @@ G_M58872_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=6000000 {x2
;; size=28 bbWeight=2 PerfScore 13.00
G_M58872_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref, isz
add w23, w23, #1
- ldr x26, [fp, #0x18] // [V44 tmp27]
+ ldr x26, [fp, #0x10] // [V44 tmp27]
; byrRegs +[x26]
- ldr w28, [fp, #0x20] // [V45 tmp28]
+ ldr w28, [fp, #0x18] // [V45 tmp28]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
@@ -203,21 +202,21 @@ G_M58872_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x2
ldr x4, [x11]
blr x4
; byrRegs -[x0 x2 x26]
- cbz w0, G_M58872_IG10
+ cbz w0, G_M58872_IG11
;; size=80 bbWeight=8 PerfScore 196.00
G_M58872_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref, isz
add w0, w20, #2
sxtw w26, w0
- add x0, fp, #64 // [V01 arg1]
+ add x0, fp, #48 // [V01 arg1]
mov w1, w26
mov x11, x22
ldr x2, [x11]
blr x2
; byrRegs +[x0]
- stp x0, x1, [fp, #0x18] // [V11 loc9], [V11 loc9+0x08]
+ stp x0, x1, [fp, #0x10] // [V11 loc9], [V11 loc9+0x08]
sxtw w28, w26
- ldr x0, [fp, #0x18] // [V44 tmp27]
- ldr w1, [fp, #0x20] // [V45 tmp28]
+ ldr x0, [fp, #0x10] // [V44 tmp27]
+ ldr w1, [fp, #0x18] // [V45 tmp28]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
mov w2, #41
@@ -228,72 +227,75 @@ G_M58872_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x2
tbz w26, #31, G_M58872_IG09
;; size=72 bbWeight=4 PerfScore 76.00
G_M58872_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref
- ldr w26, [fp, #0x20] // [V45 tmp28]
+ ldr w26, [fp, #0x18] // [V45 tmp28]
;; size=4 bbWeight=2 PerfScore 4.00
G_M58872_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref, isz
- cbz w26, G_M58872_IG10
- add x0, fp, #24 // [V11 loc9]
+ cbz w26, G_M58872_IG11
+ add x0, fp, #16 // [V11 loc9]
mov w1, w26
mov x11, x22
ldr x2, [x11]
...
+12 (+1.88%) : 22424.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
@@ -9,33 +9,33 @@
; 0 inlinees with PGO data; 11 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 34,119.50) byref -> x19 this single-def
-; V01 arg1 [V01,T13] ( 8, 5 ) byref -> x21 single-def
-; V02 arg2 [V02,T09] ( 9, 13 ) byref -> x20 single-def
-; V03 arg3 [V03,T14] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
-; V04 loc0 [V04,T11] ( 3, 12 ) int -> x2
-; V05 loc1 [V05,T17] ( 3, 1.50) int -> x3
-; V06 loc2 [V06,T05] ( 9, 25.50) int -> x23
-; V07 loc3 [V07,T20] ( 2, 1 ) int -> x23
-; V08 loc4 [V08,T21] ( 2, 1 ) ushort -> x24
-; V09 loc5 [V09 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
-; V10 loc6 [V10 ] ( 2, 1 ) int -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
+; V00 this [V00,T00] ( 34, 56.50) byref -> x19 this single-def
+; V01 arg1 [V01,T10] ( 8, 5 ) byref -> x21 single-def
+; V02 arg2 [V02,T05] ( 9, 13 ) byref -> x20 single-def
+; V03 arg3 [V03,T12] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
+; V04 loc0 [V04,T07] ( 3, 12 ) int -> x2
+; V05 loc1 [V05,T17] ( 3, 1.75) int -> x3
+; V06 loc2 [V06,T01] ( 9, 25.50) int -> x24
+; V07 loc3 [V07,T22] ( 2, 1 ) int -> x23
+; V08 loc4 [V08,T23] ( 2, 1 ) ushort -> x24
+; V09 loc5 [V09 ] ( 2, 1 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
+; V10 loc6 [V10 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V13 tmp2 [V13,T03] ( 3, 96 ) int -> x0 "Span.get_Item index"
-; V14 tmp3 [V14,T02] ( 3, 96 ) byref -> x11 "Span.get_Item ptrToSpan"
-; V15 tmp4 [V15,T08] ( 3, 24 ) int -> x2 "Span.get_Item index"
-; V16 tmp5 [V16,T07] ( 3, 24 ) byref -> x0 "Span.get_Item ptrToSpan"
-; V17 tmp6 [V17,T16] ( 3, 3 ) int -> x2 "Span.get_Item index"
-; V18 tmp7 [V18,T15] ( 3, 3 ) byref -> x3 "Span.get_Item ptrToSpan"
+; V13 tmp2 [V13,T08] ( 3, 12 ) int -> x0 "Span.get_Item index"
+; V14 tmp3 [V14,T06] ( 3, 12 ) byref -> x25 "Span.get_Item ptrToSpan"
+; V15 tmp4 [V15,T03] ( 3, 24 ) int -> x2 "Span.get_Item index"
+; V16 tmp5 [V16,T02] ( 3, 24 ) byref -> x0 "Span.get_Item ptrToSpan"
+; V17 tmp6 [V17,T15] ( 3, 3 ) int -> x2 "Span.get_Item index"
+; V18 tmp7 [V18,T14] ( 3, 3 ) byref -> x3 "Span.get_Item ptrToSpan"
;* V19 tmp8 [V19 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V20 tmp9 [V20,T12] ( 3, 8 ) ubyte -> x0 "Inline return value spill temp"
-; V21 tmp10 [V21,T06] ( 4, 24 ) ushort -> x0 "Inlining Arg"
+; V20 tmp9 [V20,T18] ( 3, 1.50) ubyte -> x0 "Inline return value spill temp"
+; V21 tmp10 [V21,T13] ( 4, 4 ) ushort -> x0 "Inlining Arg"
;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V23 tmp12 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp13 [V24 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V25 tmp14 [V25,T04] ( 3, 32 ) ubyte -> x0 "Inline return value spill temp"
-; V26 tmp15 [V26,T01] ( 4, 96 ) ushort -> x0 "Inlining Arg"
+; V25 tmp14 [V25,T11] ( 3, 6 ) ubyte -> x0 "Inline return value spill temp"
+; V26 tmp15 [V26,T04] ( 4, 16 ) ushort -> x0 "Inlining Arg"
;* V27 tmp16 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V28 tmp17 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
@@ -47,17 +47,20 @@
;* V35 tmp24 [V35 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-INDEP
;* V36 tmp25 [V36 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-INDEP
;* V37 tmp26 [V37 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP
-; V38 cse0 [V38,T18] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V39 cse1 [V39,T10] ( 4, 12.50) int -> x0 "CSE - aggressive"
-; V40 cse2 [V40,T19] ( 3, 1.50) int -> x2 "CSE - moderate"
+; V38 cse0 [V38,T16] ( 3, 2 ) int -> x2 "CSE - moderate"
+; V39 cse1 [V39,T19] ( 3, 1.50) int -> x23 "CSE - moderate"
+; V40 cse2 [V40,T20] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V41 cse3 [V41,T21] ( 3, 1.50) int -> x2 "CSE - moderate"
+; V42 cse4 [V42,T09] ( 6, 9.25) byref -> x25 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x28]
+ stp x21, x22, [sp, #0x38]
+ stp x23, x24, [sp, #0x48]
+ str x25, [sp, #0x58]
mov fp, sp
mov x19, x0
; byrRegs +[x19]
@@ -67,169 +70,173 @@ G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x20]
mov x22, x3
; gcrRegs +[x22]
- ;; size=36 bbWeight=1 PerfScore 6.50
+ ;; size=40 bbWeight=1 PerfScore 7.50
G_M44776_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
str wzr, [x20]
ldr w0, [x19, #0x08]
ldr w11, [x19, #0x18]
cmp w0, w11
- bge G_M44776_IG13
+ bge G_M44776_IG10
;; size=20 bbWeight=1 PerfScore 8.50
-G_M44776_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG03: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldrh w0, [x19, #0x0C]
- sub w11, w0, #48
- cmp w11, #9
- bls G_M44776_IG14
+ sub w23, w0, #48
+ cmp w23, #9
+ bls G_M44776_IG11
cmp w0, #0xD1FFAB1E
- bhs G_M44776_IG05
- ;; size=24 bbWeight=4 PerfScore 26.00
-G_M44776_IG04: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ bhs G_M44776_IG04
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcr arg pop 0
- b G_M44776_IG06
- ;; size=20 bbWeight=2 PerfScore 12.00
-G_M44776_IG05: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ b G_M44776_IG05
+ ;; size=44 bbWeight=0.50 PerfScore 6.25
+G_M44776_IG04: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr x1, [x11]
+ blr x1
+ ; gcr arg pop 0
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M44776_IG05: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ cbnz w0, G_M44776_IG09
+ b G_M44776_IG20
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M44776_IG06: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ ldr w0, [x19, #0x08]
+ add x25, x19, #16
+ ; byrRegs +[x25]
+ ldr w11, [x25, #0x08]
+ cmp w0, w11
+ bhs G_M44776_IG22
+ ldr x11, [x25]
+ ; byrRegs +[x11]
+ ldrh w0, [x11, w0, UXTW #2]
+ strh w0, [x19, #0x0C]
+ ldrh w0, [x19, #0x0C]
+ cmp w0, #0xD1FFAB1E
+ bhs G_M44776_IG07
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ ; byrRegs -[x11]
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
+ ldr x1, [x11]
+ blr x1
+ ; byrRegs -[x25]
+ ; gcr arg pop 0
+ b G_M44776_IG08
+ ;; size=64 bbWeight=2 PerfScore 51.00
+G_M44776_IG07: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcr arg pop 0
;; size=16 bbWeight=2 PerfScore 10.00
-G_M44776_IG06: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
- cbnz w0, G_M44776_IG12
- ;; size=4 bbWeight=4 PerfScore 4.00
-G_M44776_IG07: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
- b G_M44776_IG21
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M44776_IG08: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
- ldr w0, [x19, #0x08]
- add x11, x19, #16
- ; byrRegs +[x11]
- ldr w1, [x11, #0x08]
- cmp w0, w1
- bhs G_M44776_IG23
- ldr x11, [x11]
- ldrh w0, [x11, w0, UXTW #2]
- strh w0, [x19, #0x0C]
- ldrh w0, [x19, #0x0C]
- cmp w0, #0xD1FFAB1E
- bhs G_M44776_IG10
- ;; size=44 bbWeight=16 PerfScore 312.00
-G_M44776_IG09: ; bbWeight=8, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
- ; byrRegs -[x11]
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcr arg pop 0
- b G_M44776_IG11
- ;; size=20 bbWeight=8 PerfScore 48.00
-G_M44776_IG10: ; bbWeight=8, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
- adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
- add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x1, [x11]
- blr x1
- ; gcr arg pop 0
- ;; size=16 bbWeight=8 PerfScore 40.00
-G_M44776_IG11: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG08: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
cbz w0, G_M44776_IG03
- ;; size=4 bbWeight=16 PerfScore 16.00
-G_M44776_IG12: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ ;; size=4 bbWeight=2 PerfScore 2.00
+G_M44776_IG09: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldr w0, [x19, #0x08]
- add w23, w0, #1
- str w23, [x19, #0x08]
+ add w24, w0, #1
+ str w24, [x19, #0x08]
ldr w0, [x19, #0x18]
- cmp w23, w0
- blt G_M44776_IG08
+ cmp w24, w0
+ blt G_M44776_IG06
;; size=24 bbWeight=4 PerfScore 36.00
-G_M44776_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+G_M44776_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x22]
; byrRegs -[x19-x20]
mov w2, #6
str w2, [x21]
- b G_M44776_IG22
+ b G_M44776_IG21
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M44776_IG14: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG11: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
; gcrRegs +[x22]
; byrRegs +[x19-x20]
- sub w2, w0, #48
- str w2, [x20]
+ str w23, [x20]
ldr w2, [x19, #0x08]
sxtw w3, w2
- add w23, w2, #1
- str w23, [x19, #0x08]
+ add w24, w2, #1
+ str w24, [x19, #0x08]
ldr w2, [x19, #0x18]
- cmp w23, w2
- bge G_M44776_IG16
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M44776_IG15: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ cmp w24, w2
+ bge G_M44776_IG14
+ ;; size=32 bbWeight=0.50 PerfScore 5.25
+G_M44776_IG12: ; bbWeight=0.25, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ add x25, x19, #16
+ ; byrRegs +[x25]
...
+12 (+5.88%) : 187223.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -11,14 +11,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -56,53 +56,62 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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]
@@ -111,18 +120,18 @@ G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 8, PerfScore 56.64, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 216, prolog size 8, PerfScore 61.84, instruction count 54, allocated bytes for code 216 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
@@ -130,6 +139,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+12 (+5.88%) : 27324.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -11,14 +11,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -56,53 +56,62 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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]
@@ -111,18 +120,18 @@ G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 8, PerfScore 56.64, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 216, prolog size 8, PerfScore 61.84, instruction count 54, allocated bytes for code 216 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
@@ -130,6 +139,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.pmi.osx.arm64.checked.mch
-24 (-3.31%) : 222742.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
@@ -8,32 +8,33 @@
; 0 inlinees with PGO data; 3 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 26,731 ) ref -> x20 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
-; V01 arg1 [V01,T00] ( 26,754 ) ref -> x19 class-hnd single-def <System.Xml.XPath.XPathNavigator>
+; V00 this [V00,T00] ( 26,245.50) ref -> x19 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
+; V01 arg1 [V01,T01] ( 20,214 ) ref -> x20 class-hnd single-def <System.Xml.XPath.XPathNavigator>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T02] ( 6,559 ) int -> x21
+; V03 loc1 [V03,T04] ( 6,109.50) int -> x21
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref
-; V09 tmp5 [V09,T15] ( 3, 8 ) int -> x2
+; V09 tmp5 [V09,T13] ( 3, 8 ) int -> x2
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp7 [V11,T11] ( 2, 32 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
-; V12 tmp8 [V12,T12] ( 2, 32 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
-; V13 tmp9 [V13,T13] ( 2, 32 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
-; V14 tmp10 [V14,T06] ( 4, 64 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
+; V11 tmp7 [V11,T14] ( 2, 8 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
+; V12 tmp8 [V12,T15] ( 2, 8 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
+; V13 tmp9 [V13,T16] ( 2, 8 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
+; V14 tmp10 [V14,T11] ( 4, 16 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp12 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
+; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
; V18 tmp14 [V18,T08] ( 2, 64 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
; V19 tmp15 [V19,T09] ( 2, 64 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
; V20 tmp16 [V20,T03] ( 4,128 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref
-; V22 tmp18 [V22,T14] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V23 tmp19 [V23,T10] ( 3, 48 ) ref -> x0 "argument with side effect"
+; V22 tmp18 [V22,T10] ( 3, 24 ) ref -> x0 "argument with side effect"
+; V23 tmp19 [V23,T12] ( 3, 12 ) ref -> x0 "argument with side effect"
; V24 tmp20 [V24,T05] ( 3, 96 ) ref -> x0 "argument with side effect"
-; V25 cse0 [V25,T04] ( 9, 96 ) long -> x22 multi-def "CSE - aggressive"
+; V25 cse0 [V25,T06] ( 9, 78 ) long -> x23 multi-def "CSE - aggressive"
+; V26 cse1 [V26,T02] ( 10,146 ) long -> x22 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -43,21 +44,21 @@ G_M8478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
mov fp, sp
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
+ mov x20, x1
+ ; gcrRegs +[x20]
;; size=28 bbWeight=1 PerfScore 5.50
G_M8478_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ldr w21, [x20, #0x58]
+ ldr w21, [x19, #0x58]
;; size=4 bbWeight=1 PerfScore 3.00
G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x20, #0x58]
+ ldr w2, [x19, #0x58]
cmp w2, w21
cset x2, eq
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
@@ -68,26 +69,25 @@ G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
cbz w0, G_M8478_IG16
;; size=44 bbWeight=8 PerfScore 92.00
G_M8478_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x22, [x1, #0x60]
- ldr x1, [x22, #0x08]
+ ldr x22, [x20]
+ ldr x23, [x22, #0x60]
+ ldr x1, [x23, #0x08]
blr x1
; gcrRegs -[x0]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x68]
+ ldr x1, [x22, #0x68]
ldr x1, [x1, #0x38]
blr x1
; gcrRegs -[x0]
cbz w0, G_M8478_IG07
- ;; size=44 bbWeight=4 PerfScore 88.00
+ ;; size=40 bbWeight=4 PerfScore 76.00
G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
mov w2, wzr
movz x3, #0xD1FFAB1E // code for <unknown method>
@@ -96,26 +96,24 @@ G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x70]
+ ldr x1, [x22, #0x70]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG05
- ;; size=56 bbWeight=16 PerfScore 296.00
+ ;; size=52 bbWeight=16 PerfScore 248.00
G_M8478_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1, #0x08]
blr x1
; gcrRegs -[x0]
- ;; size=20 bbWeight=2 PerfScore 21.00
+ ;; size=16 bbWeight=2 PerfScore 15.00
G_M8478_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
beq G_M8478_IG09
@@ -128,9 +126,9 @@ G_M8478_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
mov w2, #1
;; size=4 bbWeight=2 PerfScore 1.00
G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNamespaces(System.Xml.XPath.XPathNavigator,int):this
movk x3, #0xD1FFAB1E LSL #16
@@ -138,11 +136,11 @@ G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr w0, [x20, #0x60]
+ ldr w0, [x19, #0x60]
cbz w0, G_M8478_IG12
;; size=36 bbWeight=4 PerfScore 42.00
G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteCachedNamespaces():this
movk x1, #0xD1FFAB1E LSL #16
@@ -152,7 +150,7 @@ G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
; gcrRegs -[x0]
;; size=24 bbWeight=2 PerfScore 12.00
G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x20, #0x10]
+ ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x98]
@@ -160,24 +158,23 @@ G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
mov w0, #2
- str w0, [x20, #0x5C]
- mov x0, x19
+ str w0, [x19, #0x5C]
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG03
- ;; size=52 bbWeight=4 PerfScore 104.00
-G_M8478_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ;; size=48 bbWeight=4 PerfScore 92.00
+G_M8478_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
bne G_M8478_IG15
- ;; size=16 bbWeight=2 PerfScore 10.00
-G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M8478_IG14: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteEndElement():this
movk x1, #0xD1FFAB1E LSL #16
@@ -186,26 +183,26 @@ G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
b G_M8478_IG16
- ;; size=28 bbWeight=8 PerfScore 56.00
-G_M8478_IG15: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ ;; size=28 bbWeight=2 PerfScore 14.00
+G_M8478_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x22, #0x28]
+ ldr x1, [x23, #0x28]
blr x1
- mov x23, x0
- ; gcrRegs +[x23]
- mov x0, x19
- ldr x1, [x22, #0x10]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ mov x0, x20
+ ldr x1, [x23, #0x10]
blr x1
mov x24, x0
; gcrRegs +[x24]
- mov x0, x19
- ldr x1, [x22, #0x20]
+ mov x0, x20
+ ldr x1, [x23, #0x20]
blr x1
mov x3, x0
; gcrRegs +[x3]
- ldr x0, [x20, #0x10]
- mov x1, x23
+ ldr x0, [x19, #0x10]
+ mov x1, x22
...
-20 (-2.00%) : 172984.dasm - Microsoft.CodeAnalysis.Text.SourceText:ContentEqualsImpl(Microsoft.CodeAnalysis.Text.SourceText):ubyte:this (FullOpts)
@@ -8,47 +8,46 @@
; 0 inlinees with PGO data; 0 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T06] ( 9, 16 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Text.SourceText>
-; V01 arg1 [V01,T10] ( 7, 8.50) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.Text.SourceText>
-; V02 loc0 [V02,T09] ( 12, 11.18) ref -> [fp+0x18] class-hnd EH-live single-def <<unknown class>>
-; V03 loc1 [V03,T12] ( 11, 8.17) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>>
-; V04 loc2 [V04,T03] ( 7, 24.50) int -> x25
-; V05 loc3 [V05,T02] ( 9, 38 ) int -> x27
+; V00 this [V00,T04] ( 9, 19.92) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.Text.SourceText>
+; V01 arg1 [V01,T11] ( 7, 8.50) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.Text.SourceText>
+; V02 loc0 [V02,T10] ( 12, 11.18) ref -> [fp+0x20] class-hnd EH-live spill-single-def <<unknown class>>
+; V03 loc1 [V03,T12] ( 11, 8.17) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
+; V04 loc2 [V04,T03] ( 7, 36.26) int -> x23
+; V05 loc3 [V05,T02] ( 9, 41.92) int -> x26
; V06 loc4 [V06,T00] ( 12, 68.48) int -> x0
-; V07 loc5 [V07,T18] ( 3, 1.50) ubyte -> x25
+; V07 loc5 [V07,T18] ( 3, 1.50) ubyte -> x23
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call"
-; V10 tmp2 [V10,T13] ( 3, 8 ) int -> x27 "Inline return value spill temp"
-; V11 tmp3 [V11,T04] ( 3, 20 ) int -> x26 "Inlining Arg"
-; V12 tmp4 [V12,T05] ( 3, 20 ) int -> x27 "Inlining Arg"
+; V10 tmp2 [V10,T13] ( 3, 8 ) int -> x26 "Inline return value spill temp"
+; V11 tmp3 [V11,T05] ( 3, 20 ) int -> x25 "Inlining Arg"
+; V12 tmp4 [V12,T06] ( 3, 20 ) int -> x26 "Inlining Arg"
; V13 tmp5 [V13,T16] ( 8, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>>
; V14 tmp6 [V14,T17] ( 8, 4 ) ref -> x0 class-hnd "Inlining Arg" <<unknown class>>
-; V15 PSPSym [V15,T19] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
+; V15 PSPSym [V15,T19] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
;* V16 cse0 [V16,T20] ( 0, 0 ) long -> zero-ref multi-def "CSE - aggressive"
-; V17 cse1 [V17,T11] ( 5, 9.50) long -> x22 "CSE - aggressive"
-; V18 cse2 [V18,T07] ( 4, 17.01) byref -> x1 hoist multi-def "CSE - aggressive"
-; V19 cse3 [V19,T08] ( 4, 17.01) byref -> x3 hoist multi-def "CSE - aggressive"
+; V17 cse1 [V17,T09] ( 5, 13.42) long -> x22 "CSE - aggressive"
+; V18 cse2 [V18,T07] ( 4, 17.01) byref -> x3 hoist multi-def "CSE - aggressive"
+; V19 cse3 [V19,T08] ( 4, 17.01) byref -> x4 hoist multi-def "CSE - aggressive"
; V20 cse4 [V20,T14] ( 3, 5 ) long -> x21 "CSE - aggressive"
; V21 cse5 [V21,T15] ( 3, 5 ) long -> x24 "CSE - aggressive"
-; V22 cse6 [V22,T01] ( 3, 47.52) long -> x4 "CSE - aggressive"
+; V22 cse6 [V22,T01] ( 3, 47.52) long -> x5 "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M16886_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x70]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- stp x23, x24, [sp, #0x48]
- stp x25, x26, [sp, #0x58]
- str x27, [sp, #0x68]
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
+ stp x25, x26, [sp, #0x60]
mov fp, sp
add x2, sp, #112
- str x2, [fp, #0x20] // [V15 PSPSym]
+ str x2, [fp, #0x28] // [V15 PSPSym]
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
; gcrRegs +[x20]
- ;; size=44 bbWeight=1 PerfScore 9.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M16886_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cbnz x20, G_M16886_IG05
;; size=4 bbWeight=1 PerfScore 1.00
@@ -57,14 +56,13 @@ G_M16886_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
G_M16886_IG04: ; bbWeight=0.50, epilog, nogc, extend
- ldr x27, [sp, #0x68]
- ldp x25, x26, [sp, #0x58]
- ldp x23, x24, [sp, #0x48]
- ldp x21, x22, [sp, #0x38]
- ldp x19, x20, [sp, #0x28]
+ ldp x25, x26, [sp, #0x60]
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x70
ret lr
- ;; size=28 bbWeight=0.50 PerfScore 4.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M16886_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
cmp x19, x20
@@ -72,14 +70,13 @@ G_M16886_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
mov w0, #1
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M16886_IG06: ; bbWeight=0.50, epilog, nogc, extend
- ldr x27, [sp, #0x68]
- ldp x25, x26, [sp, #0x58]
- ldp x23, x24, [sp, #0x48]
- ldp x21, x22, [sp, #0x38]
- ldp x19, x20, [sp, #0x28]
+ ldp x25, x26, [sp, #0x60]
+ ldp x23, x24, [sp, #0x50]
+ ldp x21, x22, [sp, #0x40]
+ ldp x19, x20, [sp, #0x30]
ldp fp, lr, [sp], #0x70
ret lr
- ;; size=28 bbWeight=0.50 PerfScore 4.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.00
G_M16886_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
mov x0, x19
; gcrRegs +[x0]
@@ -119,9 +116,7 @@ G_M16886_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr wzr, [x0]
blr x1
; gcr arg pop 0
- mov x23, x0
- ; gcrRegs +[x23]
- str x23, [fp, #0x18] // [V02 loc0]
+ str x0, [fp, #0x20] // [V02 loc0]
; GC ptr vars +{V02}
movz x0, #0xD1FFAB1E // data for <unknown class>:<unknown field>
; gcrRegs -[x0]
@@ -136,12 +131,12 @@ G_M16886_IG08: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
ldr wzr, [x0]
blr x1
; gcr arg pop 0
- str x0, [fp, #0x10] // [V03 loc1]
+ str x0, [fp, #0x18] // [V03 loc1]
; GC ptr vars +{V03}
- ;; size=92 bbWeight=0.50 PerfScore 14.25
-G_M16886_IG09: ; bbWeight=0.50, gcVars=0000000000001200 {V02 V03}, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=88 bbWeight=0.50 PerfScore 14.00
+G_M16886_IG09: ; bbWeight=0.50, gcVars=0000000000001400 {V02 V03}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- mov w25, wzr
+ mov w23, wzr
mov x0, x19
; gcrRegs +[x0]
ldr x2, [x22, #0x28]
@@ -151,31 +146,31 @@ G_M16886_IG09: ; bbWeight=0.50, gcVars=0000000000001200 {V02 V03}, gcrefR
cmp w0, #0
ble G_M16886_IG23
;; size=24 bbWeight=0.50 PerfScore 3.25
-G_M16886_IG10: ; bbWeight=4, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+G_M16886_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
ldr x1, [x22, #0x28]
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- sub w26, w0, w25
- ldr w27, [x23, #0x08]
- cmp w26, w27
+ sub w25, w0, w23
+ ldr x2, [fp, #0x20] // [V02 loc0]
+ ; gcrRegs +[x2]
+ ldr w26, [x2, #0x08]
+ cmp w25, w26
ble G_M16886_IG12
- ;; size=28 bbWeight=4 PerfScore 38.00
-G_M16886_IG11: ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
+ ;; size=32 bbWeight=4 PerfScore 46.00
+G_M16886_IG11: ; bbWeight=2, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
b G_M16886_IG13
;; size=4 bbWeight=2 PerfScore 2.00
-G_M16886_IG12: ; bbWeight=2, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref
- sxtw w27, w26
+G_M16886_IG12: ; bbWeight=2, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref
+ sxtw w26, w25
;; size=4 bbWeight=2 PerfScore 1.00
-G_M16886_IG13: ; bbWeight=4, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+G_M16886_IG13: ; bbWeight=4, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
- mov w1, w25
- mov x2, x23
- ; gcrRegs +[x2]
- mov w4, w27
+ mov w1, w23
+ mov w4, w26
mov w3, wzr
ldr x5, [x21, #0x50]
ldr x5, [x5, #0x10]
@@ -184,10 +179,10 @@ G_M16886_IG13: ; bbWeight=4, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=00
; gcr arg pop 0
mov x0, x20
; gcrRegs +[x0]
- mov w1, w25
- ldr x2, [fp, #0x10] // [V03 loc1]
+ mov w1, w23
+ ldr x2, [fp, #0x18] // [V03 loc1]
; gcrRegs +[x2]
- mov w4, w27
+ mov w4, w26
mov w3, wzr
ldr x5, [x24, #0x50]
ldr x5, [x5, #0x10]
@@ -195,96 +190,101 @@ G_M16886_IG13: ; bbWeight=4, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=00
; gcrRegs -[x0 x2]
; gcr arg pop 0
mov w0, wzr
- cmp w27, #0
+ cmp w26, #0
ble G_M16886_IG22
- ;; size=76 bbWeight=4 PerfScore 90.00
-G_M16886_IG14: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x10] // [V03 loc1]
+ ;; size=72 bbWeight=4 PerfScore 88.00
+G_M16886_IG14: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x2, [fp, #0x18] // [V03 loc1]
; gcrRegs +[x2]
cbz x2, G_M16886_IG20
- ldr w1, [x23, #0x08]
- cmp w1, w27
+ ldr x1, [fp, #0x20] // [V02 loc0]
+ ; gcrRegs +[x1]
+ ldr w3, [x1, #0x08]
+ cmp w3, w26
blt G_M16886_IG20
- ldr w1, [x2, #0x08]
- cmp w1, w27
+ ldr w3, [x2, #0x08]
+ cmp w3, w26
blt G_M16886_IG20
- add x1, x23, #16
- ; byrRegs +[x1]
- add x3, x2, #16
+ add x3, x1, #16
; byrRegs +[x3]
- ;; size=40 bbWeight=1 PerfScore 13.00
-G_M16886_IG15: ; bbWeight=15.84, gcrefRegs=980004 {x2 x19 x20 x23}, byrefRegs=000A {x1 x3}, byref, isz
- mov w4, w0
- ldrh w5, [x1, x4, LSL #2]
- ldrh w4, [x3, x4, LSL #2]
- cmp w5, w4
+ add x4, x2, #16
+ ; byrRegs +[x4]
+ ;; size=44 bbWeight=1 PerfScore 15.00
+G_M16886_IG15: ; bbWeight=15.84, gcrefRegs=180006 {x1 x2 x19 x20}, byrefRegs=0018 {x3 x4}, byref, isz
+ mov w5, w0
+ ldrh w6, [x3, x5, LSL #2]
+ ldrh w5, [x4, x5, LSL #2]
+ cmp w6, w5
beq G_M16886_IG18
;; size=20 bbWeight=15.84 PerfScore 126.72
-G_M16886_IG16: ; bbWeight=0.50, gcrefRegs=800004 {x2 x23}, byrefRegs=0000 {}, byref
+G_M16886_IG16: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
- ; byrRegs -[x1 x3]
- mov w25, wzr
...
-4 (-1.67%) : 237592.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
@@ -8,13 +8,13 @@
; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 4, 3.50) ref -> x19 class-hnd single-def <System.ComponentModel.IComNativeDescriptorHandler>
-; V01 loc0 [V01,T01] ( 6, 17.50) ref -> x0 class-hnd <System.ComponentModel.TypeDescriptor+TypeDescriptionNode>
+; V00 arg0 [V00,T03] ( 4, 3 ) ref -> x19 class-hnd single-def <System.ComponentModel.IComNativeDescriptorHandler>
+; V01 loc0 [V01,T01] ( 7, 18.50) ref -> x0 class-hnd <System.ComponentModel.TypeDescriptor+TypeDescriptionNode>
;# V02 OutArgs [V02 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V03 tmp1 [V03,T06] ( 3, 2 ) ref -> x1 single-def "CASTCLASS eval op1"
-; V04 tmp2 [V04,T07] ( 3, 1 ) long -> x3 "fgMakeTemp is creating a new local variable"
-; V05 tmp3 [V05,T05] ( 4, 3.50) ref -> x0 class-hnd single-def "spilling QMark2" <System.ComponentModel.TypeDescriptor+ComNativeDescriptionProvider>
-; V06 tmp4 [V06,T03] ( 3, 6 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.TypeDescriptor+ComNativeDescriptionProvider>
+; V04 tmp2 [V04,T07] ( 3, 1 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V05 tmp3 [V05,T04] ( 4, 3.50) ref -> x14 class-hnd single-def "spilling QMark2" <System.ComponentModel.TypeDescriptor+ComNativeDescriptionProvider>
+; V06 tmp4 [V06,T05] ( 3, 3 ) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.ComponentModel.TypeDescriptor+ComNativeDescriptionProvider>
; V07 tmp5 [V07,T02] ( 2, 16 ) ref -> x1 "CASTCLASS eval op1"
; V08 tmp6 [V08,T00] ( 3, 20 ) ref -> x1 class-hnd "spilling QMark2" <System.ComponentModel.TypeDescriptor+ComNativeDescriptionProvider>
;
@@ -45,7 +45,7 @@ G_M24990_IG03: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
ldr x0, [x0, #0x18]
;; size=4 bbWeight=2 PerfScore 6.00
G_M24990_IG04: ; bbWeight=8, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- cbz x0, G_M24990_IG09
+ cbz x0, G_M24990_IG07
;; size=4 bbWeight=8 PerfScore 8.00
G_M24990_IG05: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
ldr x1, [x0, #0x20]
@@ -61,17 +61,11 @@ G_M24990_IG06: ; bbWeight=2, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000
cmp x1, x2
bne G_M24990_IG03
;; size=24 bbWeight=2 PerfScore 12.00
-G_M24990_IG07: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
- ldr x1, [x0, #0x20]
- ; gcrRegs +[x1]
- mov x0, x1
- cbz x0, G_M24990_IG12
- ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M24990_IG08: ; bbWeight=0.25, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, byref
- b G_M24990_IG11
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M24990_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0-x1]
+G_M24990_IG07: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+ cbnz x0, G_M24990_IG10
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M24990_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -92,30 +86,39 @@ G_M24990_IG09: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
- ;; size=56 bbWeight=1 PerfScore 10.50
-G_M24990_IG10: ; bbWeight=1, epilog, nogc, extend
+ ;; size=56 bbWeight=0.50 PerfScore 5.25
+G_M24990_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldr x19, [sp, #0x18]
ldp fp, lr, [sp], #0x20
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M24990_IG11: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=80003 {x0 x1 x19}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[x1 x19]
- ldr x2, [x0]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- cmp x2, x3
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M24990_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[x19]
+ ldr x1, [x0, #0x20]
+ ; gcrRegs +[x1]
+ mov x14, x1
+ ; gcrRegs +[x14]
+ cbz x14, G_M24990_IG12
+ ;; size=12 bbWeight=0.50 PerfScore 2.25
+G_M24990_IG11: ; bbWeight=0.25, gcrefRegs=84002 {x1 x14 x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ldr x15, [x14]
+ movz x0, #0xD1FFAB1E
+ movk x0, #0xD1FFAB1E LSL #16
+ movk x0, #1 LSL #32
+ cmp x15, x0
bne G_M24990_IG14
;; size=24 bbWeight=0.25 PerfScore 1.50
-G_M24990_IG12: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+G_M24990_IG12: ; bbWeight=0.50, gcrefRegs=84000 {x14 x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
- add x14, x0, #24
+ add x14, x14, #24
+ ; gcrRegs -[x14]
; byrRegs +[x14]
mov x15, x19
; gcrRegs +[x15]
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x0 x15 x19]
+ ; gcrRegs -[x15 x19]
; byrRegs -[x14]
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M24990_IG13: ; bbWeight=0.50, epilog, nogc, extend
@@ -125,14 +128,13 @@ G_M24990_IG13: ; bbWeight=0.50, epilog, nogc, extend
;; size=12 bbWeight=0.50 PerfScore 2.00
G_M24990_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[x1]
- mov x0, x3
bl CORINFO_HELP_CHKCASTCLASS_SPECIAL
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
brk_unix #0
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 240, prolog size 16, PerfScore 75.00, instruction count 60, allocated bytes for code 240 (MethodHash=f0209e61) for method System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
+; Total bytes of code 236, prolog size 16, PerfScore 68.50, instruction count 59, allocated bytes for code 236 (MethodHash=f0209e61) for method System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
; ============================================================
Unwind Info:
@@ -143,7 +145,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
+ Function Length : 59 (0x0003b) Actual length = 236 (0x0000ec)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+24 (+4.69%) : 197812.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 6, 8 ) byref -> x19 this single-def
+; V00 this [V00,T03] ( 6, 8.98) byref -> x19 this single-def
; V01 loc0 [V01,T04] ( 6, 8 ) int -> x21 single-def
-; V02 loc1 [V02,T08] ( 6, 3.58) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
+; V02 loc1 [V02,T09] ( 6, 3.08) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Reflection.Metadata.SignatureHeader>
; V04 loc3 [V04,T00] ( 10, 17.04) int -> x22
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -22,7 +22,7 @@
; V11 tmp6 [V11,T07] ( 4, 4 ) long -> x0 single-def "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V13 tmp8 [V13,T13] ( 2, 1 ) ubyte -> x1 "Inline return value spill temp"
-; V14 tmp9 [V14,T09] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
+; V14 tmp9 [V14,T08] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
; V15 tmp10 [V15,T02] ( 6, 12 ) byref -> x20 single-def "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp"
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
@@ -52,7 +52,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
; byrRegs +[x1]
ldp x2, x0, [x1, #0x10]
cmp x0, x2
- beq G_M22286_IG12
+ beq G_M22286_IG15
add x2, x0, #1
str x2, [x1, #0x18]
ldrb w1, [x0]
@@ -60,12 +60,12 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
and w1, w1, #15
cmp w1, #5
ccmp w1, #9, z, gt
- beq G_M22286_IG13
+ beq G_M22286_IG16
;; size=48 bbWeight=1 PerfScore 13.50
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
uxtb w1, w1
cmp w1, #10
- bne G_M22286_IG13
+ bne G_M22286_IG16
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
ldr x1, [x20, #0x18]
@@ -87,9 +87,9 @@ G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
str x1, [x20, #0x18]
movn w1, #0xD1FFAB1E LSL #16
cmp w21, w1
- beq G_M22286_IG14
+ beq G_M22286_IG17
cmp w21, #0
- ble G_M22286_IG15
+ ble G_M22286_IG18
sxtw x1, w21
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -130,10 +130,10 @@ G_M22286_IG06: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=880000
cmp w22, w21
blt G_M22286_IG06
;; size=48 bbWeight=3.96 PerfScore 41.58
-G_M22286_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG07: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
; byrRegs -[x23]
b G_M22286_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
mov x0, x19
; byrRegs +[x0]
@@ -146,7 +146,7 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
; byrRegs -[x0]
ldr w14, [x20, #0x08]
cmp w22, w14
- bhs G_M22286_IG11
+ bhs G_M22286_IG14
add x23, x20, #16
; byrRegs +[x23]
add x14, x23, x22, LSL #3
@@ -160,25 +160,39 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
cmp w22, w21
blt G_M22286_IG08
;; size=64 bbWeight=0.04 PerfScore 0.62
-G_M22286_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG09: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cmp x0, #0
- csel x0, xzr, x20, ne
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M22286_IG10: ; bbWeight=1, epilog, nogc, extend
+ cbnz x0, G_M22286_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 7.92
+G_M22286_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ; byrRegs -[x19]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG11: ; 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
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
- ; byrRegs -[x19]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG13: ; 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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:OutOfBounds()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -186,7 +200,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -205,7 +219,7 @@ G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=48 bbWeight=0 PerfScore 0.00
-G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:InvalidCompressedInteger()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -213,7 +227,7 @@ G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -234,22 +248,25 @@ G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_unix #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 512, prolog size 24, PerfScore 106.45, instruction count 128, allocated bytes for code 512 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
+; Total bytes of code 536, prolog size 24, PerfScore 111.85, instruction count 134, allocated bytes for code 536 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 128 (0x00080) Actual length = 512 (0x000200)
+ Function Length : 134 (0x00086) Actual length = 536 (0x000218)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+12 (+6.25%) : 171429.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -10,14 +10,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -55,70 +55,79 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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 192, prolog size 8, PerfScore 56.64, instruction count 48, allocated bytes for code 192 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 204, prolog size 8, PerfScore 61.84, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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)
@@ -126,6 +135,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+12 (+6.25%) : 40476.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -10,14 +10,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -55,70 +55,79 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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 192, prolog size 8, PerfScore 56.64, instruction count 48, allocated bytes for code 192 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 204, prolog size 8, PerfScore 61.84, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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)
@@ -126,6 +135,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries_tests.run.osx.arm64.Release.mch
-16 (-7.84%) : 35489.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,119 +11,113 @@
;
; V00 arg0 [V00,T00] ( 8, 7.01) long -> x0 single-def
; V01 arg1 [V01,T02] ( 7, 5.42) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.55) long -> x19
-; V03 loc1 [V03,T03] ( 10, 7.26) long -> x2
-; V04 loc2 [V04,T01] ( 10, 8.40) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.55) long -> x2
+; V03 loc1 [V03,T03] ( 10, 7.26) long -> x3
+; V04 loc2 [V04,T01] ( 10, 8.40) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG12
+ cbz x1, G_M24157_IG14
;; size=4 bbWeight=1 PerfScore 1.00
G_M24157_IG03: ; bbWeight=1.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG10
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG12
;; size=12 bbWeight=1.01 PerfScore 7.10
G_M24157_IG04: ; bbWeight=1.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG14
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG10
;; size=12 bbWeight=1.01 PerfScore 4.54
G_M24157_IG05: ; bbWeight=1.28, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG12
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG14
;; size=12 bbWeight=1.28 PerfScore 5.77
G_M24157_IG06: ; bbWeight=1.23, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x08]
- cmp x4, x0
- beq G_M24157_IG12
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG14
;; size=12 bbWeight=1.23 PerfScore 5.53
G_M24157_IG07: ; bbWeight=1.14, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG12
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG14
;; size=12 bbWeight=1.14 PerfScore 5.12
G_M24157_IG08: ; bbWeight=0.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG12
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG14
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG05
;; size=28 bbWeight=0.80 PerfScore 5.61
G_M24157_IG09: ; bbWeight=0.51, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG14
+ cbz x3, G_M24157_IG12
;; size=4 bbWeight=0.51 PerfScore 0.51
-G_M24157_IG10: ; bbWeight=0.51, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG10: ; bbWeight=0.46, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG14
+ ;; size=12 bbWeight=0.46 PerfScore 2.08
+G_M24157_IG11: ; bbWeight=0.44, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG10
+ ;; size=16 bbWeight=0.44 PerfScore 1.09
+G_M24157_IG12: ; bbWeight=0.51, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- bne G_M24157_IG17
+ bne G_M24157_IG16
;; size=16 bbWeight=0.51 PerfScore 2.54
-G_M24157_IG11: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG13: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0.41 PerfScore 0.20
-G_M24157_IG12: ; bbWeight=0.90, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG14: ; bbWeight=0.90, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
;; size=4 bbWeight=0.90 PerfScore 0.45
-G_M24157_IG13: ; bbWeight=0.90, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG15: ; bbWeight=0.90, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.90 PerfScore 3.60
-G_M24157_IG14: ; bbWeight=0.46, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.90 PerfScore 1.80
+G_M24157_IG16: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG12
- ;; size=12 bbWeight=0.46 PerfScore 2.08
-G_M24157_IG15: ; bbWeight=0.44, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG14
- ;; size=16 bbWeight=0.44 PerfScore 1.09
-G_M24157_IG16: ; bbWeight=0.22, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG10
- ;; size=4 bbWeight=0.22 PerfScore 0.22
-G_M24157_IG17: ; bbWeight=0.10, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.10 PerfScore 0.45
-G_M24157_IG18: ; bbWeight=0.10, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG17: ; bbWeight=0.10, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.10 PerfScore 0.40
+ ;; size=8 bbWeight=0.10 PerfScore 0.20
-; Total bytes of code 204, prolog size 12, PerfScore 48.72, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 45.50, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -134,10 +128,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-16 (-7.84%) : 46393.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,118 +11,112 @@
;
; V00 arg0 [V00,T01] ( 8, 14.85) long -> x0 single-def
; V01 arg1 [V01,T03] ( 7, 5.15) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.48) long -> x19
-; V03 loc1 [V03,T02] ( 10, 13.24) long -> x2
-; V04 loc2 [V04,T00] ( 10, 19.90) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.48) long -> x2
+; V03 loc1 [V03,T02] ( 10, 13.24) long -> x3
+; V04 loc2 [V04,T00] ( 10, 19.90) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG17
+ cbz x1, G_M24157_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M24157_IG03: ; bbWeight=0.96, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG10
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG12
;; size=12 bbWeight=0.96 PerfScore 6.71
G_M24157_IG04: ; bbWeight=0.94, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG13
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG10
;; size=12 bbWeight=0.94 PerfScore 4.25
G_M24157_IG05: ; bbWeight=3.08, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG17
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG16
;; size=12 bbWeight=3.08 PerfScore 13.87
G_M24157_IG06: ; bbWeight=3.08, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x08]
- cmp x4, x0
- beq G_M24157_IG17
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG16
;; size=12 bbWeight=3.08 PerfScore 13.85
G_M24157_IG07: ; bbWeight=2.93, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG17
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG16
;; size=12 bbWeight=2.93 PerfScore 13.19
G_M24157_IG08: ; bbWeight=2.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG17
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG16
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG05
;; size=28 bbWeight=2.80 PerfScore 19.63
G_M24157_IG09: ; bbWeight=0.57, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG13
+ cbz x3, G_M24157_IG12
;; size=4 bbWeight=0.57 PerfScore 0.57
-G_M24157_IG10: ; bbWeight=0.62, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG10: ; bbWeight=0.52, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG16
+ ;; size=12 bbWeight=0.52 PerfScore 2.36
+G_M24157_IG11: ; bbWeight=0.47, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG10
+ ;; size=16 bbWeight=0.47 PerfScore 1.16
+G_M24157_IG12: ; bbWeight=0.62, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- beq G_M24157_IG16
+ beq G_M24157_IG15
;; size=16 bbWeight=0.62 PerfScore 3.10
-G_M24157_IG11: ; bbWeight=0.43, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG13: ; bbWeight=0.43, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.43 PerfScore 1.94
-G_M24157_IG12: ; bbWeight=0.43, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG14: ; bbWeight=0.43, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.43 PerfScore 1.73
-G_M24157_IG13: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG17
- ;; size=12 bbWeight=0.52 PerfScore 2.36
-G_M24157_IG14: ; bbWeight=0.47, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG13
- ;; size=16 bbWeight=0.47 PerfScore 1.16
-G_M24157_IG15: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG10
- ;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M24157_IG16: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.43 PerfScore 0.86
+G_M24157_IG15: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0.19 PerfScore 0.09
-G_M24157_IG17: ; bbWeight=0.57, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG16: ; bbWeight=0.57, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
;; size=4 bbWeight=0.57 PerfScore 0.28
-G_M24157_IG18: ; bbWeight=0.57, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG17: ; bbWeight=0.57, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.57 PerfScore 2.27
+ ;; size=8 bbWeight=0.57 PerfScore 1.14
-; Total bytes of code 204, prolog size 12, PerfScore 88.77, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 85.52, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -133,10 +127,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-16 (-7.84%) : 81041.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,121 +11,114 @@
;
; V00 arg0 [V00,T01] ( 8, 29.91) long -> x0 single-def
; V01 arg1 [V01,T03] ( 7, 5.02) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.85) long -> x19
-; V03 loc1 [V03,T02] ( 10, 23.90) long -> x2
-; V04 loc2 [V04,T00] ( 10, 41.49) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.85) long -> x2
+; V03 loc1 [V03,T02] ( 10, 23.90) long -> x3
+; V04 loc2 [V04,T00] ( 10, 41.49) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG15
+ cbz x1, G_M24157_IG17
;; size=4 bbWeight=1 PerfScore 1.00
G_M24157_IG03: ; bbWeight=1.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG11
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG13
;; size=12 bbWeight=1.02 PerfScore 7.11
G_M24157_IG04: ; bbWeight=1.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG17
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG11
;; size=12 bbWeight=1.02 PerfScore 4.57
G_M24157_IG05: ; bbWeight=6.88, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG15
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG17
;; size=12 bbWeight=6.88 PerfScore 30.95
G_M24157_IG06: ; bbWeight=6.88, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x08]
- cmp x4, x0
- beq G_M24157_IG15
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG17
;; size=12 bbWeight=6.88 PerfScore 30.95
G_M24157_IG07: ; bbWeight=6.68, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG15
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG17
;; size=12 bbWeight=6.68 PerfScore 30.05
G_M24157_IG08: ; bbWeight=6.67, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG15
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG17
;; size=12 bbWeight=6.67 PerfScore 30.03
G_M24157_IG09: ; bbWeight=6.67, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG05
;; size=16 bbWeight=6.67 PerfScore 16.69
G_M24157_IG10: ; bbWeight=0.81, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG17
+ cbz x3, G_M24157_IG13
;; size=4 bbWeight=0.81 PerfScore 0.81
-G_M24157_IG11: ; bbWeight=0.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG11: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG17
+ ;; size=12 bbWeight=0.01 PerfScore 0.03
+G_M24157_IG12: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG11
+ ;; size=16 bbWeight=0.01 PerfScore 0.02
+G_M24157_IG13: ; bbWeight=0.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- beq G_M24157_IG14
+ beq G_M24157_IG16
;; size=16 bbWeight=0.80 PerfScore 4.01
-G_M24157_IG12: ; bbWeight=0.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG14: ; bbWeight=0.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.80 PerfScore 3.58
-G_M24157_IG13: ; bbWeight=0.80, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG15: ; bbWeight=0.80, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.80 PerfScore 3.18
-G_M24157_IG14: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.80 PerfScore 1.59
+G_M24157_IG16: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0.01 PerfScore 0.00
-G_M24157_IG15: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG17: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
;; size=4 bbWeight=0.20 PerfScore 0.10
-G_M24157_IG16: ; bbWeight=0.20, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG18: ; bbWeight=0.20, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.20 PerfScore 0.82
-G_M24157_IG17: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG15
- ;; size=12 bbWeight=0.01 PerfScore 0.03
-G_M24157_IG18: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG17
- ;; size=16 bbWeight=0.01 PerfScore 0.02
-G_M24157_IG19: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG11
- ;; size=4 bbWeight=0.00 PerfScore 0.00
+ ;; size=8 bbWeight=0.20 PerfScore 0.41
-; Total bytes of code 204, prolog size 12, PerfScore 166.42, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 163.42, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -136,10 +129,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
+8 (+3.92%) : 100760.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 5.06) long -> x19 single-def
-; V01 arg1 [V01,T02] ( 5, 4 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 8, 5.23) long -> x19 single-def
+; V01 arg1 [V01,T02] ( 5, 4.17) ref -> x20 class-hnd single-def <System.Object>
; V02 loc0 [V02,T00] ( 18, 8.75) long -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -70,16 +70,12 @@ G_M64200_IG07: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=100
cbz x21, G_M64200_IG09
ldr x21, [x21, #0x18]
cmp x21, x19
- beq G_M64200_IG05
+ bne G_M64200_IG11
;; size=16 bbWeight=0.02 PerfScore 0.10
-G_M64200_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M64200_IG09
- ldr x21, [x21, #0x18]
- cmp x21, x19
- beq G_M64200_IG05
- cbnz x21, G_M64200_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M64200_IG09: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M64200_IG08: ; bbWeight=0.02, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ b G_M64200_IG05
+ ;; size=4 bbWeight=0.02 PerfScore 0.02
+G_M64200_IG09: ; bbWeight=0.17, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
mov x1, x20
; gcrRegs +[x1]
@@ -87,16 +83,25 @@ G_M64200_IG09: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M64200_IG10: ; bbWeight=0, epilog, nogc, extend
+ ;; size=24 bbWeight=0.17 PerfScore 0.92
+G_M64200_IG10: ; bbWeight=0.17, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0.17 PerfScore 0.83
+G_M64200_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x1]
+ cbz x21, G_M64200_IG09
+ ldr x21, [x21, #0x18]
+ cmp x21, x19
+ beq G_M64200_IG05
+ cbnz x21, G_M64200_IG03
+ b G_M64200_IG09
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 24, PerfScore 32.85, instruction count 51, allocated bytes for code 204 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 212, prolog size 24, PerfScore 34.62, instruction count 53, allocated bytes for code 212 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -107,7 +112,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
+8 (+3.92%) : 105332.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 5.24) long -> x19 single-def
-; V01 arg1 [V01,T02] ( 5, 4 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 8, 5.42) long -> x19 single-def
+; V01 arg1 [V01,T02] ( 5, 4.18) ref -> x20 class-hnd single-def <System.Object>
; V02 loc0 [V02,T00] ( 18, 9.44) long -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -50,7 +50,7 @@ G_M64200_IG03: ; bbWeight=1.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
beq G_M64200_IG05
;; size=12 bbWeight=1.50 PerfScore 6.75
G_M64200_IG04: ; bbWeight=0.71, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M64200_IG09
+ cbz x21, G_M64200_IG08
ldr x21, [x21, #0x18]
cmp x21, x19
bne G_M64200_IG07
@@ -67,19 +67,13 @@ G_M64200_IG06: ; bbWeight=1, epilog, nogc, extend
;; size=16 bbWeight=1 PerfScore 5.00
G_M64200_IG07: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- cbz x21, G_M64200_IG09
+ cbz x21, G_M64200_IG08
ldr x21, [x21, #0x18]
cmp x21, x19
- beq G_M64200_IG05
- ;; size=16 bbWeight=0.03 PerfScore 0.15
-G_M64200_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M64200_IG09
- ldr x21, [x21, #0x18]
- cmp x21, x19
- beq G_M64200_IG05
- cbnz x21, G_M64200_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M64200_IG09: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bne G_M64200_IG10
+ b G_M64200_IG05
+ ;; size=20 bbWeight=0.03 PerfScore 0.18
+G_M64200_IG08: ; bbWeight=0.18, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
mov x1, x20
; gcrRegs +[x1]
@@ -87,16 +81,25 @@ G_M64200_IG09: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M64200_IG10: ; bbWeight=0, epilog, nogc, extend
+ ;; size=24 bbWeight=0.18 PerfScore 1.00
+G_M64200_IG09: ; bbWeight=0.18, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0.18 PerfScore 0.91
+G_M64200_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x1]
+ cbz x21, G_M64200_IG08
+ ldr x21, [x21, #0x18]
+ cmp x21, x19
+ beq G_M64200_IG05
+ cbnz x21, G_M64200_IG03
+ b G_M64200_IG08
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 24, PerfScore 33.79, instruction count 51, allocated bytes for code 204 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 212, prolog size 24, PerfScore 35.73, instruction count 53, allocated bytes for code 212 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -107,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
+8 (+3.92%) : 128592.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 4.70) long -> x19 single-def
-; V01 arg1 [V01,T02] ( 5, 4 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 8, 4.77) long -> x19 single-def
+; V01 arg1 [V01,T02] ( 5, 4.07) ref -> x20 class-hnd single-def <System.Object>
; V02 loc0 [V02,T00] ( 18, 7.30) long -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -61,23 +61,13 @@ G_M64200_IG05: ; bbWeight=1, epilog, nogc, extend
;; size=16 bbWeight=1 PerfScore 5.00
G_M64200_IG06: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- cbz x21, G_M64200_IG08
+ cbz x21, G_M64200_IG07
ldr x21, [x21, #0x18]
cmp x21, x19
- beq G_M64200_IG04
- ;; size=16 bbWeight=0.20 PerfScore 1.10
-G_M64200_IG07: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M64200_IG08
- ldr x21, [x21, #0x18]
- cmp x21, x19
- beq G_M64200_IG04
- cbz x21, G_M64200_IG08
- ldr x21, [x21, #0x18]
- cmp x21, x19
- beq G_M64200_IG04
- cbnz x21, G_M64200_IG03
- ;; size=36 bbWeight=0 PerfScore 0.00
-G_M64200_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bne G_M64200_IG09
+ b G_M64200_IG04
+ ;; size=20 bbWeight=0.20 PerfScore 1.30
+G_M64200_IG07: ; bbWeight=0.07, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
mov x1, x20
; gcrRegs +[x1]
@@ -85,16 +75,29 @@ G_M64200_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
movk x2, #0xD1FFAB1E LSL #16
movk x2, #1 LSL #32
ldr x2, [x2]
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M64200_IG09: ; bbWeight=0, epilog, nogc, extend
+ ;; size=24 bbWeight=0.07 PerfScore 0.37
+G_M64200_IG08: ; bbWeight=0.07, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0.07 PerfScore 0.33
+G_M64200_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x1]
+ cbz x21, G_M64200_IG07
+ ldr x21, [x21, #0x18]
+ cmp x21, x19
+ beq G_M64200_IG04
+ cbz x21, G_M64200_IG07
+ ldr x21, [x21, #0x18]
+ cmp x21, x19
+ beq G_M64200_IG04
+ cbnz x21, G_M64200_IG03
+ b G_M64200_IG07
+ ;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 24, PerfScore 30.85, instruction count 51, allocated bytes for code 204 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 212, prolog size 24, PerfScore 31.75, instruction count 53, allocated bytes for code 212 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -105,7 +108,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
librariestestsnotieredcompilation.run.osx.arm64.Release.mch
-24 (-3.31%) : 168878.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
@@ -8,32 +8,33 @@
; 0 inlinees with PGO data; 3 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 26,731 ) ref -> x20 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
-; V01 arg1 [V01,T00] ( 26,754 ) ref -> x19 class-hnd single-def <System.Xml.XPath.XPathNavigator>
+; V00 this [V00,T00] ( 26,245.50) ref -> x19 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
+; V01 arg1 [V01,T01] ( 20,214 ) ref -> x20 class-hnd single-def <System.Xml.XPath.XPathNavigator>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T02] ( 6,559 ) int -> x21
+; V03 loc1 [V03,T04] ( 6,109.50) int -> x21
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref
-; V09 tmp5 [V09,T15] ( 3, 8 ) int -> x2
+; V09 tmp5 [V09,T13] ( 3, 8 ) int -> x2
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp7 [V11,T11] ( 2, 32 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
-; V12 tmp8 [V12,T12] ( 2, 32 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
-; V13 tmp9 [V13,T13] ( 2, 32 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
-; V14 tmp10 [V14,T06] ( 4, 64 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
+; V11 tmp7 [V11,T14] ( 2, 8 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
+; V12 tmp8 [V12,T15] ( 2, 8 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
+; V13 tmp9 [V13,T16] ( 2, 8 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
+; V14 tmp10 [V14,T11] ( 4, 16 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp12 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
+; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
; V18 tmp14 [V18,T08] ( 2, 64 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
; V19 tmp15 [V19,T09] ( 2, 64 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
; V20 tmp16 [V20,T03] ( 4,128 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref
-; V22 tmp18 [V22,T14] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V23 tmp19 [V23,T10] ( 3, 48 ) ref -> x0 "argument with side effect"
+; V22 tmp18 [V22,T10] ( 3, 24 ) ref -> x0 "argument with side effect"
+; V23 tmp19 [V23,T12] ( 3, 12 ) ref -> x0 "argument with side effect"
; V24 tmp20 [V24,T05] ( 3, 96 ) ref -> x0 "argument with side effect"
-; V25 cse0 [V25,T04] ( 9, 96 ) long -> x22 multi-def "CSE - aggressive"
+; V25 cse0 [V25,T06] ( 9, 78 ) long -> x23 multi-def "CSE - aggressive"
+; V26 cse1 [V26,T02] ( 10,146 ) long -> x22 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -43,21 +44,21 @@ G_M8478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
mov fp, sp
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
+ mov x20, x1
+ ; gcrRegs +[x20]
;; size=28 bbWeight=1 PerfScore 5.50
G_M8478_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ldr w21, [x20, #0x58]
+ ldr w21, [x19, #0x58]
;; size=4 bbWeight=1 PerfScore 3.00
G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x20, #0x58]
+ ldr w2, [x19, #0x58]
cmp w2, w21
cset x2, eq
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
@@ -68,26 +69,25 @@ G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
cbz w0, G_M8478_IG16
;; size=44 bbWeight=8 PerfScore 92.00
G_M8478_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x22, [x1, #0x60]
- ldr x1, [x22, #0x08]
+ ldr x22, [x20]
+ ldr x23, [x22, #0x60]
+ ldr x1, [x23, #0x08]
blr x1
; gcrRegs -[x0]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x68]
+ ldr x1, [x22, #0x68]
ldr x1, [x1, #0x38]
blr x1
; gcrRegs -[x0]
cbz w0, G_M8478_IG07
- ;; size=44 bbWeight=4 PerfScore 88.00
+ ;; size=40 bbWeight=4 PerfScore 76.00
G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
mov w2, wzr
movz x3, #0xD1FFAB1E // code for <unknown method>
@@ -96,26 +96,24 @@ G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x70]
+ ldr x1, [x22, #0x70]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG05
- ;; size=56 bbWeight=16 PerfScore 296.00
+ ;; size=52 bbWeight=16 PerfScore 248.00
G_M8478_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1, #0x08]
blr x1
; gcrRegs -[x0]
- ;; size=20 bbWeight=2 PerfScore 21.00
+ ;; size=16 bbWeight=2 PerfScore 15.00
G_M8478_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
beq G_M8478_IG09
@@ -128,9 +126,9 @@ G_M8478_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
mov w2, #1
;; size=4 bbWeight=2 PerfScore 1.00
G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNamespaces(System.Xml.XPath.XPathNavigator,int):this
movk x3, #0xD1FFAB1E LSL #16
@@ -138,11 +136,11 @@ G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr w0, [x20, #0x60]
+ ldr w0, [x19, #0x60]
cbz w0, G_M8478_IG12
;; size=36 bbWeight=4 PerfScore 42.00
G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteCachedNamespaces():this
movk x1, #0xD1FFAB1E LSL #16
@@ -152,7 +150,7 @@ G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
; gcrRegs -[x0]
;; size=24 bbWeight=2 PerfScore 12.00
G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x20, #0x10]
+ ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x98]
@@ -160,24 +158,23 @@ G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
mov w0, #2
- str w0, [x20, #0x5C]
- mov x0, x19
+ str w0, [x19, #0x5C]
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG03
- ;; size=52 bbWeight=4 PerfScore 104.00
-G_M8478_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ;; size=48 bbWeight=4 PerfScore 92.00
+G_M8478_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
bne G_M8478_IG15
- ;; size=16 bbWeight=2 PerfScore 10.00
-G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M8478_IG14: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteEndElement():this
movk x1, #0xD1FFAB1E LSL #16
@@ -186,26 +183,26 @@ G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
b G_M8478_IG16
- ;; size=28 bbWeight=8 PerfScore 56.00
-G_M8478_IG15: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ ;; size=28 bbWeight=2 PerfScore 14.00
+G_M8478_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x22, #0x28]
+ ldr x1, [x23, #0x28]
blr x1
- mov x23, x0
- ; gcrRegs +[x23]
- mov x0, x19
- ldr x1, [x22, #0x10]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ mov x0, x20
+ ldr x1, [x23, #0x10]
blr x1
mov x24, x0
; gcrRegs +[x24]
- mov x0, x19
- ldr x1, [x22, #0x20]
+ mov x0, x20
+ ldr x1, [x23, #0x20]
blr x1
mov x3, x0
; gcrRegs +[x3]
- ldr x0, [x20, #0x10]
- mov x1, x23
+ ldr x0, [x19, #0x10]
+ mov x1, x22
...
-8 (-2.11%) : 26291.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 this [V00,T07] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Dynamic.DynamicObject+MetaDynamic>
-; V01 arg1 [V01,T04] ( 6, 6.03) ref -> x19 class-hnd single-def <System.Reflection.MethodInfo>
+; V01 arg1 [V01,T04] ( 6, 8 ) ref -> x19 class-hnd single-def <System.Reflection.MethodInfo>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
; V03 loc1 [V03,T13] ( 3, 2.50) ref -> x0 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T01] ( 5, 17 ) int -> x20
@@ -22,8 +22,8 @@
; V11 tmp5 [V11,T10] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
; V12 tmp6 [V12,T15] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
; V13 tmp7 [V13,T05] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.Dynamic.DynamicObject>
-; V14 tmp8 [V14,T14] ( 2, 2.03) ubyte -> x0 "Inline return value spill temp"
-; V15 tmp9 [V15,T03] ( 5, 8.18) ref -> x0 class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
+; V14 tmp8 [V14,T14] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V15 tmp9 [V15,T03] ( 5, 16.06) ref -> x0 class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
; V16 tmp10 [V16,T11] ( 2, 4 ) ref -> x20 single-def "argument with side effect"
; V17 tmp11 [V17,T12] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V18 cse0 [V18,T09] ( 2, 4.50) byref -> x22 hoist "CSE - aggressive"
@@ -31,7 +31,7 @@
;
; Lcl frame size = 8
-G_M46876_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M46876_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]
@@ -88,7 +88,7 @@ G_M46876_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
mov w20, wzr
ldr w21, [x0, #0x08]
cmp w21, #0
- ble G_M46876_IG16
+ ble G_M46876_IG15
;; size=80 bbWeight=1 PerfScore 24.50
G_M46876_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
add x22, x0, #16
@@ -130,7 +130,7 @@ G_M46876_IG10: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=400000
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- beq G_M46876_IG15
+ beq G_M46876_IG14
;; size=40 bbWeight=4 PerfScore 54.00
G_M46876_IG11: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
@@ -142,38 +142,12 @@ G_M46876_IG11: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=400000
blr x1
; gcrRegs -[x23]
cmp x0, x19
- beq G_M46876_IG19
+ beq G_M46876_IG17
;; size=28 bbWeight=2 PerfScore 24.00
G_M46876_IG12: ; bbWeight=0.03, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
- cbz x0, G_M46876_IG15
+ cbz x0, G_M46876_IG14
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M46876_IG13: ; bbWeight=0.03, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref
- b G_M46876_IG18
- ;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M46876_IG14: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x0]
- cbnz w0, G_M46876_IG19
- ;; size=4 bbWeight=2 PerfScore 2.00
-G_M46876_IG15: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- add w20, w20, #1
- cmp w21, w20
- bgt G_M46876_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M46876_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x22]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M46876_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
- ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M46876_IG18: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref
- ; gcrRegs +[x0 x19]
- ; byrRegs +[x22]
+G_M46876_IG13: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
mov x1, x19
; gcrRegs +[x1]
ldr x2, [x0]
@@ -181,14 +155,29 @@ G_M46876_IG18: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=800
ldr x2, [x2, #0x10]
blr x2
; gcrRegs -[x0-x1]
- b G_M46876_IG14
- ;; size=24 bbWeight=0.03 PerfScore 0.35
-G_M46876_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M46876_IG17
+ ;; size=24 bbWeight=2 PerfScore 23.00
+G_M46876_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ add w20, w20, #1
+ cmp w21, w20
+ bgt G_M46876_IG07
+ ;; size=12 bbWeight=4 PerfScore 8.00
+G_M46876_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x22]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M46876_IG16: ; 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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M46876_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M46876_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M46876_IG18: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -196,7 +185,7 @@ G_M46876_IG20: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 380, prolog size 20, PerfScore 158.35, instruction count 95, allocated bytes for code 380 (MethodHash=33b248e3) for method System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
+; Total bytes of code 372, prolog size 20, PerfScore 178.97, instruction count 93, allocated bytes for code 372 (MethodHash=33b248e3) for method System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -207,7 +196,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
+ Function Length : 93 (0x0005d) Actual length = 372 (0x000174)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-8 (-1.52%) : 53842.dasm - System.Diagnostics.Activity+BaggageLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.String]):this (FullOpts)
@@ -85,7 +85,7 @@ G_M48602_IG05: ; bbWeight=0.50, gcVars=0000000000000020 {V00}, gcrefRegs=
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M48602_IG06: ; bbWeight=0.50, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
ldrb w1, [fp, #0x18] // [V03 loc1]
- cbnz w1, G_M48602_IG14
+ cbnz w1, G_M48602_IG15
add x1, fp, #24 // [V03 loc1]
bl <unknown method>
; gcrRegs -[x0]
@@ -110,7 +110,7 @@ G_M48602_IG07: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs +[x0]
ldr x21, [x0, #0x08]
; gcrRegs +[x21]
- cbz x21, G_M48602_IG18
+ cbz x21, G_M48602_IG19
;; size=12 bbWeight=0.50 PerfScore 3.00
G_M48602_IG08: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
@@ -119,30 +119,47 @@ G_M48602_IG08: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
mov x2, x19
; gcrRegs +[x2]
cmp x22, x2
- beq G_M48602_IG19
+ beq G_M48602_IG14
;; size=16 bbWeight=4 PerfScore 20.00
G_M48602_IG09: ; bbWeight=1.71, gcrefRegs=780004 {x2 x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- cbz x22, G_M48602_IG17
+ cbz x22, G_M48602_IG18
;; size=4 bbWeight=1.71 PerfScore 1.71
G_M48602_IG10: ; bbWeight=1.70, gcrefRegs=780004 {x2 x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- cbz x2, G_M48602_IG17
+ cbz x2, G_M48602_IG18
;; size=4 bbWeight=1.70 PerfScore 1.70
G_M48602_IG11: ; bbWeight=1.70, gcrefRegs=780004 {x2 x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
ldr w23, [x22, #0x08]
ldr w2, [x2, #0x08]
; gcrRegs -[x2]
cmp w23, w2
- bne G_M48602_IG17
+ bne G_M48602_IG18
;; size=16 bbWeight=1.70 PerfScore 12.75
G_M48602_IG12: ; bbWeight=1.07, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
cmp w2, w23
- beq G_M48602_IG16
+ beq G_M48602_IG17
;; size=8 bbWeight=1.07 PerfScore 1.60
G_M48602_IG13: ; bbWeight=1.07, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M48602_IG15
+ b G_M48602_IG16
;; size=4 bbWeight=1.07 PerfScore 1.07
-G_M48602_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x22]
+G_M48602_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x22]
+ add x14, x21, #16
+ ; byrRegs +[x14]
+ mov x15, x19
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15 x19]
+ ; byrRegs -[x14]
+ add x14, x21, #24
+ ; byrRegs +[x14]
+ mov x15, x20
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x15 x20-x21]
+ ; byrRegs -[x14]
+ b G_M48602_IG20
+ ;; size=28 bbWeight=0.50 PerfScore 2.50
+G_M48602_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x1, #0xD1FFAB1E // code for System.Threading.Monitor:ThrowLockTakenException()
movk x1, #0xD1FFAB1E LSL #16
movk x1, #2 LSL #32
@@ -151,7 +168,7 @@ G_M48602_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M48602_IG15: ; bbWeight=1.07, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M48602_IG16: ; bbWeight=1.07, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
; gcrRegs +[x19-x22]
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
@@ -166,7 +183,7 @@ G_M48602_IG15: ; bbWeight=1.07, gcrefRegs=780000 {x19 x20 x21 x22}, byref
; gcrRegs -[x0]
; gcr arg pop 0
;; size=36 bbWeight=1.07 PerfScore 8.01
-G_M48602_IG16: ; bbWeight=2, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M48602_IG17: ; bbWeight=2, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
add x3, x22, #12
; byrRegs +[x3]
lsl w2, w23, #1
@@ -184,13 +201,13 @@ G_M48602_IG16: ; bbWeight=2, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
; gcrRegs -[x22]
; byrRegs -[x0-x1]
; gcr arg pop 0
- cbnz w0, G_M48602_IG19
+ cbnz w0, G_M48602_IG14
;; size=44 bbWeight=2 PerfScore 19.00
-G_M48602_IG17: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M48602_IG18: ; bbWeight=4, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr x21, [x21, #0x08]
cbnz x21, G_M48602_IG08
;; size=8 bbWeight=4 PerfScore 16.00
-G_M48602_IG18: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M48602_IG19: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -228,40 +245,18 @@ G_M48602_IG18: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
bl CORINFO_HELP_ASSIGN_REF
; gcrRegs -[x0 x15]
; byrRegs -[x14]
- b G_M48602_IG20
- ;; size=72 bbWeight=0.50 PerfScore 8.00
-G_M48602_IG19: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1] +[x19-x21]
+ ;; size=68 bbWeight=0.50 PerfScore 7.50
+G_M48602_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1]
+ ldrb w1, [fp, #0x18] // [V03 loc1]
+ cbz w1, G_M48602_IG21
ldr x0, [fp, #0x10] // [V00 this]
; gcrRegs +[x0]
- add x14, x21, #16
- ; byrRegs +[x14]
- mov x15, x19
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x19]
- ; byrRegs -[x14]
- add x14, x21, #24
- ; byrRegs +[x14]
- mov x15, x20
- ; gcrRegs +[x15]
- bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x15 x20-x21]
- ; byrRegs -[x14]
- mov x1, x0
- ; gcrRegs +[x1]
- ;; size=32 bbWeight=0.50 PerfScore 3.25
-G_M48602_IG20: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
- ldrb w0, [fp, #0x18] // [V03 loc1]
- cbz w0, G_M48602_IG21
- mov x0, x1
- ; gcrRegs +[x0]
; GC ptr vars -{V00}
bl <unknown method>
- ; gcrRegs -[x0-x1]
+ ; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=16 bbWeight=0.50 PerfScore 2.25
+ ;; size=16 bbWeight=0.50 PerfScore 3.00
G_M48602_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldr x23, [sp, #0x48]
ldp x21, x22, [sp, #0x38]
@@ -296,7 +291,7 @@ G_M48602_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ret lr
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 528, prolog size 40, PerfScore 124.34, instruction count 132, allocated bytes for code 528 (MethodHash=301a4225) for method System.Diagnostics.Activity+BaggageLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.String]):this (FullOpts)
+; Total bytes of code 520, prolog size 40, PerfScore 123.84, instruction count 130, allocated bytes for code 520 (MethodHash=301a4225) for method System.Diagnostics.Activity+BaggageLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.String]):this (FullOpts)
; ============================================================
Unwind Info:
@@ -307,7 +302,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 117 (0x00075) Actual length = 468 (0x0001d4)
+ Function Length : 115 (0x00073) Actual length = 460 (0x0001cc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+40 (+2.62%) : 287755.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2871_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,63 +8,63 @@
; 6 inlinees with PGO data; 24 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 38,182.75) ref -> x19 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V00 arg0 [V00,T00] ( 38,154.75) ref -> x19 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T77] ( 6, 5.00) int -> x23 single-def
-; V04 loc2 [V04,T11] ( 21, 51.50) int -> registers
+; V03 loc1 [V03,T66] ( 6, 5.00) int -> x23 single-def
+; V04 loc2 [V04,T06] ( 21, 51.50) int -> registers
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T06] ( 18, 89 ) int -> x24
-; V07 loc5 [V07,T25] ( 7, 27 ) int -> x27
-; V08 loc6 [V08,T38] ( 4, 18.00) int -> x22
-; V09 loc7 [V09,T17] ( 8, 36.50) int -> x22
-; V10 loc8 [V10,T20] ( 2, 36 ) int -> [fp+0x2C]
-; V11 loc9 [V11,T01] ( 8,128 ) int -> [fp+0x28]
-; V12 loc10 [V12,T07] ( 3, 80 ) ushort -> x0
+; V06 loc4 [V06,T04] ( 18, 89 ) int -> x24
+; V07 loc5 [V07,T15] ( 7, 27 ) int -> x27
+; V08 loc6 [V08,T28] ( 4, 18.00) int -> x22
+; V09 loc7 [V09,T12] ( 8, 33 ) int -> x22
+; V10 loc8 [V10,T68] ( 2, 4.50) int -> [fp+0x2C]
+; V11 loc9 [V11,T16] ( 8, 26.50) int -> [fp+0x28]
+; V12 loc10 [V12,T50] ( 3, 10 ) ushort -> x0
;* V13 loc11 [V13 ] ( 0, 0 ) ushort -> zero-ref
-; V14 loc12 [V14 ] ( 3, 48 ) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
+; V14 loc12 [V14 ] ( 3, 6 ) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T14] ( 3, 48 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
-; V17 tmp2 [V17,T22] ( 2, 32 ) int -> x1 "Strict ordering of exceptions for Array store"
+; V16 tmp1 [V16,T07] ( 3, 48 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V17 tmp2 [V17,T13] ( 2, 32 ) int -> x1 "Strict ordering of exceptions for Array store"
;* V18 tmp3 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V19 tmp4 [V19,T73] ( 3, 6.00) int -> x26 "Inlining Arg"
-; V20 tmp5 [V20,T80] ( 2, 4.00) byref -> x25 single-def "Inlining Arg"
+; V19 tmp4 [V19,T63] ( 3, 6.00) int -> x26 "Inlining Arg"
+; V20 tmp5 [V20,T70] ( 2, 4.00) byref -> x25 single-def "Inlining Arg"
;* V21 tmp6 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp7 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp8 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V24 tmp9 [V24,T32] ( 3, 24.00) int -> x26 "Inlining Arg"
-; V25 tmp10 [V25,T45] ( 2, 16.00) byref -> x25 "Inlining Arg"
+; V24 tmp9 [V24,T23] ( 3, 24.00) int -> x26 "Inlining Arg"
+; V25 tmp10 [V25,T31] ( 2, 16.00) byref -> x25 "Inlining Arg"
;* V26 tmp11 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp12 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V28 tmp13 [V28,T24] ( 4, 28.00) int -> [fp+0x14] "Inlining Arg"
-; V29 tmp14 [V29,T18] ( 5, 36.00) int -> [fp+0x10] "Inlining Arg"
+; V28 tmp13 [V28,T14] ( 4, 28.00) int -> [fp+0x14] "Inlining Arg"
+; V29 tmp14 [V29,T10] ( 5, 36.00) int -> [fp+0x10] "Inlining Arg"
;* V30 tmp15 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V31 tmp16 [V31,T44] ( 4, 16 ) int -> x0 "Inline stloc first use temp"
-; V32 tmp17 [V32,T26] ( 3, 24 ) ref -> x3 class-hnd "impAppendStmt" <<unknown class>>
+; V31 tmp16 [V31,T30] ( 4, 16 ) int -> x0 "Inline stloc first use temp"
+; V32 tmp17 [V32,T17] ( 3, 24 ) ref -> x3 class-hnd "impAppendStmt" <<unknown class>>
;* V33 tmp18 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp19 [V34,T56] ( 3, 12.00) int -> x26 "Inlining Arg"
-; V35 tmp20 [V35,T61] ( 2, 8.00) byref -> x25 "Inlining Arg"
+; V34 tmp19 [V34,T47] ( 3, 12.00) int -> x26 "Inlining Arg"
+; V35 tmp20 [V35,T53] ( 2, 8.00) byref -> x25 "Inlining Arg"
;* V36 tmp21 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp22 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V38 tmp23 [V38,T15] ( 3, 48 ) int -> x2 "Inline stloc first use temp"
-; V39 tmp24 [V39,T09] ( 4, 64 ) int -> x3 "Inline stloc first use temp"
-; V40 tmp25 [V40,T02] ( 3, 96 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
+; V38 tmp23 [V38,T08] ( 3, 48 ) int -> x2 "Inline stloc first use temp"
+; V39 tmp24 [V39,T05] ( 4, 64 ) int -> x3 "Inline stloc first use temp"
+; V40 tmp25 [V40,T01] ( 3, 96 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
;* V41 tmp26 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V42 tmp27 [V42,T03] ( 3, 96 ) byref -> x2 "dup spill"
-;* V43 tmp28 [V43,T89] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V44 tmp29 [V44,T27] ( 3, 24 ) ref -> x1 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V45 tmp30 [V45,T50] ( 3, 12 ) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V46 tmp31 [V46,T59] ( 3, 8 ) int -> x22 "Inline return value spill temp"
-;* V47 tmp32 [V47,T65] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V48 tmp33 [V48,T85] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V49 tmp34 [V49,T48] ( 4, 12 ) int -> x22 "Inline stloc first use temp"
-; V50 tmp35 [V50,T60] ( 3, 8 ) int -> x4 "Inline return value spill temp"
-;* V51 tmp36 [V51,T66] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V52 tmp37 [V52,T86] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V53 tmp38 [V53,T49] ( 4, 12 ) int -> x4 "Inline stloc first use temp"
+; V42 tmp27 [V42,T02] ( 3, 96 ) byref -> x2 "dup spill"
+;* V43 tmp28 [V43,T78] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V44 tmp29 [V44,T18] ( 3, 24 ) ref -> x1 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+; V45 tmp30 [V45,T40] ( 3, 12 ) ref -> x2 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V46 tmp31 [V46,T52] ( 3, 8 ) int -> x22 "Inline return value spill temp"
+;* V47 tmp32 [V47,T58] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V48 tmp33 [V48,T77] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V49 tmp34 [V49,T39] ( 4, 12 ) int -> x22 "Inline stloc first use temp"
+; V50 tmp35 [V50,T87] ( 3, 1.50) int -> x4 "Inline return value spill temp"
+;* V51 tmp36 [V51,T89] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V52 tmp37 [V52,T91] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V53 tmp38 [V53,T83] ( 4, 2 ) int -> x4 "Inline stloc first use temp"
;* V54 tmp39 [V54 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V55 tmp40 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-; V56 tmp41 [V56,T10] ( 2, 64 ) ushort -> x1 ld-addr-op "Inlining Arg"
+; V56 tmp41 [V56,T55] ( 2, 8 ) ushort -> x1 ld-addr-op "Inlining Arg"
;* V57 tmp42 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V58 tmp43 [V58 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V59 tmp44 [V59 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
@@ -75,72 +75,70 @@
;* V64 tmp49 [V64 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V65 tmp50 [V65 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V66 tmp51 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V67 tmp52 [V67,T79] ( 4, 4.00) int -> x21 "Inlining Arg"
-; V68 tmp53 [V68,T78] ( 5, 5.00) int -> x20 "Inlining Arg"
+; V67 tmp52 [V67,T69] ( 4, 4.00) int -> x21 "Inlining Arg"
+; V68 tmp53 [V68,T67] ( 5, 5.00) int -> x20 "Inlining Arg"
;* V69 tmp54 [V69 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V70 tmp55 [V70,T91] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
-; V71 tmp56 [V71,T90] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V72 tmp57 [V72,T74] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
-; V73 tmp58 [V73,T58] ( 4, 8 ) int -> x2 "Inline stloc first use temp"
-; V74 tmp59 [V74,T51] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" <<unknown class>>
+; V70 tmp55 [V70,T84] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
+; V71 tmp56 [V71,T79] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V72 tmp57 [V72,T64] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
+; V73 tmp58 [V73,T51] ( 4, 8 ) int -> x2 "Inline stloc first use temp"
+; V74 tmp59 [V74,T41] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" <<unknown class>>
;* V75 tmp60 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V76 tmp61 [V76,T52] ( 3, 12 ) byref -> x1 "dup spill"
-; V77 tmp62 [V77,T81] ( 2, 2.00) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V78 tmp63 [V78,T83] ( 2, 2.00) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V79 tmp64 [V79,T16] ( 5, 40.00) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V80 tmp65 [V80,T13] ( 10, 48 ) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V81 tmp66 [V81,T08] ( 11, 79 ) byref -> x25 "field V05._reference (fldOffset=0x0)" P-INDEP
-; V82 tmp67 [V82,T12] ( 6, 51 ) int -> x26 "field V05._length (fldOffset=0x8)" P-INDEP
-; V83 tmp68 [V83 ] ( 2, 32 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V14._reference (fldOffset=0x0)" P-DEP
-; V84 tmp69 [V84 ] ( 2, 32 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V14._length (fldOffset=0x8)" P-DEP
-; V85 tmp70 [V85,T92] ( 2, 2.00) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
-; V86 tmp71 [V86,T93] ( 2, 2.00) int -> x26 single-def "field V18._length (fldOffset=0x8)" P-INDEP
-; V87 tmp72 [V87,T62] ( 2, 8.00) byref -> x25 "field V23._reference (fldOffset=0x0)" P-INDEP
-; V88 tmp73 [V88,T63] ( 2, 8.00) int -> x26 "field V23._length (fldOffset=0x8)" P-INDEP
-; V89 tmp74 [V89,T82] ( 2, 4.00) byref -> x25 "field V33._reference (fldOffset=0x0)" P-INDEP
-; V90 tmp75 [V90,T84] ( 2, 4.00) int -> x26 "field V33._length (fldOffset=0x8)" P-INDEP
-; V91 tmp76 [V91,T21] ( 2, 32 ) byref -> x0 "field V55._reference (fldOffset=0x0)" P-INDEP
-; V92 tmp77 [V92,T23] ( 2, 32 ) int -> x2 "field V55._length (fldOffset=0x8)" P-INDEP
+; V76 tmp61 [V76,T42] ( 3, 12 ) byref -> x1 "dup spill"
+; V77 tmp62 [V77,T71] ( 2, 2.00) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V78 tmp63 [V78,T74] ( 2, 2.00) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V79 tmp64 [V79,T38] ( 5, 12.00) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V80 tmp65 [V80,T27] ( 10, 20.00) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V81 tmp66 [V81,T09] ( 11, 37 ) byref -> x25 "field V05._reference (fldOffset=0x0)" P-INDEP
+; V82 tmp67 [V82,T26] ( 6, 23 ) int -> x26 "field V05._length (fldOffset=0x8)" P-INDEP
+; V83 tmp68 [V83 ] ( 2, 4 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V14._reference (fldOffset=0x0)" P-DEP
+; V84 tmp69 [V84 ] ( 2, 4 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V14._length (fldOffset=0x8)" P-DEP
+; V85 tmp70 [V85,T85] ( 2, 2.00) byref -> x25 single-def "field V18._reference (fldOffset=0x0)" P-INDEP
+; V86 tmp71 [V86,T86] ( 2, 2.00) int -> x26 single-def "field V18._length (fldOffset=0x8)" P-INDEP
+; V87 tmp72 [V87,T54] ( 2, 8.00) byref -> x25 "field V23._reference (fldOffset=0x0)" P-INDEP
+; V88 tmp73 [V88,T56] ( 2, 8.00) int -> x26 "field V23._length (fldOffset=0x8)" P-INDEP
+; V89 tmp74 [V89,T72] ( 2, 4.00) byref -> x25 "field V33._reference (fldOffset=0x0)" P-INDEP
+; V90 tmp75 [V90,T75] ( 2, 4.00) int -> x26 "field V33._length (fldOffset=0x8)" P-INDEP
+; V91 tmp76 [V91,T73] ( 2, 4 ) byref -> x0 "field V55._reference (fldOffset=0x0)" P-INDEP
+; V92 tmp77 [V92,T76] ( 2, 4 ) int -> x2 "field V55._length (fldOffset=0x8)" P-INDEP
;* V93 tmp78 [V93 ] ( 0, 0 ) byref -> zero-ref "field V57._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp79 [V94 ] ( 0, 0 ) int -> zero-ref "field V57._length (fldOffset=0x8)" P-INDEP
;* V95 tmp80 [V95 ] ( 0, 0 ) byref -> zero-ref "field V61._reference (fldOffset=0x0)" P-INDEP
;* V96 tmp81 [V96 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
;* V97 tmp82 [V97 ] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP
;* V98 tmp83 [V98 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
-;* V99 tmp84 [V99,T46] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V100 tmp85 [V100,T28] ( 3, 24 ) ref -> x1 "arr expr"
-; V101 tmp86 [V101,T33] ( 3, 24 ) int -> x3 "index expr"
-; V102 tmp87 [V102,T29] ( 3, 24 ) ref -> x1 "arr expr"
-;* V103 tmp88 [V103,T67] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V104 tmp89 [V104,T71] ( 0, 0 ) int -> zero-ref "index expr"
-;* V105 tmp90 [V105,T68] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V106 tmp91 [V106,T87] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V107 tmp92 [V107,T69] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V108 tmp93 [V108,T34] ( 3, 24 ) int -> x2 "index expr"
-;* V109 tmp94 [V109,T70] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V110 tmp95 [V110,T88] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V111 tmp96 [V111,T53] ( 3, 12 ) ref -> x2 "arr expr"
-; V112 tmp97 [V112,T54] ( 3, 12.00) ref -> x0 "arr expr"
-; V113 tmp98 [V113,T55] ( 3, 12.00) ref -> x1 "arr expr"
-; V114 tmp99 [V114,T04] ( 3, 96 ) ref -> x3 "arr expr"
-; V115 cse0 [V115,T57] ( 3, 12 ) int -> x22 "CSE - moderate"
-; V116 cse1 [V116,T37] ( 4, 16 ) int -> x2 "CSE - moderate"
-; V117 cse2 [V117,T36] ( 2, 8 ) ref -> x1 "CSE - moderate"
-; V118 cse3 [V118,T19] ( 4, 36 ) ref -> x1 "CSE - moderate"
-; V119 cse4 [V119,T41] ( 2, 8 ) ref -> x1 "CSE - moderate"
-; V120 cse5 [V120,T42] ( 2, 8 ) ref -> x1 "CSE - moderate"
-; V121 cse6 [V121,T43] ( 2, 8 ) ref -> x2 "CSE - moderate"
-; V122 cse7 [V122,T30] ( 2, 16 ) ref -> x0 "CSE - moderate"
-; V123 cse8 [V123,T72] ( 3, 6.25) ref -> x0 hoist "CSE - conservative"
-; V124 cse9 [V124,T75] ( 3, 6 ) int -> x3 "CSE - conservative"
-; V125 cse10 [V125,T76] ( 3, 6 ) int -> x2 "CSE - conservative"
-; V126 cse11 [V126,T05] ( 3, 96 ) int -> x1 "CSE - aggressive"
-; V127 cse12 [V127,T64] ( 2, 8 ) int -> x3 "CSE - moderate"
-; V128 cse13 [V128,T40] ( 5, 16 ) int -> x0 "CSE - moderate"
-; V129 cse14 [V129,T39] ( 5, 16 ) byref -> x1 "CSE - moderate"
-; V130 cse15 [V130,T35] ( 3, 24 ) int -> x2 "CSE - moderate"
-; V131 cse16 [V131,T31] ( 3, 24 ) byref -> x0 "CSE - moderate"
-; V132 cse17 [V132,T47] ( 12, 15.00) ref -> x1 multi-def "CSE - moderate"
+;* V99 tmp84 [V99,T32] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V100 tmp85 [V100,T19] ( 3, 24 ) ref -> x3 "arr expr"
+; V101 tmp86 [V101,T24] ( 3, 24 ) int -> x0 "index expr"
+; V102 tmp87 [V102,T20] ( 3, 24 ) ref -> x1 "arr expr"
+;* V103 tmp88 [V103,T59] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V104 tmp89 [V104,T61] ( 0, 0 ) int -> zero-ref "index expr"
+;* V105 tmp90 [V105,T60] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V106 tmp91 [V106,T43] ( 3, 12 ) ref -> x3 "arr expr"
+; V107 tmp92 [V107,T80] ( 3, 3 ) ref -> x3 "arr expr"
+; V108 tmp93 [V108,T82] ( 3, 3 ) int -> x2 "index expr"
+;* V109 tmp94 [V109,T90] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V110 tmp95 [V110,T81] ( 3, 3 ) ref -> x1 "arr expr"
+; V111 tmp96 [V111,T44] ( 3, 12 ) ref -> x2 "arr expr"
+; V112 tmp97 [V112,T45] ( 3, 12.00) ref -> x0 "arr expr"
+; V113 tmp98 [V113,T46] ( 3, 12.00) ref -> x1 "arr expr"
+; V114 tmp99 [V114,T03] ( 3, 96 ) ref -> x3 "arr expr"
+; V115 cse0 [V115,T48] ( 3, 12 ) int -> x22 "CSE - moderate"
+; V116 cse1 [V116,T29] ( 4, 12.50) int -> x2 "CSE - moderate"
+; V117 cse2 [V117,T34] ( 5, 11 ) ref -> x1 "CSE - moderate"
+; V118 cse3 [V118,T88] ( 3, 1.50) int -> x2 "CSE - conservative"
+; V119 cse4 [V119,T11] ( 4, 36 ) ref -> x1 "CSE - aggressive"
+; V120 cse5 [V120,T21] ( 2, 16 ) ref -> x0 "CSE - moderate"
+; V121 cse6 [V121,T62] ( 3, 6.25) ref -> x0 hoist "CSE - moderate"
+; V122 cse7 [V122,T35] ( 2, 8 ) ref -> x1 "CSE - moderate"
+; V123 cse8 [V123,T36] ( 2, 8 ) ref -> x1 "CSE - moderate"
+; V124 cse9 [V124,T37] ( 2, 8 ) ref -> x2 "CSE - moderate"
+; V125 cse10 [V125,T65] ( 3, 6 ) int -> x0 "CSE - moderate"
+; V126 cse11 [V126,T57] ( 2, 8 ) int -> x3 "CSE - moderate"
+; V127 cse12 [V127,T25] ( 3, 24 ) int -> x2 "CSE - moderate"
+; V128 cse13 [V128,T22] ( 3, 24 ) byref -> x0 "CSE - moderate"
+; V129 cse14 [V129,T33] ( 12, 15.00) ref -> x1 multi-def "CSE - moderate"
+; V130 cse15 [V130,T49] ( 3, 12 ) int -> x1 "CSE - moderate"
;
; Lcl frame size = 32
@@ -165,7 +163,7 @@ G_M45979_IG02: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1
sxtw w23, w22
mov w24, wzr
cmp w23, w21
- bhi G_M45979_IG44
+ bhi G_M45979_IG45
;; size=28 bbWeight=1.00 PerfScore 6.50
G_M45979_IG03: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
; byrRegs -[x1]
@@ -226,50 +224,50 @@ G_M45979_IG08: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x2
sub w1, w1, w2
ldr w2, [x0, #0x08]
cmp w24, w2
- bhs G_M45979_IG43
+ bhs G_M45979_IG44
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
...
+36 (+2.65%) : 285908.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2318_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -11,128 +11,126 @@
; V00 arg0 [V00,T00] ( 36,159.00) ref -> x19 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T75] ( 6, 5.00) int -> x23 single-def
-; V04 loc2 [V04,T08] ( 21, 59.50) int -> registers
+; V03 loc1 [V03,T66] ( 6, 5.00) int -> x23 single-def
+; V04 loc2 [V04,T06] ( 21, 59.50) int -> registers
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T02] ( 18,105.00) int -> x24
-; V07 loc5 [V07,T16] ( 6, 41.00) int -> x27
-; V08 loc6 [V08,T39] ( 4, 18.00) int -> x22
-; V09 loc7 [V09,T17] ( 8, 40.50) int -> registers
-; V10 loc8 [V10,T20] ( 2, 36 ) int -> x1
-; V11 loc9 [V11,T01] ( 7,112 ) int -> x0
+; V06 loc4 [V06,T01] ( 18,105.00) int -> x24
+; V07 loc5 [V07,T10] ( 6, 41.00) int -> x27
+; V08 loc6 [V08,T33] ( 4, 18.00) int -> x22
+; V09 loc7 [V09,T12] ( 8, 37.00) int -> registers
+; V10 loc8 [V10,T68] ( 2, 4.50) int -> x1
+; V11 loc9 [V11,T18] ( 7, 24.50) int -> x0
;* V12 loc10 [V12 ] ( 0, 0 ) ushort -> zero-ref
;* V13 loc11 [V13 ] ( 0, 0 ) ushort -> zero-ref
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T13] ( 3, 48.00) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
-; V16 tmp2 [V16,T21] ( 2, 32.00) int -> x1 "Strict ordering of exceptions for Array store"
+; V15 tmp1 [V15,T07] ( 3, 48.00) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V16 tmp2 [V16,T14] ( 2, 32.00) int -> x1 "Strict ordering of exceptions for Array store"
;* V17 tmp3 [V17 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V18 tmp4 [V18,T85] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V18 tmp4 [V18,T74] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V19 tmp5 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V20 tmp6 [V20,T71] ( 3, 6.00) int -> x26 "Inlining Arg"
-; V21 tmp7 [V21,T78] ( 2, 4.00) byref -> x25 single-def "Inlining Arg"
+; V20 tmp6 [V20,T63] ( 3, 6.00) int -> x26 "Inlining Arg"
+; V21 tmp7 [V21,T70] ( 2, 4.00) byref -> x25 single-def "Inlining Arg"
;* V22 tmp8 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V23 tmp9 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp10 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V25 tmp11 [V25,T22] ( 2, 32.00) int -> x26 "Inlining Arg"
-; V26 tmp12 [V26,T40] ( 2, 18.00) byref -> x25 "Inlining Arg"
+; V25 tmp11 [V25,T15] ( 2, 32.00) int -> x26 "Inlining Arg"
+; V26 tmp12 [V26,T34] ( 2, 18.00) byref -> x25 "Inlining Arg"
;* V27 tmp13 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp14 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V29 tmp15 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V30 tmp16 [V30,T32] ( 3, 24.00) int -> x28 "Inlining Arg"
-; V31 tmp17 [V31,T45] ( 2, 16.00) byref -> x26 "Inlining Arg"
+; V30 tmp16 [V30,T28] ( 3, 24.00) int -> x28 "Inlining Arg"
+; V31 tmp17 [V31,T37] ( 2, 16.00) byref -> x26 "Inlining Arg"
;* V32 tmp18 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V33 tmp19 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V34 tmp20 [V34,T23] ( 4, 28.00) int -> [fp+0x1C] "Inlining Arg"
-; V35 tmp21 [V35,T19] ( 5, 36.00) int -> [fp+0x18] "Inlining Arg"
+; V34 tmp20 [V34,T16] ( 4, 28.00) int -> [fp+0x1C] "Inlining Arg"
+; V35 tmp21 [V35,T13] ( 5, 36.00) int -> [fp+0x18] "Inlining Arg"
;* V36 tmp22 [V36 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V37 tmp23 [V37,T44] ( 4, 16 ) int -> x0 "Inline stloc first use temp"
-; V38 tmp24 [V38,T24] ( 3, 24 ) ref -> x3 class-hnd "impAppendStmt" <<unknown class>>
+; V37 tmp23 [V37,T36] ( 4, 16 ) int -> x0 "Inline stloc first use temp"
+; V38 tmp24 [V38,T20] ( 3, 24 ) ref -> x3 class-hnd "impAppendStmt" <<unknown class>>
;* V39 tmp25 [V39 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V40 tmp26 [V40,T33] ( 3, 24.00) int -> x28 "Inlining Arg"
-; V41 tmp27 [V41,T46] ( 2, 16.00) byref -> x26 "Inlining Arg"
+; V40 tmp26 [V40,T29] ( 3, 24.00) int -> x28 "Inlining Arg"
+; V41 tmp27 [V41,T38] ( 2, 16.00) byref -> x26 "Inlining Arg"
;* V42 tmp28 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V43 tmp29 [V43 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V44 tmp30 [V44,T14] ( 3, 48 ) int -> x2 "Inline stloc first use temp"
-; V45 tmp31 [V45,T07] ( 4, 64 ) int -> x3 "Inline stloc first use temp"
-; V46 tmp32 [V46,T03] ( 3, 96 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
+; V44 tmp30 [V44,T08] ( 3, 48 ) int -> x2 "Inline stloc first use temp"
+; V45 tmp31 [V45,T05] ( 4, 64 ) int -> x3 "Inline stloc first use temp"
+; V46 tmp32 [V46,T02] ( 3, 96 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
;* V47 tmp33 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V48 tmp34 [V48,T04] ( 3, 96 ) byref -> x2 "dup spill"
-;* V49 tmp35 [V49,T86] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V50 tmp36 [V50,T25] ( 3, 24 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V51 tmp37 [V51,T51] ( 3, 12 ) ref -> x1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V52 tmp38 [V52,T57] ( 3, 8 ) int -> x2 "Inline return value spill temp"
-;* V53 tmp39 [V53,T63] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V54 tmp40 [V54,T81] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V55 tmp41 [V55,T49] ( 4, 12 ) int -> x2 "Inline stloc first use temp"
-; V56 tmp42 [V56,T58] ( 3, 8 ) int -> x1 "Inline return value spill temp"
-;* V57 tmp43 [V57,T64] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V58 tmp44 [V58,T82] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V59 tmp45 [V59,T50] ( 4, 12 ) int -> x1 "Inline stloc first use temp"
+; V48 tmp34 [V48,T03] ( 3, 96 ) byref -> x2 "dup spill"
+;* V49 tmp35 [V49,T75] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V50 tmp36 [V50,T21] ( 3, 24 ) ref -> x0 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+; V51 tmp37 [V51,T45] ( 3, 12 ) ref -> x1 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V52 tmp38 [V52,T53] ( 3, 8 ) int -> x2 "Inline return value spill temp"
+;* V53 tmp39 [V53,T58] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V54 tmp40 [V54,T73] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V55 tmp41 [V55,T44] ( 4, 12 ) int -> x2 "Inline stloc first use temp"
+; V56 tmp42 [V56,T84] ( 3, 1.50) int -> x1 "Inline return value spill temp"
+;* V57 tmp43 [V57,T86] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V58 tmp44 [V58,T88] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V59 tmp45 [V59,T80] ( 4, 2 ) int -> x1 "Inline stloc first use temp"
;* V60 tmp46 [V60 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V61 tmp47 [V61 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V62 tmp48 [V62 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V63 tmp49 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V64 tmp50 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V65 tmp51 [V65,T77] ( 4, 4.00) int -> x21 "Inlining Arg"
-; V66 tmp52 [V66,T76] ( 5, 5.00) int -> x20 "Inlining Arg"
+; V65 tmp51 [V65,T69] ( 4, 4.00) int -> x21 "Inlining Arg"
+; V66 tmp52 [V66,T67] ( 5, 5.00) int -> x20 "Inlining Arg"
;* V67 tmp53 [V67 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V68 tmp54 [V68,T88] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
-; V69 tmp55 [V69,T87] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V70 tmp56 [V70,T72] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
-; V71 tmp57 [V71,T56] ( 4, 8 ) int -> x2 "Inline stloc first use temp"
-; V72 tmp58 [V72,T52] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" <<unknown class>>
+; V68 tmp54 [V68,T81] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
+; V69 tmp55 [V69,T76] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V70 tmp56 [V70,T64] ( 3, 6 ) int -> x1 "Inline stloc first use temp"
+; V71 tmp57 [V71,T52] ( 4, 8 ) int -> x2 "Inline stloc first use temp"
+; V72 tmp58 [V72,T46] ( 3, 12 ) ref -> x1 class-hnd "impAppendStmt" <<unknown class>>
;* V73 tmp59 [V73 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V74 tmp60 [V74,T53] ( 3, 12 ) byref -> x1 "dup spill"
-; V75 tmp61 [V75,T79] ( 2, 2.00) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V76 tmp62 [V76,T80] ( 2, 2.00) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V77 tmp63 [V77,T15] ( 5, 42 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V78 tmp64 [V78,T10] ( 10, 52.00) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V79 tmp65 [V79,T11] ( 5, 49.00) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
-; V80 tmp66 [V80,T09] ( 6, 53.00) int -> registers "field V05._length (fldOffset=0x8)" P-INDEP
+; V74 tmp60 [V74,T47] ( 3, 12 ) byref -> x1 "dup spill"
+; V75 tmp61 [V75,T71] ( 2, 2.00) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
+; V76 tmp62 [V76,T72] ( 2, 2.00) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V77 tmp63 [V77,T42] ( 5, 14.00) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V78 tmp64 [V78,T19] ( 10, 24.00) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V79 tmp65 [V79,T32] ( 5, 21.00) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
+; V80 tmp66 [V80,T17] ( 6, 25.00) int -> registers "field V05._length (fldOffset=0x8)" P-INDEP
;* V81 tmp67 [V81 ] ( 0, 0 ) byref -> zero-ref "field V17._reference (fldOffset=0x0)" P-INDEP
;* V82 tmp68 [V82 ] ( 0, 0 ) int -> zero-ref "field V17._length (fldOffset=0x8)" P-INDEP
-; V83 tmp69 [V83,T89] ( 2, 2.00) byref -> x25 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
-; V84 tmp70 [V84,T90] ( 2, 2.00) int -> x26 single-def "field V19._length (fldOffset=0x8)" P-INDEP
+; V83 tmp69 [V83,T82] ( 2, 2.00) byref -> x25 single-def "field V19._reference (fldOffset=0x0)" P-INDEP
+; V84 tmp70 [V84,T83] ( 2, 2.00) int -> x26 single-def "field V19._length (fldOffset=0x8)" P-INDEP
;* V85 tmp71 [V85 ] ( 0, 0 ) byref -> zero-ref "field V24._reference (fldOffset=0x0)" P-INDEP
;* V86 tmp72 [V86 ] ( 0, 0 ) int -> zero-ref "field V24._length (fldOffset=0x8)" P-INDEP
-; V87 tmp73 [V87,T59] ( 2, 8.00) byref -> x26 "field V29._reference (fldOffset=0x0)" P-INDEP
-; V88 tmp74 [V88,T61] ( 2, 8.00) int -> x28 "field V29._length (fldOffset=0x8)" P-INDEP
-; V89 tmp75 [V89,T60] ( 2, 8.00) byref -> x26 "field V39._reference (fldOffset=0x0)" P-INDEP
-; V90 tmp76 [V90,T62] ( 2, 8.00) int -> x28 "field V39._length (fldOffset=0x8)" P-INDEP
+; V87 tmp73 [V87,T54] ( 2, 8.00) byref -> x26 "field V29._reference (fldOffset=0x0)" P-INDEP
+; V88 tmp74 [V88,T56] ( 2, 8.00) int -> x28 "field V29._length (fldOffset=0x8)" P-INDEP
+; V89 tmp75 [V89,T55] ( 2, 8.00) byref -> x26 "field V39._reference (fldOffset=0x0)" P-INDEP
+; V90 tmp76 [V90,T57] ( 2, 8.00) int -> x28 "field V39._length (fldOffset=0x8)" P-INDEP
;* V91 tmp77 [V91 ] ( 0, 0 ) byref -> zero-ref "field V60._reference (fldOffset=0x0)" P-INDEP
;* V92 tmp78 [V92 ] ( 0, 0 ) int -> zero-ref "field V60._length (fldOffset=0x8)" P-INDEP
-;* V93 tmp79 [V93,T47] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V94 tmp80 [V94,T54] ( 3, 12 ) ref -> x2 "arr expr"
-; V95 tmp81 [V95,T26] ( 3, 24.00) ref -> x0 "arr expr"
-; V96 tmp82 [V96,T27] ( 3, 24.00) ref -> x0 "arr expr"
-; V97 tmp83 [V97,T05] ( 3, 96 ) ref -> x3 "arr expr"
-; V98 tmp84 [V98,T28] ( 3, 24 ) ref -> x0 "arr expr"
-; V99 tmp85 [V99,T34] ( 3, 24 ) int -> x2 "index expr"
-; V100 tmp86 [V100,T29] ( 3, 24 ) ref -> x0 "arr expr"
-;* V101 tmp87 [V101,T65] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V102 tmp88 [V102,T69] ( 0, 0 ) int -> zero-ref "index expr"
-;* V103 tmp89 [V103,T66] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V104 tmp90 [V104,T83] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V105 tmp91 [V105,T67] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V106 tmp92 [V106,T35] ( 3, 24 ) int -> x1 "index expr"
-;* V107 tmp93 [V107,T68] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V108 tmp94 [V108,T84] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V109 cse0 [V109,T55] ( 3, 12 ) int -> x2 "CSE - moderate"
-; V110 cse1 [V110,T38] ( 4, 16 ) int -> x1 "CSE - moderate"
-; V111 cse2 [V111,T37] ( 2, 8 ) ref -> x0 "CSE - moderate"
-; V112 cse3 [V112,T12] ( 4, 40 ) ref -> x3 multi-def "CSE - moderate"
-; V113 cse4 [V113,T18] ( 4, 40.00) ref -> x1 "CSE - moderate"
-; V114 cse5 [V114,T30] ( 2, 16.00) ref -> x0 "CSE - moderate"
-; V115 cse6 [V115,T43] ( 2, 8 ) ref -> x0 "CSE - moderate"
-; V116 cse7 [V116,T70] ( 3, 6.50) ref -> x0 hoist "CSE - conservative"
-; V117 cse8 [V117,T73] ( 3, 6 ) int -> x2 "CSE - conservative"
-; V118 cse9 [V118,T74] ( 3, 6 ) int -> x1 "CSE - conservative"
-; V119 cse10 [V119,T06] ( 3, 96 ) int -> x3 "CSE - aggressive"
-; V120 cse11 [V120,T42] ( 5, 16 ) int -> x3 "CSE - moderate"
-; V121 cse12 [V121,T41] ( 5, 16 ) byref -> x0 "CSE - moderate"
-; V122 cse13 [V122,T36] ( 3, 24.00) int -> x2 "CSE - moderate"
-; V123 cse14 [V123,T31] ( 3, 24.00) byref -> x0 "CSE - moderate"
-; V124 cse15 [V124,T48] ( 12, 15.00) ref -> x1 multi-def "CSE - moderate"
+;* V93 tmp79 [V93,T39] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V94 tmp80 [V94,T48] ( 3, 12 ) ref -> x2 "arr expr"
+; V95 tmp81 [V95,T22] ( 3, 24.00) ref -> x0 "arr expr"
+; V96 tmp82 [V96,T23] ( 3, 24.00) ref -> x0 "arr expr"
+; V97 tmp83 [V97,T04] ( 3, 96 ) ref -> x3 "arr expr"
+; V98 tmp84 [V98,T24] ( 3, 24 ) ref -> x2 "arr expr"
+; V99 tmp85 [V99,T30] ( 3, 24 ) int -> x3 "index expr"
+; V100 tmp86 [V100,T25] ( 3, 24 ) ref -> x0 "arr expr"
+;* V101 tmp87 [V101,T59] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V102 tmp88 [V102,T61] ( 0, 0 ) int -> zero-ref "index expr"
+;* V103 tmp89 [V103,T60] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V104 tmp90 [V104,T49] ( 3, 12 ) ref -> x3 "arr expr"
+; V105 tmp91 [V105,T77] ( 3, 3 ) ref -> x3 "arr expr"
+; V106 tmp92 [V106,T79] ( 3, 3 ) int -> x1 "index expr"
+;* V107 tmp93 [V107,T87] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V108 tmp94 [V108,T78] ( 3, 3 ) ref -> x0 "arr expr"
+; V109 cse0 [V109,T50] ( 3, 12 ) int -> x2 "CSE - moderate"
+; V110 cse1 [V110,T35] ( 4, 12.50) int -> x1 "CSE - moderate"
+; V111 cse2 [V111,T41] ( 5, 11 ) ref -> x0 "CSE - moderate"
+; V112 cse3 [V112,T09] ( 4, 40 ) ref -> x3 multi-def "CSE - aggressive"
+; V113 cse4 [V113,T85] ( 3, 1.50) int -> x1 "CSE - conservative"
+; V114 cse5 [V114,T11] ( 4, 40.00) ref -> x1 "CSE - aggressive"
+; V115 cse6 [V115,T26] ( 2, 16.00) ref -> x0 "CSE - moderate"
+; V116 cse7 [V116,T62] ( 3, 6.50) ref -> x0 hoist "CSE - moderate"
+; V117 cse8 [V117,T43] ( 2, 8 ) ref -> x0 "CSE - moderate"
+; V118 cse9 [V118,T65] ( 3, 6 ) int -> x2 "CSE - moderate"
+; V119 cse10 [V119,T31] ( 3, 24.00) int -> x2 "CSE - moderate"
+; V120 cse11 [V120,T27] ( 3, 24.00) byref -> x0 "CSE - moderate"
+; V121 cse12 [V121,T40] ( 12, 15.00) ref -> x1 multi-def "CSE - moderate"
+; V122 cse13 [V122,T51] ( 3, 12 ) int -> x3 "CSE - moderate"
;
; Lcl frame size = 16
@@ -156,7 +154,7 @@ G_M27423_IG02: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1
sxtw w23, w22
mov w24, wzr
cmp w23, w21
- bhi G_M27423_IG44
+ bhi G_M27423_IG43
;; size=28 bbWeight=1.00 PerfScore 6.50
G_M27423_IG03: ; bbWeight=1.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
; byrRegs -[x1]
@@ -217,14 +215,14 @@ G_M27423_IG08: ; bbWeight=8.00, gcrefRegs=80000 {x19}, byrefRegs=2100000
sub w1, w1, w2
ldr w2, [x0, #0x08]
cmp w24, w2
- bhs G_M27423_IG43
+ bhs G_M27423_IG42
add x0, x0, #16
; gcrRegs -[x0]
; byrRegs +[x0]
str w1, [x0, w24, UXTW #2]
add w24, w24, #1
cmp w24, w2
- bhs G_M27423_IG43
+ bhs G_M27423_IG42
str w22, [x0, w24, UXTW #2]
add w24, w24, #1
add w27, w27, #1
@@ -244,7 +242,7 @@ G_M27423_IG10: ; bbWeight=4.00, gcrefRegs=80000 {x19}, byrefRegs=100000 {
add w0, w22, #2
sxtw w25, w0
cmp w25, w21
- bhi G_M27423_IG44
+ bhi G_M27423_IG43
;; size=16 bbWeight=4.00 PerfScore 10.00
...
+44 (+3.16%) : 148498.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
@@ -8,19 +8,19 @@
; 37 inlinees with PGO data; 82 single block inlinees; 9 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T11] ( 7, 15.50) ref -> x19 class-hnd single-def <System.String>
-; V01 loc0 [V01,T08] ( 9, 18 ) int -> x21
+; V00 arg0 [V00,T10] ( 8, 16 ) ref -> x19 class-hnd single-def <System.String>
+; V01 loc0 [V01,T08] ( 11, 20 ) int -> x21
;* V02 loc1 [V02,T51] ( 0, 0 ) int -> zero-ref
-; V03 loc2 [V03,T00] ( 35, 73 ) int -> x22
+; V03 loc2 [V03,T00] ( 39, 80.46) int -> x22
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-; V05 loc4 [V05,T10] ( 12, 17.54) int -> x2
-; V06 loc5 [V06,T09] ( 6, 18 ) ushort -> x0
+; V05 loc4 [V05,T07] ( 12, 21 ) int -> x2
+; V06 loc5 [V06,T11] ( 6, 18 ) ushort -> x0
; V07 loc6 [V07,T12] ( 5, 12.00) ushort -> x25
; V08 loc7 [V08 ] ( 5, 2.50) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V12 tmp3 [V12,T04] ( 3, 24 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.CompareInfo>
+; V12 tmp3 [V12,T05] ( 3, 24 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.CompareInfo>
; V13 tmp4 [V13,T21] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
;* V14 tmp5 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
@@ -233,11 +233,11 @@
;* V222 tmp213 [V222 ] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP
;* V223 tmp214 [V223 ] ( 0, 0 ) byref -> zero-ref single-def "field V105._reference (fldOffset=0x0)" P-INDEP
;* V224 tmp215 [V224 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
-; V225 tmp216 [V225,T05] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V226 cse0 [V226,T06] ( 12, 23.04) int -> x20 "CSE - aggressive"
+; V225 tmp216 [V225,T06] ( 3, 24 ) ref -> x0 "argument with side effect"
+; V226 cse0 [V226,T04] ( 14, 24.04) int -> x20 "CSE - aggressive"
; V227 cse1 [V227,T24] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
-; V228 cse2 [V228,T03] ( 13, 30.50) byref -> x24 multi-def "CSE - aggressive"
-; V229 cse3 [V229,T07] ( 5, 20 ) int -> x23 "CSE - aggressive"
+; V228 cse2 [V228,T03] ( 14, 31 ) byref -> x24 multi-def "CSE - aggressive"
+; V229 cse3 [V229,T09] ( 5, 20 ) int -> x23 "CSE - aggressive"
; V230 cse4 [V230,T13] ( 3, 12 ) int -> x0 "CSE - moderate"
;
; Lcl frame size = 24
@@ -254,7 +254,7 @@ G_M18406_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M18406_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M18406_IG45
+ cbz x19, G_M18406_IG48
;; size=4 bbWeight=1 PerfScore 1.00
G_M18406_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
@@ -298,12 +298,12 @@ G_M18406_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bge G_M18406_IG14
sub w0, w22, #1
cmp w0, w20
- bhs G_M18406_IG60
+ bhs G_M18406_IG63
add x24, x19, #12
; byrRegs +[x24]
ldrh w0, [x24, w0, UXTW #2]
cmp w23, w20
- bhs G_M18406_IG60
+ bhs G_M18406_IG63
ldrh w25, [x24, w23, UXTW #2]
mov w1, #44
cmp w0, #59
@@ -364,100 +364,119 @@ G_M18406_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
sxtw w22, w23
b G_M18406_IG04
;; size=8 bbWeight=4 PerfScore 6.00
-G_M18406_IG14: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M18406_IG14: ; bbWeight=1.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, w21
ccmp w22, #0, nc, lt
- blt G_M18406_IG45
+ blt G_M18406_IG48
+ ;; size=12 bbWeight=1.50 PerfScore 3.00
+G_M18406_IG15: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add w22, w22, #7
- b G_M18406_IG16
- ;; size=20 bbWeight=0.50 PerfScore 1.75
-G_M18406_IG15: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M18406_IG17
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M18406_IG16: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add w22, w22, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M18406_IG16: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M18406_IG17: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, w21
- bge G_M18406_IG45
+ bge G_M18406_IG23
;; size=8 bbWeight=4 PerfScore 6.00
-G_M18406_IG17: ; bbWeight=4.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M18406_IG18: ; bbWeight=4.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, w20
- bhs G_M18406_IG60
+ bhs G_M18406_IG63
add x24, x19, #12
; byrRegs +[x24]
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M18406_IG20
+ blo G_M18406_IG21
;; size=24 bbWeight=4.00 PerfScore 26.00
-G_M18406_IG18: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG19: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x24]
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M18406_IG15
+ cbnz w0, G_M18406_IG16
;; size=24 bbWeight=4 PerfScore 26.00
-G_M18406_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
- ; gcrRegs -[x19]
- b G_M18406_IG21
+G_M18406_IG20: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M18406_IG23
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18406_IG20: ; bbWeight=4.00, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs +[x19]
+G_M18406_IG21: ; bbWeight=4.00, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M18406_IG15
+ tbnz w0, #7, G_M18406_IG16
;; size=20 bbWeight=4.00 PerfScore 22.00
-G_M18406_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs -[x19]
+G_M18406_IG22: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M18406_IG24
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M18406_IG23: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cmp w22, w21
+ bge G_M18406_IG48
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M18406_IG24: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cmp w22, w20
+ bhs G_M18406_IG63
+ add x24, x19, #12
+ ; byrRegs +[x24]
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #61
- bne G_M18406_IG45
- ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M18406_IG22: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ bne G_M18406_IG48
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M18406_IG25: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ ; gcrRegs -[x19]
add w22, w22, #1
cmp w22, w21
- bge G_M18406_IG45
+ bge G_M18406_IG31
;; size=12 bbWeight=4 PerfScore 8.00
-G_M18406_IG23: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG26: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
cmp w22, w20
- bhs G_M18406_IG60
+ bhs G_M18406_IG63
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M18406_IG26
+ blo G_M18406_IG29
;; size=20 bbWeight=4.00 PerfScore 24.00
-G_M18406_IG24: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG27: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M18406_IG22
+ cbnz w0, G_M18406_IG25
;; size=24 bbWeight=4 PerfScore 26.00
-G_M18406_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
- b G_M18406_IG27
+G_M18406_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
+ b G_M18406_IG31
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18406_IG26: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG29: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M18406_IG22
+ tbnz w0, #7, G_M18406_IG25
;; size=20 bbWeight=4.00 PerfScore 22.00
-G_M18406_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG30: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
+ b G_M18406_IG32
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M18406_IG31: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ cmp w22, w21
+ bge G_M18406_IG48
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M18406_IG32: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ cmp w22, w20
+ bhs G_M18406_IG63
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #34
- bne G_M18406_IG40
- ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M18406_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ bne G_M18406_IG44
sub w0, w21, #1
cmp w22, w0
- beq G_M18406_IG45
+ beq G_M18406_IG48
add w21, w22, #1
sub w2, w20, w21
cmp w20, w21
- blo G_M18406_IG61
+ blo G_M18406_IG64
sbfiz x0, x21, #1, #32
add x0, x24, x0
; byrRegs +[x0]
@@ -475,7 +494,7 @@ G_M18406_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24
add w1, w22, #1
cmp w0, w1
ccmp w0, #0, nc, ne
- blt G_M18406_IG45
+ blt G_M18406_IG48
add w1, w22, #1
sub w0, w0, w22
sub w22, w0, #1
@@ -483,10 +502,10 @@ G_M18406_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24
add x0, x0, w22, UXTW
mov w2, w20
cmp x0, x2
- bhi G_M18406_IG62
+ bhi G_M18406_IG65
ubfiz x0, x1, #1, #32
add x24, x24, x0
- tbz w22, #31, G_M18406_IG29
+ tbz w22, #31, G_M18406_IG33
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
@@ -499,63 +518,63 @@ G_M18406_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24
blr x2
; gcrRegs -[x0]
...
realworld.run.osx.arm64.checked.mch
-12 (-1.23%) : 2279.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 12, 7 ) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T04] ( 12, 11.44) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T14] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T12] ( 8, 7.02) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
-; V04 loc2 [V04,T21] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T23] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
; V05 loc3 [V05,T00] ( 11, 17.08) int -> x0
; V06 loc4 [V06,T02] ( 8, 16 ) ref -> x15 class-hnd <System.Type>
-; V07 loc5 [V07,T08] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
-; V08 loc6 [V08,T20] ( 6, 1.83) ref -> x1 class-hnd exact <System.Type[]>
+; V07 loc5 [V07,T09] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
+; V08 loc6 [V08,T18] ( 6, 3.31) ref -> x1 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x0
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,36 +25,36 @@
;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType>
; V16 tmp5 [V16,T26] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp7 [V18,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp7 [V18,T21] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V19 tmp8 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp10 [V21,T22] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
-; V22 tmp11 [V22 ] ( 4, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
-; V23 tmp12 [V23,T18] ( 2, 2 ) long -> x0 "impAppendStmt"
+; V21 tmp10 [V21,T16] ( 2, 3.96) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
+; V22 tmp11 [V22 ] ( 4, 7.92) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
+; V23 tmp12 [V23,T11] ( 2, 7.92) long -> x0 "impAppendStmt"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V27 tmp16 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T14] ( 3, 4 ) ref -> x0 "Single return block return value"
-; V31 FramesRoot [V31,T13] ( 6, 4 ) long -> x20 "Pinvoke FrameListRoot"
-; V32 PInvokeFrame [V32 ] ( 8, 6 ) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp19 [V30,T13] ( 3, 6.96) ref -> x0 "Single return block return value"
+; V31 FramesRoot [V31,T08] ( 6, 9.92) long -> x21 "Pinvoke FrameListRoot"
+; V32 PInvokeFrame [V32 ] ( 8, 11.92) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V33 tmp22 [V33 ] ( 0, 0 ) long -> zero-ref "field V24._ptr (fldOffset=0x0)" P-INDEP
-; V34 tmp23 [V34,T23] ( 2, 1 ) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp24 [V35,T19] ( 2, 2 ) long -> x1 "argument with side effect"
-; V36 tmp25 [V36,T15] ( 2, 2 ) ref -> x20 single-def "argument with side effect"
-; V37 tmp26 [V37,T16] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V34 tmp23 [V34,T17] ( 2, 3.96) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp24 [V35,T22] ( 2, 2 ) long -> x1 "argument with side effect"
+; V36 tmp25 [V36,T19] ( 2, 2 ) ref -> x21 single-def "argument with side effect"
+; V37 tmp26 [V37,T20] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V39 tmp28 [V39,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V40 tmp29 [V40,T28] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V41 PSPSym [V41,T24] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym"
-; V42 cse0 [V42,T04] ( 10, 12.50) int -> x21 "CSE - aggressive"
-; V43 cse1 [V43,T09] ( 6, 8.54) byref -> x22 hoist multi-def "CSE - aggressive"
-; V44 cse2 [V44,T12] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
-; V45 cse3 [V45,T05] ( 3, 11.88) long -> x14 "CSE - aggressive"
-; V46 cse4 [V46,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V42 cse0 [V42,T05] ( 10, 12.50) int -> x22 "CSE - aggressive"
+; V43 cse1 [V43,T10] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
+; V44 cse2 [V44,T15] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
+; V45 cse3 [V45,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V46 cse4 [V46,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
; Lcl frame size = 112
@@ -71,21 +71,23 @@ G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x2, [fp, #0x78] // [V41 PSPSym]
str x0, [fp, #0x68] // [V00 this]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=52 bbWeight=1 PerfScore 11.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
add x0, fp, #32 // [V32 PInvokeFrame+0x08]
mov x1, x12
bl CORINFO_HELP_INIT_PINVOKE_FRAME
- mov x20, x0
+ mov x21, x0
mov x1, sp
str x1, [fp, #0x40] // [V32 PInvokeFrame+0x28]
mov x1, fp
str x1, [fp, #0x50] // [V32 PInvokeFrame+0x38]
- cbz x19, G_M59170_IG21
- ldr w21, [x19, #0x08]
- mov w1, w21
+ cbz x20, G_M59170_IG21
+ ldr w22, [x20, #0x08]
+ mov w1, w22
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #1 LSL #32
@@ -94,33 +96,28 @@ G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=800
; gcr arg pop 0
str x0, [fp, #0x60] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
- ldr x0, [x1, #0x50]
+ ldr x0, [x19, #0x50]
; gcrRegs -[x0]
bl <unknown method>
- ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
cbz w0, G_M59170_IG22
mov w0, wzr
- cmp w21, #0
+ cmp w22, #0
ble G_M59170_IG07
- ;; size=96 bbWeight=1 PerfScore 24.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- ldr w14, [x2, #0x08]
- cmp w14, w21
+ ;; size=88 bbWeight=1 PerfScore 20.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ ldr w14, [x1, #0x08]
+ cmp w14, w22
blt G_M59170_IG06
- add x22, x19, #16
- ; byrRegs +[x22]
+ add x23, x20, #16
+ ; byrRegs +[x23]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80002 {x1 x19}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x20]
mov w14, w0
- ldr x15, [x22, x14, LSL #3]
+ ldr x15, [x23, x14, LSL #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x12, [x15]
@@ -129,7 +126,7 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
movk xip0, #1 LSL #32
cmp x12, xip0
bne G_M59170_IG12
- add x12, x2, #16
+ add x12, x1, #16
; byrRegs +[x12]
add x14, x12, x14, LSL #3
; byrRegs +[x14]
@@ -137,20 +134,20 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
; gcrRegs -[x15]
; byrRegs -[x12 x14]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG04
;; size=60 bbWeight=3.96 PerfScore 59.40
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ; byrRegs -[x22]
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x23]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2] +[x19]
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- add x22, x19, #16
- ; byrRegs +[x22]
- ldr x15, [x22, w0, UXTW #3]
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x20]
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ add x23, x20, #16
+ ; byrRegs +[x23]
+ ldr x15, [x23, w0, UXTW #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x14, [x15]
@@ -159,30 +156,30 @@ G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x12, #1 LSL #32
cmp x14, x12
bne G_M59170_IG12
- ldr w14, [x2, #0x08]
+ ldr w14, [x1, #0x08]
cmp w0, w14
bhs G_M59170_IG20
- add x14, x2, #16
+ add x14, x1, #16
; byrRegs +[x14]
add x14, x14, x0, LSL #3
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x2 x15]
- ; byrRegs -[x14 x22]
+ ; gcrRegs -[x1 x15]
+ ; byrRegs -[x14 x23]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG06
;; size=76 bbWeight=0.04 PerfScore 0.86
-G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG07: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
str xzr, [fp, #0x70] // [V22 tmp11]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #1 LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x1]
+ movz x2, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
add x1, fp, #112 // [V22 tmp11]
mov w2, #1
@@ -194,23 +191,23 @@ G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
str x3, [fp, #0x48] // [V32 PInvokeFrame+0x30]
add x3, fp, #32 // [V32 PInvokeFrame+0x08]
; byrRegs +[x3]
- str x3, [x20, #0x10]
- strb wzr, [x20, #0x0C]
- ;; size=72 bbWeight=0.50 PerfScore 7.25
-G_M59170_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ str x3, [x21, #0x10]
+ strb wzr, [x21, #0x0C]
...
-24 (-0.40%) : 20718.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMemberSystem.__Canon:int:this (FullOpts)
@@ -28,7 +28,7 @@
; V17 loc10 [V17 ] ( 5, 5 ) int -> [fp+0x220] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V18 loc11 [V18,T167] ( 3, 3 ) ubyte -> x0 single-def
; V19 loc12 [V19,T168] ( 3, 3 ) ubyte -> x2 single-def
-; V20 loc13 [V20,T169] ( 3, 3 ) int -> x22 single-def
+; V20 loc13 [V20,T169] ( 3, 3 ) int -> x24 single-def
; V21 loc14 [V21,T170] ( 3, 3 ) int -> x0 single-def
; V22 loc15 [V22,T34] ( 7, 28 ) ref -> [fp+0x78] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
;* V23 loc16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
@@ -1795,22 +1795,20 @@ G_M42452_IG91: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x1
bne G_M42452_IG92
cmp w3, #1
beq G_M42452_IG160
- ldr w3, [fp, #0xE8] // [V361 tmp315]
cmp w3, #2
bne G_M42452_IG93
ldr w0, [fp, #0xD1FFAB1E] // [V14 loc7]
ldr w2, [fp, #0xD1FFAB1E] // [V15 loc8]
cmp w0, w2
bgt G_M42452_IG162
- ldr w1, [fp, #0xEC] // [V360 tmp314]
- ldp x20, x19, [fp, #0x80] // [V04 arg3], [V03 arg2]
ldr w0, [fp, #0xD1FFAB1E] // [V14 loc7]
ldr w2, [fp, #0xD1FFAB1E] // [V15 loc8]
cmp w0, w2
blt G_M42452_IG160
ldr w3, [fp, #0xE8] // [V361 tmp315]
+ ldp x20, x19, [fp, #0x80] // [V04 arg3], [V03 arg2]
b G_M42452_IG93
- ;; size=96 bbWeight=1 PerfScore 31.50
+ ;; size=88 bbWeight=1 PerfScore 27.50
G_M42452_IG92: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref
ldr w0, [fp, #0xD1FFAB1E] // [V14 loc7]
ldr x2, [x20, #0x08]
@@ -1821,14 +1819,9 @@ G_M42452_IG92: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x1
cset x0, eq
b G_M42452_IG94
;; size=24 bbWeight=1 PerfScore 10.00
-G_M42452_IG93: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x20]
- ; byrRegs -[x19]
+G_M42452_IG93: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref
mov w0, #1
- ldp x20, x19, [fp, #0x80] // [V04 arg3], [V03 arg2]
- ; gcrRegs +[x20]
- ; byrRegs +[x19]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ ;; size=4 bbWeight=1 PerfScore 0.50
G_M42452_IG94: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref, isz
uxtb w0, w0
cmp w3, #2
@@ -1860,14 +1853,12 @@ G_M42452_IG97: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x1
stp xzr, xzr, [x0, #0x18]
stp xzr, xzr, [x0, #0x28]
;; size=32 bbWeight=1 PerfScore 6.00
-G_M42452_IG98: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x20]
- ; byrRegs -[x19]
+G_M42452_IG98: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref
stp xzr, xzr, [fp, #0xD1FFAB1E]
stp xzr, xzr, [fp, #0xD1FFAB1E]
stp xzr, xzr, [fp, #0xD1FFAB1E]
;; size=12 bbWeight=1 PerfScore 3.00
-G_M42452_IG99: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
+G_M42452_IG99: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x2, [fp, #0x90] // [V02 arg1]
; byrRegs +[x2]
ldr x0, [x2, #0x08]
@@ -1886,8 +1877,6 @@ G_M42452_IG99: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, b
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
- ldr x19, [fp, #0x88] // [V03 arg2]
- ; byrRegs +[x19]
ldr x0, [x19, #0x08]
ldr x1, [x0]
ldr x1, [x1, #0x68]
@@ -1903,14 +1892,12 @@ G_M42452_IG99: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, b
mov x23, x0
; gcrRegs +[x23]
mov w28, wzr
- ldr x20, [fp, #0x80] // [V04 arg3]
- ; gcrRegs +[x20]
ldr x0, [x20, #0x08]
ldr w0, [x0, #0x10]
; gcrRegs -[x0]
cmp w0, #0
ble G_M42452_IG121
- ;; size=120 bbWeight=1 PerfScore 52.00
+ ;; size=112 bbWeight=1 PerfScore 48.00
G_M42452_IG100: ; bbWeight=8, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=480000 {x19 x22}, byref, isz
mov x0, x20
; gcrRegs +[x0]
@@ -2246,10 +2233,9 @@ G_M42452_IG121: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x
sxtw w24, w0
cmp w24, #2
beq G_M42452_IG152
- sxtw w22, w24
- str w22, [fp, #0xD1FFAB1E] // [V42 loc35]
+ str w24, [fp, #0xD1FFAB1E] // [V42 loc35]
b G_M42452_IG153
- ;; size=56 bbWeight=1 PerfScore 11.50
+ ;; size=52 bbWeight=1 PerfScore 11.00
G_M42452_IG122: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -2760,7 +2746,7 @@ G_M42452_IG159: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
; byrRegs -[x2]
; gcr arg pop 0
- sxtw w22, w0
+ sxtw w24, w0
ldr x19, [fp, #0x88] // [V03 arg2]
; byrRegs +[x19]
ldr x0, [x19, #0x08]
@@ -2772,9 +2758,9 @@ G_M42452_IG159: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cmp w22, w0
+ cmp w24, w0
beq G_M42452_IG164
- cmp w22, w0
+ cmp w24, w0
blt G_M42452_IG162
;; size=80 bbWeight=1 PerfScore 26.50
G_M42452_IG160: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -2861,8 +2847,8 @@ G_M42452_IG168: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x1
b G_M42452_IG170
;; size=44 bbWeight=1 PerfScore 13.50
G_M42452_IG169: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr w22, [fp, #0xD1FFAB1E] // [V42 loc35]
- sxtw w0, w22
+ ldr w24, [fp, #0xD1FFAB1E] // [V42 loc35]
+ sxtw w0, w24
;; size=8 bbWeight=1 PerfScore 2.50
G_M42452_IG170: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp, #0x28]
@@ -2962,7 +2948,7 @@ RWD12 dd G_M42452_IG145 - G_M42452_IG02
dd G_M42452_IG147 - G_M42452_IG02
-; Total bytes of code 6008, prolog size 124, PerfScore 6125.04, instruction count 1502, allocated bytes for code 6008 (MethodHash=d3455a2b) for method 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)
+; Total bytes of code 5984, prolog size 124, PerfScore 6113.54, instruction count 1496, allocated bytes for code 5984 (MethodHash=d3455a2b) for method 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)
; ============================================================
Unwind Info:
@@ -2973,7 +2959,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 1450 (0x005aa) Actual length = 5800 (0x0016a8)
+ Function Length : 1444 (0x005a4) Actual length = 5776 (0x001690)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-0.14%) : 31264.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
@@ -9,48 +9,48 @@
; Final local variable assignments
;
; V00 arg0 [V00,T18] ( 3, 2.50) ref -> x25 class-hnd single-def <System.Dynamic.CallInfo>
-; V01 arg1 [V01,T14] ( 4, 3 ) ref -> x22 class-hnd single-def <System.String>
-; V02 arg2 [V02,T15] ( 3, 3 ) ref -> x23 class-hnd single-def <System.Management.Automation.PSMethodInvocationConstraints>
-; V03 arg3 [V03,T04] ( 8, 7.50) int -> x20
+; V01 arg1 [V01,T16] ( 4, 3 ) ref -> x24 class-hnd single-def <System.String>
+; V02 arg2 [V02,T12] ( 3, 3.98) ref -> x22 class-hnd single-def <System.Management.Automation.PSMethodInvocationConstraints>
+; V03 arg3 [V03,T06] ( 7, 5 ) int -> x20
; V04 arg4 [V04,T19] ( 3, 2.50) ref -> x26 class-hnd single-def <System.Dynamic.DynamicMetaObject>
; V05 arg5 [V05,T01] ( 10, 9.04) ref -> x19 class-hnd single-def <System.Dynamic.DynamicMetaObject[]>
-; V06 arg6 [V06,T08] ( 6, 4 ) ref -> x21 class-hnd single-def <System.Dynamic.BindingRestrictions>
-; V07 arg7 [V07,T16] ( 3, 3 ) ref -> x24 class-hnd single-def <System.Management.Automation.MethodInformation[]>
+; V06 arg6 [V06,T09] ( 6, 4 ) ref -> x21 class-hnd single-def <System.Dynamic.BindingRestrictions>
+; V07 arg7 [V07,T13] ( 3, 3.98) ref -> x23 class-hnd single-def <System.Management.Automation.MethodInformation[]>
; V08 arg8 [V08,T69] ( 2, 1 ) ref -> [fp+0xB0] class-hnd single-def <System.Type>
-; V09 loc0 [V09 ] ( 2, 1.50) ubyte -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V10 loc1 [V10 ] ( 2, 2 ) ubyte -> [fp+0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V11 loc2 [V11 ] ( 2, 1.50) ref -> [fp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
-; V12 loc3 [V12 ] ( 2, 1.50) ref -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
+; V09 loc0 [V09 ] ( 2, 2.48) ubyte -> [fp+0x58] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V10 loc1 [V10 ] ( 2, 3.96) ubyte -> [fp+0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V11 loc2 [V11 ] ( 2, 2.48) ref -> [fp+0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
+; V12 loc3 [V12 ] ( 2, 2.48) ref -> [fp+0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.String>
; V13 loc4 [V13,T02] ( 9, 10.50) int -> x27
-; V14 loc5 [V14,T11] ( 4, 6 ) ref -> x28 class-hnd exact single-def <System.Object[]>
-; V15 loc6 [V15,T41] ( 3, 2.50) ref -> x0 class-hnd single-def <System.Management.Automation.MethodInformation>
+; V14 loc5 [V14,T07] ( 4, 6.98) ref -> x28 class-hnd exact single-def <System.Object[]>
+; V15 loc6 [V15,T26] ( 3, 3.48) ref -> x0 class-hnd single-def <System.Management.Automation.MethodInformation>
; V16 loc7 [V16,T00] ( 12, 21.04) int -> [fp+0x3C]
; V17 loc8 [V17,T03] ( 6, 10 ) ref -> x2 class-hnd <System.Object>
-; V18 loc9 [V18,T07] ( 12, 6 ) ref -> x25 class-hnd single-def <<unknown class>>
-; V19 loc10 [V19,T05] ( 18, 9 ) ref -> x20 class-hnd <System.Linq.Expressions.Expression>
+; V18 loc9 [V18,T08] ( 12, 6 ) ref -> x25 class-hnd single-def <<unknown class>>
+; V19 loc10 [V19,T04] ( 18, 9 ) ref -> x20 class-hnd <System.Linq.Expressions.Expression>
;* V20 loc11 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.String>
-; V21 loc12 [V21,T65] ( 3, 1.50) ref -> x23 class-hnd single-def <System.Linq.Expressions.ParameterExpression>
+; V21 loc12 [V21,T65] ( 3, 1.50) ref -> x22 class-hnd single-def <System.Linq.Expressions.ParameterExpression>
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V23 tmp1 [V23 ] ( 0, 0 ) ref -> zero-ref
;* V24 tmp2 [V24 ] ( 0, 0 ) int -> zero-ref
;* V25 tmp3 [V25 ] ( 0, 0 ) ref -> zero-ref
;* V26 tmp4 [V26 ] ( 0, 0 ) int -> zero-ref
-; V27 tmp5 [V27,T06] ( 6, 8 ) ref -> x2
-; V28 tmp6 [V28,T09] ( 6, 6 ) ref -> x19 class-hnd exact single-def "dup spill" <System.Type[]>
+; V27 tmp5 [V27,T05] ( 6, 8 ) ref -> x2
+; V28 tmp6 [V28,T10] ( 6, 6 ) ref -> x19 class-hnd exact single-def "dup spill" <System.Type[]>
;* V29 tmp7 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
;* V30 tmp8 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
;* V31 tmp9 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
;* V32 tmp10 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
;* V33 tmp11 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V34 tmp12 [V34,T12] ( 5, 5 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Object[]>
-; V35 tmp13 [V35,T20] ( 4, 4 ) ref -> x23 class-hnd exact single-def "dup spill" <System.Object[]>
-; V36 tmp14 [V36,T29] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
-; V37 tmp15 [V37,T30] ( 3, 3 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V34 tmp12 [V34,T14] ( 5, 5 ) ref -> x20 class-hnd exact single-def "dup spill" <System.Object[]>
+; V35 tmp13 [V35,T20] ( 4, 4 ) ref -> x22 class-hnd exact single-def "dup spill" <System.Object[]>
+; V36 tmp14 [V36,T30] ( 3, 3 ) ref -> x0 class-hnd exact single-def "Single-def Box Helper" <<unknown class>>
+; V37 tmp15 [V37,T31] ( 3, 3 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
; V38 tmp16 [V38,T21] ( 4, 4 ) ref -> x0 class-hnd single-def "dup spill" <System.Type>
;* V39 tmp17 [V39 ] ( 0, 0 ) ref -> zero-ref single-def
-; V40 tmp18 [V40,T66] ( 3, 1.50) ref -> x23
-; V41 tmp19 [V41,T40] ( 5, 2.50) ref -> x23
-; V42 tmp20 [V42,T45] ( 2, 2 ) ref -> x24 class-hnd exact single-def "impAppendStmt" <<unknown class>>
+; V40 tmp18 [V40,T66] ( 3, 1.50) ref -> x22
+; V41 tmp19 [V41,T41] ( 5, 2.50) ref -> x22
+; V42 tmp20 [V42,T45] ( 2, 2 ) ref -> x23 class-hnd exact single-def "impAppendStmt" <<unknown class>>
;* V43 tmp21 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Linq.Expressions.ConstantExpression>
; V44 tmp22 [V44,T46] ( 2, 2 ) ref -> x2 class-hnd single-def "dup spill" <<unknown class>>
;* V45 tmp23 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.Linq.Expressions.ConstantExpression>
@@ -61,12 +61,12 @@
;* V50 tmp28 [V50 ] ( 0, 0 ) ref -> zero-ref single-def
;* V51 tmp29 [V51 ] ( 0, 0 ) ref -> zero-ref single-def
; V52 tmp30 [V52,T42] ( 4, 2 ) ref -> x2
-; V53 tmp31 [V53,T26] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
+; V53 tmp31 [V53,T27] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
;* V54 tmp32 [V54,T71] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V55 tmp33 [V55,T31] ( 3, 3 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V56 tmp34 [V56,T27] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
+; V55 tmp33 [V55,T32] ( 3, 3 ) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V56 tmp34 [V56,T28] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
;* V57 tmp35 [V57,T72] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V58 tmp36 [V58,T32] ( 3, 3 ) ref -> x24 class-hnd exact single-def "dup spill" <System.Linq.Expressions.CatchBlock[]>
+; V58 tmp36 [V58,T33] ( 3, 3 ) ref -> x23 class-hnd exact single-def "dup spill" <System.Linq.Expressions.CatchBlock[]>
; V59 tmp37 [V59,T22] ( 4, 4 ) ref -> x28 class-hnd exact single-def "dup spill" <System.Linq.Expressions.Expression[]>
; V60 tmp38 [V60,T47] ( 2, 2 ) ref -> x27 class-hnd single-def "impAppendStmt" <System.Type>
; V61 tmp39 [V61,T48] ( 2, 2 ) ref -> [fp+0x28] class-hnd exact spill-single-def "impAppendStmt" <<unknown class>>
@@ -76,16 +76,16 @@
; V65 tmp43 [V65,T50] ( 2, 2 ) ref -> x15 class-hnd single-def "Strict ordering of exceptions for Array store" <<unknown class>>
; V66 tmp44 [V66,T51] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.UnaryExpression>
; V67 tmp45 [V67,T52] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.Linq.Expressions.CatchBlock>
-; V68 tmp46 [V68,T33] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V69 tmp47 [V69,T34] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
-; V70 tmp48 [V70,T28] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
+; V68 tmp46 [V68,T34] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V69 tmp47 [V69,T35] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Dynamic.DynamicMetaObject>
+; V70 tmp48 [V70,T29] ( 4, 3 ) ref -> x0 single-def "spilling varStr"
;* V71 tmp49 [V71,T73] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
-; V72 tmp50 [V72,T13] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V73 tmp51 [V73,T35] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
-; V74 tmp52 [V74,T36] ( 3, 3 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+; V72 tmp50 [V72,T15] ( 5, 5 ) ref -> x2 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V73 tmp51 [V73,T36] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+; V74 tmp52 [V74,T37] ( 3, 3 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
; V75 tmp53 [V75,T53] ( 2, 2 ) ref -> x15 class-hnd exact single-def "Inlining Arg" <<unknown class>>
; V76 tmp54 [V76,T67] ( 3, 1.50) ref -> x20 class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression>
-; V77 tmp55 [V77,T10] ( 6, 6 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
+; V77 tmp55 [V77,T11] ( 6, 6 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Linq.Expressions.Expression>
; V78 tmp56 [V78,T23] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Type>
; V79 tmp57 [V79,T43] ( 4, 2 ) int -> x20 "Inline return value spill temp"
;* V80 tmp58 [V80 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
@@ -98,29 +98,29 @@
;* V87 tmp65 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
;* V88 tmp66 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Reflection.Assembly>
; V89 tmp67 [V89,T70] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
-; V90 tmp68 [V90,T37] ( 3, 3 ) ref -> x23 class-hnd single-def "Inlining Arg" <System.Attribute[]>
+; V90 tmp68 [V90,T38] ( 3, 3 ) ref -> x22 class-hnd single-def "Inlining Arg" <System.Attribute[]>
; V91 tmp69 [V91 ] ( 2, 1 ) int -> [fp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
;* V92 tmp70 [V92 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V93 tmp71 [V93 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V94 tmp72 [V94,T54] ( 2, 2 ) ref -> x22 class-hnd exact single-def "Inlining Arg" <System.String>
-; V95 tmp73 [V95,T38] ( 3, 3 ) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
+; V94 tmp72 [V94,T54] ( 2, 2 ) ref -> x24 class-hnd exact single-def "Inlining Arg" <System.String>
+; V95 tmp73 [V95,T39] ( 3, 3 ) ref -> [fp+0x18] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Expressions.ConstantExpression>
;* V96 tmp74 [V96 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
; V97 tmp75 [V97,T55] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V98 tmp76 [V98,T56] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V99 tmp77 [V99,T57] ( 2, 2 ) ref -> x3 single-def "argument with side effect"
; V100 tmp78 [V100,T58] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V101 tmp79 [V101,T59] ( 2, 2 ) ref -> x0 single-def "arr expr"
-; V102 tmp80 [V102,T39] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
+; V102 tmp80 [V102,T40] ( 3, 3 ) ref -> x0 single-def "argument with side effect"
; V103 tmp81 [V103,T60] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V104 tmp82 [V104,T61] ( 2, 2 ) ref -> x19 single-def "argument with side effect"
; V105 tmp83 [V105,T62] ( 2, 2 ) ref -> x5 single-def "argument with side effect"
; V106 tmp84 [V106,T63] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V107 tmp85 [V107,T64] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
; V108 cse0 [V108,T17] ( 4, 4.54) ref -> [fp+0x10] hoist multi-def "CSE - moderate"
-; V109 cse1 [V109,T25] ( 7, 3.50) long -> x22 "CSE - moderate"
-; V110 cse2 [V110,T44] ( 4, 2 ) long -> x24 "CSE - conservative"
+; V109 cse1 [V109,T25] ( 7, 3.50) long -> x24 "CSE - moderate"
+; V110 cse2 [V110,T44] ( 4, 2 ) long -> x23 "CSE - conservative"
; V111 cse3 [V111,T68] ( 3, 1.50) long -> x26 "CSE - conservative"
-; V112 cse4 [V112,T24] ( 7, 3.50) ref -> x23 multi-def "CSE - moderate"
+; V112 cse4 [V112,T24] ( 7, 3.50) ref -> x22 multi-def "CSE - moderate"
;
; Lcl frame size = 80
@@ -138,10 +138,10 @@ G_M1658_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp xzr, xzr, [x9, #0x20]
mov x25, x0
; gcrRegs +[x25]
- mov x22, x1
+ mov x24, x1
+ ; gcrRegs +[x24]
+ mov x22, x2
; gcrRegs +[x22]
- mov x23, x2
- ; gcrRegs +[x23]
mov w20, w3
mov x26, x4
; gcrRegs +[x26]
@@ -149,8 +149,8 @@ G_M1658_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
mov x21, x6
; gcrRegs +[x21]
- mov x24, x7
- ; gcrRegs +[x24]
+ mov x23, x7
+ ; gcrRegs +[x23]
;; size=76 bbWeight=1 PerfScore 13.50
G_M1658_IG02: ; bbWeight=1, gcrefRegs=7E80000 {x19 x21 x22 x23 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
ldr w27, [x19, #0x08]
@@ -223,14 +223,14 @@ G_M1658_IG07: ; bbWeight=3.96, gcrefRegs=17E80004 {x2 x19 x21 x22 x23 x24
cmp w1, w27
blt G_M1658_IG04
;; size=28 bbWeight=3.96 PerfScore 29.70
-G_M1658_IG08: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
+G_M1658_IG08: ; bbWeight=1.98, gcVars=00000000000000000000000000000000 {}, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V108}
b G_M1658_IG13
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M1658_IG09: ; bbWeight=0.04, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x08]
cmp w1, w0
- bhs G_M1658_IG41
+ bhs G_M1658_IG43
add x0, x19, #16
; byrRegs +[x0]
str w1, [fp, #0x3C] // [V16 loc7]
@@ -276,14 +276,14 @@ G_M1658_IG12: ; bbWeight=0.04, gcrefRegs=17E80004 {x2 x19 x21 x22 x23 x24
mov w1, w4
blt G_M1658_IG09
;; size=32 bbWeight=0.04 PerfScore 0.32
-G_M1658_IG13: ; bbWeight=1, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref, isz
+G_M1658_IG13: ; bbWeight=1.98, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x26 x28}, byrefRegs=0000 {}, byref, isz
add x4, fp, #72 // [V11 loc2]
add x5, fp, #64 // [V12 loc3]
add x7, fp, #80 // [V10 loc1]
add x6, fp, #88 // [V09 loc0]
- mov x0, x24
+ mov x0, x23
; gcrRegs +[x0]
- mov x1, x23
+ mov x1, x22
; gcrRegs +[x1]
mov x3, x28
; gcrRegs +[x3]
@@ -293,16 +293,19 @@ G_M1658_IG13: ; bbWeight=1, gcrefRegs=17E80000 {x19 x21 x22 x23 x24 x25 x
movk x8, #1 LSL #32
ldr x8, [x8]
blr x8
- ; gcrRegs -[x1 x3 x23-x24 x28]
+ ; gcrRegs -[x1 x3 x22-x23 x28]
ldrb w3, [fp, #0x50] // [V10 loc1]
- mov w1, #4
+ cbz w3, G_M1658_IG15
+ ;; size=60 bbWeight=1.98 PerfScore 24.75
+G_M1658_IG14: ; bbWeight=0.50, gcrefRegs=7280001 {x0 x19 x21 x24 x25 x26}, byrefRegs=0000 {}, byref
+ mov w3, #4
cmp w20, #3
- csel w1, w20, w1, eq
- cmp w3, #0
- csel w20, w20, w1, eq
- cbz x0, G_M1658_IG39
- ;; size=80 bbWeight=1 PerfScore 15.00
-G_M1658_IG14: ; bbWeight=0.50, gcrefRegs=4680001 {x0 x19 x21 x22 x26}, byrefRegs=0000 {}, byref, isz
+ csel w20, w20, w3, eq
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
+G_M1658_IG15: ; bbWeight=1, gcrefRegs=7280001 {x0 x19 x21 x24 x25 x26}, byrefRegs=0000 {}, byref, isz
+ cbz x0, G_M1658_IG41
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M1658_IG16: ; bbWeight=0.50, gcrefRegs=5280001 {x0 x19 x21 x24 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x25]
ldr x25, [x0, #0x08]
; gcrRegs +[x25]
@@ -329,7 +332,7 @@ G_M1658_IG14: ; bbWeight=0.50, gcrefRegs=4680001 {x0 x19 x21 x22 x26}, by
movk x1, #0xD1FFAB1E LSL #16
movk x1, #1 LSL #32
cmp x0, x1
- bne G_M1658_IG15
+ bne G_M1658_IG17
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #2 LSL #32
@@ -345,7 +348,7 @@ G_M1658_IG14: ; bbWeight=0.50, gcrefRegs=4680001 {x0 x19 x21 x22 x26}, by
mov x20, x0
...
+8 (+0.58%) : 12283.dasm - System.Collections.Concurrent.ConcurrentDictionary2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary
2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
@@ -9,8 +9,8 @@
; Final local variable assignments
;
; V00 this [V00,T34] ( 5, 8 ) ref -> [fp+0x40] this class-hnd EH-live single-def <System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]>
-; V01 arg1 [V01,T08] ( 11, 41 ) ref -> [fp+0x38] do-not-enreg[Z] class-hnd EH-live <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]>
-; V02 arg2 [V02,T19] ( 5, 20 ) struct ( 8) [fp+0x80] do-not-enreg[SHF] EH-live single-def <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters>
+; V01 arg1 [V01,T09] ( 11, 41 ) ref -> [fp+0x38] do-not-enreg[Z] class-hnd EH-live <System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]>
+; V02 arg2 [V02,T11] ( 6, 36 ) struct ( 8) [fp+0x80] do-not-enreg[SHF] EH-live single-def <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters>
; V03 arg3 [V03,T42] ( 4, 4 ) struct ( 8) [fp+0x78] do-not-enreg[SF] single-def <System.Nullable`1[int]>
;* V04 arg4 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData>
; V05 arg5 [V05,T35] ( 3, 6 ) ubyte -> [fp+0x74] EH-live single-def
@@ -21,7 +21,7 @@
;* V10 loc2 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Nullable`1[int]>
; V11 loc3 [V11,T20] ( 7, 20 ) ref -> [fp+0x28] do-not-enreg[Z] class-hnd EH-live <<unknown class>>
; V12 loc4 [V12,T21] ( 5, 18 ) byref -> x19
-; V13 loc5 [V13,T18] ( 9, 22 ) int -> [fp+0x68] do-not-enreg[Z] ld-addr-op EH-live
+; V13 loc5 [V13,T19] ( 9, 22 ) int -> [fp+0x68] do-not-enreg[Z] ld-addr-op EH-live
; V14 loc6 [V14,T29] ( 5, 12 ) ubyte -> x20
;* V15 loc7 [V15,T41] ( 0, 0 ) ubyte -> zero-ref
; V16 loc8 [V16 ] ( 6, 22 ) ubyte -> [fp+0x60] do-not-enreg[X] addr-exposed ld-addr-op
@@ -40,11 +40,11 @@
;* V29 tmp6 [V29 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters>
;* V30 tmp7 [V30 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
;* V31 tmp8 [V31 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V32 tmp9 [V32,T15] ( 3, 24 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
+; V32 tmp9 [V32,T16] ( 3, 24 ) ref -> x0 class-hnd exact "Inline stloc first use temp" <<unknown class>>
;* V33 tmp10 [V33 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V35 tmp12 [V35 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V36 tmp13 [V36,T09] ( 5, 40 ) int -> x2 "Inline stloc first use temp"
+; V36 tmp13 [V36,T10] ( 5, 40 ) int -> x2 "Inline stloc first use temp"
; V37 tmp14 [V37,T24] ( 2, 16 ) ref -> x0 class-hnd "Inlining Arg" <System.Object>
; V38 tmp15 [V38,T26] ( 2, 16 ) ubyte -> x0 "Inlining Arg"
; V39 tmp16 [V39,T33] ( 3, 12 ) int -> registers "Inline return value spill temp"
@@ -67,24 +67,24 @@
; V56 tmp33 [V56,T55] ( 2, 2 ) int -> x11 "field V29.Components (fldOffset=0x4)" P-INDEP
; V57 tmp34 [V57,T37] ( 2, 8 ) int -> x1 "field V40.Radius (fldOffset=0x0)" P-INDEP
; V58 tmp35 [V58,T38] ( 2, 8 ) int -> x11 "field V40.Components (fldOffset=0x4)" P-INDEP
-; V59 tmp36 [V59,T10] ( 2, 32 ) int -> x1 "field V44.Radius (fldOffset=0x0)" P-INDEP
-; V60 tmp37 [V60,T11] ( 2, 32 ) int -> x2 "field V44.Components (fldOffset=0x4)" P-INDEP
+; V59 tmp36 [V59,T12] ( 2, 32 ) int -> x1 "field V44.Radius (fldOffset=0x0)" P-INDEP
+; V60 tmp37 [V60,T13] ( 2, 32 ) int -> x2 "field V44.Components (fldOffset=0x4)" P-INDEP
; V61 tmp38 [V61,T39] ( 2, 8 ) int -> x14 "field V48.Radius (fldOffset=0x0)" P-INDEP
; V62 tmp39 [V62,T40] ( 2, 8 ) int -> x15 "field V48.Components (fldOffset=0x4)" P-INDEP
-; V63 tmp40 [V63,T13] ( 7, 28 ) int -> [fp+0x58] do-not-enreg[Z] EH-live "V02.[000..004)"
-; V64 tmp41 [V64,T14] ( 7, 28 ) int -> [fp+0x54] do-not-enreg[Z] EH-live "V02.[004..008)"
+; V63 tmp40 [V63,T08] ( 8, 44 ) int -> [fp+0x58] do-not-enreg[Z] EH-live "V02.[000..004)"
+; V64 tmp41 [V64,T15] ( 7, 28 ) int -> [fp+0x54] do-not-enreg[Z] EH-live "V02.[004..008)"
; V65 tmp42 [V65,T44] ( 3, 6 ) byref -> x14 single-def "Spilling address for field-by-field copy"
-; V66 tmp43 [V66,T12] ( 6, 30 ) struct ( 8) [fp+0x48] do-not-enreg[SHF] EH-live "by-value struct argument" <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters>
+; V66 tmp43 [V66,T14] ( 6, 30 ) struct ( 8) [fp+0x48] do-not-enreg[SHF] EH-live "by-value struct argument" <SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters>
;* V67 tmp44 [V67 ] ( 0, 0 ) int -> zero-ref "fgMakeTemp is creating a new local variable"
; V68 tmp45 [V68,T07] ( 3, 48 ) int -> x1 "fgMakeTemp is creating a new local variable"
; V69 tmp46 [V69,T45] ( 3, 6 ) ref -> x0 single-def "arr expr"
;* V70 tmp47 [V70,T57] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V71 PSPSym [V71,T58] ( 1, 1 ) long -> [fp+0x88] do-not-enreg[V] "PSPSym"
; V72 cse0 [V72,T51] ( 3, 3 ) int -> x1 "CSE - moderate"
-; V73 cse1 [V73,T16] ( 3, 24 ) ref -> x1 "CSE - aggressive"
+; V73 cse1 [V73,T17] ( 3, 24 ) ref -> x1 "CSE - aggressive"
; V74 cse2 [V74,T30] ( 3, 12 ) ref -> x11 "CSE - moderate"
; V75 cse3 [V75,T48] ( 2, 2 ) ref -> x0 "CSE - moderate"
-; V76 cse4 [V76,T17] ( 3, 24 ) int -> x3 "CSE - aggressive"
+; V76 cse4 [V76,T18] ( 3, 24 ) int -> x3 "CSE - aggressive"
; V77 cse5 [V77,T31] ( 3, 12 ) ref -> x1 "CSE - moderate"
; V78 cse6 [V78,T32] ( 3, 12 ) byref -> x11 "CSE - moderate"
; V79 cse7 [V79,T56] ( 2, 2 ) int -> x2 "CSE - moderate"
@@ -108,7 +108,7 @@ G_M33506_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
ldr x19, [fp, #0xB0] // [V07 arg7]
; byrRegs +[x19]
;; size=48 bbWeight=1 PerfScore 12.00
-G_M33506_IG02: ; bbWeight=1, gcVars=0000000400C00100 {V00 V01 V51 V52}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
+G_M33506_IG02: ; bbWeight=1, gcVars=0000000400C00200 {V00 V01 V51 V52}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
ldr w1, [fp, #0x80] // [V02 arg2]
str w1, [fp, #0x58] // [V63 tmp40]
ldr w1, [fp, #0x84] // [V02 arg2+0x04]
@@ -195,7 +195,7 @@ G_M33506_IG07: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov w20, wzr
str wzr, [fp, #0x60] // [V16 loc8]
;; size=112 bbWeight=8 PerfScore 412.00
-G_M33506_IG08: ; bbWeight=4, gcVars=0000000400D00108 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
+G_M33506_IG08: ; bbWeight=4, gcVars=0000000400D00208 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz
; gcrRegs -[x0]
ldrb w7, [fp, #0x70] // [V06 arg6]
tst w7, #255
@@ -320,8 +320,10 @@ G_M33506_IG17: ; bbWeight=16, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
ldr x1, [fp, #0x30] // [V08 loc0]
; gcrRegs +[x1]
cbz x1, G_M33506_IG18
- ldr x1, [x22, #0x14]
+ ldr w1, [fp, #0x58] // [V63 tmp40]
; gcrRegs -[x1]
+ str w1, [fp, #0x80] // [V02 arg2]
+ ldr x1, [x22, #0x14]
ldr x0, [fp, #0x30] // [V08 loc0]
; gcrRegs +[x0]
ldr x2, [fp, #0x80] // [V02 arg2]
@@ -333,7 +335,7 @@ G_M33506_IG17: ; bbWeight=16, gcrefRegs=600000 {x21 x22}, byrefRegs=80000
; gcrRegs -[x0]
; gcr arg pop 0
b G_M33506_IG21
- ;; size=44 bbWeight=16 PerfScore 264.00
+ ;; size=52 bbWeight=16 PerfScore 312.00
G_M33506_IG18: ; bbWeight=16, gcrefRegs=600000 {x21 x22}, byrefRegs=80000 {x19}, byref, isz
ldp w1, w2, [x22, #0x14]
ldr w3, [fp, #0x58] // [V63 tmp40]
@@ -558,7 +560,7 @@ G_M33506_IG29: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
str wzr, [fp, #0x5C] // [V22 loc14]
b G_M33506_IG33
;; size=8 bbWeight=4 PerfScore 8.00
-G_M33506_IG30: ; bbWeight=1, gcVars=0000000400D00100 {V00 V01 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33506_IG30: ; bbWeight=1, gcVars=0000000400D00200 {V00 V01 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V08}
ldrb w1, [fp, #0x60] // [V16 loc8]
cbz w1, G_M33506_IG35
@@ -584,7 +586,7 @@ G_M33506_IG30: ; bbWeight=1, gcVars=0000000400D00100 {V00 V01 V11 V51 V52
; gcr arg pop 0
b G_M33506_IG35
;; size=52 bbWeight=1 PerfScore 21.00
-G_M33506_IG31: ; bbWeight=8, gcVars=0000000400D00108 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M33506_IG31: ; bbWeight=8, gcVars=0000000400D00208 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V03 V08 V11 V20}
ldr x0, [fp, #0x88] // [V71 PSPSym]
bl G_M33506_IG42
@@ -599,7 +601,7 @@ G_M33506_IG33: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
G_M33506_IG34: ; bbWeight=1, nogc, extend
b G_M33506_IG38
;; size=4 bbWeight=1 PerfScore 1.00
-G_M33506_IG35: ; bbWeight=1, gcVars=0000000400C00100 {V00 V01 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33506_IG35: ; bbWeight=1, gcVars=0000000400C00200 {V00 V01 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V03 V08 V11 V20}
cbz w20, G_M33506_IG36
ldp x1, x0, [fp, #0x38] // [V01 arg1], [V00 this]
@@ -659,15 +661,15 @@ G_M33506_IG41: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcr arg pop 0
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-G_M33506_IG42: ; bbWeight=1, gcVars=0000000400D00108 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
- ; GC ptr vars +{V00 V01 V03 V08 V11 V20 V22 V51 V52}
+G_M33506_IG42: ; bbWeight=1, gcVars=0000000400D00208 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; GC ptr vars +{V00 V01 V03 V08 V09 V11 V20 V22 V51 V52}
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x20]
stp x21, x22, [sp, #0x30]
add x3, fp, #176
str x3, [sp, #0x18]
;; size=20 bbWeight=1 PerfScore 4.50
-G_M33506_IG43: ; bbWeight=1, gcVars=0000000400D00108 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M33506_IG43: ; bbWeight=1, gcVars=0000000400D00208 {V00 V01 V08 V11 V51 V52}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldrb w0, [fp, #0x60] // [V16 loc8]
cbz w0, G_M33506_IG44
ldr w0, [fp, #0x68] // [V13 loc5]
@@ -686,7 +688,7 @@ G_M33506_IG43: ; bbWeight=1, gcVars=0000000400D00108 {V00 V01 V08 V11 V51
ldr x0, [x0, w1, UXTW #3]
; gcrRegs +[x0]
; byrRegs -[x0]
- ; GC ptr vars -{V03 V11 V20 V22}
+ ; GC ptr vars -{V03 V09 V11 V20 V22}
bl <unknown method>
; gcrRegs -[x0]
; gcr arg pop 0
@@ -704,7 +706,7 @@ G_M33506_IG45: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_unix #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1388, prolog size 48, PerfScore 2083.00, instruction count 347, allocated bytes for code 1388 (MethodHash=ac9a7d1d) for method System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
+; Total bytes of code 1396, prolog size 48, PerfScore 2131.00, instruction count 349, allocated bytes for code 1396 (MethodHash=ac9a7d1d) for method System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -715,7 +717,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 324 (0x00144) Actual length = 1296 (0x000510)
+ Function Length : 326 (0x00146) Actual length = 1304 (0x000518)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+0.79%) : 14004.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
@@ -16,8 +16,8 @@
; V05 arg5 [V05,T09] ( 8, 5.02) ref -> x23 class-hnd single-def <Microsoft.ML.Data.VBuffer`1[float][]>
; V06 arg6 [V06,T10] ( 8, 5.02) ref -> x24 class-hnd single-def <float[]>
; V07 arg7 [V07,T16] ( 4, 3 ) ubyte -> x27 single-def
-; V08 arg8 [V08,T25] ( 1, 0.50) ubyte -> [fp+0xA8] single-def
-; V09 arg9 [V09,T23] ( 3, 1.50) byref -> x28 single-def
+; V08 arg8 [V08,T23] ( 1, 1.98) ubyte -> x28 single-def
+; V09 arg9 [V09,T24] ( 3, 1.50) byref -> [fp+0xB0] single-def
; V10 arg10 [V10,T14] ( 7, 5 ) byref -> x26 single-def
; V11 loc0 [V11,T29] ( 3, 1.50) float -> [fp+0x3C] spill-single-def
; V12 loc1 [V12,T26] ( 9, 6.50) float -> d8
@@ -43,7 +43,7 @@
; V32 tmp12 [V32,T03] ( 6, 12 ) int -> registers "MD array shared temp"
; V33 cse0 [V33,T05] ( 3, 9.90) ref -> x4 "CSE - aggressive"
; V34 cse1 [V34,T12] ( 3, 5.94) int -> x0 "CSE - aggressive"
-; V35 cse2 [V35,T24] ( 3, 1.50) int -> x4 "CSE - moderate"
+; V35 cse2 [V35,T25] ( 3, 1.50) int -> x4 "CSE - moderate"
; V36 cse3 [V36,T13] ( 3, 5.94) long -> [fp+0x18] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 56
@@ -73,23 +73,24 @@ G_M52104_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x24, x6
; gcrRegs +[x24]
mov w27, w7
- ldp x28, x26, [fp, #0xB0] // [V09 arg9], [V10 arg10]
- ; byrRegs +[x26 x28]
- ;; size=84 bbWeight=1 PerfScore 18.00
-G_M52104_IG02: ; bbWeight=1, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+ ldrb w28, [fp, #0xA8] // [V08 arg8]
+ ldr x26, [fp, #0xB8] // [V10 arg10]
+ ; byrRegs +[x26]
+ ;; size=88 bbWeight=1 PerfScore 19.00
+G_M52104_IG02: ; bbWeight=1, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
movn w0, #0
str w0, [x26]
cmn w21, #1
- beq G_M52104_IG27
+ beq G_M52104_IG28
;; size=16 bbWeight=1 PerfScore 3.00
-G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
mov x0, x25
; byrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.ML.Numeric.VectorUtils:NormSquared(byref):float
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
+ movz x2, #0xD1FFAB1E // code for Microsoft.ML.Numeric.VectorUtils:NormSquared(byref):float
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
; byrRegs -[x0]
; gcr arg pop 0
str s0, [fp, #0x3C] // [V11 loc0]
@@ -97,7 +98,7 @@ G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
cmp w21, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -108,7 +109,7 @@ G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
cmp w21, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -121,11 +122,11 @@ G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
movi v17.16b, #0
b G_M52104_IG05
;; size=108 bbWeight=0.50 PerfScore 20.75
-G_M52104_IG04: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+G_M52104_IG04: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
; byrRegs -[x1]
fmov s17, s16
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M52104_IG05: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG05: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
fcvt d16, s17
fsqrt d16, d16
fcvt s9, d16
@@ -133,7 +134,7 @@ G_M52104_IG05: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
cmp w22, w20
bge G_M52104_IG19
;; size=24 bbWeight=0.50 PerfScore 14.50
-G_M52104_IG06: ; bbWeight=0.25, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG06: ; bbWeight=0.25, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
cbz x23, G_M52104_IG15
cbz x24, G_M52104_IG15
orr w1, w22, w20
@@ -145,12 +146,12 @@ G_M52104_IG06: ; bbWeight=0.25, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
cmp w1, w20
blt G_M52104_IG15
;; size=40 bbWeight=0.25 PerfScore 3.12
-G_M52104_IG07: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG07: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
ldr x4, [x19, #0x20]
; gcrRegs +[x4]
cbz x4, G_M52104_IG14
;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
cmn w2, #1
beq G_M52104_IG13
sub w1, w3, w22
@@ -158,11 +159,11 @@ G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byref
sub w5, w1, w0
ldp w1, w0, [x4, #0x10]
cmp w5, w1
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
ldr w1, [x4, #0x1C]
sub w6, w2, w1
cmp w6, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
madd w1, w5, w0, w6
ubfiz x1, x1, #2, #32
add x1, x1, #32
@@ -171,7 +172,7 @@ G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byref
fcmp s16, s9
bgt G_M52104_IG10
;; size=76 bbWeight=1.98 PerfScore 52.47
-G_M52104_IG09: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG09: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x4]
str w3, [fp, #0x34] // [V16 loc5]
mov w4, w3
@@ -204,39 +205,39 @@ G_M52104_IG09: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
str w2, [x26]
mov w3, w2
;; size=100 bbWeight=1.98 PerfScore 59.40
-G_M52104_IG10: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG10: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; byrRegs -[x1]
add w3, w3, #1
cmp w3, w20
ldr w2, [fp, #0x38] // [V13 loc2]
blt G_M52104_IG07
;; size=16 bbWeight=3.96 PerfScore 15.84
-G_M52104_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=14000000 {x26 x28}, byref
+G_M52104_IG11: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=4000000 {x26}, byref
; gcrRegs -[x23-x24]
; byrRegs -[x25]
b G_M52104_IG19
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M52104_IG12: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M52104_IG12: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
; gcrRegs +[x23-x24]
; byrRegs +[x25]
ldr w3, [fp, #0x34] // [V16 loc5]
b G_M52104_IG10
;; size=8 bbWeight=0.99 PerfScore 2.97
-G_M52104_IG13: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+G_M52104_IG13: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
b G_M52104_IG09
;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M52104_IG14: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+G_M52104_IG14: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
b G_M52104_IG09
;; size=4 bbWeight=1.98 PerfScore 1.98
-G_M52104_IG15: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG15: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
- cbz x1, G_M52104_IG24
+ cbz x1, G_M52104_IG25
;; size=8 bbWeight=0.04 PerfScore 0.16
-G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x1]
cmn w2, #1
- beq G_M52104_IG23
+ beq G_M52104_IG24
ldr x4, [x19, #0x20]
; gcrRegs +[x4]
sub w1, w3, w22
@@ -244,11 +245,11 @@ G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
sub w1, w1, w0
ldp w0, w6, [x4, #0x10]
cmp w1, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
sub w0, w2, w5
ldr w5, [x4, #0x14]
cmp w0, w5
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
madd w1, w1, w6, w0
ubfiz x1, x1, #2, #32
add x1, x1, #32
@@ -257,11 +258,11 @@ G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
fcmp s16, s9
bgt G_M52104_IG18
;; size=80 bbWeight=0.02 PerfScore 0.59
-G_M52104_IG17: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG17: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x4]
ldr w1, [x23, #0x08]
cmp w3, w1
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
mov w1, #24
mov x0, #16
str w3, [fp, #0x34] // [V16 loc5]
@@ -282,38 +283,39 @@ G_M52104_IG17: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
ldr w4, [x24, #0x08]
ldr w7, [fp, #0x34] // [V16 loc5]
cmp w7, w4
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
add x4, x24, #16
; byrRegs +[x4]
ldr s17, [x4, w7, UXTW #2]
fadd s10, s16, s17
fcmp s8, s10
- blt G_M52104_IG22
+ blt G_M52104_IG23
fmov s8, s10
str w7, [x26]
mov w3, w7
;; size=112 bbWeight=0.02 PerfScore 0.77
-G_M52104_IG18: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG18: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; byrRegs -[x4]
add w3, w3, #1
cmp w3, w20
ldr w2, [fp, #0x38] // [V13 loc2]
blt G_M52104_IG15
;; size=16 bbWeight=0.04 PerfScore 0.16
-G_M52104_IG19: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=14000000 {x26 x28}, byref, isz
+G_M52104_IG19: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=4000000 {x26}, byref, isz
; gcrRegs -[x23-x24]
; byrRegs -[x25]
- ldrb w22, [fp, #0xA8] // [V08 arg8]
- tst w22, #255
- beq G_M52104_IG20
+ tst w28, #255
+ beq G_M52104_IG21
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M52104_IG20: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=4000000 {x26}, byref, isz
ldr w4, [x26]
...
+16 (+1.35%) : 14835.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 39,506 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
-; V01 TypeCtx [V01,T42] ( 7, 5.56) long -> x26 single-def
-; V02 arg1 [V02,T32] ( 4, 14 ) byref -> x24 single-def
-; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> x20 single-def
-; V04 arg3 [V04,T45] ( 3, 3 ) ref -> x4 class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
-; V05 arg4 [V05,T29] ( 6, 26 ) ref -> x21 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V06 arg5 [V06,T30] ( 6, 26 ) ref -> x22 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
-; V07 arg6 [V07,T31] ( 3, 18 ) ubyte -> x23 single-def
-; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> x25
-; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [fp+0x81] single-def
+; V00 this [V00,T00] ( 39,432 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
+; V01 TypeCtx [V01,T43] ( 7, 5.56) long -> x26 single-def
+; V02 arg1 [V02,T30] ( 4, 14 ) byref -> x22 single-def
+; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> x23 single-def
+; V04 arg3 [V04,T46] ( 3, 3 ) ref -> x4 class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
+; V05 arg4 [V05,T28] ( 6, 22 ) ref -> x21 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V06 arg5 [V06,T27] ( 6, 26 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
+; V07 arg6 [V07,T37] ( 3, 10 ) ubyte -> x24 single-def
+; V08 arg7 [V08,T38] ( 2, 10 ) ubyte -> x25
+; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [fp+0x81] single-def
;* V10 loc0 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+<>c__DisplayClass417_0`1[System.__Canon]>
-; V11 loc1 [V11 ] ( 7, 42 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V12 loc2 [V12,T17] ( 3, 52 ) int -> [fp+0x1C] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
+; V12 loc2 [V12,T16] ( 3, 34 ) int -> [fp+0x1C] ld-addr-op
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T47] ( 3, 4 ) long -> x1 "spilling helperCall"
+; V14 tmp1 [V14,T48] ( 3, 4 ) long -> x1 "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V17 tmp4 [V17,T48] ( 3, 4 ) long -> x1 "spilling helperCall"
+; V17 tmp4 [V17,T49] ( 3, 4 ) long -> x1 "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V19 tmp6 [V19 ] ( 0, 0 ) byref -> zero-ref
-; V20 tmp7 [V20,T26] ( 2, 32 ) byref -> [fp+0x10] spill-single-def
-; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> x1
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [fp+0x10] spill-single-def
+; V21 tmp8 [V21,T29] ( 3, 24 ) ref -> x1
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V23 tmp10 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
@@ -37,59 +37,60 @@
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V27 tmp14 [V27,T41] ( 2, 8 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> x1
-; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V31 tmp18 [V31,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V33 tmp20 [V33,T33] ( 2, 16 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> x1
-; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V34 tmp21 [V34,T33] ( 4, 14 ) ref -> x2
+; V35 tmp22 [V35,T36] ( 3, 12 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V38 tmp25 [V38,T07] ( 2, 64 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V39 tmp26 [V39,T12] ( 4, 56 ) ref -> x1
-; V40 tmp27 [V40,T19] ( 3, 48 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> x2
+; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp29 [V42,T34] ( 2, 16 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T42] ( 2, 8 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V44 tmp31 [V44,T08] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp32 [V45,T13] ( 4, 56 ) ref -> x2
-; V46 tmp33 [V46,T20] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V44 tmp31 [V44,T21] ( 2, 32 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V45 tmp32 [V45,T17] ( 4, 32 ) ref -> x2
+; V46 tmp33 [V46,T09] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V48 tmp35 [V48,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp35 [V48,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V50 tmp37 [V50,T09] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V51 tmp38 [V51,T14] ( 4, 56 ) ref -> x2
-; V52 tmp39 [V52,T21] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> x3
+; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V55 tmp42 [V55,T01] ( 2,256 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V56 tmp43 [V56,T02] ( 4,224 ) ref -> x2
-; V57 tmp44 [V57,T04] ( 3,192 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V55 tmp42 [V55,T01] ( 2,256 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V56 tmp43 [V56,T02] ( 4,224 ) ref -> x3
+; V57 tmp44 [V57,T03] ( 3,192 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V60 tmp47 [V60,T10] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> x2
-; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> x3
+; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V65 tmp52 [V65,T11] ( 2, 64 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> x1
-; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> x1
+; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V69 tmp56 [V69,T27] ( 2, 32 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
-;* V70 tmp57 [V70,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V71 tmp58 [V71,T06] ( 3, 80 ) int -> x0 "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
+;* V70 tmp57 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V71 tmp58 [V71,T13] ( 3, 48 ) int -> x0 "Inline stloc first use temp"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V10.<>4__this (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T03] ( 7,193 ) ref -> x28 single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
-;* V74 tmp61 [V74,T50] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> x28 single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
+;* V74 tmp61 [V74,T51] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> x27 single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "field V16._builder (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "field V24._builder (fldOffset=0x0)" P-INDEP
-; V79 rat0 [V79,T43] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V80 rat1 [V80,T44] ( 3, 5.60) long -> x0 "spilling expr"
-; V81 rat2 [V81,T46] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [fp+0x18] multi-def "CSE - moderate"
+; V80 rat0 [V80,T44] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V81 rat1 [V81,T45] ( 3, 5.60) long -> x0 "spilling expr"
+; V82 rat2 [V82,T47] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 32
@@ -105,17 +106,17 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
mov x26, x1
- mov x24, x2
- ; byrRegs +[x24]
- mov w20, w3
+ mov x22, x2
+ ; byrRegs +[x22]
+ mov w23, w3
mov x21, x5
; gcrRegs +[x21]
- mov x22, x6
- ; gcrRegs +[x22]
- mov w23, w7
+ mov x20, x6
+ ; gcrRegs +[x20]
+ mov w24, w7
ldrb w25, [fp, #0x80] // [V08 arg7]
;; size=64 bbWeight=1 PerfScore 13.00
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=680010 {x4 x19 x21 x22}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=380010 {x4 x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs +[x4]
ldrb w27, [fp, #0x81] // [V09 arg8]
mov x28, x4
@@ -124,11 +125,11 @@ G_M39451_IG02: ; bbWeight=1, gcrefRegs=680010 {x4 x19 x21 x22}, byrefRegs
ldr x1, [x0, #0x10]
cbz x1, G_M39451_IG04
;; size=20 bbWeight=1 PerfScore 9.50
-G_M39451_IG03: ; bbWeight=0.80, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
+G_M39451_IG03: ; bbWeight=0.80, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x4]
b G_M39451_IG05
;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
mov x0, x26
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -136,7 +137,7 @@ G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=10680000 {x19 x21 x22 x28}, byr
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov x1, x0
;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
ldr x0, [x19, #0xD1FFAB1E]
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:AllocateSeparated[System.__Canon]():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]:this
@@ -147,12 +148,12 @@ G_M39451_IG05: ; bbWeight=1, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefR
blr x2
str x0, [fp, #0x20] // [V11 loc1]
;; size=32 bbWeight=1 PerfScore 12.50
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
tst w25, #255
bne G_M39451_IG16
;; size=8 bbWeight=8 PerfScore 12.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x19, #0x10]
; gcrRegs +[x1]
cbnz x1, G_M39451_IG08
@@ -174,78 +175,79 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefR
; gcrRegs -[x0 x15]
; byrRegs -[x14]
;; size=48 bbWeight=2 PerfScore 25.00
-G_M39451_IG08: ; bbWeight=2, gcrefRegs=10680002 {x1 x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG08: ; bbWeight=2, gcrefRegs=10380002 {x1 x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
ldrh w0, [x1, #0x0C]
- uxth w1, w20
+ uxth w1, w23
; gcrRegs -[x1]
+ str w1, [fp, #0x18] // [V79 cse0]
cmp w0, w1
- beq G_M39451_IG39
- ;; size=16 bbWeight=2 PerfScore 10.00
-G_M39451_IG09: ; bbWeight=4, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
- ldr x1, [x19, #0x10]
- ; gcrRegs +[x1]
- cbnz x1, G_M39451_IG11
+ beq G_M39451_IG33
+ ;; size=20 bbWeight=2 PerfScore 12.00
+G_M39451_IG09: ; bbWeight=4, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
+ ldr x2, [x19, #0x10]
+ ; gcrRegs +[x2]
+ cbnz x2, G_M39451_IG11
;; size=8 bbWeight=4 PerfScore 16.00
-G_M39451_IG10: ; bbWeight=2, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
- ; gcrRegs -[x1]
+G_M39451_IG10: ; bbWeight=2, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
+ ; gcrRegs -[x2]
mov x0, x19
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #1 LSL #32
- ldr x1, [x1]
- blr x1
- mov x1, x0
- ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #1 LSL #32
+ ldr x2, [x2]
+ blr x2
+ mov x2, x0
+ ; gcrRegs +[x2]
add x14, x19, #16
; byrRegs +[x14]
- mov x15, x1
...
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.osx.arm64.checked.mch |
72 |
4 |
10 |
58 |
-28 |
+76 |
benchmarks.run_pgo.osx.arm64.checked.mch |
1,077 |
313 |
251 |
513 |
-3,428 |
+1,548 |
benchmarks.run_tiered.osx.arm64.checked.mch |
26 |
2 |
7 |
17 |
-20 |
+88 |
coreclr_tests.run.osx.arm64.checked.mch |
3,882 |
116 |
136 |
3,630 |
-1,148 |
+1,092 |
libraries.crossgen2.osx.arm64.checked.mch |
254 |
8 |
19 |
227 |
-88 |
+256 |
libraries.pmi.osx.arm64.checked.mch |
316 |
16 |
36 |
264 |
-152 |
+468 |
libraries_tests.run.osx.arm64.Release.mch |
450 |
203 |
35 |
212 |
-1,568 |
+200 |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
503 |
92 |
115 |
296 |
-768 |
+1,152 |
realworld.run.osx.arm64.checked.mch |
92 |
8 |
6 |
78 |
-124 |
+60 |
|
6,672 |
762 |
615 |
5,295 |
-7,324 |
+4,940 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.osx.arm64.checked.mch |
24,839 |
6 |
24,833 |
50 (0.20%) |
50 (0.20%) |
benchmarks.run_pgo.osx.arm64.checked.mch |
66,699 |
47,211 |
19,488 |
45 (0.07%) |
45 (0.07%) |
benchmarks.run_tiered.osx.arm64.checked.mch |
48,278 |
37,393 |
10,885 |
48 (0.10%) |
48 (0.10%) |
coreclr_tests.run.osx.arm64.checked.mch |
506,784 |
301,369 |
205,415 |
116 (0.02%) |
116 (0.02%) |
libraries.crossgen2.osx.arm64.checked.mch |
263,948 |
15 |
263,933 |
555 (0.21%) |
555 (0.21%) |
libraries.pmi.osx.arm64.checked.mch |
316,412 |
18 |
316,394 |
48 (0.02%) |
48 (0.02%) |
libraries_tests.run.osx.arm64.Release.mch |
173,214 |
153,670 |
19,544 |
350 (0.20%) |
350 (0.20%) |
librariestestsnotieredcompilation.run.osx.arm64.Release.mch |
301,291 |
21,618 |
279,673 |
2,238 (0.74%) |
2,238 (0.74%) |
realworld.run.osx.arm64.checked.mch |
31,596 |
3 |
31,593 |
10 (0.03%) |
10 (0.03%) |
|
1,733,061 |
561,303 |
1,171,758 |
3,460 (0.20%) |
3,460 (0.20%) |
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: 11100460 (overridden on cmd)
Total bytes of diff: 11100508 (overridden on cmd)
Total bytes of delta: 48 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
16 : 1631.dasm (0.80 % of base)
12 : 1996.dasm (1.68 % of base)
8 : 3965.dasm (0.29 % of base)
8 : 11950.dasm (1.12 % of base)
8 : 13347.dasm (0.39 % of base)
8 : 5783.dasm (0.17 % of base)
4 : 7441.dasm (0.28 % of base)
4 : 11068.dasm (0.17 % of base)
4 : 14200.dasm (0.09 % of base)
4 : 14392.dasm (0.09 % of base)
Top file improvements (bytes):
-12 : 1552.dasm (-1.24 % of base)
-8 : 17010.dasm (-0.14 % of base)
-4 : 24570.dasm (-0.76 % of base)
-4 : 16702.dasm (-0.12 % of base)
14 total files with Code Size differences (4 improved, 10 regressed), 36 unchanged.
Top method regressions (bytes):
16 (0.80 % of base) : 1631.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):this (FullOpts)
12 (1.68 % of base) : 1996.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
8 (0.29 % of base) : 3965.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
8 (0.39 % of base) : 13347.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
8 (1.12 % of base) : 11950.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
8 (0.17 % of base) : 5783.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
4 (0.28 % of base) : 7441.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (FullOpts)
4 (0.09 % of base) : 14200.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 14392.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.17 % of base) : 11068.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
Top method improvements (bytes):
-12 (-1.24 % of base) : 1552.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-8 (-0.14 % of base) : 17010.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.12 % of base) : 16702.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-4 (-0.76 % of base) : 24570.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
Top method regressions (percentages):
12 (1.68 % of base) : 1996.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
8 (1.12 % of base) : 11950.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
16 (0.80 % of base) : 1631.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):this (FullOpts)
8 (0.39 % of base) : 13347.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
8 (0.29 % of base) : 3965.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
4 (0.28 % of base) : 7441.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (FullOpts)
8 (0.17 % of base) : 5783.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
4 (0.17 % of base) : 11068.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
4 (0.09 % of base) : 14200.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 14392.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-12 (-1.24 % of base) : 1552.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-4 (-0.76 % of base) : 24570.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
-8 (-0.14 % of base) : 17010.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.12 % of base) : 16702.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):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: 24781864 (overridden on cmd)
Total bytes of diff: 24779984 (overridden on cmd)
Total bytes of delta: -1880 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
44 : 25367.dasm (0.99 % of base)
44 : 66694.dasm (0.99 % of base)
32 : 61965.dasm (0.61 % of base)
28 : 24351.dasm (0.54 % of base)
28 : 29091.dasm (0.66 % of base)
28 : 65278.dasm (0.54 % of base)
28 : 63627.dasm (0.53 % of base)
24 : 52864.dasm (0.78 % of base)
16 : 55369.dasm (1.59 % of base)
16 : 56709.dasm (0.77 % of base)
16 : 62507.dasm (1.39 % of base)
16 : 65673.dasm (1.39 % of base)
16 : 37200.dasm (5.26 % of base)
16 : 30643.dasm (0.77 % of base)
16 : 51759.dasm (1.59 % of base)
16 : 57629.dasm (0.66 % of base)
12 : 65346.dasm (2.42 % of base)
12 : 22428.dasm (2.42 % of base)
12 : 33036.dasm (2.42 % of base)
12 : 52287.dasm (2.42 % of base)
Top file improvements (bytes):
-52 : 29934.dasm (-1.21 % of base)
-40 : 54212.dasm (-1.63 % of base)
-32 : 50252.dasm (-2.17 % of base)
-32 : 58913.dasm (-2.17 % of base)
-32 : 65687.dasm (-2.17 % of base)
-32 : 53590.dasm (-2.17 % of base)
-32 : 56920.dasm (-0.73 % of base)
-32 : 64505.dasm (-2.17 % of base)
-32 : 32738.dasm (-2.17 % of base)
-32 : 9166.dasm (-2.17 % of base)
-28 : 9205.dasm (-3.95 % of base)
-28 : 56418.dasm (-0.64 % of base)
-20 : 31781.dasm (-2.50 % of base)
-20 : 33014.dasm (-4.07 % of base)
-20 : 48837.dasm (-2.50 % of base)
-20 : 54601.dasm (-2.50 % of base)
-20 : 61241.dasm (-4.07 % of base)
-20 : 19686.dasm (-4.07 % of base)
-20 : 36874.dasm (-4.07 % of base)
-20 : 48805.dasm (-1.94 % of base)
84 total files with Code Size differences (45 improved, 39 regressed), 20 unchanged.
Top method regressions (bytes):
44 (0.99 % of base) : 25367.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
44 (0.99 % of base) : 66694.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
32 (0.61 % of base) : 61965.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[System.__Canon]:MoveNext():this (Tier1-OSR)
28 (0.54 % of base) : 65278.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[System.__Canon]:MoveNext():this (Tier1-OSR)
28 (0.54 % of base) : 24351.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
28 (0.53 % of base) : 63627.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
28 (0.66 % of base) : 29091.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
24 (0.78 % of base) : 52864.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (0.66 % of base) : 57629.dasm - LinqBenchmarks:Where01LinqMethodNestedX():ubyte:this (Tier1-OSR)
16 (0.77 % of base) : 56709.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
16 (0.77 % of base) : 30643.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
16 (1.39 % of base) : 62507.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int) (Tier1)
16 (1.39 % of base) : 65673.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int) (Tier1)
16 (1.59 % of base) : 55369.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:IntroSort(System.Span`1[System.Collections.IntStruct],int) (Tier1)
16 (1.59 % of base) : 51759.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:IntroSort(System.Span`1[System.Collections.IntStruct],int) (Tier1)
16 (5.26 % of base) : 37200.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (Tier1)
12 (2.42 % of base) : 65346.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.42 % of base) : 22428.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.42 % of base) : 33036.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.42 % of base) : 52287.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
Top method improvements (bytes):
-52 (-1.21 % of base) : 29934.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
-40 (-1.63 % of base) : 54212.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (Tier1)
-32 (-0.73 % of base) : 56920.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
-32 (-2.17 % of base) : 50252.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 58913.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 65687.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 53590.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 64505.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 32738.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 9166.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-28 (-0.64 % of base) : 56418.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
-28 (-3.95 % of base) : 9205.dasm - System.Collections.Generic.SegmentedArrayBuilder`1[System.__Canon]:AddNonICollectionRangeInlined(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-20 (-1.68 % of base) : 60245.dasm - BenchmarksGame.KNucleotide_9+<>c__DisplayClass11_0:<count>b__0():System.String:this (Tier1-OSR)
-20 (-2.50 % of base) : 31781.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
-20 (-2.50 % of base) : 48837.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
-20 (-2.50 % of base) : 54601.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
-20 (-4.07 % of base) : 33014.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 61241.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 19686.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 36874.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
Top method regressions (percentages):
16 (5.26 % of base) : 37200.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (Tier1)
8 (4.08 % of base) : 32700.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (4.08 % of base) : 32703.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (3.85 % of base) : 62429.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 21051.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 53037.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 57152.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 60666.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 63324.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 18199.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 25285.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 52402.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 57359.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.85 % of base) : 62708.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.64 % of base) : 62789.dasm - Benchstone.MDBenchI.MDLogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (3.64 % of base) : 62786.dasm - Benchstone.MDBenchI.MDLogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (3.57 % of base) : 63322.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
8 (3.57 % of base) : 21620.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
8 (3.57 % of base) : 62707.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
8 (3.57 % of base) : 64072.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClass(ulong,System.Object):System.Object (Tier1)
Top method improvements (percentages):
-16 (-15.38 % of base) : 56608.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
-16 (-8.33 % of base) : 31762.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 35576.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 56635.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 52024.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 60608.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 65089.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-7.84 % of base) : 19957.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 16051.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 44601.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-8 (-6.06 % of base) : 54162.dasm - BenchmarksGame.BinaryTrees_6+TreeNode:Check():int:this (Tier1)
-12 (-4.29 % of base) : 59177.dasm - BenchmarksGame.KNucleotide:KFrequency(int,int):this (Tier1-OSR)
-20 (-4.07 % of base) : 33014.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 61241.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 19686.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 36874.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 54573.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 65341.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 30634.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 31757.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
benchmarks.run_tiered.osx.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15471592 (overridden on cmd)
Total bytes of diff: 15471660 (overridden on cmd)
Total bytes of delta: 68 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
60 : 7441.dasm (3.29 % of base)
8 : 24588.dasm (0.29 % of base)
4 : 29581.dasm (0.09 % of base)
4 : 5968.dasm (0.29 % of base)
4 : 27315.dasm (0.45 % of base)
4 : 28945.dasm (0.09 % of base)
4 : 40388.dasm (0.28 % of base)
Top file improvements (bytes):
-12 : 20301.dasm (-1.24 % of base)
-8 : 31181.dasm (-1.01 % of base)
9 total files with Code Size differences (2 improved, 7 regressed), 17 unchanged.
Top method regressions (bytes):
60 (3.29 % of base) : 7441.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1-OSR)
8 (0.29 % of base) : 24588.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
4 (0.28 % of base) : 40388.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
4 (0.29 % of base) : 5968.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
4 (0.45 % of base) : 27315.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:GrowTable(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[int,int],ubyte,ubyte):this (Tier1-OSR)
4 (0.09 % of base) : 29581.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 28945.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-12 (-1.24 % of base) : 20301.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
-8 (-1.01 % of base) : 31181.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
Top method regressions (percentages):
60 (3.29 % of base) : 7441.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1-OSR)
4 (0.45 % of base) : 27315.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[int,int]:GrowTable(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[int,int],ubyte,ubyte):this (Tier1-OSR)
8 (0.29 % of base) : 24588.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (Tier1)
4 (0.29 % of base) : 5968.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
4 (0.28 % of base) : 40388.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
4 (0.09 % of base) : 29581.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 28945.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-12 (-1.24 % of base) : 20301.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
-8 (-1.01 % of base) : 31181.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
9 total methods with Code Size differences (2 improved, 7 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: 390212620 (overridden on cmd)
Total bytes of diff: 390212564 (overridden on cmd)
Total bytes of delta: -56 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
28 : 351925.dasm (2.33 % of base)
28 : 351931.dasm (2.39 % of base)
28 : 351937.dasm (2.42 % of base)
28 : 374770.dasm (0.82 % of base)
28 : 351883.dasm (2.21 % of base)
28 : 351889.dasm (2.44 % of base)
28 : 351895.dasm (2.33 % of base)
28 : 351901.dasm (2.39 % of base)
28 : 351907.dasm (2.42 % of base)
28 : 351913.dasm (2.21 % of base)
28 : 374777.dasm (0.82 % of base)
28 : 374784.dasm (0.82 % of base)
28 : 397651.dasm (6.54 % of base)
24 : 351562.dasm (0.72 % of base)
24 : 351570.dasm (0.72 % of base)
24 : 489455.dasm (4.69 % of base)
24 : 491159.dasm (4.69 % of base)
12 : 197801.dasm (6.25 % of base)
12 : 488997.dasm (0.16 % of base)
12 : 219219.dasm (0.74 % of base)
Top file improvements (bytes):
-80 : 435660.dasm (-7.25 % of base)
-24 : 220530.dasm (-4.08 % of base)
-24 : 235892.dasm (-4.08 % of base)
-24 : 4209.dasm (-4.08 % of base)
-24 : 214716.dasm (-4.08 % of base)
-24 : 227637.dasm (-4.08 % of base)
-24 : 413994.dasm (-0.26 % of base)
-20 : 207608.dasm (-3.40 % of base)
-20 : 208847.dasm (-3.40 % of base)
-20 : 226970.dasm (-3.40 % of base)
-20 : 268694.dasm (-3.40 % of base)
-20 : 281210.dasm (-3.40 % of base)
-20 : 206009.dasm (-3.40 % of base)
-20 : 208193.dasm (-3.40 % of base)
-20 : 225403.dasm (-3.40 % of base)
-20 : 266022.dasm (-3.40 % of base)
-20 : 284370.dasm (-3.40 % of base)
-16 : 199260.dasm (-7.84 % of base)
-16 : 205895.dasm (-7.84 % of base)
-16 : 213801.dasm (-7.84 % of base)
65 total files with Code Size differences (36 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
28 (6.54 % of base) : 397651.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
28 (2.21 % of base) : 351883.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Byte:RunReflectionScenario():this (FullOpts)
28 (2.44 % of base) : 351889.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Double:RunReflectionScenario():this (FullOpts)
28 (2.33 % of base) : 351895.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int16:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 351901.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int32:RunReflectionScenario():this (FullOpts)
28 (2.42 % of base) : 351907.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int64:RunReflectionScenario():this (FullOpts)
28 (2.21 % of base) : 351913.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256SByte:RunReflectionScenario():this (FullOpts)
28 (2.33 % of base) : 351925.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt16:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 351931.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt32:RunReflectionScenario():this (FullOpts)
28 (2.42 % of base) : 351937.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt64:RunReflectionScenario():this (FullOpts)
28 (0.82 % of base) : 374770.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementDouble0:RunReflectionScenario(int,ubyte):this (FullOpts)
28 (0.82 % of base) : 374777.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementDouble1:RunReflectionScenario(int,ubyte):this (FullOpts)
28 (0.82 % of base) : 374784.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementDouble3:RunReflectionScenario(int,ubyte):this (FullOpts)
24 (4.69 % of base) : 489455.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (4.69 % of base) : 491159.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (0.72 % of base) : 351562.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithElement__GetAndWithElementDouble0:RunReflectionScenario(int,ubyte):this (FullOpts)
24 (0.72 % of base) : 351570.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithElement__GetAndWithElementDouble1:RunReflectionScenario(int,ubyte):this (FullOpts)
12 (0.16 % of base) : 488997.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
12 (0.74 % of base) : 219219.dasm - JitTest_lcsmixed_lcs_cs.LCS:findLCS(int[,,,][,,,],int[,][,][,][,],ushort[][],int[]) (Tier1-OSR)
12 (2.31 % of base) : 504533.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
Top method improvements (bytes):
-80 (-7.25 % of base) : 435660.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (FullOpts)
-24 (-0.26 % of base) : 413994.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-24 (-4.08 % of base) : 220530.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-24 (-4.08 % of base) : 235892.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-24 (-4.08 % of base) : 4209.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-24 (-4.08 % of base) : 214716.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-24 (-4.08 % of base) : 227637.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-3.40 % of base) : 207608.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-3.40 % of base) : 208847.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-3.40 % of base) : 226970.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-3.40 % of base) : 268694.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-3.40 % of base) : 281210.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-3.40 % of base) : 206009.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-3.40 % of base) : 208193.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-3.40 % of base) : 225403.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-3.40 % of base) : 266022.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-3.40 % of base) : 284370.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-16 (-7.84 % of base) : 199260.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 205895.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 213801.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
Top method regressions (percentages):
28 (6.54 % of base) : 397651.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
12 (6.25 % of base) : 197801.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
24 (4.69 % of base) : 489455.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (4.69 % of base) : 491159.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
8 (4.08 % of base) : 205111.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (3.92 % of base) : 279873.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.64 % of base) : 205196.dasm - Benchstone.MDBenchI.MDLogicArray:Inner(byref):ubyte (Tier1-OSR)
28 (2.44 % of base) : 351889.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Double:RunReflectionScenario():this (FullOpts)
4 (2.44 % of base) : 267585.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
28 (2.42 % of base) : 351907.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int64:RunReflectionScenario():this (FullOpts)
28 (2.42 % of base) : 351937.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt64:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 351901.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int32:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 351931.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt32:RunReflectionScenario():this (FullOpts)
28 (2.33 % of base) : 351895.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int16:RunReflectionScenario():this (FullOpts)
28 (2.33 % of base) : 351925.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt16:RunReflectionScenario():this (FullOpts)
12 (2.31 % of base) : 504533.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
28 (2.21 % of base) : 351883.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Byte:RunReflectionScenario():this (FullOpts)
28 (2.21 % of base) : 351913.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256SByte:RunReflectionScenario():this (FullOpts)
8 (2.04 % of base) : 8288.dasm - pow0:TestEntryPoint():int (Tier1-OSR)
8 (2.04 % of base) : 8285.dasm - pow0:TestEntryPoint():int (Tier1-OSR)
Top method improvements (percentages):
-16 (-7.84 % of base) : 199260.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 205895.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 213801.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 214749.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 219235.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 227007.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 228923.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 4333.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 202662.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 210350.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 212004.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 215525.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 222649.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 227650.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 268720.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 274703.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 284410.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 5660.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-80 (-7.25 % of base) : 435660.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (FullOpts)
-24 (-4.08 % of base) : 220530.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
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: 63299348 (overridden on cmd)
Total bytes of diff: 63299516 (overridden on cmd)
Total bytes of delta: 168 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
84 : 182352.dasm (1.36 % of base)
48 : 198893.dasm (0.18 % of base)
16 : 200588.dasm (0.17 % of base)
12 : 22424.dasm (1.87 % of base)
12 : 27324.dasm (5.88 % of base)
12 : 187223.dasm (5.88 % of base)
8 : 216208.dasm (0.16 % of base)
8 : 242462.dasm (1.28 % of base)
8 : 41723.dasm (0.38 % of base)
8 : 82027.dasm (0.77 % of base)
8 : 173611.dasm (1.21 % of base)
4 : 204185.dasm (0.55 % of base)
4 : 226569.dasm (0.26 % of base)
4 : 79131.dasm (0.19 % of base)
4 : 86930.dasm (0.12 % of base)
4 : 106782.dasm (0.56 % of base)
4 : 114291.dasm (0.59 % of base)
4 : 100377.dasm (1.01 % of base)
4 : 90491.dasm (0.26 % of base)
Top file improvements (bytes):
-24 : 75437.dasm (-0.44 % of base)
-20 : 9579.dasm (-2.23 % of base)
-16 : 114850.dasm (-2.16 % of base)
-12 : 174471.dasm (-0.79 % of base)
-4 : 107261.dasm (-0.26 % of base)
-4 : 86961.dasm (-0.12 % of base)
-4 : 107252.dasm (-0.09 % of base)
-4 : 107240.dasm (-0.18 % of base)
27 total files with Code Size differences (8 improved, 19 regressed), 32 unchanged.
Top method regressions (bytes):
84 (1.36 % of base) : 182352.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
48 (0.18 % of base) : 198893.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)
16 (0.17 % of base) : 200588.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
12 (5.88 % of base) : 27324.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (5.88 % of base) : 187223.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (1.87 % of base) : 22424.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
8 (0.77 % of base) : 82027.dasm - Microsoft.FSharp.Control.FSharpEvent`2[System.__Canon,System.__Canon]:.cctor() (FullOpts)
8 (0.16 % of base) : 216208.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
8 (1.28 % of base) : 242462.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
8 (0.38 % of base) : 41723.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
8 (1.21 % of base) : 173611.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (0.12 % of base) : 86930.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
4 (0.26 % of base) : 90491.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:DetermineDefaultPropertyName(System.Collections.Generic.Dictionary`2[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.String:this (FullOpts)
4 (1.01 % of base) : 100377.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContextExtensions:MatchEndElement(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContext],Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameSyntax):int (FullOpts)
4 (0.56 % of base) : 106782.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
4 (0.59 % of base) : 114291.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
4 (0.19 % of base) : 79131.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:objectValueWithPropertiesL(int,System.Type,System.Object):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
4 (0.55 % of base) : 204185.dasm - System.Data.ProviderBase.DbConnectionPool:PoolCreateRequest(System.Object):this (FullOpts)
4 (0.26 % of base) : 226569.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
Top method improvements (bytes):
-24 (-0.44 % of base) : 75437.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)
-20 (-2.23 % of base) : 9579.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-16 (-2.16 % of base) : 114850.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
-12 (-0.79 % of base) : 174471.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-4 (-0.12 % of base) : 86961.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindLateBoundInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-4 (-0.26 % of base) : 107261.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CombineCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,int,System.Collections.Immutable.ImmutableArray`1[System.String],byref) (FullOpts)
-4 (-0.09 % of base) : 107252.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
-4 (-0.18 % of base) : 107240.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ShadowBasedOnInferenceLevel(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref,byref) (FullOpts)
Top method regressions (percentages):
12 (5.88 % of base) : 27324.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (5.88 % of base) : 187223.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (1.87 % of base) : 22424.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
84 (1.36 % of base) : 182352.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
8 (1.28 % of base) : 242462.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
8 (1.21 % of base) : 173611.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (1.01 % of base) : 100377.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContextExtensions:MatchEndElement(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContext],Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameSyntax):int (FullOpts)
8 (0.77 % of base) : 82027.dasm - Microsoft.FSharp.Control.FSharpEvent`2[System.__Canon,System.__Canon]:.cctor() (FullOpts)
4 (0.59 % of base) : 114291.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
4 (0.56 % of base) : 106782.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
4 (0.55 % of base) : 204185.dasm - System.Data.ProviderBase.DbConnectionPool:PoolCreateRequest(System.Object):this (FullOpts)
8 (0.38 % of base) : 41723.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
4 (0.26 % of base) : 90491.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:DetermineDefaultPropertyName(System.Collections.Generic.Dictionary`2[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.String:this (FullOpts)
4 (0.26 % of base) : 226569.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
4 (0.19 % of base) : 79131.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:objectValueWithPropertiesL(int,System.Type,System.Object):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
48 (0.18 % of base) : 198893.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)
16 (0.17 % of base) : 200588.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
8 (0.16 % of base) : 216208.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
4 (0.12 % of base) : 86930.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReportUnspecificProcedures(Microsoft.CodeAnalysis.Location,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte) (FullOpts)
Top method improvements (percentages):
-20 (-2.23 % of base) : 9579.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-16 (-2.16 % of base) : 114850.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
-12 (-0.79 % of base) : 174471.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-24 (-0.44 % of base) : 75437.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.26 % of base) : 107261.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CombineCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,int,System.Collections.Immutable.ImmutableArray`1[System.String],byref) (FullOpts)
-4 (-0.18 % of base) : 107240.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ShadowBasedOnInferenceLevel(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref,byref) (FullOpts)
-4 (-0.12 % of base) : 86961.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindLateBoundInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-4 (-0.09 % of base) : 107252.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
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: 80228576 (overridden on cmd)
Total bytes of diff: 80228892 (overridden on cmd)
Total bytes of delta: 316 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
60 : 239540.dasm (0.23 % of base)
48 : 156545.dasm (0.87 % of base)
44 : 297161.dasm (3.24 % of base)
44 : 31113.dasm (1.36 % of base)
24 : 184585.dasm (2.30 % of base)
24 : 197812.dasm (4.69 % of base)
16 : 243819.dasm (1.17 % of base)
16 : 2471.dasm (0.63 % of base)
12 : 197288.dasm (0.16 % of base)
12 : 245370.dasm (0.89 % of base)
12 : 171429.dasm (6.25 % of base)
12 : 40476.dasm (6.25 % of base)
12 : 247203.dasm (2.29 % of base)
12 : 5483.dasm (1.68 % of base)
8 : 160650.dasm (0.18 % of base)
8 : 195351.dasm (1.36 % of base)
8 : 230774.dasm (0.09 % of base)
8 : 219640.dasm (1.15 % of base)
8 : 233600.dasm (1.12 % of base)
8 : 72951.dasm (0.29 % of base)
Top file improvements (bytes):
-24 : 184541.dasm (-1.25 % of base)
-24 : 222742.dasm (-3.31 % of base)
-20 : 172984.dasm (-2.00 % of base)
-16 : 184297.dasm (-1.17 % of base)
-12 : 1453.dasm (-1.24 % of base)
-8 : 137659.dasm (-0.52 % of base)
-8 : 103106.dasm (-0.13 % of base)
-8 : 198588.dasm (-0.38 % of base)
-4 : 246674.dasm (-0.46 % of base)
-4 : 268508.dasm (-0.24 % of base)
-4 : 31413.dasm (-0.23 % of base)
-4 : 194597.dasm (-1.30 % of base)
-4 : 237592.dasm (-1.67 % of base)
-4 : 102969.dasm (-0.11 % of base)
-4 : 74318.dasm (-0.11 % of base)
-4 : 82070.dasm (-0.12 % of base)
42 total files with Code Size differences (16 improved, 26 regressed), 24 unchanged.
Top method regressions (bytes):
60 (0.23 % of base) : 239540.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)
48 (0.87 % of base) : 156545.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
44 (1.36 % of base) : 31113.dasm - System.Diagnostics.Tracing.EventProvider:EncodeObject(byref,byref,byref,byref):System.Object (FullOpts)
44 (3.24 % of base) : 297161.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
24 (4.69 % of base) : 197812.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (2.30 % of base) : 184585.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeMultidimensionalArray(Newtonsoft.Json.JsonWriter,System.Array,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,int,int[]):this (FullOpts)
16 (0.63 % of base) : 2471.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
16 (1.17 % of base) : 243819.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteSwitchExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
12 (0.16 % of base) : 197288.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
12 (6.25 % of base) : 171429.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (6.25 % of base) : 40476.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (1.68 % of base) : 5483.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
12 (2.29 % of base) : 247203.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
12 (0.89 % of base) : 245370.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F8CFCAEBF51DE37CE3EEBF6F23954BEEBCBCD4E908A2963911D4B27C7CD5148E6__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
8 (1.36 % of base) : 195351.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
8 (0.18 % of base) : 160650.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
8 (0.09 % of base) : 230774.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
8 (0.29 % of base) : 72951.dasm - System.Security.Cryptography.X509Certificates.UnixPkcs12Reader:BuildCertsWithKeys(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.Asn1.Pkcs12.CertBagAsn[],System.Security.Cryptography.Asn1.AttributeAsn[][],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+CertAndKey[],int,System.Security.Cryptography.Asn1.Pkcs12.SafeBagAsn[],System.Security.Cryptography.X509Certificates.UnixPkcs12Reader+RentedSubjectPublicKeyInfo[],System.Security.Cryptography.AsymmetricAlgorithm[],int):this (FullOpts)
8 (1.15 % of base) : 219640.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
8 (1.12 % of base) : 233600.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
Top method improvements (bytes):
-24 (-1.25 % of base) : 184541.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:PopulateMultidimensionalArray(System.Collections.IList,Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,System.String):System.Object:this (FullOpts)
-24 (-3.31 % of base) : 222742.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-20 (-2.00 % of base) : 172984.dasm - Microsoft.CodeAnalysis.Text.SourceText:ContentEqualsImpl(Microsoft.CodeAnalysis.Text.SourceText):ubyte:this (FullOpts)
-16 (-1.17 % of base) : 184297.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-12 (-1.24 % of base) : 1453.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-8 (-0.13 % of base) : 103106.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-8 (-0.52 % of base) : 137659.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceFile:BindImports(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref,byref,System.Threading.CancellationToken,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (FullOpts)
-8 (-0.38 % of base) : 198588.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-4 (-1.30 % of base) : 194597.dasm - Microsoft.Build.Shared.TypeLoader:IsPartialTypeNameMatch(System.String,System.String):ubyte (FullOpts)
-4 (-0.11 % of base) : 74318.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.12 % of base) : 82070.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.11 % of base) : 102969.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-4 (-1.67 % of base) : 237592.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
-4 (-0.46 % of base) : 246674.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],ubyte):this (FullOpts)
-4 (-0.23 % of base) : 31413.dasm - System.Diagnostics.Tracing.ManifestBuilder:TranslateToManifestConvention(System.String,System.String):System.String:this (FullOpts)
-4 (-0.24 % of base) : 268508.dasm - System.Threading.Tasks.Parallel+<>c__49`1+<<ForAsync>b__49_2>d[ubyte]:MoveNext():this (FullOpts)
Top method regressions (percentages):
12 (6.25 % of base) : 171429.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (6.25 % of base) : 40476.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
24 (4.69 % of base) : 197812.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
44 (3.24 % of base) : 297161.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
24 (2.30 % of base) : 184585.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeMultidimensionalArray(Newtonsoft.Json.JsonWriter,System.Array,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,int,int[]):this (FullOpts)
12 (2.29 % of base) : 247203.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
12 (1.68 % of base) : 5483.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
44 (1.36 % of base) : 31113.dasm - System.Diagnostics.Tracing.EventProvider:EncodeObject(byref,byref,byref,byref):System.Object (FullOpts)
8 (1.36 % of base) : 195351.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
4 (1.27 % of base) : 147699.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContextExtensions:MatchEndElement(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContext],Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameSyntax):int (FullOpts)
16 (1.17 % of base) : 243819.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteSwitchExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
8 (1.15 % of base) : 219640.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (1.12 % of base) : 313206.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
8 (1.12 % of base) : 233600.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
12 (0.89 % of base) : 245370.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F8CFCAEBF51DE37CE3EEBF6F23954BEEBCBCD4E908A2963911D4B27C7CD5148E6__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
48 (0.87 % of base) : 156545.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
4 (0.71 % of base) : 17883.dasm - System.Text.Decoder:GetChars(ulong,int,ulong,int,ubyte):int:this (FullOpts)
4 (0.71 % of base) : 17955.dasm - System.Text.Encoder:GetBytes(ulong,int,ulong,int,ubyte):int:this (FullOpts)
4 (0.67 % of base) : 156088.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
4 (0.64 % of base) : 258916.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
Top method improvements (percentages):
-24 (-3.31 % of base) : 222742.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-20 (-2.00 % of base) : 172984.dasm - Microsoft.CodeAnalysis.Text.SourceText:ContentEqualsImpl(Microsoft.CodeAnalysis.Text.SourceText):ubyte:this (FullOpts)
-4 (-1.67 % of base) : 237592.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
-4 (-1.30 % of base) : 194597.dasm - Microsoft.Build.Shared.TypeLoader:IsPartialTypeNameMatch(System.String,System.String):ubyte (FullOpts)
-24 (-1.25 % of base) : 184541.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:PopulateMultidimensionalArray(System.Collections.IList,Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,System.String):System.Object:this (FullOpts)
-12 (-1.24 % of base) : 1453.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-16 (-1.17 % of base) : 184297.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-8 (-0.52 % of base) : 137659.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceFile:BindImports(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref,byref,System.Threading.CancellationToken,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (FullOpts)
-4 (-0.46 % of base) : 246674.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],ubyte):this (FullOpts)
-8 (-0.38 % of base) : 198588.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-4 (-0.24 % of base) : 268508.dasm - System.Threading.Tasks.Parallel+<>c__49`1+<<ForAsync>b__49_2>d[ubyte]:MoveNext():this (FullOpts)
-4 (-0.23 % of base) : 31413.dasm - System.Diagnostics.Tracing.ManifestBuilder:TranslateToManifestConvention(System.String,System.String):System.String:this (FullOpts)
-8 (-0.13 % of base) : 103106.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.12 % of base) : 82070.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.11 % of base) : 102969.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-4 (-0.11 % of base) : 74318.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
libraries_tests.run.osx.arm64.Release.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 72838780 (overridden on cmd)
Total bytes of diff: 72837412 (overridden on cmd)
Total bytes of delta: -1368 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
12 : 4643.dasm (0.55 % of base)
12 : 105308.dasm (1.22 % of base)
8 : 105332.dasm (3.92 % of base)
8 : 110279.dasm (3.92 % of base)
8 : 128560.dasm (0.85 % of base)
8 : 30101.dasm (3.92 % of base)
8 : 46428.dasm (3.92 % of base)
8 : 130141.dasm (0.85 % of base)
8 : 6527.dasm (3.92 % of base)
8 : 73591.dasm (3.92 % of base)
8 : 100760.dasm (3.92 % of base)
8 : 128592.dasm (3.92 % of base)
8 : 169554.dasm (3.92 % of base)
4 : 101684.dasm (0.11 % of base)
4 : 155635.dasm (0.70 % of base)
4 : 3232.dasm (0.70 % of base)
4 : 168520.dasm (0.70 % of base)
4 : 32333.dasm (1.28 % of base)
4 : 84944.dasm (0.61 % of base)
4 : 149253.dasm (0.83 % of base)
Top file improvements (bytes):
-24 : 156876.dasm (-1.47 % of base)
-20 : 157211.dasm (-2.60 % of base)
-20 : 157424.dasm (-2.67 % of base)
-20 : 87757.dasm (-2.06 % of base)
-20 : 116196.dasm (-2.37 % of base)
-16 : 162447.dasm (-7.84 % of base)
-16 : 167767.dasm (-7.84 % of base)
-16 : 46393.dasm (-7.84 % of base)
-16 : 57220.dasm (-7.84 % of base)
-16 : 116529.dasm (-7.84 % of base)
-16 : 124289.dasm (-0.88 % of base)
-16 : 156835.dasm (-7.84 % of base)
-16 : 65954.dasm (-7.84 % of base)
-16 : 71760.dasm (-7.84 % of base)
-16 : 71782.dasm (-0.61 % of base)
-16 : 81041.dasm (-7.84 % of base)
-16 : 81132.dasm (-7.84 % of base)
-16 : 81533.dasm (-7.84 % of base)
-16 : 84979.dasm (-7.84 % of base)
-16 : 89470.dasm (-7.84 % of base)
59 total files with Code Size differences (34 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
12 (1.22 % of base) : 105308.dasm - System.Collections.Hashtable:get_Item(System.Object):System.Object:this (Tier1)
12 (0.55 % of base) : 4643.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
8 (0.85 % of base) : 128560.dasm - System.Collections.Hashtable:get_Item(System.Object):System.Object:this (Tier1)
8 (3.92 % of base) : 105332.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 110279.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 30101.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 46428.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 6527.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 73591.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 100760.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 128592.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 169554.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (0.85 % of base) : 130141.dasm - System.Runtime.InteropServices.HandleCollectorTests:TestHandleCollector() (Tier1-OSR)
4 (1.28 % of base) : 32333.dasm - System.Collections.Concurrent.Tests.PartitionerStaticTests:TestExceptions() (Tier1-OSR)
4 (0.70 % of base) : 155635.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 3232.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 168520.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 5172.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.11 % of base) : 101684.dasm - System.Net.Mime.ByteEncoder:EncodeBytes(ubyte[],int,int,ubyte,ubyte):int:this (Tier1-OSR)
4 (1.47 % of base) : 23448.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
Top method improvements (bytes):
-24 (-1.47 % of base) : 156876.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-20 (-2.06 % of base) : 87757.dasm - System.Linq.Enumerable+SelectEnumerableIterator`2[int,int]:ToArray():int[]:this (Tier1-OSR)
-20 (-2.37 % of base) : 116196.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[ushort]:ToArray():ushort[]:this (Tier1-OSR)
-20 (-2.67 % of base) : 157424.dasm - System.Text.Encodings.Web.TextEncoderSettings:AllowCodePoints(System.Collections.Generic.IEnumerable`1[int]):this (Tier1-OSR)
-20 (-2.60 % of base) : 157211.dasm - System.Text.Encodings.Web.TextEncoderSettings:GetAllowedCodePointsBitmap():byref:this (Tier1-OSR)
-16 (-0.88 % of base) : 124289.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeDeclSecurityTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
-16 (-0.88 % of base) : 124265.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodSemanticsTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
-16 (-7.84 % of base) : 162447.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 167767.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 46393.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 57220.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 116529.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 156835.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 65954.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 71760.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 81041.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 81132.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 81533.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 84979.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 89470.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
Top method regressions (percentages):
8 (3.92 % of base) : 105332.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 110279.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 30101.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 46428.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 6527.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 73591.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 100760.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 128592.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 169554.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
4 (1.47 % of base) : 23448.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
4 (1.47 % of base) : 59282.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
4 (1.28 % of base) : 32333.dasm - System.Collections.Concurrent.Tests.PartitionerStaticTests:TestExceptions() (Tier1-OSR)
12 (1.22 % of base) : 105308.dasm - System.Collections.Hashtable:get_Item(System.Object):System.Object:this (Tier1)
8 (0.85 % of base) : 130141.dasm - System.Runtime.InteropServices.HandleCollectorTests:TestHandleCollector() (Tier1-OSR)
8 (0.85 % of base) : 128560.dasm - System.Collections.Hashtable:get_Item(System.Object):System.Object:this (Tier1)
4 (0.83 % of base) : 149253.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.70 % of base) : 155635.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 3232.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 168520.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 5172.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
Top method improvements (percentages):
-16 (-7.84 % of base) : 162447.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 167767.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 46393.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 57220.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 116529.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 156835.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 65954.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 71760.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 81041.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 81132.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 81533.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 84979.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 89470.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 110346.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 117497.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 130981.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 169075.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 35489.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 59094.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 100130.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (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: 159903272 (overridden on cmd)
Total bytes of diff: 159903656 (overridden on cmd)
Total bytes of delta: 384 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
148 : 59307.dasm (0.52 % of base)
44 : 148498.dasm (3.16 % of base)
40 : 287755.dasm (2.62 % of base)
36 : 285908.dasm (2.65 % of base)
36 : 279324.dasm (1.80 % of base)
36 : 279738.dasm (1.67 % of base)
36 : 287665.dasm (2.40 % of base)
36 : 287670.dasm (2.18 % of base)
28 : 138051.dasm (0.73 % of base)
28 : 150021.dasm (1.10 % of base)
24 : 285897.dasm (1.38 % of base)
16 : 4141.dasm (1.35 % of base)
16 : 49485.dasm (0.57 % of base)
12 : 17664.dasm (0.87 % of base)
12 : 276248.dasm (0.30 % of base)
12 : 278305.dasm (1.04 % of base)
12 : 280151.dasm (0.68 % of base)
12 : 284828.dasm (0.31 % of base)
12 : 285336.dasm (1.03 % of base)
12 : 285342.dasm (1.01 % of base)
Top file improvements (bytes):
-36 : 276282.dasm (-0.97 % of base)
-28 : 276189.dasm (-0.79 % of base)
-24 : 168878.dasm (-3.31 % of base)
-20 : 284633.dasm (-1.34 % of base)
-16 : 272020.dasm (-0.64 % of base)
-12 : 285525.dasm (-0.71 % of base)
-12 : 48969.dasm (-0.82 % of base)
-12 : 288173.dasm (-0.14 % of base)
-12 : 287579.dasm (-1.35 % of base)
-12 : 43189.dasm (-0.82 % of base)
-12 : 272894.dasm (-0.68 % of base)
-12 : 272922.dasm (-0.67 % of base)
-12 : 272950.dasm (-0.65 % of base)
-12 : 272973.dasm (-0.65 % of base)
-12 : 273010.dasm (-0.65 % of base)
-12 : 273026.dasm (-0.65 % of base)
-12 : 273062.dasm (-0.65 % of base)
-12 : 273136.dasm (-0.67 % of base)
-12 : 273157.dasm (-0.65 % of base)
-12 : 273238.dasm (-0.65 % of base)
60 total files with Code Size differences (31 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
148 (0.52 % of base) : 59307.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)
44 (3.16 % of base) : 148498.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
40 (2.62 % of base) : 287755.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2871_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (2.65 % of base) : 285908.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2318_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (2.40 % of base) : 287665.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2705_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (2.18 % of base) : 287670.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2711_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (1.80 % of base) : 279324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5413_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (1.67 % of base) : 279738.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5436_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
28 (0.73 % of base) : 138051.dasm - System.Linq.Tests.TakeTests:ElementAtOfLazySkipTakeChain(int[],int,int,int[],int[]):this (FullOpts)
28 (1.10 % of base) : 150021.dasm - System.Net.NameResolution.Tests.GetHostAddressesTest+<TestGetHostAddressesAsync>d__2:MoveNext():this (FullOpts)
24 (1.38 % of base) : 285897.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2317_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (0.57 % of base) : 49485.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:LoadAndValidateAttributes(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],byref,short,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte]):ubyte:this (FullOpts)
16 (1.35 % of base) : 4141.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)
12 (0.87 % of base) : 17664.dasm - IntrinsicsInSystemPrivateCoreLib.IntrinsicsInSystemPrivateCoreLibAnalyzer:<AnalyzeOperation>g__HandleConditionalCase|32_0(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,byref):ubyte (FullOpts)
12 (2.29 % of base) : 90003.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
12 (0.31 % of base) : 284828.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex10901_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (1.03 % of base) : 285336.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1974_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (1.01 % of base) : 285342.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1977_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (0.98 % of base) : 285442.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2062_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (0.57 % of base) : 287652.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2687_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-36 (-0.97 % of base) : 276282.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4419_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-28 (-0.79 % of base) : 276189.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4417_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-24 (-3.31 % of base) : 168878.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-20 (-1.34 % of base) : 284633.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1110_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-16 (-0.64 % of base) : 272020.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
-12 (-0.82 % of base) : 48969.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-12 (-0.82 % of base) : 43189.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-12 (-0.72 % of base) : 284668.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1139_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.72 % of base) : 285512.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex11461_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.69 % of base) : 285515.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex11464_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.72 % of base) : 285522.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex11472_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.71 % of base) : 285525.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex11478_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-1.35 % of base) : 287579.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2559_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.14 % of base) : 288173.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33215_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.68 % of base) : 272894.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3659_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.67 % of base) : 272922.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3660_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.65 % of base) : 272950.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3662_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.65 % of base) : 272973.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3663_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.65 % of base) : 273010.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3664_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.65 % of base) : 273026.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3665_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method regressions (percentages):
44 (3.16 % of base) : 148498.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
36 (2.65 % of base) : 285908.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2318_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
40 (2.62 % of base) : 287755.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2871_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (2.40 % of base) : 287665.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2705_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (2.29 % of base) : 90003.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
36 (2.18 % of base) : 287670.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2711_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (1.80 % of base) : 279324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5413_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (1.67 % of base) : 279738.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5436_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (1.38 % of base) : 285897.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2317_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (1.35 % of base) : 4141.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.25 % of base) : 170229.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (1.12 % of base) : 126577.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
8 (1.12 % of base) : 101078.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
28 (1.10 % of base) : 150021.dasm - System.Net.NameResolution.Tests.GetHostAddressesTest+<TestGetHostAddressesAsync>d__2:MoveNext():this (FullOpts)
12 (1.04 % of base) : 278305.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex84_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (1.03 % of base) : 285336.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1974_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (1.01 % of base) : 285342.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1977_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (0.98 % of base) : 285442.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2062_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.93 % of base) : 147951.dasm - System.Net.HttpEndPointListener:AddSpecial(System.Collections.Generic.List`1[System.Net.ListenerPrefix],System.Net.ListenerPrefix) (FullOpts)
4 (0.92 % of base) : 182064.dasm - System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
Top method improvements (percentages):
-24 (-3.31 % of base) : 168878.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-8 (-2.11 % of base) : 26291.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
-8 (-1.52 % of base) : 53842.dasm - System.Diagnostics.Activity+BaggageLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.String]):this (FullOpts)
-12 (-1.35 % of base) : 287579.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2559_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-20 (-1.34 % of base) : 284633.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1110_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-36 (-0.97 % of base) : 276282.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4419_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.87 % of base) : 13069.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetParameterSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this (FullOpts)
-12 (-0.82 % of base) : 48969.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-12 (-0.82 % of base) : 43189.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-28 (-0.79 % of base) : 276189.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4417_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.76 % of base) : 39272.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
-12 (-0.72 % of base) : 284668.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1139_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.72 % of base) : 285512.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex11461_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.72 % of base) : 285522.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex11472_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.71 % of base) : 285525.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex11478_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.71 % of base) : 53841.dasm - System.Diagnostics.Activity+TagsLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.Object]):this (FullOpts)
-12 (-0.69 % of base) : 285515.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex11464_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.68 % of base) : 272894.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3659_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.67 % of base) : 272922.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3660_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.67 % of base) : 273136.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3669_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 15077516 (overridden on cmd)
Total bytes of diff: 15077452 (overridden on cmd)
Total bytes of delta: -64 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
20 : 13316.dasm (0.23 % of base)
16 : 14835.dasm (1.35 % of base)
8 : 14004.dasm (0.79 % of base)
8 : 12283.dasm (0.58 % of base)
4 : 13965.dasm (0.24 % of base)
4 : 20382.dasm (0.22 % of base)
Top file improvements (bytes):
-64 : 5871.dasm (-0.06 % of base)
-24 : 20718.dasm (-0.40 % of base)
-12 : 2279.dasm (-1.23 % of base)
-8 : 19023.dasm (-0.14 % of base)
-4 : 18395.dasm (-0.12 % of base)
-4 : 21597.dasm (-0.11 % of base)
-4 : 31264.dasm (-0.14 % of base)
-4 : 25583.dasm (-0.12 % of base)
14 total files with Code Size differences (8 improved, 6 regressed), 41 unchanged.
Top method regressions (bytes):
20 (0.23 % of base) : 13316.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
16 (1.35 % of base) : 14835.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 (0.79 % of base) : 14004.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
8 (0.58 % of base) : 12283.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
4 (0.22 % of base) : 20382.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeArguments(Microsoft.CodeAnalysis.ISymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]]):this (FullOpts)
4 (0.24 % of base) : 13965.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
Top method improvements (bytes):
-64 (-0.06 % of base) : 5871.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
-24 (-0.40 % of base) : 20718.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)
-12 (-1.23 % of base) : 2279.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-8 (-0.14 % of base) : 19023.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.11 % of base) : 21597.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.12 % of base) : 25583.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.12 % of base) : 18395.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-4 (-0.14 % of base) : 31264.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
Top method regressions (percentages):
16 (1.35 % of base) : 14835.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 (0.79 % of base) : 14004.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
8 (0.58 % of base) : 12283.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
4 (0.24 % of base) : 13965.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
20 (0.23 % of base) : 13316.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
4 (0.22 % of base) : 20382.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeArguments(Microsoft.CodeAnalysis.ISymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]]):this (FullOpts)
Top method improvements (percentages):
-12 (-1.23 % of base) : 2279.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-24 (-0.40 % of base) : 20718.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.14 % of base) : 31264.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
-8 (-0.14 % of base) : 19023.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.12 % of base) : 18395.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-4 (-0.12 % of base) : 25583.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.11 % of base) : 21597.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-64 (-0.06 % of base) : 5871.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
windows arm64
Diffs are based on 1,477,297 contexts (263,527 MinOpts, 1,213,770 FullOpts).
MISSED contexts: 3,464 (0.23%)
Overall (-3,368 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.arm64.checked.mch |
10,887,060 |
-12 |
benchmarks.run_pgo.windows.arm64.checked.mch |
36,163,000 |
-4,112 |
benchmarks.run_tiered.windows.arm64.checked.mch |
15,268,852 |
+8 |
coreclr_tests.run.windows.arm64.checked.mch |
277,084,748 |
+460 |
libraries.crossgen2.windows.arm64.checked.mch |
66,634,756 |
+168 |
libraries.pmi.windows.arm64.checked.mch |
79,824,464 |
+172 |
libraries_tests.run.windows.arm64.Release.mch |
6,477,948 |
-220 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
168,096,992 |
+216 |
realworld.run.windows.arm64.checked.mch |
15,898,576 |
-72 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
3,806,968 |
+24 |
FullOpts (-3,368 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
benchmarks.run.windows.arm64.checked.mch |
10,886,524 |
-12 |
benchmarks.run_pgo.windows.arm64.checked.mch |
23,136,136 |
-4,112 |
benchmarks.run_tiered.windows.arm64.checked.mch |
4,070,020 |
+8 |
coreclr_tests.run.windows.arm64.checked.mch |
138,792,180 |
+460 |
libraries.crossgen2.windows.arm64.checked.mch |
66,633,120 |
+168 |
libraries.pmi.windows.arm64.checked.mch |
79,704,480 |
+172 |
libraries_tests.run.windows.arm64.Release.mch |
5,253,948 |
-220 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
155,037,712 |
+216 |
realworld.run.windows.arm64.checked.mch |
15,334,600 |
-72 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
3,805,956 |
+24 |
Example diffs
benchmarks.run.windows.arm64.checked.mch
-12 (-1.23%) : 1359.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 12, 7 ) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T04] ( 12, 11.44) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T14] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T12] ( 8, 7.02) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
-; V04 loc2 [V04,T21] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T23] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
; V05 loc3 [V05,T00] ( 11, 17.08) int -> x0
; V06 loc4 [V06,T02] ( 8, 16 ) ref -> x15 class-hnd <System.Type>
-; V07 loc5 [V07,T08] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
-; V08 loc6 [V08,T20] ( 6, 1.83) ref -> x1 class-hnd exact <System.Type[]>
+; V07 loc5 [V07,T09] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
+; V08 loc6 [V08,T18] ( 6, 3.31) ref -> x1 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x0
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,36 +25,36 @@
;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType>
; V16 tmp5 [V16,T26] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp7 [V18,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp7 [V18,T21] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V19 tmp8 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp10 [V21,T22] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
-; V22 tmp11 [V22 ] ( 4, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
-; V23 tmp12 [V23,T18] ( 2, 2 ) long -> x0 "impAppendStmt"
+; V21 tmp10 [V21,T16] ( 2, 3.96) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
+; V22 tmp11 [V22 ] ( 4, 7.92) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
+; V23 tmp12 [V23,T11] ( 2, 7.92) long -> x0 "impAppendStmt"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V27 tmp16 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T14] ( 3, 4 ) ref -> x0 "Single return block return value"
-; V31 FramesRoot [V31,T13] ( 6, 4 ) long -> x20 "Pinvoke FrameListRoot"
-; V32 PInvokeFrame [V32 ] ( 8, 6 ) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp19 [V30,T13] ( 3, 6.96) ref -> x0 "Single return block return value"
+; V31 FramesRoot [V31,T08] ( 6, 9.92) long -> x21 "Pinvoke FrameListRoot"
+; V32 PInvokeFrame [V32 ] ( 8, 11.92) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V33 tmp22 [V33 ] ( 0, 0 ) long -> zero-ref "field V24._ptr (fldOffset=0x0)" P-INDEP
-; V34 tmp23 [V34,T23] ( 2, 1 ) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp24 [V35,T19] ( 2, 2 ) long -> x1 "argument with side effect"
-; V36 tmp25 [V36,T15] ( 2, 2 ) ref -> x20 single-def "argument with side effect"
-; V37 tmp26 [V37,T16] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V34 tmp23 [V34,T17] ( 2, 3.96) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp24 [V35,T22] ( 2, 2 ) long -> x1 "argument with side effect"
+; V36 tmp25 [V36,T19] ( 2, 2 ) ref -> x21 single-def "argument with side effect"
+; V37 tmp26 [V37,T20] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V39 tmp28 [V39,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V40 tmp29 [V40,T28] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V41 PSPSym [V41,T24] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym"
-; V42 cse0 [V42,T04] ( 10, 12.50) int -> x21 "CSE - aggressive"
-; V43 cse1 [V43,T09] ( 6, 8.54) byref -> x22 hoist multi-def "CSE - aggressive"
-; V44 cse2 [V44,T12] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
-; V45 cse3 [V45,T05] ( 3, 11.88) long -> x14 "CSE - aggressive"
-; V46 cse4 [V46,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V42 cse0 [V42,T05] ( 10, 12.50) int -> x22 "CSE - aggressive"
+; V43 cse1 [V43,T10] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
+; V44 cse2 [V44,T15] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
+; V45 cse3 [V45,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V46 cse4 [V46,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
; Lcl frame size = 112
@@ -71,21 +71,23 @@ G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x2, [fp, #0x78] // [V41 PSPSym]
str x0, [fp, #0x68] // [V00 this]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=52 bbWeight=1 PerfScore 11.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
add x0, fp, #32 // [V32 PInvokeFrame+0x08]
mov x1, x12
bl CORINFO_HELP_INIT_PINVOKE_FRAME
- mov x20, x0
+ mov x21, x0
mov x1, sp
str x1, [fp, #0x40] // [V32 PInvokeFrame+0x28]
mov x1, fp
str x1, [fp, #0x50] // [V32 PInvokeFrame+0x38]
- cbz x19, G_M59170_IG21
- ldr w21, [x19, #0x08]
- mov w1, w21
+ cbz x20, G_M59170_IG21
+ ldr w22, [x20, #0x08]
+ mov w1, w22
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -94,33 +96,28 @@ G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=800
; gcr arg pop 0
str x0, [fp, #0x60] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
- ldr x0, [x1, #0x50]
+ ldr x0, [x19, #0x50]
; gcrRegs -[x0]
bl <unknown method>
- ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
cbz w0, G_M59170_IG22
mov w0, wzr
- cmp w21, #0
+ cmp w22, #0
ble G_M59170_IG07
- ;; size=96 bbWeight=1 PerfScore 24.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- ldr w14, [x2, #0x08]
- cmp w14, w21
+ ;; size=88 bbWeight=1 PerfScore 20.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ ldr w14, [x1, #0x08]
+ cmp w14, w22
blt G_M59170_IG06
- add x22, x19, #16
- ; byrRegs +[x22]
+ add x23, x20, #16
+ ; byrRegs +[x23]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80002 {x1 x19}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x20]
mov w14, w0
- ldr x15, [x22, x14, LSL #3]
+ ldr x15, [x23, x14, LSL #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x12, [x15]
@@ -129,7 +126,7 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
movk xip0, #0xD1FFAB1E LSL #32
cmp x12, xip0
bne G_M59170_IG12
- add x12, x2, #16
+ add x12, x1, #16
; byrRegs +[x12]
add x14, x12, x14, LSL #3
; byrRegs +[x14]
@@ -137,20 +134,20 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
; gcrRegs -[x15]
; byrRegs -[x12 x14]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG04
;; size=60 bbWeight=3.96 PerfScore 59.40
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ; byrRegs -[x22]
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x23]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2] +[x19]
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- add x22, x19, #16
- ; byrRegs +[x22]
- ldr x15, [x22, w0, UXTW #3]
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x20]
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ add x23, x20, #16
+ ; byrRegs +[x23]
+ ldr x15, [x23, w0, UXTW #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x14, [x15]
@@ -159,30 +156,30 @@ G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x12, #0xD1FFAB1E LSL #32
cmp x14, x12
bne G_M59170_IG12
- ldr w14, [x2, #0x08]
+ ldr w14, [x1, #0x08]
cmp w0, w14
bhs G_M59170_IG20
- add x14, x2, #16
+ add x14, x1, #16
; byrRegs +[x14]
add x14, x14, x0, LSL #3
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x2 x15]
- ; byrRegs -[x14 x22]
+ ; gcrRegs -[x1 x15]
+ ; byrRegs -[x14 x23]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG06
;; size=76 bbWeight=0.04 PerfScore 0.86
-G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG07: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
str xzr, [fp, #0x70] // [V22 tmp11]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x1]
+ movz x2, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
add x1, fp, #112 // [V22 tmp11]
mov w2, #1
@@ -194,22 +191,22 @@ G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
str x3, [fp, #0x48] // [V32 PInvokeFrame+0x30]
add x3, fp, #32 // [V32 PInvokeFrame+0x08]
; byrRegs +[x3]
- str x3, [x20, #0x10]
- strb wzr, [x20, #0x0C]
- ;; size=72 bbWeight=0.50 PerfScore 7.25
-G_M59170_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ str x3, [x21, #0x10]
+ strb wzr, [x21, #0x0C]
...
-4 (-0.76%) : 23957.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 1 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T11] ( 3, 3 ) ref -> x20 this class-hnd single-def <Microsoft.Extensions.Logging.LogValuesFormatter>
-; V01 arg1 [V01,T09] ( 4, 3.50) ref -> x19 class-hnd single-def <System.Object[]>
-; V02 loc0 [V02,T05] ( 10, 9.25) ref -> x21 class-hnd <System.Object[]>
+; V00 this [V00,T09] ( 3, 3.98) ref -> x19 this class-hnd single-def <Microsoft.Extensions.Logging.LogValuesFormatter>
+; V01 arg1 [V01,T10] ( 4, 3.50) ref -> x20 class-hnd single-def <System.Object[]>
+; V02 loc0 [V02,T04] ( 10, 10.23) ref -> x21 class-hnd <System.Object[]>
; V03 loc1 [V03,T00] ( 21, 42.75) int -> registers
;* V04 loc2 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Object>
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T13] ( 2, 2 ) ref -> x0 single-def
-; V07 tmp2 [V07,T14] ( 2, 2 ) ref -> x1 single-def
-; V08 tmp3 [V08,T10] ( 5, 5 ) ref -> x2
+; V06 tmp1 [V06,T13] ( 2, 2.98) ref -> x0 single-def
+; V07 tmp2 [V07,T14] ( 2, 2.98) ref -> x1 single-def
+; V08 tmp3 [V08,T11] ( 4, 5.46) ref -> x2
; V09 tmp4 [V09,T12] ( 3, 3 ) int -> x22 "impSpillLclRefs"
; V10 tmp5 [V10,T06] ( 4, 8.50) ref -> x26 class-hnd "Inline return value spill temp" <System.Object>
; V11 tmp6 [V11 ] ( 5, 18 ) ref -> [fp+0x18] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
@@ -25,7 +25,7 @@
; V14 tmp9 [V14 ] ( 10, 18 ) ref -> [fp+0x10] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.Object>
; V15 tmp10 [V15,T01] ( 6, 20 ) ref -> x22 class-hnd "Inlining Arg" <System.Object>
; V16 cse0 [V16,T03] ( 5, 12.25) byref -> x24 hoist "CSE - aggressive"
-; V17 cse1 [V17,T04] ( 7, 10 ) int -> x23 "CSE - aggressive"
+; V17 cse1 [V17,T05] ( 7, 10 ) int -> x23 "CSE - aggressive"
; V18 cse2 [V18,T07] ( 4, 8.25) long -> x25 hoist "CSE - aggressive"
;
; Lcl frame size = 16
@@ -38,13 +38,13 @@ G_M27341_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0x50]
mov fp, sp
stp xzr, xzr, [fp, #0x10] // [V14 tmp9], [V11 tmp6]
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
+ mov x20, x1
+ ; gcrRegs +[x20]
;; size=36 bbWeight=1 PerfScore 7.50
G_M27341_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x21, x19
+ mov x21, x20
; gcrRegs +[x21]
cbz x21, G_M27341_IG21
;; size=8 bbWeight=1 PerfScore 1.50
@@ -96,13 +96,13 @@ G_M27341_IG08: ; bbWeight=4, gcrefRegs=4380000 {x19 x20 x21 x26}, byrefRe
cmp w23, w22
bgt G_M27341_IG05
;; size=28 bbWeight=4 PerfScore 30.00
-G_M27341_IG09: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x1 x19 x26]
+G_M27341_IG09: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1 x20 x26]
; byrRegs -[x24]
b G_M27341_IG21
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs -[x21] +[x19 x26]
+ ; gcrRegs -[x21] +[x20 x26]
; byrRegs +[x24]
mov w1, w23
movz x0, #0xD1FFAB1E
@@ -112,7 +112,7 @@ G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefReg
; gcrRegs +[x0]
mov x21, x0
; gcrRegs +[x21]
- mov x0, x19
+ mov x0, x20
mov x1, x21
; gcrRegs +[x1]
mov w2, w22
@@ -121,9 +121,9 @@ G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefReg
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x0-x1 x19]
+ ; gcrRegs -[x0-x1 x20]
add w1, w22, #1
- sxtw w19, w1
+ sxtw w20, w1
sxtw x1, w22
mov x0, x21
; gcrRegs +[x0]
@@ -131,14 +131,14 @@ G_M27341_IG10: ; bbWeight=0.50, gcrefRegs=4180000 {x19 x20 x26}, byrefReg
; gcrRegs +[x2]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2 x26]
- cmp w23, w19
+ cmp w23, w20
ble G_M27341_IG21
;; size=88 bbWeight=0.50 PerfScore 7.75
-G_M27341_IG11: ; bbWeight=0.25, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
- tbnz w19, #31, G_M27341_IG17
+G_M27341_IG11: ; bbWeight=0.25, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
+ tbnz w20, #31, G_M27341_IG17
;; size=4 bbWeight=0.25 PerfScore 0.25
-G_M27341_IG12: ; bbWeight=3.96, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
- ldr x22, [x24, w19, UXTW #3]
+G_M27341_IG12: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
+ ldr x22, [x24, w20, UXTW #3]
; gcrRegs +[x22]
str xzr, [fp, #0x10] // [V14 tmp9]
str xzr, [fp, #0x10] // [V14 tmp9]
@@ -154,34 +154,34 @@ G_M27341_IG12: ; bbWeight=3.96, gcrefRegs=300000 {x20 x21}, byrefRegs=100
; gcrRegs -[x1]
cbnz w0, G_M27341_IG14
;; size=48 bbWeight=3.96 PerfScore 51.48
-G_M27341_IG13: ; bbWeight=1.98, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG13: ; bbWeight=1.98, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=1000000 {x24}, byref
mov x2, x22
; gcrRegs +[x2]
b G_M27341_IG15
;; size=8 bbWeight=1.98 PerfScore 2.97
-G_M27341_IG14: ; bbWeight=1.98, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG14: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref
; gcrRegs -[x2 x22]
ldr x2, [fp, #0x10] // [V14 tmp9]
; gcrRegs +[x2]
;; size=4 bbWeight=1.98 PerfScore 3.96
-G_M27341_IG15: ; bbWeight=3.96, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=1000000 {x24}, byref, isz
+G_M27341_IG15: ; bbWeight=3.96, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=1000000 {x24}, byref, isz
str xzr, [fp, #0x10] // [V14 tmp9]
- sxtw x1, w19
+ sxtw x1, w20
mov x0, x21
; gcrRegs +[x0]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
- add w19, w19, #1
- cmp w23, w19
+ add w20, w20, #1
+ cmp w23, w20
bgt G_M27341_IG12
;; size=28 bbWeight=3.96 PerfScore 19.80
-G_M27341_IG16: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M27341_IG16: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x24]
b G_M27341_IG21
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M27341_IG17: ; bbWeight=0.04, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref, isz
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M27341_IG17: ; bbWeight=0.04, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
; byrRegs +[x24]
- ldr x22, [x24, w19, UXTW #3]
+ ldr x22, [x24, w20, UXTW #3]
; gcrRegs +[x22]
str xzr, [fp, #0x10] // [V14 tmp9]
str xzr, [fp, #0x10] // [V14 tmp9]
@@ -197,28 +197,28 @@ G_M27341_IG17: ; bbWeight=0.04, gcrefRegs=300000 {x20 x21}, byrefRegs=100
; gcrRegs -[x1]
cbnz w0, G_M27341_IG19
;; size=48 bbWeight=0.04 PerfScore 0.52
-G_M27341_IG18: ; bbWeight=0.02, gcrefRegs=700000 {x20 x21 x22}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG18: ; bbWeight=0.02, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=1000000 {x24}, byref
mov x2, x22
; gcrRegs +[x2]
b G_M27341_IG20
;; size=8 bbWeight=0.02 PerfScore 0.03
-G_M27341_IG19: ; bbWeight=0.02, gcrefRegs=300000 {x20 x21}, byrefRegs=1000000 {x24}, byref
+G_M27341_IG19: ; bbWeight=0.02, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref
; gcrRegs -[x2 x22]
ldr x2, [fp, #0x10] // [V14 tmp9]
; gcrRegs +[x2]
;; size=4 bbWeight=0.02 PerfScore 0.04
-G_M27341_IG20: ; bbWeight=0.04, gcrefRegs=300004 {x2 x20 x21}, byrefRegs=1000000 {x24}, byref, isz
+G_M27341_IG20: ; bbWeight=0.04, gcrefRegs=280004 {x2 x19 x21}, byrefRegs=1000000 {x24}, byref, isz
str xzr, [fp, #0x10] // [V14 tmp9]
- sxtw x1, w19
+ sxtw x1, w20
mov x0, x21
; gcrRegs +[x0]
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
- add w19, w19, #1
- cmp w23, w19
+ add w20, w20, #1
+ cmp w23, w20
bgt G_M27341_IG17
;; size=28 bbWeight=0.04 PerfScore 0.20
-G_M27341_IG21: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref
+G_M27341_IG21: ; bbWeight=1.98, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x24]
movz x0, #0xD1FFAB1E // code for System.Globalization.CultureInfo:get_InvariantCulture():System.Globalization.CultureInfo
movk x0, #0xD1FFAB1E LSL #16
@@ -226,23 +226,28 @@ G_M27341_IG21: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {
ldr x0, [x0]
blr x0
; gcrRegs +[x0]
- ldr x1, [x20, #0x10]
+ ldr x1, [x19, #0x10]
; gcrRegs +[x1]
mov x2, x21
; gcrRegs +[x2]
- movz x3, #0xD1FFAB1E
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- cmp x2, #0
- csel x2, x2, x3, ne
+ cbnz x2, G_M27341_IG23
+ ;; size=32 bbWeight=1.98 PerfScore 19.80
+G_M27341_IG22: ; bbWeight=0.50, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2 x19 x21]
+ movz x2, #0xD1FFAB1E
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ;; size=12 bbWeight=0.50 PerfScore 0.75
+G_M27341_IG23: ; bbWeight=1, gcrefRegs=0007 {x0 x1 x2}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[x2]
movz x3, #0xD1FFAB1E // code for System.String:Format(System.IFormatProvider,System.Text.CompositeFormat,System.Object[]):System.String
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
ldr x3, [x3]
blr x3
- ; gcrRegs -[x1-x2 x20-x21]
- ;; size=68 bbWeight=1 PerfScore 17.00
-G_M27341_IG22: ; bbWeight=1, epilog, nogc, extend
+ ; gcrRegs -[x1-x2]
+ ;; size=20 bbWeight=1 PerfScore 5.50
+G_M27341_IG24: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
ldp x21, x22, [sp, #0x30]
@@ -251,7 +256,7 @@ G_M27341_IG22: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=24 bbWeight=1 PerfScore 6.00
-; Total bytes of code 528, prolog size 28, PerfScore 212.00, instruction count 132, allocated bytes for code 528 (MethodHash=19de9532) for method Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
+; Total bytes of code 524, prolog size 28, PerfScore 223.01, instruction count 131, allocated bytes for code 524 (MethodHash=19de9532) for method Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
; ============================================================
Unwind Info:
@@ -262,7 +267,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 132 (0x00084) Actual length = 528 (0x000210)
+ Function Length : 131 (0x00083) Actual length = 524 (0x00020c)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-0.51%) : 13003.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
@@ -8,33 +8,33 @@
; 0 inlinees with PGO data; 19 single block inlinees; 7 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T05] ( 13, 13 ) ref -> x20 class-hnd single-def <ubyte[]>
-; V01 arg1 [V01,T00] ( 46, 69.08) int -> x19
-; V02 arg2 [V02,T15] ( 4, 4 ) int -> x22 single-def
-; V03 arg3 [V03,T14] ( 4, 4 ) byref -> x21 single-def
-; V04 loc0 [V04,T06] ( 10, 15 ) int -> x23
-; V05 loc1 [V05,T08] ( 9, 9 ) int -> x26
-; V06 loc2 [V06,T09] ( 8, 8 ) int -> x27
-; V07 loc3 [V07,T11] ( 6, 6 ) int -> x28
-; V08 loc4 [V08,T18] ( 5, 5 ) int -> [fp+0x54]
-; V09 loc5 [V09,T19] ( 5, 5 ) int -> [fp+0x50]
-; V10 loc6 [V10,T20] ( 5, 5 ) int -> [fp+0x4C]
-; V11 loc7 [V11,T12] ( 6, 6 ) int -> [fp+0x48]
-; V12 loc8 [V12,T02] ( 7, 21 ) int -> [fp+0x44]
+; V00 arg0 [V00,T07] ( 13, 13 ) ref -> x20 class-hnd single-def <ubyte[]>
+; V01 arg1 [V01,T00] ( 46, 79.96) int -> x19
+; V02 arg2 [V02,T17] ( 4, 4 ) int -> x22 single-def
+; V03 arg3 [V03,T16] ( 4, 4 ) byref -> x21 single-def
+; V04 loc0 [V04,T08] ( 10, 15 ) int -> x23
+; V05 loc1 [V05,T10] ( 9, 9 ) int -> x26
+; V06 loc2 [V06,T11] ( 8, 8 ) int -> x27
+; V07 loc3 [V07,T13] ( 6, 6 ) int -> x28
+; V08 loc4 [V08,T20] ( 5, 5 ) int -> [fp+0x54] spill-single-def
+; V09 loc5 [V09,T21] ( 5, 5 ) int -> [fp+0x50] spill-single-def
+; V10 loc6 [V10,T22] ( 5, 5 ) int -> [fp+0x4C] spill-single-def
+; V11 loc7 [V11,T14] ( 6, 6 ) int -> [fp+0x48]
+; V12 loc8 [V12,T03] ( 7, 21 ) int -> [fp+0x44]
; V13 loc9 [V13,T36] ( 3, 3 ) ubyte -> [fp+0x40]
-; V14 loc10 [V14,T10] ( 7, 7 ) int -> [fp+0x3C]
-; V15 loc11 [V15,T13] ( 6, 6 ) int -> [fp+0x38]
-; V16 loc12 [V16 ] ( 10, 10 ) struct ( 8) [fp+0x30] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime>
-; V17 loc13 [V17,T23] ( 5, 4.50) int -> x1
-; V18 loc14 [V18,T25] ( 4, 4 ) int -> [fp+0x2C] spill-single-def
-; V19 loc15 [V19,T04] ( 4, 16 ) ubyte -> x0
+; V14 loc10 [V14,T12] ( 7, 7 ) int -> registers
+; V15 loc11 [V15,T15] ( 6, 6 ) int -> registers
+; V16 loc12 [V16 ] ( 10, 10 ) struct ( 8) [fp+0x38] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime>
+; V17 loc13 [V17,T06] ( 5, 15.38) int -> x1
+; V18 loc14 [V18,T02] ( 4, 25.76) int -> [fp+0x34] spill-single-def
+; V19 loc15 [V19,T05] ( 4, 16 ) ubyte -> x0
; V20 loc16 [V20,T01] ( 5, 26 ) int -> x0
-; V21 loc17 [V21,T21] ( 5, 5 ) ubyte -> [fp+0x28] spill-single-def
+; V21 loc17 [V21,T23] ( 5, 5 ) ubyte -> [fp+0x30] spill-single-def
;* V22 loc18 [V22,T63] ( 0, 0 ) ubyte -> zero-ref do-not-enreg[Z] EH-live
;* V23 loc19 [V23 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.TimeSpan>
-; V24 loc20 [V24 ] ( 4, 4 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime>
+; V24 loc20 [V24 ] ( 4, 4 ) struct ( 8) [fp+0x28] do-not-enreg[XS] addr-exposed ld-addr-op <System.DateTime>
;# V25 OutArgs [V25 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V26 tmp1 [V26 ] ( 9, 18 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.DateTime>
+; V26 tmp1 [V26 ] ( 9, 18 ) struct ( 8) [fp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.DateTime>
;* V27 tmp2 [V27 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime>
;* V28 tmp3 [V28 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.DateTime>
;* V29 tmp4 [V29 ] ( 0, 0 ) struct ( 8) zero-ref "impAppendStmt" <System.DateTime>
@@ -43,7 +43,7 @@
;* V32 tmp7 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>>
; V33 tmp8 [V33,T28] ( 2, 4 ) long -> x0 "impAppendStmt"
;* V34 tmp9 [V34 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V35 tmp10 [V35 ] ( 3, 6 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.DateTime>
+; V35 tmp10 [V35 ] ( 3, 6 ) struct ( 8) [fp+0x18] do-not-enreg[XS] addr-exposed ld-addr-op "NewObj constructor temp" <System.DateTime>
;* V36 tmp11 [V36 ] ( 0, 0 ) struct (16) zero-ref <System.ReadOnlySpan`1[uint]>
;* V37 tmp12 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]>
; V38 tmp13 [V38,T51] ( 2, 2 ) int -> x0 "Inline stloc first use temp"
@@ -54,7 +54,7 @@
; V43 tmp18 [V43,T38] ( 3, 3 ) int -> x7 "Inline stloc first use temp"
;* V44 tmp19 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
; V45 tmp20 [V45,T29] ( 2, 4 ) int -> x19 "impAppendStmt"
-; V46 tmp21 [V46,T30] ( 2, 4 ) int -> x20 "impAppendStmt"
+; V46 tmp21 [V46,T30] ( 2, 4 ) int -> x23 "impAppendStmt"
; V47 tmp22 [V47,T31] ( 2, 4 ) int -> x2 "impAppendStmt"
; V48 tmp23 [V48,T32] ( 2, 4 ) int -> x3 "impAppendStmt"
; V49 tmp24 [V49,T33] ( 2, 4 ) int -> x4 "impAppendStmt"
@@ -70,16 +70,16 @@
;* V59 tmp34 [V59 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.TimeSpan>
;* V60 tmp35 [V60 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.TimeSpan>
;* V61 tmp36 [V61,T64] ( 0, 0 ) int -> zero-ref "Single return block return value"
-; V62 tmp37 [V62 ] ( 10, 10 ) long -> [fp+0x30] do-not-enreg[X] addr-exposed "field V16._dateData (fldOffset=0x0)" P-DEP
-; V63 tmp38 [V63,T22] ( 5, 5 ) long -> x19 "field V23._ticks (fldOffset=0x0)" P-INDEP
-; V64 tmp39 [V64 ] ( 4, 4 ) long -> [fp+0x20] do-not-enreg[X] addr-exposed "field V24._dateData (fldOffset=0x0)" P-DEP
-; V65 tmp40 [V65 ] ( 9, 13 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V26._dateData (fldOffset=0x0)" P-DEP
-; V66 tmp41 [V66,T54] ( 2, 2 ) long -> x23 "field V27._dateData (fldOffset=0x0)" P-INDEP
+; V62 tmp37 [V62 ] ( 10, 10 ) long -> [fp+0x38] do-not-enreg[X] addr-exposed "field V16._dateData (fldOffset=0x0)" P-DEP
+; V63 tmp38 [V63,T24] ( 5, 5 ) long -> x20 "field V23._ticks (fldOffset=0x0)" P-INDEP
+; V64 tmp39 [V64 ] ( 4, 4 ) long -> [fp+0x28] do-not-enreg[X] addr-exposed "field V24._dateData (fldOffset=0x0)" P-DEP
+; V65 tmp40 [V65 ] ( 9, 13 ) long -> [fp+0x20] do-not-enreg[X] addr-exposed "field V26._dateData (fldOffset=0x0)" P-DEP
+; V66 tmp41 [V66,T54] ( 2, 2 ) long -> x27 "field V27._dateData (fldOffset=0x0)" P-INDEP
; V67 tmp42 [V67,T55] ( 2, 2 ) long -> x0 "field V28._dateData (fldOffset=0x0)" P-INDEP
-; V68 tmp43 [V68,T56] ( 2, 2 ) long -> x22 "field V29._dateData (fldOffset=0x0)" P-INDEP
+; V68 tmp43 [V68,T56] ( 2, 2 ) long -> x26 "field V29._dateData (fldOffset=0x0)" P-INDEP
; V69 tmp44 [V69,T57] ( 2, 2 ) long -> x0 "field V30._dateData (fldOffset=0x0)" P-INDEP
-; V70 tmp45 [V70 ] ( 3, 5 ) long -> [fp+0x10] do-not-enreg[X] addr-exposed "field V35._dateData (fldOffset=0x0)" P-DEP
-; V71 tmp46 [V71,T24] ( 4, 4 ) byref -> x0 "field V36._reference (fldOffset=0x0)" P-INDEP
+; V70 tmp45 [V70 ] ( 3, 5 ) long -> [fp+0x18] do-not-enreg[X] addr-exposed "field V35._dateData (fldOffset=0x0)" P-DEP
+; V71 tmp46 [V71,T25] ( 4, 4 ) byref -> x0 "field V36._reference (fldOffset=0x0)" P-INDEP
;* V72 tmp47 [V72,T58] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP
;* V73 tmp48 [V73 ] ( 0, 0 ) byref -> zero-ref single-def "field V37._reference (fldOffset=0x0)" P-INDEP
;* V74 tmp49 [V74 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
@@ -93,16 +93,16 @@
;* V82 tmp57 [V82 ] ( 0, 0 ) long -> zero-ref "field V57._dateData (fldOffset=0x0)" P-INDEP
;* V83 tmp58 [V83 ] ( 0, 0 ) long -> zero-ref "field V59._ticks (fldOffset=0x0)" P-INDEP
;* V84 tmp59 [V84 ] ( 0, 0 ) long -> zero-ref "field V60._ticks (fldOffset=0x0)" P-INDEP
-; V85 tmp60 [V85,T16] ( 3, 6 ) int -> x1 "fgMakeTemp is creating a new local variable"
-; V86 tmp61 [V86,T17] ( 3, 6 ) long -> x0 "fgMakeTemp is creating a new local variable"
+; V85 tmp60 [V85,T18] ( 3, 6 ) int -> x1 "fgMakeTemp is creating a new local variable"
+; V86 tmp61 [V86,T19] ( 3, 6 ) long -> x0 "fgMakeTemp is creating a new local variable"
; V87 tmp62 [V87,T34] ( 2, 4 ) long -> x0 "argument with side effect"
; V88 tmp63 [V88,T35] ( 2, 4 ) long -> x0 "argument with side effect"
; V89 PSPSym [V89,T61] ( 1, 1 ) long -> [fp+0x58] do-not-enreg[V] "PSPSym"
;* V90 cse0 [V90,T62] ( 0, 0 ) long -> zero-ref "CSE - moderate"
; V91 cse1 [V91,T40] ( 3, 3 ) int -> x0 "CSE - moderate"
; V92 cse2 [V92,T41] ( 3, 3 ) long -> x0 "CSE - moderate"
-; V93 cse3 [V93,T03] ( 11, 17 ) byref -> x25 "CSE - aggressive"
-; V94 cse4 [V94,T07] ( 11, 9.58) int -> x22 "CSE - aggressive"
+; V93 cse3 [V93,T04] ( 11, 17 ) byref -> x25 "CSE - aggressive"
+; V94 cse4 [V94,T09] ( 11, 9.58) int -> x22 "CSE - aggressive"
; V95 cse5 [V95,T42] ( 3, 3 ) int -> x7 "CSE - moderate"
; V96 cse6 [V96,T27] ( 4, 4 ) long -> x24 "CSE - moderate"
; V97 cse7 [V97,T43] ( 3, 3 ) int -> x0 "CSE - moderate"
@@ -247,20 +247,20 @@ G_M12053_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
; gcrRegs -[x0]
; gcr arg pop 0
sxtw w3, w0
+ str w3, [fp, #0x4C] // [V10 loc6]
orr w0, w26, w27
orr w0, w0, w28
ldr w4, [fp, #0x54] // [V08 loc4]
orr w0, w0, w4
ldr w5, [fp, #0x50] // [V09 loc5]
orr w0, w0, w5
- str w3, [fp, #0x4C] // [V10 loc6]
orr w0, w0, w3
tbnz w0, #31, G_M12053_IG17
str wzr, [fp, #0x48] // [V11 loc7]
add w19, w19, #19
mov w7, wzr
cmp w19, w23
- bge G_M12053_IG07
+ bge G_M12053_IG06
cmp w19, w22
bhs G_M12053_IG39
ldrb w0, [x25, w19, UXTW #2]
@@ -270,47 +270,47 @@ G_M12053_IG03: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=200000 {x2
add w19, w19, #1
sxtw w1, w19
cmp w1, w23
- bge G_M12053_IG09
+ bge G_M12053_IG08
;; size=448 bbWeight=1 PerfScore 108.00
G_M12053_IG04: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x21 x25}, byref, isz
orr w0, w1, w23
cmp w0, #0
ccmp w22, w23, nc, ge
- blt G_M12053_IG08
+ blt G_M12053_IG07
;; size=16 bbWeight=0.50 PerfScore 1.25
G_M12053_IG05: ; bbWeight=7.92, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x21 x25}, byref, isz
ldrb w0, [x25, w19, UXTW #2]
sub w0, w0, #48
cmp w0, #9
- bhi G_M12053_IG09
+ bhi G_M12053_IG08
add w19, w19, #1
cmp w19, w23
blt G_M12053_IG05
- ;; size=28 bbWeight=7.92 PerfScore 55.44
-G_M12053_IG06: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x21 x25}, byref
- b G_M12053_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M12053_IG07: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x21 x25}, byref
+ b G_M12053_IG08
+ ;; size=32 bbWeight=7.92 PerfScore 63.36
+G_M12053_IG06: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x21 x25}, byref
str w7, [fp, #0x44] // [V12 loc8]
b G_M12053_IG11
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M12053_IG08: ; bbWeight=0.08, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x21 x25}, byref, isz
+G_M12053_IG07: ; bbWeight=0.08, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x21 x25}, byref, isz
cmp w19, w22
bhs G_M12053_IG39
ldrb w0, [x25, w19, UXTW #2]
sub w0, w0, #48
cmp w0, #9
- bhi G_M12053_IG09
+ bhi G_M12053_IG08
add w19, w19, #1
cmp w19, w23
- blt G_M12053_IG08
+ blt G_M12053_IG07
;; size=36 bbWeight=0.08 PerfScore 0.68
-G_M12053_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x21 x25}, byref, isz
+G_M12053_IG08: ; bbWeight=11.88, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x21 x25}, byref, isz
sub w8, w19, w1
- str w8, [fp, #0x2C] // [V18 loc14]
+ str w8, [fp, #0x34] // [V18 loc14]
sub w0, w8, #1
cmp w0, #6
bhi G_M12053_IG17
+ ;; size=20 bbWeight=11.88 PerfScore 41.58
+G_M12053_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x21 x25}, byref, isz
mov x0, x20
; gcrRegs +[x0]
mov w2, w8
@@ -323,10 +323,10 @@ G_M12053_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x
; gcr arg pop 0
sxtw w2, w0
tbnz w2, #31, G_M12053_IG17
- ldr w0, [fp, #0x2C] // [V18 loc14]
+ ldr w0, [fp, #0x34] // [V18 loc14]
cmp w0, #7
bge G_M12053_IG13
- ;; size=68 bbWeight=1 PerfScore 15.00
+ ;; size=48 bbWeight=1 PerfScore 11.50
G_M12053_IG10: ; bbWeight=8, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x21 x25}, byref, isz
mov w1, #10
mul w2, w2, w1
@@ -344,7 +344,7 @@ G_M12053_IG11: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x
cmp w19, w22
bhs G_M12053_IG39
ldrb w6, [x25, w19, UXTW #2]
- str w6, [fp, #0x28] // [V21 loc17]
+ str w6, [fp, #0x30] // [V21 loc17]
cmp w6, #90
bne G_M12053_IG14
add w19, w19, #1
@@ -406,7 +406,7 @@ G_M12053_IG14: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=2200000 {x
sxtw w20, w0
orr w0, w25, w20
tbnz w0, #31, G_M12053_IG17
- ldr w0, [fp, #0x28] // [V21 loc17]
+ ldr w0, [fp, #0x30] // [V21 loc17]
cmp w0, #43
bne G_M12053_IG15
neg w25, w25
@@ -421,10 +421,8 @@ G_M12053_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, b
;; size=20 bbWeight=1 PerfScore 4.50
G_M12053_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref, isz
cmp w19, w23
- stp w5, w4, [fp, #0x38] // [V15 loc11], [V14 loc10]
- str w3, [fp, #0x40] // [V13 loc9]
bge G_M12053_IG19
- ;; size=16 bbWeight=1 PerfScore 3.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M12053_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
mov w0, wzr
@@ -440,14 +438,15 @@ G_M12053_IG18: ; bbWeight=1, epilog, nogc, extend
;; size=28 bbWeight=1 PerfScore 7.00
G_M12053_IG19: ; bbWeight=1, gcVars=00000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, gcvars, byref, isz
...
+8 (+1.12%) : 10184.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
@@ -74,12 +74,12 @@ G_M17197_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
mov w24, wzr
sxtw w25, w22
cmp w25, w23
- bge G_M17197_IG09
+ bge G_M17197_IG08
;; size=28 bbWeight=1 PerfScore 11.50
G_M17197_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref, isz
ldr w26, [x0, #0x08]
cmp w25, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
add x27, x0, #16
; byrRegs +[x27]
ldrb w28, [x27, w25, UXTW #2]
@@ -96,7 +96,7 @@ G_M17197_IG03: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefR
add w0, w25, #1
sxtw w4, w0
cmp w4, w23
- bge G_M17197_IG10
+ bge G_M17197_IG09
;; size=72 bbWeight=0.50 PerfScore 8.75
G_M17197_IG04: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
orr w0, w4, w23
@@ -107,40 +107,40 @@ G_M17197_IG04: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
G_M17197_IG05: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
ldrb w28, [x27, w4, UXTW #2]
ldrb w0, [x22, w28, UXTW #2]
- tbz w0, #1, G_M17197_IG10
+ tbz w0, #1, G_M17197_IG09
orr w24, w24, w28
add w4, w4, #1
cmp w4, w23
blt G_M17197_IG05
;; size=28 bbWeight=3.96 PerfScore 37.62
-G_M17197_IG06: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
+G_M17197_IG06: ; bbWeight=1.98, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
mov w0, w28
mov w28, w0
- b G_M17197_IG10
- ;; size=12 bbWeight=0.50 PerfScore 1.00
+ b G_M17197_IG09
+ ;; size=12 bbWeight=1.98 PerfScore 3.96
G_M17197_IG07: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
cmp w4, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
ldrb w28, [x27, w4, UXTW #2]
ldrb w0, [x22, w28, UXTW #2]
- tbz w0, #1, G_M17197_IG10
+ tbz w0, #1, G_M17197_IG09
orr w24, w24, w28
add w4, w4, #1
cmp w4, w23
blt G_M17197_IG07
- ;; size=36 bbWeight=0.04 PerfScore 0.44
-G_M17197_IG08: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
- b G_M17197_IG10
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG09: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ mov w0, w28
+ mov w28, w0
+ b G_M17197_IG09
+ ;; size=48 bbWeight=0.04 PerfScore 0.52
+G_M17197_IG08: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
mov w24, #128
- b G_M17197_IG22
+ b G_M17197_IG20
;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M17197_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG09: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
; byrRegs +[x27]
cmp w28, #58
- bne G_M17197_IG11
+ bne G_M17197_IG10
str w4, [fp, #0x1C] // [V03 loc0]
sub w2, w4, w25
mov w0, #97
@@ -148,17 +148,17 @@ G_M17197_IG10: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
cmp w2, #1
ccmp w3, w0, nc, eq
ccmp w3, w1, 0, ge
- bgt G_M17197_IG12
+ bgt G_M17197_IG11
sub w0, w3, #96
str w0, [x21, #0x10]
- b G_M17197_IG13
+ b G_M17197_IG12
;; size=52 bbWeight=0.50 PerfScore 4.50
-G_M17197_IG11: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M17197_IG10: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
mov w22, w4
- b G_M17197_IG22
+ b G_M17197_IG20
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M17197_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
+G_M17197_IG11: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref
; byrRegs +[x27]
mov x0, x21
; gcrRegs +[x0]
@@ -172,72 +172,70 @@ G_M17197_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
; gcrRegs -[x0]
; gcr arg pop 0
;; size=32 bbWeight=0.50 PerfScore 4.75
-G_M17197_IG13: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG12: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
ldr w4, [fp, #0x1C] // [V03 loc0]
add w4, w4, #1
sxtw w1, w4
cmp w1, w23
- bge G_M17197_IG20
+ bge G_M17197_IG18
cmp w1, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
ldrb w28, [x27, w1, UXTW #2]
ldrb w4, [x22, w28, UXTW #2]
- tbnz w4, #0, G_M17197_IG14
+ tbnz w4, #0, G_M17197_IG13
orr w24, w24, #128
;; size=44 bbWeight=0.50 PerfScore 6.75
-G_M17197_IG14: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG13: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
orr w24, w24, w28
add w4, w1, #1
sxtw w28, w4
cmp w28, w23
- bge G_M17197_IG21
+ bge G_M17197_IG19
;; size=20 bbWeight=0.50 PerfScore 1.50
-G_M17197_IG15: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG14: ; bbWeight=0.25, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
orr w0, w28, w23
cmp w0, #0
ccmp w26, w23, nc, ge
- blt G_M17197_IG18
+ blt G_M17197_IG17
;; size=16 bbWeight=0.25 PerfScore 0.62
-G_M17197_IG16: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+G_M17197_IG15: ; bbWeight=3.96, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
ldrb w0, [x27, w28, UXTW #2]
ldrb w2, [x22, w0, UXTW #2]
- tbz w2, #1, G_M17197_IG21
+ tbz w2, #1, G_M17197_IG19
orr w24, w24, w0
add w28, w28, #1
cmp w28, w23
- blt G_M17197_IG16
+ blt G_M17197_IG15
;; size=28 bbWeight=3.96 PerfScore 37.62
-G_M17197_IG17: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M17197_IG16: ; bbWeight=1.98, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
- b G_M17197_IG21
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG18: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
+ b G_M17197_IG19
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M17197_IG17: ; bbWeight=0.04, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=8000000 {x27}, byref, isz
; byrRegs +[x27]
cmp w28, w26
- bhs G_M17197_IG26
+ bhs G_M17197_IG24
ldrb w0, [x27, w28, UXTW #2]
ldrb w2, [x22, w0, UXTW #2]
- tbz w2, #1, G_M17197_IG21
+ tbz w2, #1, G_M17197_IG19
orr w24, w24, w0
add w28, w28, #1
cmp w28, w23
- blt G_M17197_IG18
- ;; size=36 bbWeight=0.04 PerfScore 0.44
-G_M17197_IG19: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
+ blt G_M17197_IG17
+ b G_M17197_IG19
+ ;; size=40 bbWeight=0.04 PerfScore 0.48
+G_M17197_IG18: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
; byrRegs -[x27]
- b G_M17197_IG21
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG20: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref
orr w24, w24, #128
mov w28, w4
;; size=8 bbWeight=0.50 PerfScore 0.50
-G_M17197_IG21: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M17197_IG19: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
sub w0, w28, w1
mov w2, #1
str w2, [x19, #0x10]
stp w1, w0, [x19, #0x18]
cmp w24, #128
- blt G_M17197_IG24
+ blt G_M17197_IG22
mov x0, x21
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.PrefixHandle:GetString():System.String:this
@@ -257,9 +255,9 @@ G_M17197_IG21: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- b G_M17197_IG23
+ b G_M17197_IG21
;; size=80 bbWeight=0.50 PerfScore 9.00
-G_M17197_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M17197_IG20: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x21]
str wzr, [x21, #0x10]
sub w0, w22, w25
@@ -268,9 +266,9 @@ G_M17197_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs
stp w25, w0, [x19, #0x18]
cmp w24, #128
mov w28, w22
- blt G_M17197_IG24
+ blt G_M17197_IG22
;; size=32 bbWeight=0.50 PerfScore 3.00
-G_M17197_IG23: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+G_M17197_IG21: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x21]
mov x0, x19
; gcrRegs +[x0]
@@ -292,7 +290,7 @@ G_M17197_IG23: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=000
; gcrRegs -[x0-x1]
; gcr arg pop 0
;; size=52 bbWeight=0.50 PerfScore 6.25
-G_M17197_IG24: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M17197_IG22: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
ldr x0, [x20, #0x08]
; gcrRegs +[x0]
sub w1, w28, w25
@@ -300,7 +298,7 @@ G_M17197_IG24: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
add w1, w1, w2
str w1, [x0, #0x50]
;; size=20 bbWeight=1 PerfScore 8.00
-G_M17197_IG25: ; bbWeight=1, epilog, nogc, extend
+G_M17197_IG23: ; bbWeight=1, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -309,14 +307,14 @@ G_M17197_IG25: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x70
ret lr
;; size=28 bbWeight=1 PerfScore 7.00
-G_M17197_IG26: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17197_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
...
+12 (+1.84%) : 3233.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 25 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 34,131.50) byref -> x19 this single-def
-; V01 arg1 [V01,T12] ( 8, 5 ) byref -> x21 single-def
-; V02 arg2 [V02,T09] ( 9, 13 ) byref -> x20 single-def
-; V03 arg3 [V03,T13] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
-; V04 loc0 [V04,T11] ( 3, 12 ) int -> x2
-; V05 loc1 [V05,T17] ( 3, 1.50) int -> x3
-; V06 loc2 [V06,T04] ( 9, 37.50) int -> x23
-; V07 loc3 [V07,T20] ( 2, 1 ) int -> x23
-; V08 loc4 [V08,T21] ( 2, 1 ) ushort -> x24
-; V09 loc5 [V09 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
-; V10 loc6 [V10 ] ( 2, 1 ) int -> [fp+0x10] do-not-enreg[X] addr-exposed ld-addr-op
+; V00 this [V00,T00] ( 34, 56.50) byref -> x19 this single-def
+; V01 arg1 [V01,T10] ( 8, 5 ) byref -> x21 single-def
+; V02 arg2 [V02,T05] ( 9, 13 ) byref -> x20 single-def
+; V03 arg3 [V03,T11] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo>
+; V04 loc0 [V04,T07] ( 3, 12 ) int -> x2
+; V05 loc1 [V05,T17] ( 3, 1.75) int -> x3
+; V06 loc2 [V06,T01] ( 9, 25.50) int -> x24
+; V07 loc3 [V07,T21] ( 2, 1 ) int -> x23
+; V08 loc4 [V08,T22] ( 2, 1 ) ushort -> x24
+; V09 loc5 [V09 ] ( 2, 1 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
+; V10 loc6 [V10 ] ( 2, 1 ) int -> [fp+0x18] do-not-enreg[X] addr-exposed ld-addr-op
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) int -> zero-ref "impAppendStmt"
-; V13 tmp2 [V13,T03] ( 3, 96 ) int -> x0 "Span.get_Item index"
-; V14 tmp3 [V14,T02] ( 3, 96 ) byref -> x1 "Span.get_Item ptrToSpan"
-; V15 tmp4 [V15,T08] ( 3, 24 ) int -> x2 "Span.get_Item index"
-; V16 tmp5 [V16,T07] ( 3, 24 ) byref -> x0 "Span.get_Item ptrToSpan"
-; V17 tmp6 [V17,T16] ( 3, 3 ) int -> x2 "Span.get_Item index"
-; V18 tmp7 [V18,T15] ( 3, 3 ) byref -> x3 "Span.get_Item ptrToSpan"
+; V13 tmp2 [V13,T08] ( 3, 12 ) int -> x0 "Span.get_Item index"
+; V14 tmp3 [V14,T06] ( 3, 12 ) byref -> x25 "Span.get_Item ptrToSpan"
+; V15 tmp4 [V15,T03] ( 3, 24 ) int -> x2 "Span.get_Item index"
+; V16 tmp5 [V16,T02] ( 3, 24 ) byref -> x0 "Span.get_Item ptrToSpan"
+; V17 tmp6 [V17,T15] ( 3, 3 ) int -> x2 "Span.get_Item index"
+; V18 tmp7 [V18,T14] ( 3, 3 ) byref -> x3 "Span.get_Item ptrToSpan"
;* V19 tmp8 [V19 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V20 tmp9 [V20,T14] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
-; V21 tmp10 [V21,T06] ( 4, 24 ) ushort -> x0 "Inlining Arg"
+; V20 tmp9 [V20,T23] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp"
+; V21 tmp10 [V21,T12] ( 4, 4 ) ushort -> x0 "Inlining Arg"
;* V22 tmp11 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V23 tmp12 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V24 tmp13 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -37,8 +37,8 @@
;* V26 tmp15 [V26 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V27 tmp16 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
-; V29 tmp18 [V29,T05] ( 2, 32 ) ubyte -> x0 "Inline return value spill temp"
-; V30 tmp19 [V30,T01] ( 4,128 ) ushort -> x0 "Inlining Arg"
+; V29 tmp18 [V29,T13] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V30 tmp19 [V30,T04] ( 4, 16 ) ushort -> x0 "Inlining Arg"
;* V31 tmp20 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V32 tmp21 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
;* V33 tmp22 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
@@ -70,17 +70,20 @@
;* V59 tmp48 [V59 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP
;* V60 tmp49 [V60 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP
;* V61 tmp50 [V61 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
-; V62 cse0 [V62,T18] ( 3, 1.50) int -> x2 "CSE - moderate"
-; V63 cse1 [V63,T10] ( 4, 12.50) int -> x0 "CSE - moderate"
-; V64 cse2 [V64,T19] ( 3, 1.50) int -> x2 "CSE - moderate"
+; V62 cse0 [V62,T16] ( 3, 2 ) int -> x2 "CSE - moderate"
+; V63 cse1 [V63,T18] ( 3, 1.50) int -> x23 "CSE - moderate"
+; V64 cse2 [V64,T19] ( 3, 1.50) int -> x0 "CSE - moderate"
+; V65 cse3 [V65,T20] ( 3, 1.50) int -> x2 "CSE - moderate"
+; V66 cse4 [V66,T09] ( 6, 9.25) byref -> x25 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 16
+; Lcl frame size = 24
G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x20]
- stp x21, x22, [sp, #0x30]
- stp x23, x24, [sp, #0x40]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x28]
+ stp x21, x22, [sp, #0x38]
+ stp x23, x24, [sp, #0x48]
+ str x25, [sp, #0x58]
mov fp, sp
mov x19, x0
; byrRegs +[x19]
@@ -90,107 +93,108 @@ G_M44776_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; byrRegs +[x20]
mov x22, x3
; gcrRegs +[x22]
- ;; size=36 bbWeight=1 PerfScore 6.50
+ ;; size=40 bbWeight=1 PerfScore 7.50
G_M44776_IG02: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
str wzr, [x20]
ldr w0, [x19, #0x08]
ldr w1, [x19, #0x18]
cmp w0, w1
- bge G_M44776_IG12
+ bge G_M44776_IG10
;; size=20 bbWeight=1 PerfScore 8.50
-G_M44776_IG03: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG03: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldrh w0, [x19, #0x0C]
- sub w1, w0, #48
- cmp w1, #9
- bls G_M44776_IG13
+ sub w23, w0, #48
+ cmp w23, #9
+ bls G_M44776_IG11
cmp w0, #0xD1FFAB1E
- blo G_M44776_IG06
- ;; size=24 bbWeight=4 PerfScore 26.00
-G_M44776_IG04: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ blo G_M44776_IG05
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M44776_IG11
- ;; size=24 bbWeight=2 PerfScore 13.00
-G_M44776_IG05: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ cbnz w0, G_M44776_IG09
+ ;; size=48 bbWeight=0.50 PerfScore 6.50
+G_M44776_IG04: ; bbWeight=0.25, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
b G_M44776_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M44776_IG06: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ ;; size=4 bbWeight=0.25 PerfScore 0.25
+G_M44776_IG05: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M44776_IG11
- ;; size=20 bbWeight=2 PerfScore 11.00
-G_M44776_IG07: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ tbnz w0, #7, G_M44776_IG09
b G_M44776_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M44776_IG08: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M44776_IG06: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldr w0, [x19, #0x08]
- add x1, x19, #16
- ; byrRegs +[x1]
- ldr w2, [x1, #0x08]
- cmp w0, w2
+ add x25, x19, #16
+ ; byrRegs +[x25]
+ ldr w1, [x25, #0x08]
+ cmp w0, w1
bhs G_M44776_IG22
- ldr x1, [x1]
+ ldr x1, [x25]
+ ; byrRegs +[x1]
ldrh w0, [x1, w0, UXTW #2]
strh w0, [x19, #0x0C]
ldrh w0, [x19, #0x0C]
cmp w0, #0xD1FFAB1E
- blo G_M44776_IG10
+ blo G_M44776_IG08
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
; byrRegs -[x1]
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; byrRegs -[x25]
; gcr arg pop 0
cbz w0, G_M44776_IG03
- ;; size=68 bbWeight=16 PerfScore 416.00
-G_M44776_IG09: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
- b G_M44776_IG11
+ ;; size=68 bbWeight=2 PerfScore 52.00
+G_M44776_IG07: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ b G_M44776_IG09
;; size=4 bbWeight=4 PerfScore 4.00
-G_M44776_IG10: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG08: ; bbWeight=2, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
tbz w0, #7, G_M44776_IG03
- ;; size=20 bbWeight=16 PerfScore 88.00
-G_M44776_IG11: ; bbWeight=8, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ ;; size=20 bbWeight=2 PerfScore 11.00
+G_M44776_IG09: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
ldr w0, [x19, #0x08]
- add w23, w0, #1
- str w23, [x19, #0x08]
+ add w24, w0, #1
+ str w24, [x19, #0x08]
ldr w0, [x19, #0x18]
- cmp w23, w0
- blt G_M44776_IG08
- ;; size=24 bbWeight=8 PerfScore 72.00
-G_M44776_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+ cmp w24, w0
+ blt G_M44776_IG06
+ ;; size=24 bbWeight=4 PerfScore 36.00
+G_M44776_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
; gcrRegs -[x22]
; byrRegs -[x19-x20]
mov w2, #6
str w2, [x21]
b G_M44776_IG21
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M44776_IG13: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG11: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
; gcrRegs +[x22]
; byrRegs +[x19-x20]
- sub w2, w0, #48
- str w2, [x20]
+ str w23, [x20]
ldr w2, [x19, #0x08]
sxtw w3, w2
- add w23, w2, #1
- str w23, [x19, #0x08]
+ add w24, w2, #1
+ str w24, [x19, #0x08]
ldr w2, [x19, #0x18]
- cmp w23, w2
- bge G_M44776_IG15
- ;; size=36 bbWeight=0.50 PerfScore 5.50
-G_M44776_IG14: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+ cmp w24, w2
+ bge G_M44776_IG14
+ ;; size=32 bbWeight=0.50 PerfScore 5.25
+G_M44776_IG12: ; bbWeight=0.25, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref
+ add x25, x19, #16
+ ; byrRegs +[x25]
+ ;; size=4 bbWeight=0.25 PerfScore 0.12
+G_M44776_IG13: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=2380000 {x19 x20 x21 x25}, byref, isz
ldr w2, [x19, #0x08]
- add x0, x19, #16
+ mov x0, x25
; byrRegs +[x0]
ldr w4, [x0, #0x08]
cmp w2, w4
@@ -201,30 +205,33 @@ G_M44776_IG14: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x1
ldrh w2, [x19, #0x0C]
sub w2, w2, #48
cmp w2, #9
- bhi G_M44776_IG15
+ bhi G_M44776_IG14
...
+12 (+2.73%) : 2237.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,31 +9,30 @@
; 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 loc0 [V01,T10] ( 5, 3.50) int -> x21
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> x22
-; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> x23
-; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> x0
+; V01 loc0 [V01,T09] ( 5, 3.50) int -> x21
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> x22
+; V03 loc2 [V03,T10] ( 4, 3.50) ubyte -> x23
+; V04 loc3 [V04,T15] ( 3, 2.50) ubyte -> x0
; V05 loc4 [V05,T06] ( 4, 12.50) int -> x0
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T17] ( 3, 2 ) int -> x0
-; V08 tmp2 [V08,T18] ( 3, 1.50) int -> x22
+; V07 tmp1 [V07,T16] ( 3, 2 ) int -> x0
+; V08 tmp2 [V08,T17] ( 3, 1.50) int -> x22
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> x0 "dup spill"
-;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> x1 "Inlining Arg"
-;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T11] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V12 tmp6 [V12,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T12] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+;* V14 tmp8 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> x1 "Inlining Arg"
-;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> x0 "Inlining Arg"
-;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V18 tmp12 [V18,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T05] ( 6, 11 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V25 cse0 [V25,T07] ( 3, 8.50) int -> x1 "CSE - aggressive"
+;* V21 tmp15 [V21,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T14] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T05] ( 7, 15 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 8
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
+ bge G_M17180_IG24
ldrh w1, [x19, w22, UXTW #2]
cmp w1, #92
beq G_M17180_IG13
@@ -135,15 +134,15 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=12 bbWeight=4 PerfScore 8.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w22, #1
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
- cbz w23, G_M17180_IG21
+ cbz w23, G_M17180_IG22
mov w22, #4
b G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.25
@@ -152,55 +151,58 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
- ldrh w1, [x19, w22, UXTW #2]
- sxtw w0, w1
+ bge G_M17180_IG20
+ ldrh w0, [x19, w22, UXTW #2]
cmp w0, #92
- beq G_M17180_IG19
+ beq G_M17180_IG20
cmp w0, #47
bne G_M17180_IG17
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x19]
- cmp w22, #4
- ble G_M17180_IG23
+ ;; size=28 bbWeight=4 PerfScore 30.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ b G_M17180_IG21
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cmp w22, w20
+ bge G_M17180_IG24
;; size=8 bbWeight=4 PerfScore 6.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w1, #92
- beq G_M17180_IG22
- cmp w1, #47
- bne G_M17180_IG23
- b G_M17180_IG22
- ;; size=20 bbWeight=0.50 PerfScore 2.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs +[x19]
+ cmp w22, #4
+ ble G_M17180_IG24
+ ldrh w0, [x19, w22, UXTW #2]
+ cmp w0, #92
+ beq G_M17180_IG23
+ cmp w0, #47
+ bne G_M17180_IG24
+ b G_M17180_IG23
+ ;; size=32 bbWeight=0.50 PerfScore 4.25
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w20, #2
- blt G_M17180_IG23
+ blt G_M17180_IG24
ldrh w0, [x19, #0x02]
cmp w0, #58
- bne G_M17180_IG23
+ bne G_M17180_IG24
ldrh w0, [x19]
orr w0, w0, #32
sub w0, w0, #97
cmp w0, #25
- bhi G_M17180_IG23
+ bhi G_M17180_IG24
mov w22, #2
cmp w20, #2
- ble G_M17180_IG23
+ ble G_M17180_IG24
ldrh w0, [x19, #0x04]
cmp w0, #92
- beq G_M17180_IG22
+ beq G_M17180_IG23
cmp w0, #47
- bne G_M17180_IG23
+ bne G_M17180_IG24
;; size=72 bbWeight=0.50 PerfScore 9.75
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
add w22, w22, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22
;; size=4 bbWeight=1 PerfScore 0.50
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -208,7 +210,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 440, prolog size 28, PerfScore 130.25, instruction count 110, allocated bytes for code 440 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 452, prolog size 28, PerfScore 131.00, instruction count 113, allocated bytes for code 452 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -219,7 +221,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
benchmarks.run_pgo.windows.arm64.checked.mch
-16 (-15.38%) : 59738.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
@@ -10,11 +10,11 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Lowering.InstructionReplacement>
-; V01 loc0 [V01,T02] ( 4,100.25) int -> x1
-; V02 loc1 [V02,T01] ( 7,299.99) int -> registers
+; V01 loc0 [V01,T02] ( 4,100.26) int -> x1
+; V02 loc1 [V02,T01] ( 5,299.99) int -> registers
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 9,600.00) int -> x0 "impSpillLclRefs"
-; V05 cse0 [V05,T03] ( 4,100.01) int -> x3 "CSE - aggressive"
+; V04 tmp1 [V04,T00] ( 6,600.00) int -> x0 "impSpillLclRefs"
+; V05 cse0 [V05,T03] ( 3,100.01) int -> x3 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -28,40 +28,34 @@ G_M4100_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
movz w3, #0xD1FFAB1E
movk w3, #152 LSL #16
cmp w0, w3
- bge G_M4100_IG07
+ bge G_M4100_IG05
;; size=20 bbWeight=0.01 PerfScore 0.03
G_M4100_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov w0, #1
lsl w0, w0, w1
tst w2, w0
- beq G_M4100_IG06
+ beq G_M4100_IG07
;; size=16 bbWeight=99.99 PerfScore 249.98
-G_M4100_IG04: ; bbWeight=99.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sxtw w0, w2
- add w2, w0, #1
- cmp w0, w3
- bge G_M4100_IG07
- ;; size=16 bbWeight=99.86 PerfScore 249.65
-G_M4100_IG05: ; bbWeight=99.92, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M4100_IG03
- ;; size=4 bbWeight=99.92 PerfScore 99.92
-G_M4100_IG06: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- add w1, w1, #1
+G_M4100_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sxtw w0, w2
add w2, w0, #1
cmp w0, w3
blt G_M4100_IG03
- ;; size=20 bbWeight=0.13 PerfScore 0.39
-G_M4100_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=99.99 PerfScore 249.98
+G_M4100_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M4100_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=0.01 PerfScore 0.00
+G_M4100_IG06: ; bbWeight=0.01, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #48
ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0.01 PerfScore 0.02
+G_M4100_IG07: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ add w1, w1, #1
+ b G_M4100_IG04
+ ;; size=8 bbWeight=0.13 PerfScore 0.19
-; Total bytes of code 104, prolog size 12, PerfScore 600.00, instruction count 26, allocated bytes for code 104 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
+; Total bytes of code 88, prolog size 12, PerfScore 500.24, instruction count 22, allocated bytes for code 88 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -72,7 +66,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-8.33%) : 64905.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet1[System.String],System.ReadOnlySpan
1[System.String],int):ubyte (Tier1-OSR)
@@ -14,7 +14,7 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[System.String]>
; V02 arg2 [V02,T05] ( 5, 2 ) int -> x20
; V03 loc0 [V03,T06] ( 3, 3 ) struct (16) [fp+0x70] do-not-enreg[SF] ld-addr-op tier0-frame <System.ReadOnlySpan`1[System.String]>
-; V04 loc1 [V04,T00] ( 9,499.96) int -> [fp+0x6C] tier0-frame
+; V04 loc1 [V04,T00] ( 6,499.96) int -> [fp+0x6C] tier0-frame
; V05 loc2 [V05,T03] ( 2,199.98) ref -> x1 class-hnd <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T09] ( 2, 0 ) int -> x20 "dup spill"
@@ -22,11 +22,11 @@
; V09 tmp3 [V09,T07] ( 1, 1 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V10 tmp4 [V10,T08] ( 1, 1 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V11 tmp5 [V11,T04] ( 2,100.99) byref -> x21 single-def "V03.[000..008)"
-; V12 tmp6 [V12,T02] ( 5,200.99) int -> x22 "V03.[008..012)"
+; V12 tmp6 [V12,T02] ( 4,200.99) int -> x22 "V03.[008..012)"
;
; Lcl frame size = 8
-G_M49737_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M49737_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
@@ -42,11 +42,11 @@ G_M49737_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr w22, [fp, #0x78] // [V03 loc0+0x08]
ldr w23, [fp, #0x6C] // [V04 loc1]
cmp w23, w22
- bge G_M49737_IG07
+ bge G_M49737_IG05
;; size=20 bbWeight=1 PerfScore 7.50
G_M49737_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w22
- bhs G_M49737_IG05
+ bhs G_M49737_IG07
ldr x1, [x21, w23, UXTW #3]
; gcrRegs +[x1]
ldrsb wzr, [x19]
@@ -59,45 +59,37 @@ G_M49737_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- cbz w0, G_M49737_IG06
- add w23, w23, #1
- cmp w23, w22
- bge G_M49737_IG07
- ;; size=60 bbWeight=99.99 PerfScore 1699.83
-G_M49737_IG04: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
- b G_M49737_IG03
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M49737_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x21]
- bl CORINFO_HELP_RNGCHKFAIL
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs +[x19]
- ; byrRegs +[x21]
- sub w20, w20, #1
- tbnz w20, #31, G_M49737_IG09
+ cbz w0, G_M49737_IG08
+ ;; size=48 bbWeight=99.99 PerfScore 1499.85
+G_M49737_IG04: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
add w23, w23, #1
cmp w23, w22
blt G_M49737_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M49737_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=99.99 PerfScore 199.98
+G_M49737_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x21]
mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M49737_IG06: ; bbWeight=0.01, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
add sp, sp, #96
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M49737_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, wzr
+ ;; size=24 bbWeight=0.01 PerfScore 0.07
+G_M49737_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M49737_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+ ; gcrRegs +[x19]
+ ; byrRegs +[x21]
+ sub w20, w20, #1
+ tbz w20, #31, G_M49737_IG04
+ mov w0, wzr
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M49737_IG09: ; bbWeight=0, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -106,7 +98,7 @@ G_M49737_IG10: ; bbWeight=0, epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 20, PerfScore 1715.83, instruction count 48, allocated bytes for code 192 (MethodHash=abf53db6) for method System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 1715.90, instruction count 44, allocated bytes for code 176 (MethodHash=abf53db6) for method System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -117,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-16 (-8.33%) : 54518.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet1[System.String],System.ReadOnlySpan
1[System.String],int):ubyte (Tier1-OSR)
@@ -14,7 +14,7 @@
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[System.String]>
; V02 arg2 [V02,T05] ( 5, 2 ) int -> x20
; V03 loc0 [V03,T06] ( 3, 3 ) struct (16) [fp+0x70] do-not-enreg[SF] ld-addr-op tier0-frame <System.ReadOnlySpan`1[System.String]>
-; V04 loc1 [V04,T00] ( 9,499.96) int -> [fp+0x6C] tier0-frame
+; V04 loc1 [V04,T00] ( 6,499.96) int -> [fp+0x6C] tier0-frame
; V05 loc2 [V05,T03] ( 2,199.98) ref -> x1 class-hnd <System.String>
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T09] ( 2, 0 ) int -> x20 "dup spill"
@@ -22,11 +22,11 @@
; V09 tmp3 [V09,T07] ( 1, 1 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V10 tmp4 [V10,T08] ( 1, 1 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V11 tmp5 [V11,T04] ( 2,100.99) byref -> x21 single-def "V03.[000..008)"
-; V12 tmp6 [V12,T02] ( 5,200.99) int -> x22 "V03.[008..012)"
+; V12 tmp6 [V12,T02] ( 4,200.99) int -> x22 "V03.[008..012)"
;
; Lcl frame size = 8
-G_M49737_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+G_M49737_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x40]!
stp x19, x20, [sp, #0x18]
stp x21, x22, [sp, #0x28]
@@ -42,11 +42,11 @@ G_M49737_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr w22, [fp, #0x78] // [V03 loc0+0x08]
ldr w23, [fp, #0x6C] // [V04 loc1]
cmp w23, w22
- bge G_M49737_IG07
+ bge G_M49737_IG05
;; size=20 bbWeight=1 PerfScore 7.50
G_M49737_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
cmp w23, w22
- bhs G_M49737_IG05
+ bhs G_M49737_IG07
ldr x1, [x21, w23, UXTW #3]
; gcrRegs +[x1]
ldrsb wzr, [x19]
@@ -59,45 +59,37 @@ G_M49737_IG03: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- cbz w0, G_M49737_IG06
- add w23, w23, #1
- cmp w23, w22
- bge G_M49737_IG07
- ;; size=60 bbWeight=99.99 PerfScore 1699.83
-G_M49737_IG04: ; bbWeight=0.01, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref
- b G_M49737_IG03
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M49737_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x21]
- bl CORINFO_HELP_RNGCHKFAIL
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG06: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
- ; gcrRegs +[x19]
- ; byrRegs +[x21]
- sub w20, w20, #1
- tbnz w20, #31, G_M49737_IG09
+ cbz w0, G_M49737_IG08
+ ;; size=48 bbWeight=99.99 PerfScore 1499.85
+G_M49737_IG04: ; bbWeight=99.99, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
add w23, w23, #1
cmp w23, w22
blt G_M49737_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M49737_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=99.99 PerfScore 199.98
+G_M49737_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x21]
mov w0, #1
- ;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M49737_IG06: ; bbWeight=0.01, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
add sp, sp, #96
ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M49737_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov w0, wzr
+ ;; size=24 bbWeight=0.01 PerfScore 0.07
+G_M49737_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M49737_IG10: ; bbWeight=0, epilog, nogc, extend
+G_M49737_IG08: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=200000 {x21}, byref, isz
+ ; gcrRegs +[x19]
+ ; byrRegs +[x21]
+ sub w20, w20, #1
+ tbz w20, #31, G_M49737_IG04
+ mov w0, wzr
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M49737_IG09: ; bbWeight=0, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -106,7 +98,7 @@ G_M49737_IG10: ; bbWeight=0, epilog, nogc, extend
ret lr
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 192, prolog size 20, PerfScore 1715.83, instruction count 48, allocated bytes for code 192 (MethodHash=abf53db6) for method System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
+; Total bytes of code 176, prolog size 20, PerfScore 1715.90, instruction count 44, allocated bytes for code 176 (MethodHash=abf53db6) for method System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -117,7 +109,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+4.08%) : 36711.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
@@ -6,7 +6,7 @@
; optimized using Dynamic PGO
; fp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 90.31
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 90.31
; Final local variable assignments
;
; V00 arg0 [V00,T04] ( 6,302 ) byref -> x0 single-def
@@ -47,7 +47,7 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; gcrRegs +[x5]
ldr w6, [x5, #0x08]
cmp w1, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x5, x5, #16
; gcrRegs -[x5]
; byrRegs +[x5]
@@ -55,7 +55,7 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; gcrRegs +[x7]
ldr w8, [x7, #0x08]
cmp w2, w8
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x7, x7, #16
; gcrRegs -[x7]
; byrRegs +[x7]
@@ -63,13 +63,13 @@ G_M3693_IG04: ; bbWeight=100, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byr
; byrRegs -[x7]
add w8, w1, #1
cmp w8, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
ldr x5, [x5, w8, UXTW #3]
; gcrRegs +[x5]
; byrRegs -[x5]
ldr w6, [x5, #0x08]
cmp w3, w6
- bhs G_M3693_IG07
+ bhs G_M3693_IG09
add x5, x5, #16
; gcrRegs -[x5]
; byrRegs +[x5]
@@ -87,32 +87,38 @@ G_M3693_IG05: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, by
cmp w2, #50
ble G_M3693_IG03
;; size=12 bbWeight=4.00 PerfScore 7.99
-G_M3693_IG06: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
- add w3, w3, #1
- cmp w3, #50
- bgt G_M3693_IG08
+G_M3693_IG06: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+ b G_M3693_IG08
+ ;; size=4 bbWeight=0.09 PerfScore 0.09
+G_M3693_IG07: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
mov w2, #1
b G_M3693_IG03
- ;; size=20 bbWeight=0.09 PerfScore 0.31
-G_M3693_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.09 PerfScore 0.13
+G_M3693_IG08: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+ add w3, w3, #1
+ cmp w3, #50
+ bgt G_M3693_IG10
+ b G_M3693_IG07
+ ;; size=16 bbWeight=0.09 PerfScore 0.27
+G_M3693_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
-G_M3693_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
+G_M3693_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
; byrRegs +[x0]
ldr w0, [x0, #0x08]
; byrRegs -[x0]
cmp w0, #1
cset x0, eq
;; size=12 bbWeight=0 PerfScore 0.00
-G_M3693_IG09: ; bbWeight=0, epilog, nogc, extend
+G_M3693_IG11: ; bbWeight=0, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
add sp, sp, #48
ret lr
;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 196, prolog size 20, PerfScore 3918.80, instruction count 49, allocated bytes for code 196 (MethodHash=1e6cf192) for method Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
+; Total bytes of code 204, prolog size 20, PerfScore 3918.98, instruction count 51, allocated bytes for code 204 (MethodHash=1e6cf192) for method Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -123,7 +129,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 49 (0x00031) Actual length = 196 (0x0000c4)
+ 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)
+16 (+6.90%) : 14423.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
@@ -14,7 +14,7 @@
; V02 loc0 [V02,T02] ( 4, 2.37) long -> x2
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T08] ( 4, 0.51) int -> x6 "Inline return value spill temp"
+; V05 tmp1 [V05,T08] ( 4, 0.58) int -> x19 "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
; V07 tmp3 [V07,T06] ( 4, 0.73) byref -> x3 single-def "Inline stloc first use temp"
; V08 tmp4 [V08,T05] ( 4, 0.76) int -> x4 "Inline stloc first use temp"
@@ -22,34 +22,46 @@
; V10 tmp6 [V10,T07] ( 5, 0.59) byref -> x6 "Inline stloc first use temp"
; V11 tmp7 [V11,T04] ( 5, 0.79) int -> x7 "Inline stloc first use temp"
; V12 tmp8 [V12,T09] ( 2, 0.39) long -> x8 "Inline stloc first use temp"
-; V13 tmp9 [V13,T11] ( 3, 0 ) long -> x8 "Inline stloc first use temp"
+; V13 tmp9 [V13,T11] ( 3, 0 ) long -> x19 "Inline stloc first use temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp11 [V15 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
; V16 tmp12 [V16,T10] ( 2, 0.34) ref -> x3 single-def "Field obj"
;
-; Lcl frame size = 0
+; Lcl frame size = 8
G_M60590_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_M60590_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
cbz x1, G_M60590_IG03
ldr x2, [x1]
cmp x2, x0
- bne G_M60590_IG05
+ bne G_M60590_IG07
;; size=16 bbWeight=1 PerfScore 5.50
G_M60590_IG03: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
;; size=4 bbWeight=1 PerfScore 0.50
G_M60590_IG04: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
-G_M60590_IG05: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M60590_IG05: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
+ mov w19, #2
+ ;; size=4 bbWeight=0.24 PerfScore 0.12
+G_M60590_IG06: ; bbWeight=0.17, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cmp w19, #1
+ beq G_M60590_IG03
+ cbnz w19, G_M60590_IG11
+ mov x1, xzr
+ b G_M60590_IG03
+ ;; size=20 bbWeight=0.17 PerfScore 0.68
+G_M60590_IG07: ; bbWeight=0.17, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x3, #0xD1FFAB1E // data for <unknown class>:<unknown field>
movk x3, #0xD1FFAB1E LSL #16
movk x3, #0xD1FFAB1E LSL #32
@@ -69,7 +81,7 @@ G_M60590_IG05: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=000
lsr x4, x4, x5
mov w5, wzr
;; size=60 bbWeight=0.17 PerfScore 2.45
-G_M60590_IG06: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz
+G_M60590_IG08: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz
add w6, w4, #1
mov w7, #24
smull x6, w6, w7
@@ -79,61 +91,54 @@ G_M60590_IG06: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3},
ldr x8, [x6, #0x08]
and w7, w7, #0xD1FFAB1E
cmp x8, x2
- beq G_M60590_IG11
+ beq G_M60590_IG12
;; size=36 bbWeight=0.20 PerfScore 2.27
-G_M60590_IG07: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz
+G_M60590_IG09: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz
; byrRegs -[x6]
- cbz w7, G_M60590_IG08
+ cbz w7, G_M60590_IG05
add w5, w5, #1
add w4, w4, w5
ldr w6, [x3, #0x04]
and w4, w4, w6
cmp w5, #8
- blt G_M60590_IG06
- ;; size=28 bbWeight=0.20 PerfScore 1.38
-G_M60590_IG08: ; bbWeight=0.17, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ blt G_M60590_IG08
+ b G_M60590_IG05
+ ;; size=32 bbWeight=0.20 PerfScore 1.58
+G_M60590_IG10: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; byrRegs -[x3]
- mov w6, #2
- ;; size=4 bbWeight=0.17 PerfScore 0.08
-G_M60590_IG09: ; bbWeight=0.17, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, #1
- beq G_M60590_IG03
- cbnz w6, G_M60590_IG10
- mov x1, xzr
- b G_M60590_IG03
- ;; size=20 bbWeight=0.17 PerfScore 0.68
-G_M60590_IG10: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, epilog, nogc
- ldp fp, lr, [sp], #0x10
+ b G_M60590_IG06
+ ;; size=4 bbWeight=0 PerfScore 0.00
+G_M60590_IG11: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, epilog, nogc
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
b <unknown method>
; gcr arg pop 0
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M60590_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0048 {x3 x6}, gcvars, byref, isz
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M60590_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0048 {x3 x6}, gcvars, byref, isz
; byrRegs +[x3 x6]
ldr x8, [x6, #0x10]
- eor x8, x8, x0
- cmp x8, #1
- bhi G_M60590_IG07
+ eor x19, x8, x0
+ cmp x19, #1
+ bhi G_M60590_IG09
dmb ishld
ldr w2, [x6]
cmp w7, w2
- bne G_M60590_IG08
- sxtw w6, w8
- ; byrRegs -[x6]
- b G_M60590_IG09
- ;; size=40 bbWeight=0 PerfScore 0.00
+ bne G_M60590_IG05
+ b G_M60590_IG10
+ ;; size=36 bbWeight=0 PerfScore 0.00
-; Total bytes of code 232, prolog size 8, PerfScore 16.36, instruction count 58, allocated bytes for code 232 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 248, prolog size 12, PerfScore 19.59, instruction count 62, allocated bytes for code 248 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (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 : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 58 (0x0003a) Actual length = 232 (0x0000e8)
+ Function Length : 62 (0x0003e) Actual length = 248 (0x0000f8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -144,7 +149,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
+16 (+7.02%) : 12745.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
@@ -14,7 +14,7 @@
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V04 tmp1 [V04,T08] ( 2, 4 ) ref -> x2 class-hnd single-def "impAppendStmt" <int[]>
-; V05 tmp2 [V05,T10] ( 4, 2 ) int -> x6 "Inline return value spill temp"
+; V05 tmp2 [V05,T10] ( 4, 2.55) int -> x19 "Inline return value spill temp"
; V06 tmp3 [V06,T05] ( 4, 5.33) byref -> x2 single-def "Inline stloc first use temp"
; V07 tmp4 [V07,T01] ( 3, 7.33) long -> x3 "Inlining Arg"
; V08 tmp5 [V08,T04] ( 4, 6.00) int -> x4 "Inline stloc first use temp"
@@ -22,16 +22,17 @@
; V10 tmp7 [V10,T06] ( 5, 5 ) byref -> x6 "Inline stloc first use temp"
; V11 tmp8 [V11,T02] ( 5, 6.67) int -> x7 "Inline stloc first use temp"
; V12 tmp9 [V12,T09] ( 2, 3.33) long -> x8 "Inline stloc first use temp"
-; V13 tmp10 [V13,T11] ( 3, 0 ) long -> x8 "Inline stloc first use temp"
+; V13 tmp10 [V13,T11] ( 3, 0 ) long -> x20 "Inline stloc first use temp"
;* V14 tmp11 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V15 tmp12 [V15 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
;
; Lcl frame size = 0
G_M32392_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, 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_M32392_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // data for <unknown class>:<unknown field>
@@ -76,67 +77,69 @@ G_M32392_IG04: ; bbWeight=1.67, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2},
cmp w5, #8
blt G_M32392_IG03
;; size=28 bbWeight=1.67 PerfScore 11.67
-G_M32392_IG05: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M32392_IG05: ; bbWeight=1.55, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; byrRegs -[x2]
- mov w6, #2
- ;; size=4 bbWeight=1 PerfScore 0.50
+ mov w19, #2
+ ;; size=4 bbWeight=1.55 PerfScore 0.78
G_M32392_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cmp w6, #1
+ cmp w19, #1
bne G_M32392_IG08
mov x0, x1
; gcrRegs +[x0]
;; size=12 bbWeight=1 PerfScore 2.00
G_M32392_IG07: ; bbWeight=1, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 3.00
G_M32392_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- cbnz w6, G_M32392_IG10
+ cbnz w19, G_M32392_IG10
mov x0, xzr
;; size=8 bbWeight=0 PerfScore 0.00
G_M32392_IG09: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M32392_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
bl <unknown method>
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
;; size=4 bbWeight=0 PerfScore 0.00
G_M32392_IG11: ; bbWeight=0, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
+ ldp x19, x20, [sp, #0x10]
+ ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=0 PerfScore 0.00
G_M32392_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0044 {x2 x6}, gcvars, byref, isz
; gcrRegs -[x0] +[x1]
; byrRegs +[x2 x6]
ldr x8, [x6, #0x10]
- eor x8, x8, x0
- cmp x8, #1
+ eor x20, x8, x0
+ cmp x20, #1
bhi G_M32392_IG04
dmb ishld
ldr w2, [x6]
; byrRegs -[x2]
cmp w7, w2
bne G_M32392_IG05
- sxtw w6, w8
- ; byrRegs -[x6]
+ sxtw w19, w20
b G_M32392_IG06
;; size=40 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 8, PerfScore 54.33, instruction count 57, allocated bytes for code 228 (MethodHash=b7ab8177) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 244, prolog size 12, PerfScore 56.61, instruction count 61, allocated bytes for code 244 (MethodHash=b7ab8177) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (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 : 57 (0x00039) Actual length = 228 (0x0000e4)
+ Function Length : 61 (0x0003d) Actual length = 244 (0x0000f4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -150,7 +153,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
benchmarks.run_tiered.windows.arm64.checked.mch
-12 (-1.23%) : 6337.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 12, 7 ) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T04] ( 12, 11.44) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T14] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T12] ( 8, 7.02) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
-; V04 loc2 [V04,T21] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T23] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
; V05 loc3 [V05,T00] ( 11, 17.08) int -> x0
; V06 loc4 [V06,T02] ( 8, 16 ) ref -> x15 class-hnd <System.Type>
-; V07 loc5 [V07,T08] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
-; V08 loc6 [V08,T20] ( 6, 1.83) ref -> x1 class-hnd exact <System.Type[]>
+; V07 loc5 [V07,T09] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
+; V08 loc6 [V08,T18] ( 6, 3.31) ref -> x1 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x0
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,36 +25,36 @@
;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType>
; V16 tmp5 [V16,T26] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp7 [V18,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp7 [V18,T21] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V19 tmp8 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp10 [V21,T22] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
-; V22 tmp11 [V22 ] ( 4, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
-; V23 tmp12 [V23,T18] ( 2, 2 ) long -> x0 "impAppendStmt"
+; V21 tmp10 [V21,T16] ( 2, 3.96) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
+; V22 tmp11 [V22 ] ( 4, 7.92) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
+; V23 tmp12 [V23,T11] ( 2, 7.92) long -> x0 "impAppendStmt"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V27 tmp16 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T14] ( 3, 4 ) ref -> x0 "Single return block return value"
-; V31 FramesRoot [V31,T13] ( 6, 4 ) long -> x20 "Pinvoke FrameListRoot"
-; V32 PInvokeFrame [V32 ] ( 8, 6 ) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp19 [V30,T13] ( 3, 6.96) ref -> x0 "Single return block return value"
+; V31 FramesRoot [V31,T08] ( 6, 9.92) long -> x21 "Pinvoke FrameListRoot"
+; V32 PInvokeFrame [V32 ] ( 8, 11.92) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V33 tmp22 [V33 ] ( 0, 0 ) long -> zero-ref "field V24._ptr (fldOffset=0x0)" P-INDEP
-; V34 tmp23 [V34,T23] ( 2, 1 ) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp24 [V35,T19] ( 2, 2 ) long -> x1 "argument with side effect"
-; V36 tmp25 [V36,T15] ( 2, 2 ) ref -> x20 single-def "argument with side effect"
-; V37 tmp26 [V37,T16] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V34 tmp23 [V34,T17] ( 2, 3.96) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp24 [V35,T22] ( 2, 2 ) long -> x1 "argument with side effect"
+; V36 tmp25 [V36,T19] ( 2, 2 ) ref -> x21 single-def "argument with side effect"
+; V37 tmp26 [V37,T20] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V39 tmp28 [V39,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V40 tmp29 [V40,T28] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V41 PSPSym [V41,T24] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym"
-; V42 cse0 [V42,T04] ( 10, 12.50) int -> x21 "CSE - aggressive"
-; V43 cse1 [V43,T09] ( 6, 8.54) byref -> x22 hoist multi-def "CSE - aggressive"
-; V44 cse2 [V44,T12] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
-; V45 cse3 [V45,T05] ( 3, 11.88) long -> x14 "CSE - aggressive"
-; V46 cse4 [V46,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V42 cse0 [V42,T05] ( 10, 12.50) int -> x22 "CSE - aggressive"
+; V43 cse1 [V43,T10] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
+; V44 cse2 [V44,T15] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
+; V45 cse3 [V45,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V46 cse4 [V46,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
; Lcl frame size = 112
@@ -71,21 +71,23 @@ G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x2, [fp, #0x78] // [V41 PSPSym]
str x0, [fp, #0x68] // [V00 this]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=52 bbWeight=1 PerfScore 11.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
add x0, fp, #32 // [V32 PInvokeFrame+0x08]
mov x1, x12
bl CORINFO_HELP_INIT_PINVOKE_FRAME
- mov x20, x0
+ mov x21, x0
mov x1, sp
str x1, [fp, #0x40] // [V32 PInvokeFrame+0x28]
mov x1, fp
str x1, [fp, #0x50] // [V32 PInvokeFrame+0x38]
- cbz x19, G_M59170_IG21
- ldr w21, [x19, #0x08]
- mov w1, w21
+ cbz x20, G_M59170_IG21
+ ldr w22, [x20, #0x08]
+ mov w1, w22
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -94,33 +96,28 @@ G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=800
; gcr arg pop 0
str x0, [fp, #0x60] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
- ldr x0, [x1, #0x50]
+ ldr x0, [x19, #0x50]
; gcrRegs -[x0]
bl <unknown method>
- ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
cbz w0, G_M59170_IG22
mov w0, wzr
- cmp w21, #0
+ cmp w22, #0
ble G_M59170_IG07
- ;; size=96 bbWeight=1 PerfScore 24.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- ldr w14, [x2, #0x08]
- cmp w14, w21
+ ;; size=88 bbWeight=1 PerfScore 20.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ ldr w14, [x1, #0x08]
+ cmp w14, w22
blt G_M59170_IG06
- add x22, x19, #16
- ; byrRegs +[x22]
+ add x23, x20, #16
+ ; byrRegs +[x23]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80002 {x1 x19}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x20]
mov w14, w0
- ldr x15, [x22, x14, LSL #3]
+ ldr x15, [x23, x14, LSL #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x12, [x15]
@@ -129,7 +126,7 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
movk xip0, #0xD1FFAB1E LSL #32
cmp x12, xip0
bne G_M59170_IG12
- add x12, x2, #16
+ add x12, x1, #16
; byrRegs +[x12]
add x14, x12, x14, LSL #3
; byrRegs +[x14]
@@ -137,20 +134,20 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
; gcrRegs -[x15]
; byrRegs -[x12 x14]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG04
;; size=60 bbWeight=3.96 PerfScore 59.40
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ; byrRegs -[x22]
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x23]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2] +[x19]
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- add x22, x19, #16
- ; byrRegs +[x22]
- ldr x15, [x22, w0, UXTW #3]
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x20]
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ add x23, x20, #16
+ ; byrRegs +[x23]
+ ldr x15, [x23, w0, UXTW #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x14, [x15]
@@ -159,30 +156,30 @@ G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x12, #0xD1FFAB1E LSL #32
cmp x14, x12
bne G_M59170_IG12
- ldr w14, [x2, #0x08]
+ ldr w14, [x1, #0x08]
cmp w0, w14
bhs G_M59170_IG20
- add x14, x2, #16
+ add x14, x1, #16
; byrRegs +[x14]
add x14, x14, x0, LSL #3
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x2 x15]
- ; byrRegs -[x14 x22]
+ ; gcrRegs -[x1 x15]
+ ; byrRegs -[x14 x23]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG06
;; size=76 bbWeight=0.04 PerfScore 0.86
-G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG07: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
str xzr, [fp, #0x70] // [V22 tmp11]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x1]
+ movz x2, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
add x1, fp, #112 // [V22 tmp11]
mov w2, #1
@@ -194,22 +191,22 @@ G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
str x3, [fp, #0x48] // [V32 PInvokeFrame+0x30]
add x3, fp, #32 // [V32 PInvokeFrame+0x08]
; byrRegs +[x3]
- str x3, [x20, #0x10]
- strb wzr, [x20, #0x0C]
- ;; size=72 bbWeight=0.50 PerfScore 7.25
-G_M59170_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ str x3, [x21, #0x10]
+ strb wzr, [x21, #0x0C]
...
-8 (-1.01%) : 31939.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
@@ -8,34 +8,34 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T13] ( 10, 4.10) ref -> x0 class-hnd single-def <double[][]>
-; V01 arg1 [V01,T05] ( 12, 31.97) int -> x1 single-def
-; V02 arg2 [V02,T12] ( 4, 6 ) ref -> x2 class-hnd single-def <int[]>
-; V03 arg3 [V03,T14] ( 7, 4.05) ref -> x3 class-hnd single-def <double[]>
-; V04 loc0 [V04,T01] ( 41, 85.81) int -> x5
-; V05 loc1 [V05,T00] ( 37, 88.07) int -> registers
-; V06 loc2 [V06,T16] ( 3, 6 ) int -> x4
+; V00 arg0 [V00,T14] ( 10, 4.10) ref -> x0 class-hnd single-def <double[][]>
+; V01 arg1 [V01,T07] ( 12, 31.97) int -> x1 single-def
+; V02 arg2 [V02,T13] ( 4, 6 ) ref -> x2 class-hnd single-def <int[]>
+; V03 arg3 [V03,T15] ( 7, 4.05) ref -> x3 class-hnd single-def <double[]>
+; V04 loc0 [V04,T00] ( 41,101.33) int -> x4
+; V05 loc1 [V05,T01] ( 37, 88.07) int -> registers
+; V06 loc2 [V06,T17] ( 3, 6 ) int -> x5
; V07 loc3 [V07,T21] ( 3, 4.50) int -> x6
-; V08 loc4 [V08,T24] ( 17, 60 ) double -> d16
+; V08 loc4 [V08,T24] ( 17, 63.88) double -> d16
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T26] ( 2, 8 ) double -> d17 "Strict ordering of exceptions for Array store"
-; V11 tmp2 [V11,T25] ( 4, 16 ) double -> d17 "Strict ordering of exceptions for Array store"
+; V11 tmp2 [V11,T25] ( 4, 31.52) double -> d17 "Strict ordering of exceptions for Array store"
; V12 tmp3 [V12,T09] ( 5, 16.08) ref -> x9 "arr expr"
; V13 tmp4 [V13,T02] ( 8, 64.64) ref -> registers "arr expr"
-; V14 tmp5 [V14,T07] ( 6, 24 ) ref -> x2 "arr expr"
-; V15 cse0 [V15,T06] ( 8, 26.89) ref -> x6 multi-def "CSE - aggressive"
+; V14 tmp5 [V14,T03] ( 6, 47.28) ref -> x3 "arr expr"
+; V15 cse0 [V15,T06] ( 8, 34.65) ref -> x6 multi-def "CSE - aggressive"
; V16 cse1 [V16,T20] ( 6, 5.54) ref -> x10 multi-def "CSE - aggressive"
-; V17 cse2 [V17,T04] ( 14, 42.01) byref -> x7 hoist "CSE - aggressive"
-; V18 cse3 [V18,T19] ( 8, 5.86) byref -> x8 hoist "CSE - aggressive"
+; V17 cse2 [V17,T05] ( 14, 45.89) byref -> x7 hoist "CSE - aggressive"
+; V18 cse3 [V18,T12] ( 8, 9.74) byref -> x8 hoist "CSE - aggressive"
; V19 cse4 [V19,T10] ( 13, 15.93) int -> x9 hoist multi-def "CSE - aggressive"
-; V20 cse5 [V20,T15] ( 4, 6 ) int -> x4 "CSE - aggressive"
+; V20 cse5 [V20,T16] ( 4, 6 ) int -> x2 "CSE - aggressive"
; V21 cse6 [V21,T22] ( 11, 3.32) int -> registers hoist multi-def "CSE - aggressive"
-; V22 cse7 [V22,T08] ( 7, 20.95) long -> x11 "CSE - aggressive"
-; V23 cse8 [V23,T03] ( 3, 47.04) long -> x3 "CSE - aggressive"
+; V22 cse7 [V22,T08] ( 7, 32.59) long -> x10 "CSE - aggressive"
+; V23 cse8 [V23,T04] ( 3, 47.04) long -> x11 "CSE - aggressive"
; V24 cse9 [V24,T11] ( 3, 11.88) long -> x11 "CSE - aggressive"
-; V25 cse10 [V25,T17] ( 3, 6 ) long -> x10 "CSE - aggressive"
-; V26 cse11 [V26,T18] ( 3, 6 ) long -> x4 "CSE - aggressive"
-; V27 cse12 [V27,T23] ( 6, 0.36) long -> x11 "CSE - conservative"
+; V25 cse10 [V25,T18] ( 3, 6 ) long -> x10 "CSE - aggressive"
+; V26 cse11 [V26,T19] ( 3, 6 ) long -> x5 "CSE - aggressive"
+; V27 cse12 [V27,T23] ( 6, 0.36) long -> x10 "CSE - conservative"
;
; Lcl frame size = 0
@@ -47,7 +47,7 @@ G_M64421_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
ldr w1, [fp, #0x64]
ldp x3, x2, [fp, #0x50]
; gcrRegs +[x2-x3]
- ldp w4, w5, [fp, #0x48]
+ ldp w5, w4, [fp, #0x48]
ldr w6, [fp, #0x40]
ldr d16, [fp, #0x38]
;; size=32 bbWeight=0.01 PerfScore 0.14
@@ -63,111 +63,111 @@ G_M64421_IG03: ; bbWeight=1, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x
b G_M64421_IG05
;; size=8 bbWeight=1 PerfScore 4.00
G_M64421_IG04: ; bbWeight=2, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x7 x8}, byref, isz
- ldr w4, [x2, #0x08]
- cmp w5, w4
- bhs G_M64421_IG29
- add x4, x2, #16
- ; byrRegs +[x4]
- mov w10, w5
- ldr w4, [x4, x10, LSL #2]
- ; byrRegs -[x4]
- cmp w4, w9
- bhs G_M64421_IG29
- mov w4, w4
- ldr d16, [x7, x4, LSL #3]
+ ldr w5, [x2, #0x08]
+ cmp w4, w5
+ bhs G_M64421_IG28
+ add x5, x2, #16
+ ; byrRegs +[x5]
+ mov w10, w4
+ ldr w5, [x5, x10, LSL #2]
+ ; byrRegs -[x5]
cmp w5, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
+ mov w5, w5
+ ldr d16, [x7, x5, LSL #3]
+ cmp w4, w9
+ bhs G_M64421_IG28
ldr d17, [x7, x10, LSL #3]
- str d17, [x7, x4, LSL #3]
+ str d17, [x7, x5, LSL #3]
cmn w6, #1
bne G_M64421_IG22
fcmp d16, #0.0
beq G_M64421_IG05
- sxtw w6, w5
+ sxtw w6, w4
;; size=76 bbWeight=2 PerfScore 48.00
G_M64421_IG05: ; bbWeight=8, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x7 x8}, byref, isz
- cmp w5, w9
- bhs G_M64421_IG29
- str d16, [x7, w5, UXTW #3]
- add w5, w5, #1
- cmp w5, w1
+ cmp w4, w9
+ bhs G_M64421_IG28
+ str d16, [x7, w4, UXTW #3]
+ add w4, w4, #1
+ cmp w4, w1
blt G_M64421_IG04
;; size=24 bbWeight=8 PerfScore 36.00
G_M64421_IG06: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
; gcrRegs -[x2-x3]
- sub w4, w1, #1
- sxtw w5, w4
- tbnz w5, #31, G_M64421_IG21
+ sub w2, w1, #1
+ sxtw w4, w2
+ tbnz w4, #31, G_M64421_IG21
;; size=12 bbWeight=1 PerfScore 2.00
G_M64421_IG07: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
cbz x0, G_M64421_IG16
- cmp w9, w5
+ cmp w9, w4
ble G_M64421_IG16
- ldr w10, [x0, #0x08]
- cmp w10, w5
+ ldr w5, [x0, #0x08]
+ cmp w5, w4
ble G_M64421_IG16
;; size=24 bbWeight=0.50 PerfScore 3.50
G_M64421_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
; gcrRegs -[x0]
- mov w11, w5
- ldr d16, [x7, x11, LSL #3]
- cmp w5, w4
+ mov w10, w4
+ ldr d16, [x7, x10, LSL #3]
+ cmp w4, w2
beq G_M64421_IG14
;; size=16 bbWeight=3.96 PerfScore 19.80
G_M64421_IG09: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- add w0, w5, #1
+ add w0, w4, #1
cmp w0, w1
bge G_M64421_IG14
;; size=12 bbWeight=1.98 PerfScore 3.96
G_M64421_IG10: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- cmp w10, w5
+ cmp w5, w4
bls G_M64421_IG13
- ldr x6, [x8, x11, LSL #3]
+ ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
cbz x6, G_M64421_IG13
orr w3, w0, w1
tbnz w3, #31, G_M64421_IG13
- ldr w2, [x6, #0x08]
- cmp w2, w1
+ ldr w3, [x6, #0x08]
+ cmp w3, w1
blt G_M64421_IG13
cmp w9, w1
blt G_M64421_IG13
;; size=44 bbWeight=0.99 PerfScore 12.87
G_M64421_IG11: ; bbWeight=15.68, gcrefRegs=0040 {x6}, byrefRegs=0180 {x7 x8}, byref, isz
- mov x2, x6
- ; gcrRegs +[x2]
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- mov w3, w0
- ldr d17, [x2, x3, LSL #3]
- ldr d18, [x7, x3, LSL #3]
+ mov x3, x6
+ ; gcrRegs +[x3]
+ add x3, x3, #16
+ ; gcrRegs -[x3]
+ ; byrRegs +[x3]
+ mov w11, w0
+ ldr d17, [x3, x11, LSL #3]
+ ldr d18, [x7, x11, LSL #3]
fmul d17, d17, d18
fsub d16, d16, d17
add w0, w0, #1
cmp w0, w1
blt G_M64421_IG11
;; size=40 bbWeight=15.68 PerfScore 243.06
-G_M64421_IG12: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref
+G_M64421_IG12: ; bbWeight=7.84, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref
; gcrRegs -[x6]
- ; byrRegs -[x2]
+ ; byrRegs -[x3]
b G_M64421_IG14
- ;; size=4 bbWeight=3.96 PerfScore 3.96
+ ;; size=4 bbWeight=7.84 PerfScore 7.84
G_M64421_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- ldr x6, [x8, x11, LSL #3]
+ ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- mov x2, x6
- ; gcrRegs +[x2]
- ldr w6, [x2, #0x08]
+ mov x3, x6
+ ; gcrRegs +[x3]
+ ldr w6, [x3, #0x08]
; gcrRegs -[x6]
cmp w0, w6
- bhs G_M64421_IG29
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- ldr d17, [x2, w0, UXTW #3]
+ bhs G_M64421_IG28
+ add x3, x3, #16
+ ; gcrRegs -[x3]
+ ; byrRegs +[x3]
+ ldr d17, [x3, w0, UXTW #3]
cmp w0, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
ldr d18, [x7, w0, UXTW #3]
fmul d17, d17, d18
fsub d16, d16, d17
@@ -175,123 +175,119 @@ G_M64421_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}
cmp w0, w1
blt G_M64421_IG13
;; size=60 bbWeight=0.16 PerfScore 3.80
-G_M64421_IG14: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
- ; byrRegs -[x2]
- ldr x6, [x8, x11, LSL #3]
+G_M64421_IG14: ; bbWeight=7.84, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8}, byref, isz
+ ; byrRegs -[x3]
+ ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- mov x2, x6
- ; gcrRegs +[x2]
- ldr w0, [x2, #0x08]
- cmp w5, w0
- bhs G_M64421_IG29
- add x2, x2, #16
- ; gcrRegs -[x2]
- ; byrRegs +[x2]
- ldr d17, [x2, x11, LSL #3]
...
+0 (0.00%) : 9705.dasm - System.Collections.Generic.ObjectEqualityComparer`1[System.Canon]:IndexOf(System.Canon[],System.__Canon,int,int):int:this (Tier1)
@@ -36,12 +36,12 @@ G_M28111_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=28 bbWeight=1 PerfScore 5.50
G_M28111_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w21, w3, w4
- cbnz x19, G_M28111_IG11
+ cbnz x19, G_M28111_IG10
;; size=8 bbWeight=1 PerfScore 1.50
G_M28111_IG03: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x19]
cmp w3, w21
- bge G_M28111_IG20
+ bge G_M28111_IG19
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M28111_IG04: ; bbWeight=0.25, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
cbz x20, G_M28111_IG07
@@ -57,68 +57,66 @@ G_M28111_IG05: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=400000 {x22}
; gcrRegs -[x20]
ldr x0, [x22, w3, UXTW #3]
; gcrRegs +[x0]
- cbz x0, G_M28111_IG09
+ cbz x0, G_M28111_IG08
add w3, w3, #1
cmp w3, w21
blt G_M28111_IG05
;; size=20 bbWeight=3.96 PerfScore 23.76
-G_M28111_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG06: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
; byrRegs -[x22]
- b G_M28111_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ b G_M28111_IG19
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M28111_IG07: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x20]
ldr w0, [x20, #0x08]
cmp w3, w0
- bhs G_M28111_IG24
+ bhs G_M28111_IG23
add x22, x20, #16
; byrRegs +[x22]
ldr x0, [x22, w3, UXTW #3]
; gcrRegs +[x0]
- cbz x0, G_M28111_IG09
+ cbz x0, G_M28111_IG08
add w3, w3, #1
cmp w3, w21
blt G_M28111_IG07
- ;; size=36 bbWeight=0.04 PerfScore 0.44
+ b G_M28111_IG19
+ ;; size=40 bbWeight=0.04 PerfScore 0.48
G_M28111_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x20]
; byrRegs -[x22]
- b G_M28111_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28111_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w3
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M28111_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M28111_IG09: ; 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
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M28111_IG11: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M28111_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
sxtw w23, w3
cmp w23, w21
- bge G_M28111_IG20
+ bge G_M28111_IG19
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M28111_IG12: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M28111_IG17
+G_M28111_IG11: ; bbWeight=0.25, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M28111_IG16
orr w0, w23, w21
- tbnz w0, #31, G_M28111_IG17
+ tbnz w0, #31, G_M28111_IG16
ldr w0, [x20, #0x08]
cmp w0, w21
- blt G_M28111_IG17
+ blt G_M28111_IG16
add x22, x20, #16
; byrRegs +[x22]
;; size=28 bbWeight=0.25 PerfScore 1.88
-G_M28111_IG13: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M28111_IG12: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x20]
ldr x0, [x22, w23, UXTW #3]
; gcrRegs +[x0]
- cbz x0, G_M28111_IG15
+ cbz x0, G_M28111_IG14
;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M28111_IG14: ; bbWeight=1.98, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
+G_M28111_IG13: ; bbWeight=1.98, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
mov x1, x19
; gcrRegs +[x1]
ldr x2, [x0]
@@ -127,30 +125,30 @@ G_M28111_IG14: ; bbWeight=1.98, gcrefRegs=80001 {x0 x19}, byrefRegs=40000
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbnz w0, G_M28111_IG22
+ cbnz w0, G_M28111_IG21
;; size=24 bbWeight=1.98 PerfScore 22.77
-G_M28111_IG15: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+G_M28111_IG14: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
add w23, w23, #1
cmp w23, w21
- blt G_M28111_IG13
+ blt G_M28111_IG12
;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M28111_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG15: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x22]
- b G_M28111_IG20
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M28111_IG17: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ b G_M28111_IG19
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M28111_IG16: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19-x20]
ldr w0, [x20, #0x08]
cmp w23, w0
- bhs G_M28111_IG24
+ bhs G_M28111_IG23
add x22, x20, #16
; byrRegs +[x22]
ldr x0, [x22, w23, UXTW #3]
; gcrRegs +[x0]
- cbz x0, G_M28111_IG19
+ cbz x0, G_M28111_IG18
;; size=24 bbWeight=0.04 PerfScore 0.36
-G_M28111_IG18: ; bbWeight=0.02, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG17: ; bbWeight=0.02, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x22]
mov x1, x19
; gcrRegs +[x1]
@@ -160,41 +158,41 @@ G_M28111_IG18: ; bbWeight=0.02, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=
blr x2
; gcrRegs -[x0-x1]
; gcr arg pop 0
- cbnz w0, G_M28111_IG22
+ cbnz w0, G_M28111_IG21
;; size=24 bbWeight=0.02 PerfScore 0.23
-G_M28111_IG19: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M28111_IG18: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
add w23, w23, #1
cmp w23, w21
- blt G_M28111_IG17
+ blt G_M28111_IG16
;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M28111_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28111_IG19: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19-x20]
movn w0, #0
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M28111_IG21: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=1.98 PerfScore 0.99
+G_M28111_IG20: ; bbWeight=1.98, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x40
ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M28111_IG22: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=1.98 PerfScore 11.88
+G_M28111_IG21: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w23
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M28111_IG23: ; bbWeight=0.50, epilog, nogc, extend
+G_M28111_IG22: ; 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
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M28111_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M28111_IG23: ; 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 364, prolog size 28, PerfScore 95.15, instruction count 91, allocated bytes for code 364 (MethodHash=c83f9230) for method System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
+; Total bytes of code 364, prolog size 28, PerfScore 107.27, instruction count 91, allocated bytes for code 364 (MethodHash=c83f9230) for method System.Collections.Generic.ObjectEqualityComparer`1[System.__Canon]:IndexOf(System.__Canon[],System.__Canon,int,int):int:this (Tier1)
; ============================================================
Unwind Info:
+4 (+0.28%) : 47682.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>cDisplayClass24_0+<b0>d[ubyte]:MoveNext():this (Tier1)
@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 27 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 20, 83 ) byref -> [fp+0x18] this EH-live single-def
-; V01 loc0 [V01,T24] ( 2, 2 ) int -> x14 single-def
-; V02 loc1 [V02,T08] ( 5, 22 ) ref -> x19 class-hnd exact single-def <<unknown class>>
-; V03 loc2 [V03 ] ( 3, 12 ) struct (16) [fp+0x38] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Threading.Tasks.ValueTask`1[ubyte]>
+; V00 this [V00,T02] ( 20, 24 ) byref -> [fp+0x18] this EH-live single-def
+; V01 loc0 [V01,T20] ( 2, 2 ) int -> x14 single-def
+; V02 loc1 [V02,T03] ( 5, 19 ) ref -> x19 class-hnd exact single-def <<unknown class>>
+; V03 loc2 [V03 ] ( 3, 3 ) struct (16) [fp+0x38] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Threading.Tasks.ValueTask`1[ubyte]>
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Threading.CancellationToken>
-; V05 loc4 [V05,T11] ( 3, 16 ) ubyte -> x21
+; V05 loc4 [V05,T16] ( 3, 3 ) ubyte -> x21
;* V06 loc5 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc6 [V07 ] ( 9, 27 ) struct (16) [fp+0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
-; V08 loc7 [V08 ] ( 3, 76 ) ref -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <ubyte[]>
+; V07 loc6 [V07 ] ( 9, 9 ) struct (16) [fp+0x28] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
+; V08 loc7 [V08 ] ( 3, 20 ) ref -> [fp+0x20] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <ubyte[]>
;* V09 loc8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V12 tmp2 [V12,T07] ( 3, 24 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
+; V12 tmp2 [V12,T09] ( 3, 6 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[ubyte]>
-; V14 tmp4 [V14,T27] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+; V14 tmp4 [V14,T26] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]>
;* V17 tmp7 [V17 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
-;* V18 tmp8 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp9 [V19,T04] ( 7, 28 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V20 tmp10 [V20,T14] ( 2, 8 ) int -> x0
-; V21 tmp11 [V21,T12] ( 3, 12 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
+;* V18 tmp8 [V18,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp9 [V19,T05] ( 7, 7 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V20 tmp10 [V20,T17] ( 2, 2 ) int -> x0
+; V21 tmp11 [V21,T14] ( 3, 3 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
;* V22 tmp12 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V23 tmp13 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -37,38 +37,37 @@
;* V26 tmp16 [V26 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V27 tmp17 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp18 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V29 tmp19 [V29,T10] ( 4, 16 ) ubyte -> x21 "Inline return value spill temp"
-; V30 tmp20 [V30,T05] ( 7, 28 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V31 tmp21 [V31,T15] ( 2, 8 ) int -> x0
-; V32 tmp22 [V32,T09] ( 5, 20 ) ref -> x21 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
+; V29 tmp19 [V29,T11] ( 4, 4 ) ubyte -> x21 "Inline return value spill temp"
+; V30 tmp20 [V30,T06] ( 7, 7 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V31 tmp21 [V31,T18] ( 2, 2 ) int -> x0
+; V32 tmp22 [V32,T07] ( 6, 6 ) ref -> x21 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
;* V33 tmp23 [V33 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V34 tmp24 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V35 tmp25 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp26 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp27 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V38 tmp28 [V38,T02] ( 7, 48 ) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]>
+; V38 tmp28 [V38,T04] ( 7, 12 ) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]>
;* V39 tmp29 [V39 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V40 tmp30 [V40 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V41 tmp31 [V41 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V42 tmp32 [V42,T16] ( 3, 8 ) ref -> x22 class-hnd "Inline stloc first use temp" <System.AggregateException>
+; V42 tmp32 [V42,T19] ( 3, 2 ) ref -> x22 class-hnd "Inline stloc first use temp" <System.AggregateException>
;* V43 tmp33 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V44 tmp34 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V45 tmp35 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp36 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp37 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]>
-; V48 tmp38 [V48,T17] ( 3, 6 ) byref -> x14 single-def "Inlining Arg"
-;* V49 tmp39 [V49,T25] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
-; V50 tmp40 [V50,T18] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
-;* V51 tmp41 [V51,T20] ( 0, 0 ) ref -> zero-ref "field V04._source (fldOffset=0x0)" P-INDEP
-;* V52 tmp42 [V52,T21] ( 0, 0 ) ref -> zero-ref "field V39._source (fldOffset=0x0)" P-INDEP
+; V48 tmp38 [V48,T10] ( 3, 6 ) byref -> x14 single-def "Inlining Arg"
+;* V49 tmp39 [V49,T24] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
+; V50 tmp40 [V50,T12] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
+;* V51 tmp41 [V51,T21] ( 0, 0 ) ref -> zero-ref "field V04._source (fldOffset=0x0)" P-INDEP
+;* V52 tmp42 [V52,T22] ( 0, 0 ) ref -> zero-ref "field V39._source (fldOffset=0x0)" P-INDEP
;* V53 tmp43 [V53 ] ( 0, 0 ) ref -> zero-ref "field V41._source (fldOffset=0x0)" P-INDEP
-; V54 tmp44 [V54,T00] ( 3,384 ) ref -> x2 "argument with side effect"
-; V55 tmp45 [V55,T03] ( 3, 48 ) ref -> x3 "argument with side effect"
-; V56 tmp46 [V56,T19] ( 2, 4 ) ref -> x1 "argument with side effect"
-; V57 PSPSym [V57,T26] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
-; V58 cse0 [V58,T06] ( 6, 24 ) byref -> x21 "CSE - aggressive"
-; V59 cse1 [V59,T13] ( 3, 12 ) byref -> x20 "CSE - aggressive"
-; V60 cse2 [V60,T23] ( 3, 3 ) ref -> x0 "CSE - moderate"
+; V54 tmp44 [V54,T00] ( 3, 48 ) ref -> x2 "argument with side effect"
+; V55 tmp45 [V55,T01] ( 3, 48 ) ref -> x3 "argument with side effect"
+; V56 tmp46 [V56,T13] ( 2, 4 ) ref -> x1 "argument with side effect"
+; V57 PSPSym [V57,T25] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V58 cse0 [V58,T08] ( 6, 6 ) byref -> x21 "CSE - aggressive"
+; V59 cse1 [V59,T15] ( 3, 3 ) ref -> x0 "CSE - moderate"
;
; Lcl frame size = 64
@@ -86,14 +85,14 @@ G_M63909_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
str x0, [fp, #0x18] // [V00 this]
; GC ptr vars +{V00}
;; size=44 bbWeight=1 PerfScore 9.00
-G_M63909_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
+G_M63909_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref
; byrRegs +[x0]
ldr w14, [x0, #0x10]
ldr x19, [x0]
; gcrRegs +[x19]
;; size=8 bbWeight=1 PerfScore 6.00
G_M63909_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz
- cbz w14, G_M63909_IG12
+ cbz w14, G_M63909_IG11
ldr x14, [x19, #0x08]
; gcrRegs +[x14]
ldr x15, [x14, #0x08]
@@ -105,7 +104,7 @@ G_M63909_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0},
; gcrRegs -[x15]
; byrRegs -[x14]
;; size=20 bbWeight=1 PerfScore 8.50
-G_M63909_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M63909_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr x0, [fp, #0x18] // [V00 this]
; byrRegs +[x0]
@@ -126,14 +125,14 @@ G_M63909_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
ldrb w1, [x1, #0x1D]
; gcrRegs -[x1]
- cbz w1, G_M63909_IG21
- ;; size=48 bbWeight=4 PerfScore 96.00
-G_M63909_IG05: ; bbWeight=4, nogc, extend
+ cbz w1, G_M63909_IG20
+ ;; size=48 bbWeight=1 PerfScore 24.00
+G_M63909_IG05: ; bbWeight=1, nogc, extend
ldp x0, x1, [fp, #0x38]
; gcrRegs -[x0]
stp x0, x1, [fp, #0x28]
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M63909_IG06: ; bbWeight=4, isz, extend
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M63909_IG06: ; bbWeight=1, isz, extend
ldr x20, [fp, #0x28] // [V07 loc6]
; gcrRegs +[x20]
cbz x20, G_M63909_IG07
@@ -173,11 +172,11 @@ G_M63909_IG06: ; bbWeight=4, isz, extend
blr x2
; gcr arg pop 0
b G_M63909_IG08
- ;; size=116 bbWeight=4 PerfScore 88.00
-G_M63909_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M63909_IG14
- ;; size=4 bbWeight=4 PerfScore 4.00
-G_M63909_IG08: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=116 bbWeight=1 PerfScore 22.00
+G_M63909_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M63909_IG13
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M63909_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -186,7 +185,7 @@ G_M63909_IG08: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbz x0, G_M63909_IG10
+ cbz x0, G_M63909_IG09
add x0, x0, #52
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -194,14 +193,10 @@ G_M63909_IG08: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; byrRegs -[x0]
mov w1, #0xD1FFAB1E
tst w0, w1
- bne G_M63909_IG14
- ;; size=44 bbWeight=4 PerfScore 38.00
-G_M63909_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- b G_M63909_IG11
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M63909_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19-x20]
+ bne G_M63909_IG13
+ b G_M63909_IG10
+ ;; size=48 bbWeight=1 PerfScore 10.50
+G_M63909_IG09: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
ldrsh w1, [fp, #0x30] // [V07 loc6+0x08]
@@ -212,9 +207,9 @@ G_M63909_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0 x20]
; gcr arg pop 0
- cbnz w0, G_M63909_IG14
- ;; size=32 bbWeight=4 PerfScore 36.00
-G_M63909_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M63909_IG13
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M63909_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
ldr x0, [fp, #0x18] // [V00 this]
; byrRegs +[x0]
@@ -247,24 +242,24 @@ G_M63909_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M63909_IG34
+ b G_M63909_IG32
;; size=84 bbWeight=1 PerfScore 22.50
-G_M63909_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, nogc
+G_M63909_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, nogc
; gcrRegs +[x19]
; byrRegs +[x0]
ldp x1, x2, [x0, #0x20]
stp x1, x2, [fp, #0x28]
;; size=8 bbWeight=1 PerfScore 5.00
-G_M63909_IG13: ; bbWeight=1, extend
+G_M63909_IG12: ; bbWeight=1, extend
stp xzr, xzr, [x0, #0x20]
movn w1, #0
str w1, [x0, #0x10]
;; size=12 bbWeight=1 PerfScore 2.50
-G_M63909_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M63909_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr x20, [fp, #0x28] // [V07 loc6]
; gcrRegs +[x20]
- cbz x20, G_M63909_IG15
+ cbz x20, G_M63909_IG14
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -273,7 +268,7 @@ G_M63909_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M63909_IG15
+ cbnz x0, G_M63909_IG14
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -287,7 +282,7 @@ G_M63909_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cset x0, ne
; gcrRegs -[x0]
tst w0, #255
- bne G_M63909_IG16
+ bne G_M63909_IG15
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
...
+4 (+0.30%) : 10152.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>cDisplayClass24_0+<b0>d[ubyte]:MoveNext():this (Tier1-OSR)
@@ -9,29 +9,29 @@
; 0 inlinees with PGO data; 27 single block inlinees; 12 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 14, 77 ) byref -> [fp+0xF0] this EH-live single-def tier0-frame
+; V00 this [V00,T02] ( 14, 18 ) byref -> [fp+0xF0] this EH-live single-def tier0-frame
;* V01 loc0 [V01 ] ( 0, 0 ) int -> zero-ref
-; V02 loc1 [V02,T09] ( 3, 20 ) ref -> x19 class-hnd exact <<unknown class>>
-; V03 loc2 [V03 ] ( 4, 13 ) struct (16) [fp+0xD0] do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op tier0-frame <System.Threading.Tasks.ValueTask`1[ubyte]>
-; V04 loc3 [V04,T18] ( 1, 1 ) struct ( 8) [fp+0xC8] do-not-enreg[S] ld-addr-op tier0-frame <System.Threading.CancellationToken>
-; V05 loc4 [V05,T13] ( 3, 12 ) ubyte -> x21
+; V02 loc1 [V02,T03] ( 3, 17 ) ref -> x19 class-hnd exact <<unknown class>>
+; V03 loc2 [V03 ] ( 4, 4 ) struct (16) [fp+0xD0] do-not-enreg[XSR] multireg-ret addr-exposed ld-addr-op tier0-frame <System.Threading.Tasks.ValueTask`1[ubyte]>
+; V04 loc3 [V04,T21] ( 1, 1 ) struct ( 8) [fp+0xC8] do-not-enreg[S] ld-addr-op tier0-frame <System.Threading.CancellationToken>
+; V05 loc4 [V05,T16] ( 3, 3 ) ubyte -> x21
;* V06 loc5 [V06 ] ( 0, 0 ) ubyte -> zero-ref
-; V07 loc6 [V07 ] ( 9, 27 ) struct (16) [fp+0xB0] do-not-enreg[XSF] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
-; V08 loc7 [V08 ] ( 4, 77 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <ubyte[]>
+; V07 loc6 [V07 ] ( 9, 9 ) struct (16) [fp+0xB0] do-not-enreg[XSF] addr-exposed ld-addr-op tier0-frame <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
+; V08 loc7 [V08 ] ( 4, 21 ) ref -> [fp+0xA8] do-not-enreg[X] addr-exposed ld-addr-op class-hnd tier0-frame <ubyte[]>
;* V09 loc8 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref "dup spill"
-; V12 tmp2 [V12,T07] ( 3, 24 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
+; V12 tmp2 [V12,T09] ( 3, 6 ) ref -> x2 class-hnd "impAppendStmt" <<unknown class>>
;* V13 tmp3 [V13 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <System.Threading.Tasks.ValueTask`1[ubyte]>
-; V14 tmp4 [V14,T28] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-;* V15 tmp5 [V15,T27] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
+; V14 tmp4 [V14,T27] ( 2, 0 ) ref -> x1 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
+;* V15 tmp5 [V15,T26] ( 0, 0 ) int -> zero-ref single-def "OSR entry state var"
;* V16 tmp6 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
;* V17 tmp7 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]>
;* V18 tmp8 [V18 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[S] ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ValueTaskAwaiter`1[ubyte]>
-;* V19 tmp9 [V19,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp10 [V20,T04] ( 7, 28 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V21 tmp11 [V21,T14] ( 2, 8 ) int -> x0
-; V22 tmp12 [V22,T11] ( 3, 12 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
+;* V19 tmp9 [V19,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V20 tmp10 [V20,T05] ( 7, 7 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V21 tmp11 [V21,T17] ( 2, 2 ) int -> x0
+; V22 tmp12 [V22,T14] ( 3, 3 ) ref -> x0 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp15 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -39,38 +39,37 @@
;* V27 tmp17 [V27 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V28 tmp18 [V28 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V30 tmp20 [V30,T10] ( 4, 16 ) ubyte -> x21 "Inline return value spill temp"
-; V31 tmp21 [V31,T05] ( 7, 28 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V32 tmp22 [V32,T15] ( 2, 8 ) int -> x0
-; V33 tmp23 [V33,T08] ( 5, 20 ) ref -> x21 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
+; V30 tmp20 [V30,T11] ( 4, 4 ) ubyte -> x21 "Inline return value spill temp"
+; V31 tmp21 [V31,T06] ( 7, 7 ) ref -> x20 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V32 tmp22 [V32,T18] ( 2, 2 ) int -> x0
+; V33 tmp23 [V33,T07] ( 6, 6 ) ref -> x21 class-hnd "Inline stloc first use temp" <System.Threading.Tasks.Task`1[ubyte]>
;* V34 tmp24 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "updating class info" <<unknown class>>
;* V35 tmp25 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp26 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp27 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp28 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V39 tmp29 [V39,T02] ( 7, 48 ) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]>
+; V39 tmp29 [V39,T04] ( 7, 12 ) ref -> x20 class-hnd "Inlining Arg" <System.Threading.Tasks.Task`1[ubyte]>
;* V40 tmp30 [V40 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.CancellationToken>
;* V41 tmp31 [V41 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V42 tmp32 [V42 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Threading.CancellationToken>
-; V43 tmp33 [V43,T16] ( 3, 8 ) ref -> x22 class-hnd "Inline stloc first use temp" <System.AggregateException>
+; V43 tmp33 [V43,T19] ( 3, 2 ) ref -> x22 class-hnd "Inline stloc first use temp" <System.AggregateException>
;* V44 tmp34 [V44 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V45 tmp35 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp36 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp37 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V48 tmp38 [V48 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Buffers.Tests.RentReturnArrayPoolTests`1[ubyte]>
-; V49 tmp39 [V49,T17] ( 3, 6 ) byref -> x14 single-def "Inlining Arg"
-;* V50 tmp40 [V50,T25] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
-; V51 tmp41 [V51,T19] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
-;* V52 tmp42 [V52,T21] ( 0, 0 ) ref -> zero-ref "field V40._source (fldOffset=0x0)" P-INDEP
+; V49 tmp39 [V49,T10] ( 3, 6 ) byref -> x14 single-def "Inlining Arg"
+;* V50 tmp40 [V50,T24] ( 0, 0 ) struct ( 8) zero-ref do-not-enreg[S] ld-addr-op "Inline ldloca(s) first use temp" <System.Threading.Tasks.VoidTaskResult>
+; V51 tmp41 [V51,T12] ( 2, 4 ) ref -> x0 class-hnd single-def "impAppendStmt" <System.Threading.Tasks.Task`1[System.Threading.Tasks.VoidTaskResult]>
+;* V52 tmp42 [V52,T22] ( 0, 0 ) ref -> zero-ref "field V40._source (fldOffset=0x0)" P-INDEP
;* V53 tmp43 [V53 ] ( 0, 0 ) ref -> zero-ref "field V42._source (fldOffset=0x0)" P-INDEP
-; V54 tmp44 [V54,T00] ( 3,384 ) ref -> x2 "argument with side effect"
-; V55 tmp45 [V55,T03] ( 3, 48 ) ref -> x0 "argument with side effect"
-; V56 tmp46 [V56,T20] ( 2, 4 ) ref -> x1 "argument with side effect"
-; V57 PSPSym [V57,T26] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
-; V58 cse0 [V58,T06] ( 6, 24 ) byref -> x21 "CSE - aggressive"
-; V59 cse1 [V59,T12] ( 3, 12 ) byref -> x20 "CSE - aggressive"
-; V60 cse2 [V60,T24] ( 2, 2 ) byref -> x14 "CSE - moderate"
-; V61 cse3 [V61,T23] ( 3, 3 ) ref -> x0 "CSE - moderate"
+; V54 tmp44 [V54,T00] ( 3, 48 ) ref -> x2 "argument with side effect"
+; V55 tmp45 [V55,T01] ( 3, 48 ) ref -> x0 "argument with side effect"
+; V56 tmp46 [V56,T13] ( 2, 4 ) ref -> x1 "argument with side effect"
+; V57 PSPSym [V57,T25] ( 1, 1 ) long -> [fp+0x18] do-not-enreg[V] "PSPSym"
+; V58 cse0 [V58,T08] ( 6, 6 ) byref -> x21 "CSE - aggressive"
+; V59 cse1 [V59,T20] ( 2, 2 ) byref -> x14 "CSE - moderate"
+; V60 cse2 [V60,T15] ( 3, 3 ) ref -> x0 "CSE - moderate"
;
; Lcl frame size = 16
@@ -86,11 +85,11 @@ G_M63909_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {
ldr x19, [fp, #0xE0]
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 9.00
-G_M63909_IG02: ; bbWeight=1, gcVars=0000000000000002 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
- ; GC ptr vars +{V00}
- b G_M63909_IG24
+G_M63909_IG02: ; bbWeight=1, gcVars=0000000000000004 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, gcvars, byref
+ ; GC ptr vars +{V00 V02}
+ b G_M63909_IG23
;; size=4 bbWeight=1 PerfScore 1.00
-G_M63909_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M63909_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
ldr x0, [fp, #0xF0] // [V00 this]
; byrRegs +[x0]
@@ -111,14 +110,14 @@ G_M63909_IG03: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; gcrRegs +[x1]
ldrb w1, [x1, #0x1D]
; gcrRegs -[x1]
- cbz w1, G_M63909_IG18
- ;; size=48 bbWeight=4 PerfScore 96.00
-G_M63909_IG04: ; bbWeight=4, nogc, extend
+ cbz w1, G_M63909_IG17
+ ;; size=48 bbWeight=1 PerfScore 24.00
+G_M63909_IG04: ; bbWeight=1, nogc, extend
ldp x0, x1, [fp, #0xD0]
; gcrRegs -[x0]
stp x0, x1, [fp, #0xB0]
- ;; size=8 bbWeight=4 PerfScore 16.00
-G_M63909_IG05: ; bbWeight=4, isz, extend
+ ;; size=8 bbWeight=1 PerfScore 4.00
+G_M63909_IG05: ; bbWeight=1, isz, extend
ldr x20, [fp, #0xB0] // [V07 loc6]
; gcrRegs +[x20]
cbz x20, G_M63909_IG06
@@ -158,11 +157,11 @@ G_M63909_IG05: ; bbWeight=4, isz, extend
blr x2
; gcr arg pop 0
b G_M63909_IG07
- ;; size=116 bbWeight=4 PerfScore 88.00
-G_M63909_IG06: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M63909_IG11
- ;; size=4 bbWeight=4 PerfScore 4.00
-G_M63909_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=116 bbWeight=1 PerfScore 22.00
+G_M63909_IG06: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbz x20, G_M63909_IG10
+ ;; size=4 bbWeight=1 PerfScore 1.00
+G_M63909_IG07: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -171,7 +170,7 @@ G_M63909_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbz x0, G_M63909_IG09
+ cbz x0, G_M63909_IG08
add x0, x0, #52
; gcrRegs -[x0]
; byrRegs +[x0]
@@ -179,14 +178,10 @@ G_M63909_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; byrRegs -[x0]
mov w1, #0xD1FFAB1E
tst w0, w1
- bne G_M63909_IG11
- ;; size=44 bbWeight=4 PerfScore 38.00
-G_M63909_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x20]
- b G_M63909_IG10
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M63909_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19-x20]
+ bne G_M63909_IG10
+ b G_M63909_IG09
+ ;; size=48 bbWeight=1 PerfScore 10.50
+G_M63909_IG08: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x20
; gcrRegs +[x0]
ldrsh w1, [fp, #0xB8] // [V07 loc6+0x08]
@@ -197,9 +192,9 @@ G_M63909_IG09: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
blr x2
; gcrRegs -[x0 x20]
; gcr arg pop 0
- cbnz w0, G_M63909_IG11
- ;; size=32 bbWeight=4 PerfScore 36.00
-G_M63909_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M63909_IG10
+ ;; size=32 bbWeight=1 PerfScore 9.00
+G_M63909_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
ldr x0, [fp, #0xF0] // [V00 this]
; byrRegs +[x0]
@@ -232,13 +227,13 @@ G_M63909_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x2
; gcrRegs -[x1]
; gcr arg pop 0
- b G_M63909_IG31
+ b G_M63909_IG29
;; size=84 bbWeight=1 PerfScore 22.50
-G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M63909_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19]
ldr x20, [fp, #0xB0] // [V07 loc6]
; gcrRegs +[x20]
- cbz x20, G_M63909_IG12
+ cbz x20, G_M63909_IG11
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -247,7 +242,7 @@ G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bl CORINFO_HELP_ISINSTANCEOFCLASS
; gcrRegs -[x1] +[x0]
; gcr arg pop 0
- cbnz x0, G_M63909_IG12
+ cbnz x0, G_M63909_IG11
mov x1, x20
; gcrRegs +[x1]
movz x0, #0xD1FFAB1E
@@ -261,7 +256,7 @@ G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
cset x0, ne
; gcrRegs -[x0]
tst w0, #255
- bne G_M63909_IG13
+ bne G_M63909_IG12
movz x0, #8
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -274,14 +269,14 @@ G_M63909_IG11: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x2]
blr x2
; gcr arg pop 0
- b G_M63909_IG13
- ;; size=116 bbWeight=4 PerfScore 88.00
-G_M63909_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbnz x20, G_M63909_IG13
+ b G_M63909_IG12
+ ;; size=116 bbWeight=1 PerfScore 22.00
+G_M63909_IG11: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ cbnz x20, G_M63909_IG12
ldrb w21, [fp, #0xBA] // [V07 loc6+0x0a]
- b G_M63909_IG17
- ;; size=12 bbWeight=4 PerfScore 16.00
-G_M63909_IG13: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ b G_M63909_IG16
+ ;; size=12 bbWeight=1 PerfScore 4.00
+G_M63909_IG12: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x1, x20
; gcrRegs +[x1]
...
+12 (+2.73%) : 44460.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -9,31 +9,30 @@
; 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 loc0 [V01,T10] ( 5, 3.50) int -> x21
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> x22
-; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> x23
-; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> x0
+; V01 loc0 [V01,T09] ( 5, 3.50) int -> x21
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> x22
+; V03 loc2 [V03,T10] ( 4, 3.50) ubyte -> x23
+; V04 loc3 [V04,T15] ( 3, 2.50) ubyte -> x0
; V05 loc4 [V05,T06] ( 4, 12.50) int -> x0
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T17] ( 3, 2 ) int -> x0
-; V08 tmp2 [V08,T18] ( 3, 1.50) int -> x22
+; V07 tmp1 [V07,T16] ( 3, 2 ) int -> x0
+; V08 tmp2 [V08,T17] ( 3, 1.50) int -> x22
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> x0 "dup spill"
-;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> x1 "Inlining Arg"
-;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T11] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V12 tmp6 [V12,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T12] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+;* V14 tmp8 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> x1 "Inlining Arg"
-;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> x0 "Inlining Arg"
-;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V18 tmp12 [V18,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T05] ( 6, 11 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V25 cse0 [V25,T07] ( 3, 8.50) int -> x1 "CSE - aggressive"
+;* V21 tmp15 [V21,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T14] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T05] ( 7, 15 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 8
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
+ bge G_M17180_IG24
ldrh w1, [x19, w22, UXTW #2]
cmp w1, #92
beq G_M17180_IG13
@@ -135,15 +134,15 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=12 bbWeight=4 PerfScore 8.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w22, #1
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
- cbz w23, G_M17180_IG21
+ cbz w23, G_M17180_IG22
mov w22, #4
b G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.25
@@ -152,55 +151,58 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
- ldrh w1, [x19, w22, UXTW #2]
- sxtw w0, w1
+ bge G_M17180_IG20
+ ldrh w0, [x19, w22, UXTW #2]
cmp w0, #92
- beq G_M17180_IG19
+ beq G_M17180_IG20
cmp w0, #47
bne G_M17180_IG17
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x19]
- cmp w22, #4
- ble G_M17180_IG23
+ ;; size=28 bbWeight=4 PerfScore 30.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ b G_M17180_IG21
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cmp w22, w20
+ bge G_M17180_IG24
;; size=8 bbWeight=4 PerfScore 6.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w1, #92
- beq G_M17180_IG22
- cmp w1, #47
- bne G_M17180_IG23
- b G_M17180_IG22
- ;; size=20 bbWeight=0.50 PerfScore 2.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs +[x19]
+ cmp w22, #4
+ ble G_M17180_IG24
+ ldrh w0, [x19, w22, UXTW #2]
+ cmp w0, #92
+ beq G_M17180_IG23
+ cmp w0, #47
+ bne G_M17180_IG24
+ b G_M17180_IG23
+ ;; size=32 bbWeight=0.50 PerfScore 4.25
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w20, #2
- blt G_M17180_IG23
+ blt G_M17180_IG24
ldrh w0, [x19, #0x02]
cmp w0, #58
- bne G_M17180_IG23
+ bne G_M17180_IG24
ldrh w0, [x19]
orr w0, w0, #32
sub w0, w0, #97
cmp w0, #25
- bhi G_M17180_IG23
+ bhi G_M17180_IG24
mov w22, #2
cmp w20, #2
- ble G_M17180_IG23
+ ble G_M17180_IG24
ldrh w0, [x19, #0x04]
cmp w0, #92
- beq G_M17180_IG22
+ beq G_M17180_IG23
cmp w0, #47
- bne G_M17180_IG23
+ bne G_M17180_IG24
;; size=72 bbWeight=0.50 PerfScore 9.75
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
add w22, w22, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22
;; size=4 bbWeight=1 PerfScore 0.50
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -208,7 +210,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 440, prolog size 28, PerfScore 130.25, instruction count 110, allocated bytes for code 440 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 452, prolog size 28, PerfScore 131.00, instruction count 113, allocated bytes for code 452 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
@@ -219,7 +221,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
coreclr_tests.run.windows.arm64.checked.mch
-20 (-9.62%) : 341879.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,74 +11,74 @@
;
; V00 arg0 [V00,T01] ( 8, 4.39) long -> x0 single-def
; V01 arg1 [V01,T00] ( 7, 5.00) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 2.99) long -> x19
-; V03 loc1 [V03,T03] ( 10, 3.34) long -> x2
-; V04 loc2 [V04,T02] ( 10, 3.59) long -> x3
+; V02 loc0 [V02,T04] ( 4, 2.99) long -> x2
+; V03 loc1 [V03,T03] ( 10, 3.34) long -> x3
+; V04 loc2 [V04,T02] ( 10, 3.59) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG07
+ cbz x1, G_M24157_IG16
;; size=4 bbWeight=1 PerfScore 1.00
G_M24157_IG03: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG12
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG12
;; size=12 bbWeight=0.99 PerfScore 6.94
G_M24157_IG04: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG15
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG10
;; size=12 bbWeight=0.99 PerfScore 4.45
G_M24157_IG05: ; bbWeight=1.08, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG07
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG16
;; size=12 bbWeight=1.08 PerfScore 4.84
G_M24157_IG06: ; bbWeight=1.08, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x08]
- cmp x4, x0
- bne G_M24157_IG09
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG16
;; size=12 bbWeight=1.08 PerfScore 4.84
-G_M24157_IG07: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- mov x0, x1
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=0.99 PerfScore 0.49
-G_M24157_IG08: ; bbWeight=0.99, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.99 PerfScore 3.94
-G_M24157_IG09: ; bbWeight=0.11, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG07
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG07
+G_M24157_IG07: ; bbWeight=0.11, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG16
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG16
;; size=24 bbWeight=0.11 PerfScore 0.95
-G_M24157_IG10: ; bbWeight=0.11, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+G_M24157_IG08: ; bbWeight=0.11, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG05
;; size=16 bbWeight=0.11 PerfScore 0.26
-G_M24157_IG11: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG15
+G_M24157_IG09: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x3, G_M24157_IG12
;; size=4 bbWeight=0.02 PerfScore 0.02
+G_M24157_IG10: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG16
+ ;; size=12 bbWeight=0.01 PerfScore 0.05
+G_M24157_IG11: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG10
+ ;; size=16 bbWeight=0.01 PerfScore 0.03
G_M24157_IG12: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- beq G_M24157_IG18
+ beq G_M24157_IG15
;; size=16 bbWeight=0.02 PerfScore 0.11
G_M24157_IG13: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
@@ -87,44 +87,36 @@ G_M24157_IG13: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
ldr x2, [x2]
;; size=16 bbWeight=0.01 PerfScore 0.06
G_M24157_IG14: ; bbWeight=0.01, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.01 PerfScore 0.06
-G_M24157_IG15: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG07
- ;; size=12 bbWeight=0.01 PerfScore 0.05
-G_M24157_IG16: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG15
- ;; size=16 bbWeight=0.01 PerfScore 0.03
-G_M24157_IG17: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG12
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M24157_IG18: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=8 bbWeight=0.01 PerfScore 0.03
+G_M24157_IG15: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
- b G_M24157_IG07
- ;; size=8 bbWeight=0.01 PerfScore 0.01
+ ;; size=4 bbWeight=0.01 PerfScore 0.00
+G_M24157_IG16: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.99 PerfScore 0.49
+G_M24157_IG17: ; bbWeight=0.99, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.99 PerfScore 1.97
-; Total bytes of code 208, prolog size 12, PerfScore 30.56, instruction count 52, allocated bytes for code 208 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 27.54, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -135,10 +127,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-16 (-7.84%) : 319249.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -10,112 +10,106 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 8, 18.33) long -> x0 single-def
-; V01 arg1 [V01,T03] ( 7, 5.36) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.73) long -> x19
-; V03 loc1 [V03,T02] ( 10, 16.00) long -> x2
-; V04 loc2 [V04,T00] ( 10, 25.15) long -> x3
+; V01 arg1 [V01,T03] ( 7, 9.94) ref -> x1 class-hnd <System.Object>
+; V02 loc0 [V02,T04] ( 4, 3.73) long -> x2
+; V03 loc1 [V03,T02] ( 10, 16.00) long -> x3
+; V04 loc2 [V04,T00] ( 10, 25.15) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG08
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG06
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG10
+ cbz x1, G_M24157_IG10
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG08
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG06
;; size=28 bbWeight=1 PerfScore 12.50
G_M24157_IG03: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG08
- ldr x4, [x3, #0x08]
- cmp x4, x0
- beq G_M24157_IG08
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG10
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG10
;; size=24 bbWeight=4 PerfScore 36.00
G_M24157_IG04: ; bbWeight=3.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG08
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG08
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG10
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG10
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG03
;; size=40 bbWeight=3.73 PerfScore 42.86
G_M24157_IG05: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG10
+ cbz x3, G_M24157_IG08
;; size=4 bbWeight=0.73 PerfScore 0.73
-G_M24157_IG06: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG06: ; bbWeight=0.52, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG10
+ ;; size=12 bbWeight=0.52 PerfScore 2.32
+G_M24157_IG07: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG06
+ ;; size=16 bbWeight=0.36 PerfScore 0.91
+G_M24157_IG08: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- bne G_M24157_IG13
+ bne G_M24157_IG12
;; size=16 bbWeight=0.73 PerfScore 3.64
-G_M24157_IG07: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0.36 PerfScore 0.18
-G_M24157_IG08: ; bbWeight=0.64, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG10: ; bbWeight=5.22, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.64 PerfScore 0.32
-G_M24157_IG09: ; bbWeight=0.64, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=5.22 PerfScore 2.61
+G_M24157_IG11: ; bbWeight=5.22, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.64 PerfScore 2.55
-G_M24157_IG10: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=5.22 PerfScore 10.43
+G_M24157_IG12: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG08
- ;; size=12 bbWeight=0.52 PerfScore 2.32
-G_M24157_IG11: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG10
- ;; size=16 bbWeight=0.36 PerfScore 0.91
-G_M24157_IG12: ; bbWeight=0.18, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG06
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M24157_IG13: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.36 PerfScore 1.64
-G_M24157_IG14: ; bbWeight=0.36, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG13: ; bbWeight=0.36, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.36 PerfScore 1.45
+ ;; size=8 bbWeight=0.36 PerfScore 0.73
-; Total bytes of code 204, prolog size 12, PerfScore 107.77, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 116.04, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -126,10 +120,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
-16 (-7.84%) : 319517.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -10,112 +10,106 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 8, 18.33) long -> x0 single-def
-; V01 arg1 [V01,T03] ( 7, 5.36) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.73) long -> x19
-; V03 loc1 [V03,T02] ( 10, 16.00) long -> x2
-; V04 loc2 [V04,T00] ( 10, 25.15) long -> x3
+; V01 arg1 [V01,T03] ( 7, 6.99) ref -> x1 class-hnd <System.Object>
+; V02 loc0 [V02,T04] ( 4, 3.73) long -> x2
+; V03 loc1 [V03,T02] ( 10, 16.00) long -> x3
+; V04 loc2 [V04,T00] ( 10, 25.15) long -> x4
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x20]!
- str x19, [sp, #0x18]
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
+ stp fp, lr, [sp, #-0x10]!
mov fp, sp
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG08
- ldr x19, [x1]
- ldrh w2, [x19, #0x0E]
- cbz x2, G_M24157_IG06
- ldr x3, [x19, #0x40]
- cmp x2, #4
- blt G_M24157_IG10
+ cbz x1, G_M24157_IG10
+ ldr x2, [x1]
+ ldrh w3, [x2, #0x0E]
+ cbz x3, G_M24157_IG08
+ ldr x4, [x2, #0x40]
+ cmp x3, #4
+ blt G_M24157_IG06
;; size=28 bbWeight=1 PerfScore 12.50
G_M24157_IG03: ; bbWeight=4, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG08
- ldr x4, [x3, #0x08]
- cmp x4, x0
- beq G_M24157_IG08
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG10
+ ldr x5, [x4, #0x08]
+ cmp x5, x0
+ beq G_M24157_IG10
;; size=24 bbWeight=4 PerfScore 36.00
G_M24157_IG04: ; bbWeight=3.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10]
- cmp x4, x0
- beq G_M24157_IG08
- ldr x4, [x3, #0x18]
- cmp x4, x0
- beq G_M24157_IG08
- add x3, x3, #32
- sub x2, x2, #4
- cmp x2, #4
+ ldr x5, [x4, #0x10]
+ cmp x5, x0
+ beq G_M24157_IG10
+ ldr x5, [x4, #0x18]
+ cmp x5, x0
+ beq G_M24157_IG10
+ add x4, x4, #32
+ sub x3, x3, #4
+ cmp x3, #4
bge G_M24157_IG03
;; size=40 bbWeight=3.73 PerfScore 42.86
G_M24157_IG05: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG10
+ cbz x3, G_M24157_IG08
;; size=4 bbWeight=0.73 PerfScore 0.73
-G_M24157_IG06: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+G_M24157_IG06: ; bbWeight=0.52, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr x5, [x4]
+ cmp x5, x0
+ beq G_M24157_IG10
+ ;; size=12 bbWeight=0.52 PerfScore 2.32
+G_M24157_IG07: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ add x4, x4, #8
+ sub x3, x3, #1
+ cmp x3, #0
+ bgt G_M24157_IG06
+ ;; size=16 bbWeight=0.36 PerfScore 0.91
+G_M24157_IG08: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- bne G_M24157_IG13
+ bne G_M24157_IG12
;; size=16 bbWeight=0.73 PerfScore 3.64
-G_M24157_IG07: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG09: ; bbWeight=0.36, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
;; size=4 bbWeight=0.36 PerfScore 0.18
-G_M24157_IG08: ; bbWeight=0.64, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG10: ; bbWeight=2.26, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1
; gcrRegs +[x0]
- ;; size=4 bbWeight=0.64 PerfScore 0.32
-G_M24157_IG09: ; bbWeight=0.64, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+ ;; size=4 bbWeight=2.26 PerfScore 1.13
+G_M24157_IG11: ; bbWeight=2.26, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.64 PerfScore 2.55
-G_M24157_IG10: ; bbWeight=0.52, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=2.26 PerfScore 4.52
+G_M24157_IG12: ; bbWeight=0.36, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x4, [x3]
- cmp x4, x0
- beq G_M24157_IG08
- ;; size=12 bbWeight=0.52 PerfScore 2.32
-G_M24157_IG11: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8
- sub x2, x2, #1
- cmp x2, #0
- bgt G_M24157_IG10
- ;; size=16 bbWeight=0.36 PerfScore 0.91
-G_M24157_IG12: ; bbWeight=0.18, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG06
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M24157_IG13: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.36 PerfScore 1.64
-G_M24157_IG14: ; bbWeight=0.36, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
+G_M24157_IG13: ; bbWeight=0.36, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
- ;; size=12 bbWeight=0.36 PerfScore 1.45
+ ;; size=8 bbWeight=0.36 PerfScore 0.73
-; Total bytes of code 204, prolog size 12, PerfScore 107.77, instruction count 51, allocated bytes for code 204 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 108.65, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 1
Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
@@ -126,10 +120,7 @@ Unwind Info:
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
- D0 03 save_reg X#0 Z#3 (0x03); str x19, [sp, #24]
- 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]!
- E4 end
- E4 end
+ 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
E4 end
E4 end
+24 (+4.69%) : 295775.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 6, 8 ) byref -> x19 this single-def
+; V00 this [V00,T03] ( 6, 8.98) byref -> x19 this single-def
; V01 loc0 [V01,T04] ( 6, 8 ) int -> x21 single-def
-; V02 loc1 [V02,T08] ( 6, 3.58) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
+; V02 loc1 [V02,T09] ( 6, 3.08) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Reflection.Metadata.SignatureHeader>
; V04 loc3 [V04,T00] ( 10, 17.04) int -> x22
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -22,7 +22,7 @@
; V11 tmp6 [V11,T07] ( 4, 4 ) long -> x0 single-def "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V13 tmp8 [V13,T13] ( 2, 1 ) ubyte -> x1 "Inline return value spill temp"
-; V14 tmp9 [V14,T09] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
+; V14 tmp9 [V14,T08] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
; V15 tmp10 [V15,T02] ( 6, 12 ) byref -> x20 single-def "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp"
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
@@ -52,7 +52,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
; byrRegs +[x1]
ldp x2, x0, [x1, #0x10]
cmp x0, x2
- beq G_M22286_IG12
+ beq G_M22286_IG15
add x2, x0, #1
str x2, [x1, #0x18]
ldrb w1, [x0]
@@ -60,12 +60,12 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
and w1, w1, #15
cmp w1, #5
ccmp w1, #9, z, gt
- beq G_M22286_IG13
+ beq G_M22286_IG16
;; size=48 bbWeight=1 PerfScore 13.50
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
uxtb w1, w1
cmp w1, #10
- bne G_M22286_IG13
+ bne G_M22286_IG16
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
ldr x1, [x20, #0x18]
@@ -87,9 +87,9 @@ G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
str x1, [x20, #0x18]
movn w1, #0xD1FFAB1E LSL #16
cmp w21, w1
- beq G_M22286_IG14
+ beq G_M22286_IG17
cmp w21, #0
- ble G_M22286_IG15
+ ble G_M22286_IG18
sxtw x1, w21
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -130,10 +130,10 @@ G_M22286_IG06: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=880000
cmp w22, w21
blt G_M22286_IG06
;; size=48 bbWeight=3.96 PerfScore 41.58
-G_M22286_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG07: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
; byrRegs -[x23]
b G_M22286_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
mov x0, x19
; byrRegs +[x0]
@@ -146,7 +146,7 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
; byrRegs -[x0]
ldr w14, [x20, #0x08]
cmp w22, w14
- bhs G_M22286_IG11
+ bhs G_M22286_IG14
add x23, x20, #16
; byrRegs +[x23]
add x14, x23, x22, LSL #3
@@ -160,25 +160,39 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
cmp w22, w21
blt G_M22286_IG08
;; size=64 bbWeight=0.04 PerfScore 0.62
-G_M22286_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG09: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cmp x0, #0
- csel x0, xzr, x20, ne
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M22286_IG10: ; bbWeight=1, epilog, nogc, extend
+ cbnz x0, G_M22286_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 7.92
+G_M22286_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ; byrRegs -[x19]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG11: ; 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
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
- ; byrRegs -[x19]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG13: ; 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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:OutOfBounds()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -186,7 +200,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -205,7 +219,7 @@ G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=48 bbWeight=0 PerfScore 0.00
-G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:InvalidCompressedInteger()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -213,7 +227,7 @@ G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -234,22 +248,25 @@ G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 512, prolog size 24, PerfScore 106.45, instruction count 128, allocated bytes for code 512 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
+; Total bytes of code 536, prolog size 24, PerfScore 111.85, instruction count 134, allocated bytes for code 536 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 128 (0x00080) Actual length = 512 (0x000200)
+ Function Length : 134 (0x00086) Actual length = 536 (0x000218)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+24 (+4.69%) : 297971.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 6, 8 ) byref -> x19 this single-def
+; V00 this [V00,T03] ( 6, 8.98) byref -> x19 this single-def
; V01 loc0 [V01,T04] ( 6, 8 ) int -> x21 single-def
-; V02 loc1 [V02,T08] ( 6, 3.58) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
+; V02 loc1 [V02,T09] ( 6, 3.08) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Reflection.Metadata.SignatureHeader>
; V04 loc3 [V04,T00] ( 10, 17.04) int -> x22
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -22,7 +22,7 @@
; V11 tmp6 [V11,T07] ( 4, 4 ) long -> x0 single-def "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V13 tmp8 [V13,T13] ( 2, 1 ) ubyte -> x1 "Inline return value spill temp"
-; V14 tmp9 [V14,T09] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
+; V14 tmp9 [V14,T08] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
; V15 tmp10 [V15,T02] ( 6, 12 ) byref -> x20 single-def "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp"
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
@@ -52,7 +52,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
; byrRegs +[x1]
ldp x2, x0, [x1, #0x10]
cmp x0, x2
- beq G_M22286_IG12
+ beq G_M22286_IG15
add x2, x0, #1
str x2, [x1, #0x18]
ldrb w1, [x0]
@@ -60,12 +60,12 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
and w1, w1, #15
cmp w1, #5
ccmp w1, #9, z, gt
- beq G_M22286_IG13
+ beq G_M22286_IG16
;; size=48 bbWeight=1 PerfScore 13.50
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
uxtb w1, w1
cmp w1, #10
- bne G_M22286_IG13
+ bne G_M22286_IG16
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
ldr x1, [x20, #0x18]
@@ -87,9 +87,9 @@ G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
str x1, [x20, #0x18]
movn w1, #0xD1FFAB1E LSL #16
cmp w21, w1
- beq G_M22286_IG14
+ beq G_M22286_IG17
cmp w21, #0
- ble G_M22286_IG15
+ ble G_M22286_IG18
sxtw x1, w21
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -130,10 +130,10 @@ G_M22286_IG06: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=880000
cmp w22, w21
blt G_M22286_IG06
;; size=48 bbWeight=3.96 PerfScore 41.58
-G_M22286_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG07: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
; byrRegs -[x23]
b G_M22286_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
mov x0, x19
; byrRegs +[x0]
@@ -146,7 +146,7 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
; byrRegs -[x0]
ldr w14, [x20, #0x08]
cmp w22, w14
- bhs G_M22286_IG11
+ bhs G_M22286_IG14
add x23, x20, #16
; byrRegs +[x23]
add x14, x23, x22, LSL #3
@@ -160,25 +160,39 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
cmp w22, w21
blt G_M22286_IG08
;; size=64 bbWeight=0.04 PerfScore 0.62
-G_M22286_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG09: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cmp x0, #0
- csel x0, xzr, x20, ne
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M22286_IG10: ; bbWeight=1, epilog, nogc, extend
+ cbnz x0, G_M22286_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 7.92
+G_M22286_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ; byrRegs -[x19]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG11: ; 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
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
- ; byrRegs -[x19]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG13: ; 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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:OutOfBounds()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -186,7 +200,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -205,7 +219,7 @@ G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=48 bbWeight=0 PerfScore 0.00
-G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:InvalidCompressedInteger()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -213,7 +227,7 @@ G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -234,22 +248,25 @@ G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 512, prolog size 24, PerfScore 106.45, instruction count 128, allocated bytes for code 512 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
+; Total bytes of code 536, prolog size 24, PerfScore 111.85, instruction count 134, allocated bytes for code 536 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 128 (0x00080) Actual length = 512 (0x000200)
+ Function Length : 134 (0x00086) Actual length = 536 (0x000218)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+28 (+6.54%) : 206137.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
@@ -7,16 +7,16 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 loc0 [V00,T06] ( 7, 4.08) ref -> x19 class-hnd single-def <double[][]>
-; V01 loc1 [V01,T07] ( 4, 4 ) ref -> x20 class-hnd single-def <double[][]>
-; V02 loc2 [V02,T02] ( 15, 34.16) int -> x21
+; V00 loc0 [V00,T07] ( 7, 5.06) ref -> x19 class-hnd single-def <double[][]>
+; V01 loc1 [V01,T05] ( 4, 6.94) ref -> x20 class-hnd single-def <double[][]>
+; V02 loc2 [V02,T02] ( 15, 45.80) int -> x21
; V03 loc3 [V03,T00] ( 19, 84.32) int -> x0
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V05 tmp1 [V05,T01] ( 8, 64.64) ref -> registers "arr expr"
-; V06 tmp2 [V06,T04] ( 3, 6 ) ref -> x0 single-def "arr expr"
+; V06 tmp2 [V06,T04] ( 3, 11.88) ref -> x0 single-def "arr expr"
; V07 cse0 [V07,T03] ( 6, 18.97) ref -> x2 multi-def "CSE - aggressive"
; V08 cse1 [V08,T09] ( 5, 1.85) byref -> x23 hoist multi-def "CSE - aggressive"
-; V09 cse2 [V09,T05] ( 5, 5.16) int -> x22 hoist multi-def "CSE - aggressive"
+; V09 cse2 [V09,T06] ( 5, 5.16) int -> x22 hoist multi-def "CSE - aggressive"
; V10 cse3 [V10,T08] ( 4, 2.15) long -> x1 hoist multi-def "CSE - aggressive"
; V11 cse4 [V11,T10] ( 2, 0.20) long -> x1 hoist "CSE - conservative"
;
@@ -91,11 +91,11 @@ G_M31008_IG06: ; bbWeight=15.68, gcrefRegs=180004 {x2 x19 x20}, byrefRegs
cmp w0, #40
ble G_M31008_IG06
;; size=32 bbWeight=15.68 PerfScore 133.29
-G_M31008_IG07: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
+G_M31008_IG07: ; bbWeight=7.84, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
; gcrRegs -[x2]
; byrRegs -[x1]
b G_M31008_IG10
- ;; size=4 bbWeight=3.96 PerfScore 3.96
+ ;; size=4 bbWeight=7.84 PerfScore 7.84
G_M31008_IG08: ; bbWeight=0.01, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref
mov w1, w21
;; size=4 bbWeight=0.01 PerfScore 0.00
@@ -104,7 +104,7 @@ G_M31008_IG09: ; bbWeight=0.16, gcrefRegs=180000 {x19 x20}, byrefRegs=800
; gcrRegs +[x2]
ldr w3, [x2, #0x08]
cmp w0, w3
- bhs G_M31008_IG17
+ bhs G_M31008_IG20
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
@@ -115,16 +115,16 @@ G_M31008_IG09: ; bbWeight=0.16, gcrefRegs=180000 {x19 x20}, byrefRegs=800
cmp w0, #40
ble G_M31008_IG09
;; size=44 bbWeight=0.16 PerfScore 2.46
-G_M31008_IG10: ; bbWeight=3.96, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
+G_M31008_IG10: ; bbWeight=7.84, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x2]
add w21, w21, #1
cmp w21, #40
ble G_M31008_IG04
- ;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M31008_IG11: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=7.84 PerfScore 15.68
+G_M31008_IG11: ; bbWeight=1.98, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; byrRegs -[x23]
b G_M31008_IG15
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M31008_IG12: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
mov w0, #1
ldr w22, [x19, #0x08]
@@ -134,12 +134,12 @@ G_M31008_IG12: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
;; size=16 bbWeight=0.04 PerfScore 0.18
G_M31008_IG13: ; bbWeight=0.16, gcrefRegs=180000 {x19 x20}, byrefRegs=800000 {x23}, byref, isz
cmp w21, w22
- bhs G_M31008_IG17
+ bhs G_M31008_IG20
ldr x2, [x23, x1, LSL #3]
; gcrRegs +[x2]
ldr w3, [x2, #0x08]
cmp w0, w3
- bhs G_M31008_IG17
+ bhs G_M31008_IG20
add x2, x2, #16
; gcrRegs -[x2]
; byrRegs +[x2]
@@ -156,7 +156,7 @@ G_M31008_IG14: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=000
cmp w21, #40
ble G_M31008_IG12
;; size=12 bbWeight=0.04 PerfScore 0.08
-G_M31008_IG15: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+G_M31008_IG15: ; bbWeight=1.98, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
mov x0, x19
; gcrRegs +[x0]
mov x1, x20
@@ -171,27 +171,39 @@ G_M31008_IG15: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
; gcr arg pop 0
ldr w0, [x20, #0x08]
cmp w0, #1
- bls G_M31008_IG17
+ bls G_M31008_IG20
ldr x0, [x20, #0x18]
; gcrRegs +[x0]
ldr w1, [x0, #0x08]
cmp w1, #1
- bls G_M31008_IG17
+ bls G_M31008_IG20
ldr d16, [x0, #0x18]
ldr d17, [@RWD00]
fcmp d16, d17
- cset x0, eq
- ; gcrRegs -[x0]
- ;; size=76 bbWeight=1 PerfScore 25.50
-G_M31008_IG16: ; bbWeight=1, epilog, nogc, extend
+ bne G_M31008_IG18
+ ;; size=76 bbWeight=1.98 PerfScore 51.48
+G_M31008_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0 x20]
+ mov w0, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M31008_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
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M31008_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x20]
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M31008_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M31008_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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M31008_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
@@ -199,22 +211,25 @@ G_M31008_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
RWD00 dq 40D7430000000000h ; 23820
-; Total bytes of code 428, prolog size 20, PerfScore 222.44, instruction count 107, allocated bytes for code 428 (MethodHash=e2b186df) for method Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
+; Total bytes of code 456, prolog size 20, PerfScore 261.55, instruction count 114, allocated bytes for code 456 (MethodHash=e2b186df) for method Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 107 (0x0006b) Actual length = 428 (0x0001ac)
+ Function Length : 114 (0x00072) Actual length = 456 (0x0001c8)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.crossgen2.windows.arm64.checked.mch
-20 (-2.23%) : 10787.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
@@ -9,121 +9,117 @@
; 0 inlinees with PGO data; 8 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T09] ( 11, 6.50) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x10] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T08] ( 11, 9.46) ref -> [fp+0x20] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T12] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T11] ( 8, 7.02) ref -> [fp+0x18] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
; V04 loc2 [V04,T20] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
-; V05 loc3 [V05,T00] ( 11, 17.08) int -> x22
-; V06 loc4 [V06,T04] ( 6, 12 ) ref -> x2 class-hnd <System.Type>
+; V05 loc3 [V05,T00] ( 11, 17.08) int -> x23
+; V06 loc4 [V06,T04] ( 6, 12 ) ref -> x1 class-hnd <System.Type>
; V07 loc5 [V07,T05] ( 6, 12 ) ref -> x0 class-hnd <System.RuntimeType>
-; V08 loc6 [V08,T19] ( 6, 1.83) ref -> x0 class-hnd exact <System.Type[]>
+; V08 loc6 [V08,T14] ( 6, 3.31) ref -> x0 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x1
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V12 tmp1 [V12,T02] ( 4, 16 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Type>
;* V13 tmp2 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeMethodHandleInternal>
-; V14 tmp3 [V14,T14] ( 2, 2 ) ref -> x19 class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
+; V14 tmp3 [V14,T16] ( 2, 2 ) ref -> x20 class-hnd exact single-def "impAppendStmt" <System.RuntimeType>
;* V15 tmp4 [V15 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.RuntimeMethodHandleInternal>
; V16 tmp5 [V16,T25] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T24] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V17 tmp6 [V17,T24] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V18 tmp7 [V18 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.RuntimeMethodHandleInternal>
-; V19 tmp8 [V19,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V19 tmp8 [V19,T18] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.RuntimeMethodHandleInternal>
;* V21 tmp10 [V21 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V22 tmp11 [V22 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V23 tmp12 [V23 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V24 tmp13 [V24,T21] ( 2, 1 ) long -> x11 "field V13.m_handle (fldOffset=0x0)" P-INDEP
+; V24 tmp13 [V24,T21] ( 2, 1 ) long -> x0 "field V13.m_handle (fldOffset=0x0)" P-INDEP
; V25 tmp14 [V25,T22] ( 2, 1 ) long -> x1 "field V15.m_handle (fldOffset=0x0)" P-INDEP
;* V26 tmp15 [V26 ] ( 0, 0 ) long -> zero-ref "field V18.m_handle (fldOffset=0x0)" P-INDEP
-; V27 tmp16 [V27,T18] ( 2, 2 ) long -> x11 "field V20.m_handle (fldOffset=0x0)" P-INDEP
-; V28 tmp17 [V28,T15] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
-; V29 tmp18 [V29,T16] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
+; V27 tmp16 [V27,T19] ( 2, 2 ) long -> x11 "field V20.m_handle (fldOffset=0x0)" P-INDEP
+; V28 tmp17 [V28,T10] ( 2, 7.92) ref -> x1 single-def "argument with side effect"
+; V29 tmp18 [V29,T17] ( 2, 2 ) ref -> x0 single-def "argument with side effect"
; V30 tmp19 [V30,T26] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V31 tmp20 [V31,T27] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V32 PSPSym [V32,T23] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym"
-; V33 cse0 [V33,T13] ( 3, 2.50) long -> x21 "CSE - aggressive"
-; V34 cse1 [V34,T03] ( 9, 12 ) int -> x20 "CSE - aggressive"
-; V35 cse2 [V35,T08] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
-; V36 cse3 [V36,T12] ( 4, 4.29) byref -> x11 hoist multi-def "CSE - moderate"
-; V37 cse4 [V37,T06] ( 3, 11.88) long -> x19 "CSE - aggressive"
+; V32 PSPSym [V32,T23] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym"
+; V33 cse0 [V33,T15] ( 3, 2.50) long -> x22 "CSE - aggressive"
+; V34 cse1 [V34,T03] ( 9, 12 ) int -> x21 "CSE - aggressive"
+; V35 cse2 [V35,T09] ( 6, 8.54) byref -> x24 hoist multi-def "CSE - aggressive"
+; V36 cse3 [V36,T13] ( 4, 4.29) byref -> x11 hoist multi-def "CSE - moderate"
+; V37 cse4 [V37,T06] ( 3, 11.88) long -> x20 "CSE - aggressive"
; V38 cse5 [V38,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x28]
- stp x21, x22, [sp, #0x38]
- str x23, [sp, #0x48]
+ stp fp, lr, [sp, #-0x60]!
+ stp x19, x20, [sp, #0x30]
+ stp x21, x22, [sp, #0x40]
+ stp x23, x24, [sp, #0x50]
mov fp, sp
- add x2, sp, #80
- stp x0, x2, [fp, #0x18] // [V00 this], [V32 PSPSym]
+ add x2, sp, #96
+ stp x0, x2, [fp, #0x20] // [V00 this], [V32 PSPSym]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=32 bbWeight=1 PerfScore 6.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
- cbz x19, G_M59170_IG18
- ldr w20, [x19, #0x08]
- mov w21, w20
- mov x0, x21
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=36 bbWeight=1 PerfScore 7.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ cbz x20, G_M59170_IG18
+ ldr w21, [x20, #0x08]
+ mov w22, w21
+ mov x0, x22
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x1, [x11]
blr x1
; gcrRegs +[x0]
; gcr arg pop 0
- str x0, [fp, #0x10] // [V02 loc0]
+ str x0, [fp, #0x18] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x1]
- ldr x11, [x1, #0x50]
+ ldr x11, [x19, #0x50]
mov x0, x11
; gcrRegs -[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- blr x2
- ; gcrRegs -[x1]
+ ldr x1, [x11]
+ blr x1
; gcr arg pop 0
cbz w0, G_M59170_IG19
- ldr x1, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x1]
- mov w22, wzr
- cmp w20, #0
+ mov w23, wzr
+ cmp w21, #0
ble G_M59170_IG07
- ;; size=84 bbWeight=1 PerfScore 26.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x0, [fp, #0x10] // [V02 loc0]
+ ;; size=76 bbWeight=1 PerfScore 22.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x0, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x0]
ldr w11, [x0, #0x08]
- cmp w11, w20
+ cmp w11, w21
blt G_M59170_IG06
- add x23, x19, #16
- ; byrRegs +[x23]
+ add x24, x20, #16
+ ; byrRegs +[x24]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0002 {x1}, byrefRegs=800000 {x23}, byref, isz
- ; gcrRegs -[x0 x19]
- mov w19, w22
- ldr x2, [x23, x19, LSL #3]
- ; gcrRegs +[x2]
- cbz x2, G_M59170_IG20
- mov x0, x2
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
+ ; gcrRegs -[x0 x20]
+ mov w20, w23
+ ldr x1, [x24, x20, LSL #3]
+ ; gcrRegs +[x1]
+ cbz x1, G_M59170_IG20
+ mov x0, x1
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- ; gcrRegs -[x2]
- blr x2
+ ldr x1, [x11]
; gcrRegs -[x1]
+ blr x1
; gcr arg pop 0
cbz x0, G_M59170_IG08
- ldr x1, [fp, #0x10] // [V02 loc0]
+ ldr x1, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x1]
add x14, x1, #16
; byrRegs +[x14]
- add x14, x14, x19, LSL #3
+ add x14, x14, x20, LSL #3
mov x15, x0
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
@@ -132,67 +128,62 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0002 {x1}, byrefRegs=800000 {x2
blr x12
; gcrRegs -[x0-x1 x15]
; byrRegs -[x14]
- add w22, w22, #1
- cmp w20, w22
- ldr x1, [fp, #0x18] // [V00 this]
- ; gcrRegs +[x1]
+ add w23, w23, #1
+ cmp w21, w23
bgt G_M59170_IG04
- ;; size=84 bbWeight=3.96 PerfScore 95.04
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; byrRegs -[x23]
+ ;; size=80 bbWeight=3.96 PerfScore 87.12
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x24]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19]
- add x23, x19, #16
- ; byrRegs +[x23]
- ldr x2, [x23, w22, UXTW #3]
- ; gcrRegs +[x2]
- cbz x2, G_M59170_IG20
- mov x0, x2
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x20]
+ add x24, x20, #16
+ ; byrRegs +[x24]
+ ldr x1, [x24, w23, UXTW #3]
+ ; gcrRegs +[x1]
+ cbz x1, G_M59170_IG20
+ mov x0, x1
; gcrRegs +[x0]
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
- ldr x2, [x11]
- ; gcrRegs -[x2]
- blr x2
+ ldr x1, [x11]
; gcrRegs -[x1]
+ blr x1
; gcr arg pop 0
cbz x0, G_M59170_IG08
- ldr x1, [fp, #0x10] // [V02 loc0]
+ ldr x1, [fp, #0x18] // [V02 loc0]
; gcrRegs +[x1]
ldr w14, [x1, #0x08]
- cmp w22, w14
+ cmp w23, w14
bhs G_M59170_IG17
add x14, x1, #16
; byrRegs +[x14]
- add x14, x14, x22, LSL #3
+ add x14, x14, x23, LSL #3
mov x15, x0
; gcrRegs +[x15]
adrp x12, [HIGH RELOC #0xD1FFAB1E] // CORINFO_HELP_ASSIGN_REF
add x12, x12, [LOW RELOC #0xD1FFAB1E]
ldr x12, [x12]
blr x12
- ; gcrRegs -[x0 x15]
- ; byrRegs -[x14 x23]
- add w22, w22, #1
- cmp w20, w22
- ldr x1, [fp, #0x18] // [V00 this]
+ ; gcrRegs -[x0-x1 x15]
...
-16 (-2.16%) : 37067.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
@@ -9,63 +9,59 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T04] ( 24,134.50) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEventDispatcher>
-; V01 arg1 [V01,T10] ( 11, 45 ) long -> x20 single-def
-; V02 loc0 [V02,T03] ( 7,137 ) int -> x21
-; V03 loc1 [V03,T11] ( 6, 44 ) ushort -> x11
-; V04 loc2 [V04,T12] ( 5, 40 ) long -> x0
-; V05 loc3 [V05,T06] ( 6,108 ) int -> x2
-; V06 loc4 [V06,T02] ( 7,176 ) long -> x5
+; V00 this [V00,T01] ( 24, 24.50) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEventDispatcher>
+; V01 arg1 [V01,T07] ( 11, 8.50) long -> x20 single-def
+; V02 loc0 [V02,T05] ( 7, 21.50) int -> x21
+; V03 loc1 [V03,T09] ( 6, 9 ) ushort -> x11
+; V04 loc2 [V04,T11] ( 5, 8 ) long -> x0
+; V05 loc3 [V05,T06] ( 6, 18 ) int -> x2
+; V06 loc4 [V06,T00] ( 7, 28 ) long -> x5
;* V07 loc5 [V07 ] ( 0, 0 ) long -> zero-ref
-; V08 loc6 [V08,T18] ( 6, 6 ) ref -> x24 class-hnd <Microsoft.Diagnostics.Tracing.TraceEvent>
-; V09 loc7 [V09,T09] ( 2, 64 ) ubyte -> x0
+; V08 loc6 [V08,T15] ( 6, 3 ) ref -> x23 class-hnd <Microsoft.Diagnostics.Tracing.TraceEvent>
+; V09 loc7 [V09,T12] ( 2, 8 ) ubyte -> x0
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V11 tmp1 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "impAppendStmt" <<unknown class>>
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V13 tmp3 [V13,T15] ( 3, 12 ) ref -> x11 "arr expr"
-; V14 tmp4 [V14,T00] ( 3,192 ) ref -> x1 "arr expr"
-; V15 tmp5 [V15,T01] ( 3,192 ) ref -> x2 "argument with side effect"
-; V16 cse0 [V16,T08] ( 2, 72 ) long -> x4 hoist "CSE - aggressive"
-; V17 cse1 [V17,T13] ( 3, 32 ) int -> x3 "CSE - aggressive"
-; V18 cse2 [V18,T16] ( 3, 12 ) ref -> x11 "CSE - aggressive"
-; V19 cse3 [V19,T17] ( 3, 12 ) ref -> x0 "CSE - aggressive"
-; V20 cse4 [V20,T05] ( 23,133.50) long -> x22 hoist "CSE - aggressive"
-; V21 cse5 [V21,T14] ( 11, 30 ) long -> x25 multi-def "CSE - aggressive"
-; V22 cse6 [V22,T07] ( 3, 80 ) int -> x1 "CSE - aggressive"
-; V23 cse7 [V23,T19] ( 2, 5 ) long -> x23 hoist "CSE - aggressive"
+; V13 tmp3 [V13,T16] ( 3, 3 ) ref -> x11 "arr expr"
+; V14 tmp4 [V14,T02] ( 3, 24 ) ref -> x1 "arr expr"
+; V15 tmp5 [V15,T03] ( 3, 24 ) ref -> x2 "argument with side effect"
+; V16 cse0 [V16,T10] ( 2, 9 ) long -> x4 hoist "CSE - aggressive"
+; V17 cse1 [V17,T13] ( 3, 6 ) int -> x3 "CSE - aggressive"
+; V18 cse2 [V18,T17] ( 3, 1.50) ref -> x11 "CSE - moderate"
+; V19 cse3 [V19,T18] ( 3, 1.50) ref -> x0 "CSE - moderate"
+; V20 cse4 [V20,T04] ( 23, 23.50) long -> x22 hoist "CSE - aggressive"
+; V21 cse5 [V21,T14] ( 11, 5.50) long -> x24 multi-def "CSE - aggressive"
+; V22 cse6 [V22,T08] ( 3, 10 ) int -> x1 "CSE - aggressive"
;
-; Lcl frame size = 8
+; Lcl frame size = 0
G_M63325_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x50]!
- stp x19, x20, [sp, #0x18]
- stp x21, x22, [sp, #0x28]
- stp x23, x24, [sp, #0x38]
- str x25, [sp, #0x48]
+ stp fp, lr, [sp, #-0x40]!
+ stp x19, x20, [sp, #0x10]
+ stp x21, x22, [sp, #0x20]
+ stp x23, x24, [sp, #0x30]
mov fp, sp
mov x19, x0
; gcrRegs +[x19]
mov x20, x1
- ;; size=32 bbWeight=1 PerfScore 6.50
+ ;; size=28 bbWeight=1 PerfScore 5.50
G_M63325_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
mov w21, wzr
adrp x11, [HIGH RELOC #0xD1FFAB1E]
add x11, x11, [LOW RELOC #0xD1FFAB1E]
ldr x22, [x11]
- adrp x23, [HIGH RELOC #0xD1FFAB1E]
- add x23, x23, [LOW RELOC #0xD1FFAB1E]
- ;; size=24 bbWeight=1 PerfScore 5.50
-G_M63325_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=1 PerfScore 4.50
+G_M63325_IG03: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrh w11, [x20, #0x28]
ldrh w0, [x20, #0x04]
tbz w0, #8, G_M63325_IG05
- ;; size=12 bbWeight=8 PerfScore 56.00
-G_M63325_IG04: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=1 PerfScore 7.00
+G_M63325_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldrb w0, [x20, #0x2D]
add w11, w11, w0
uxth w11, w11
- ;; size=12 bbWeight=2 PerfScore 8.00
-G_M63325_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=0.50 PerfScore 2.00
+G_M63325_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldrsb wzr, [x20]
add x0, x20, #24
ldr w1, [x0]
@@ -80,15 +76,15 @@ G_M63325_IG05: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs +[x4]
ldr x4, [x4, #0x38]
; byrRegs -[x4]
- ;; size=40 bbWeight=8 PerfScore 132.00
-G_M63325_IG06: ; bbWeight=64, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=40 bbWeight=1 PerfScore 16.50
+G_M63325_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
mov w5, #20
smaddl x5, w2, w5, x4
ldr w6, [x5]
cmp w6, w1
bne G_M63325_IG08
- ;; size=20 bbWeight=64 PerfScore 640.00
-G_M63325_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=8 PerfScore 80.00
+G_M63325_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w6, [x5, #0x04]
ldr w7, [x0, #0x04]
cmp w6, w7
@@ -104,16 +100,16 @@ G_M63325_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldrh w6, [x5, #0x10]
cmp w6, w11
beq G_M63325_IG09
- ;; size=60 bbWeight=8 PerfScore 216.00
-G_M63325_IG08: ; bbWeight=16, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=60 bbWeight=2 PerfScore 54.00
+G_M63325_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldrb w5, [x5, #0x12]
cbz w5, G_M63325_IG10
add w2, w2, w11, LSL #1
add w2, w2, #1
and w2, w2, w3
b G_M63325_IG06
- ;; size=24 bbWeight=16 PerfScore 112.00
-G_M63325_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=24 bbWeight=4 PerfScore 28.00
+G_M63325_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add x11, x19, x22
; byrRegs +[x11]
ldr x11, [x11, #0x10]
@@ -121,16 +117,16 @@ G_M63325_IG09: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs -[x11]
ldr w0, [x11, #0x08]
cmp w2, w0
- bhs G_M63325_IG20
+ bhs G_M63325_IG18
add x11, x11, #16
; gcrRegs -[x11]
; byrRegs +[x11]
- ldr x24, [x11, w2, UXTW #3]
- ; gcrRegs +[x24]
- cbnz x24, G_M63325_IG17
- ;; size=32 bbWeight=2 PerfScore 25.00
-G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x24]
+ ldr x23, [x11, w2, UXTW #3]
+ ; gcrRegs +[x23]
+ cbnz x23, G_M63325_IG15
+ ;; size=32 bbWeight=0.50 PerfScore 6.25
+G_M63325_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x23]
; byrRegs -[x11]
add x11, x19, x22
; byrRegs +[x11]
@@ -139,8 +135,8 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs -[x11]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
- ldr x25, [x0]
- add x11, x11, x25
+ ldr x24, [x0]
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
str x20, [x11, #0x48]
@@ -148,7 +144,7 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x11, [x11, #0x20]
; gcrRegs +[x11]
; byrRegs -[x11]
- add x11, x11, x25
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
ldr x0, [x20, #0x60]
@@ -157,7 +153,7 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x11, [x11, #0x20]
; gcrRegs +[x11]
; byrRegs -[x11]
- add x11, x11, x25
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
add x0, x19, x22
@@ -169,9 +165,9 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x11, [x11, #0x20]
; gcrRegs +[x11]
; byrRegs -[x11]
- add x0, x11, x25
+ add x0, x11, x24
; byrRegs +[x0]
- add x11, x11, x25
+ add x11, x11, x24
; gcrRegs -[x11]
; byrRegs +[x11]
ldr x11, [x11, #0x48]
@@ -191,24 +187,22 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
; byrRegs +[x11]
ldrh w11, [x11, #0x48]
; byrRegs -[x11]
- cbnz w11, G_M63325_IG12
- ;; size=140 bbWeight=4 PerfScore 192.00
-G_M63325_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
+ cbnz w11, G_M63325_IG11
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
mov w0, wzr
+ ; byrRegs -[x0]
ldr x1, [x11]
blr x1
; gcr arg pop 0
- ;; size=20 bbWeight=2 PerfScore 11.00
-G_M63325_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=160 bbWeight=0.50 PerfScore 26.75
+G_M63325_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
add x0, x19, x22
; byrRegs +[x0]
ldr x0, [x0, #0x20]
; gcrRegs +[x0]
; byrRegs -[x0]
- add x0, x0, x25
+ add x0, x0, x24
; gcrRegs -[x0]
; byrRegs +[x0]
mov w11, #255
@@ -217,24 +211,25 @@ G_M63325_IG12: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x0, [x0, #0x28]
; gcrRegs +[x0]
; byrRegs -[x0]
- cbz x0, G_M63325_IG15
+ cbz x0, G_M63325_IG13
ldr w0, [x0, #0x08]
; gcrRegs -[x0]
cmp w0, w21
- ble G_M63325_IG15
+ ble G_M63325_IG13
add x0, x19, x22
; byrRegs +[x0]
ldr x0, [x0, #0x20]
; gcrRegs +[x0]
; byrRegs -[x0]
- mov x11, x23
+ adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
+ add x11, x11, [LOW RELOC #0xD1FFAB1E]
...
-12 (-0.79%) : 192050.dasm - System.Text.RegularExpressions.Generated.FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952_Regex13+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
@@ -9,58 +9,58 @@
; 0 inlinees with PGO data; 3 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 22,110 ) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner>
-; V01 arg1 [V01 ] ( 11, 23.50) struct (16) [fp+0x40] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
-; V02 loc0 [V02,T01] ( 34, 94.50) int -> [fp+0x3C]
-; V03 loc1 [V03,T38] ( 3, 2.50) int -> x21
-; V04 loc2 [V04,T30] ( 3, 12 ) int -> x20
-; V05 loc3 [V05,T19] ( 4, 12.50) int -> x20
-; V06 loc4 [V06,T05] ( 2, 32.50) int -> [fp+0x38] spill-single-def
-; V07 loc5 [V07,T13] ( 5, 16.50) int -> [fp+0x34]
-; V08 loc6 [V08,T27] ( 5, 13 ) int -> x25
-; V09 loc7 [V09,T07] ( 7, 27 ) int -> x23
-; V10 loc8 [V10 ] ( 9, 23 ) int -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op
-; V11 loc9 [V11 ] ( 37,113.50) struct (16) [fp+0x18] do-not-enreg[XSAR] multireg-arg multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V12 loc10 [V12,T09] ( 6, 22 ) int -> x26
-; V13 loc11 [V13,T22] ( 3, 16 ) int -> x20
-; V14 loc12 [V14,T31] ( 3, 12 ) int -> x28
-; V15 loc13 [V15,T10] ( 6, 22 ) int -> x26
-; V16 loc14 [V16,T11] ( 6, 22 ) int -> x26
+; V00 this [V00,T01] ( 22, 74.50) ref -> x19 this class-hnd single-def <System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner>
+; V01 arg1 [V01 ] ( 11, 20 ) struct (16) [fp+0x30] do-not-enreg[XSA] multireg-arg addr-exposed ld-addr-op single-def <System.ReadOnlySpan`1[ushort]>
+; V02 loc0 [V02,T00] ( 34, 87.50) int -> registers
+; V03 loc1 [V03,T35] ( 3, 2.50) int -> x21
+; V04 loc2 [V04,T24] ( 3, 12 ) int -> x20
+; V05 loc3 [V05,T26] ( 4, 5.50) int -> x20
+; V06 loc4 [V06,T32] ( 2, 4.50) int -> [fp+0x2C] spill-single-def
+; V07 loc5 [V07,T29] ( 5, 2.50) int -> x28
+; V08 loc6 [V08,T34] ( 5, 2.50) int -> x25
+; V09 loc7 [V09,T05] ( 7, 27 ) int -> x23
+; V10 loc8 [V10 ] ( 9, 23 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed ld-addr-op
+; V11 loc9 [V11 ] ( 37,106.50) struct (16) [fp+0x10] do-not-enreg[XSAR] multireg-arg multireg-ret must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
+; V12 loc10 [V12,T21] ( 6, 15 ) int -> x26
+; V13 loc11 [V13,T16] ( 3, 16 ) int -> x20
+; V14 loc12 [V14,T25] ( 3, 12 ) int -> x28
+; V15 loc13 [V15,T08] ( 6, 22 ) int -> x26
+; V16 loc14 [V16,T09] ( 6, 22 ) int -> x26
;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V18 tmp1 [V18 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
; V19 tmp2 [V19,T03] ( 3, 36 ) byref -> x26 "non-inline candidate call"
;* V20 tmp3 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp4 [V21 ] ( 0, 0 ) struct (16) zero-ref multireg-arg "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-; V22 tmp5 [V22,T34] ( 2, 8 ) int -> x23 "dup spill"
-; V23 tmp6 [V23,T20] ( 4, 16 ) int -> x11 "dup spill"
-; V24 tmp7 [V24,T28] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
-; V25 tmp8 [V25,T21] ( 4, 16 ) int -> x11 "dup spill"
-; V26 tmp9 [V26,T29] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V22 tmp5 [V22,T28] ( 2, 8 ) int -> x23 "dup spill"
+; V23 tmp6 [V23,T14] ( 4, 16 ) int -> x11 "dup spill"
+; V24 tmp7 [V24,T22] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
+; V25 tmp8 [V25,T15] ( 4, 16 ) int -> x11 "dup spill"
+; V26 tmp9 [V26,T23] ( 3, 12 ) ref -> x0 class-hnd "impAppendStmt" <<unknown class>>
;* V27 tmp10 [V27 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V28 tmp11 [V28 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V29 tmp12 [V29 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V30 tmp13 [V30 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V31 tmp14 [V31 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
-; V32 tmp15 [V32,T18] ( 3, 17 ) int -> x0 "dup spill"
+; V32 tmp15 [V32,T33] ( 3, 3 ) int -> x0 "dup spill"
;* V33 tmp16 [V33 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V34 tmp17 [V34 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V35 tmp18 [V35 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V36 tmp19 [V36 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
;* V37 tmp20 [V37 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[ushort]>
-; V38 tmp21 [V38,T15] ( 3, 18 ) ref -> x1 class-hnd "Inline stloc first use temp" <<unknown class>>
-; V39 tmp22 [V39,T14] ( 4, 20 ) int -> x3 "Inline stloc first use temp"
-; V40 tmp23 [V40,T08] ( 3, 24 ) int -> x2 "Inlining Arg"
+; V38 tmp21 [V38,T11] ( 3, 18 ) ref -> x1 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V39 tmp22 [V39,T10] ( 4, 20 ) int -> x3 "Inline stloc first use temp"
+; V40 tmp23 [V40,T07] ( 3, 24 ) int -> x2 "Inlining Arg"
; V41 tmp24 [V41,T04] ( 2, 36 ) int -> x20 "Inlining Arg"
-; V42 tmp25 [V42 ] ( 10, 22.50) byref -> [fp+0x40] do-not-enreg[X] addr-exposed single-def "field V01._reference (fldOffset=0x0)" P-DEP
-; V43 tmp26 [V43 ] ( 10, 22.50) int -> [fp+0x48] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
-; V44 tmp27 [V44 ] ( 22, 69.50) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP
-; V45 tmp28 [V45 ] ( 29, 84.50) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
+; V42 tmp25 [V42 ] ( 10, 19 ) byref -> [fp+0x30] do-not-enreg[X] addr-exposed single-def "field V01._reference (fldOffset=0x0)" P-DEP
+; V43 tmp26 [V43 ] ( 10, 19 ) int -> [fp+0x38] do-not-enreg[X] addr-exposed single-def "field V01._length (fldOffset=0x8)" P-DEP
+; V44 tmp27 [V44 ] ( 22, 62.50) byref -> [fp+0x10] do-not-enreg[X] addr-exposed "field V11._reference (fldOffset=0x0)" P-DEP
+; V45 tmp28 [V45 ] ( 29, 77.50) int -> [fp+0x18] do-not-enreg[X] addr-exposed "field V11._length (fldOffset=0x8)" P-DEP
;* V46 tmp29 [V46 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-DEP
;* V47 tmp30 [V47 ] ( 0, 0 ) int -> zero-ref "field V18._length (fldOffset=0x8)" P-DEP
-; V48 tmp31 [V48,T23] ( 2, 16 ) byref -> x2 "field V20._reference (fldOffset=0x0)" P-INDEP
-; V49 tmp32 [V49,T25] ( 2, 16 ) int -> x3 "field V20._length (fldOffset=0x8)" P-INDEP
-; V50 tmp33 [V50,T24] ( 2, 16 ) byref -> x26 "field V21._reference (fldOffset=0x0)" P-INDEP
-; V51 tmp34 [V51,T26] ( 2, 16 ) int -> x28 "field V21._length (fldOffset=0x8)" P-INDEP
+; V48 tmp31 [V48,T17] ( 2, 16 ) byref -> x2 "field V20._reference (fldOffset=0x0)" P-INDEP
+; V49 tmp32 [V49,T19] ( 2, 16 ) int -> x3 "field V20._length (fldOffset=0x8)" P-INDEP
+; V50 tmp33 [V50,T18] ( 2, 16 ) byref -> x26 "field V21._reference (fldOffset=0x0)" P-INDEP
+; V51 tmp34 [V51,T20] ( 2, 16 ) int -> x28 "field V21._length (fldOffset=0x8)" P-INDEP
;* V52 tmp35 [V52 ] ( 0, 0 ) byref -> zero-ref "field V27._reference (fldOffset=0x0)" P-DEP
;* V53 tmp36 [V53 ] ( 0, 0 ) int -> zero-ref "field V27._length (fldOffset=0x8)" P-DEP
;* V54 tmp37 [V54 ] ( 0, 0 ) byref -> zero-ref "field V28._reference (fldOffset=0x0)" P-DEP
@@ -69,8 +69,8 @@
;* V57 tmp40 [V57 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-DEP
;* V58 tmp41 [V58 ] ( 0, 0 ) byref -> zero-ref "field V30._reference (fldOffset=0x0)" P-DEP
;* V59 tmp42 [V59 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-DEP
-; V60 tmp43 [V60,T33] ( 2, 8 ) byref -> x0 "field V31._reference (fldOffset=0x0)" P-INDEP
-; V61 tmp44 [V61,T35] ( 2, 8 ) int -> x1 "field V31._length (fldOffset=0x8)" P-INDEP
+; V60 tmp43 [V60,T36] ( 2, 1 ) byref -> x0 "field V31._reference (fldOffset=0x0)" P-INDEP
+; V61 tmp44 [V61,T37] ( 2, 1 ) int -> x1 "field V31._length (fldOffset=0x8)" P-INDEP
;* V62 tmp45 [V62 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-DEP
;* V63 tmp46 [V63 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-DEP
;* V64 tmp47 [V64 ] ( 0, 0 ) byref -> zero-ref "field V34._reference (fldOffset=0x0)" P-DEP
@@ -81,27 +81,26 @@
;* V69 tmp52 [V69 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-DEP
;* V70 tmp53 [V70 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-DEP
;* V71 tmp54 [V71 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-DEP
-; V72 cse0 [V72,T32] ( 2, 9 ) byref -> x25 hoist "CSE - moderate"
-; V73 cse1 [V73,T36] ( 4, 6 ) long -> x24 "CSE - moderate"
-; V74 cse2 [V74,T16] ( 3, 18 ) int -> x0 "CSE - aggressive"
-; V75 cse3 [V75,T17] ( 3, 18 ) int -> x11 "CSE - aggressive"
-; V76 cse4 [V76,T37] ( 3, 6 ) byref -> x1 "CSE - moderate"
-; V77 cse5 [V77,T02] ( 6, 68.50) long -> x27 "CSE - aggressive"
-; V78 cse6 [V78,T06] ( 11, 29 ) long -> x22 "CSE - aggressive"
-; V79 cse7 [V79,T12] ( 7, 21 ) long -> x28 multi-def "CSE - aggressive"
+; V72 cse0 [V72,T27] ( 2, 9 ) byref -> x25 hoist "CSE - moderate"
+; V73 cse1 [V73,T30] ( 4, 6 ) long -> x24 "CSE - moderate"
+; V74 cse2 [V74,T12] ( 3, 18 ) int -> x0 "CSE - aggressive"
+; V75 cse3 [V75,T13] ( 3, 18 ) int -> x11 "CSE - aggressive"
+; V76 cse4 [V76,T31] ( 3, 6 ) byref -> x1 "CSE - moderate"
+; V77 cse5 [V77,T02] ( 6, 40.50) long -> x27 "CSE - aggressive"
+; V78 cse6 [V78,T06] ( 11, 25.50) long -> x22 "CSE - aggressive"
;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M58872_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xA0]!
- stp x19, x20, [sp, #0x50]
- stp x21, x22, [sp, #0x60]
- stp x23, x24, [sp, #0x70]
- stp x25, x26, [sp, #0x80]
- stp x27, x28, [sp, #0x90]
+ stp fp, lr, [sp, #-0x90]!
+ stp x19, x20, [sp, #0x40]
+ stp x21, x22, [sp, #0x50]
+ stp x23, x24, [sp, #0x60]
+ stp x25, x26, [sp, #0x70]
+ stp x27, x28, [sp, #0x80]
mov fp, sp
- str xzr, [fp, #0x18] // [V11 loc9]
- stp x1, x2, [fp, #0x40] // [V01 arg1], [V01 arg1+0x08]
+ str xzr, [fp, #0x10] // [V11 loc9]
+ stp x1, x2, [fp, #0x30] // [V01 arg1], [V01 arg1+0x08]
mov x19, x0
; gcrRegs +[x19]
;; size=40 bbWeight=1 PerfScore 9.00
@@ -111,8 +110,8 @@ G_M58872_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x0, [x0]
ldr w20, [x19, x0]
sxtw w21, w20
- str wzr, [fp, #0x28] // [V10 loc8]
- add x0, fp, #64 // [V01 arg1]
+ str wzr, [fp, #0x20] // [V10 loc8]
+ add x0, fp, #48 // [V01 arg1]
mov w1, w21
adrp x22, [HIGH RELOC #0xD1FFAB1E] // function address
add x22, x22, [LOW RELOC #0xD1FFAB1E]
@@ -120,7 +119,7 @@ G_M58872_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
ldr x2, [x11]
blr x2
; byrRegs +[x0]
- stp x0, x1, [fp, #0x18] // [V11 loc9], [V11 loc9+0x08]
+ stp x0, x1, [fp, #0x10] // [V11 loc9], [V11 loc9+0x08]
mov w23, wzr
adrp x0, [HIGH RELOC #0xD1FFAB1E]
; byrRegs -[x0]
@@ -144,7 +143,7 @@ G_M58872_IG03: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x2
sxtw w2, w0
ldr x1, [x26]
; gcrRegs +[x1]
- ldr w3, [fp, #0x28] // [V10 loc8]
+ ldr w3, [fp, #0x20] // [V10 loc8]
ldr w0, [x1, #0x08]
add w11, w3, #1
cmp w0, w11
@@ -159,15 +158,15 @@ G_M58872_IG04: ; bbWeight=2, gcrefRegs=80002 {x1 x19}, byrefRegs=2000000
; byrRegs +[x1]
str w2, [x1, w3, UXTW #2]
str w20, [x1, w11, UXTW #2]
- ldr w1, [fp, #0x28] // [V10 loc8]
+ ldr w1, [fp, #0x20] // [V10 loc8]
; byrRegs -[x1]
add w1, w1, #2
- str w1, [fp, #0x28] // [V10 loc8]
+ str w1, [fp, #0x20] // [V10 loc8]
b G_M58872_IG06
;; size=36 bbWeight=2 PerfScore 17.00
G_M58872_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=6000000 {x25 x26}, byref
; byrRegs +[x26]
- add x1, fp, #40 // [V10 loc8]
+ add x1, fp, #32 // [V10 loc8]
mov w3, w20
mov x0, x26
; byrRegs +[x0]
@@ -179,9 +178,9 @@ G_M58872_IG05: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=6000000 {x2
;; size=28 bbWeight=2 PerfScore 13.00
G_M58872_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref, isz
add w23, w23, #1
- ldr x26, [fp, #0x18] // [V44 tmp27]
+ ldr x26, [fp, #0x10] // [V44 tmp27]
; byrRegs +[x26]
- ldr w28, [fp, #0x20] // [V45 tmp28]
+ ldr w28, [fp, #0x18] // [V45 tmp28]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // const ptr
add x0, x0, [LOW RELOC #0xD1FFAB1E]
ldr x0, [x0]
@@ -203,21 +202,21 @@ G_M58872_IG06: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x2
ldr x4, [x11]
blr x4
; byrRegs -[x0 x2 x26]
- cbz w0, G_M58872_IG10
+ cbz w0, G_M58872_IG11
;; size=80 bbWeight=8 PerfScore 196.00
G_M58872_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref, isz
add w0, w20, #2
sxtw w26, w0
- add x0, fp, #64 // [V01 arg1]
+ add x0, fp, #48 // [V01 arg1]
mov w1, w26
mov x11, x22
ldr x2, [x11]
blr x2
; byrRegs +[x0]
- stp x0, x1, [fp, #0x18] // [V11 loc9], [V11 loc9+0x08]
+ stp x0, x1, [fp, #0x10] // [V11 loc9], [V11 loc9+0x08]
sxtw w28, w26
- ldr x0, [fp, #0x18] // [V44 tmp27]
- ldr w1, [fp, #0x20] // [V45 tmp28]
+ ldr x0, [fp, #0x10] // [V44 tmp27]
+ ldr w1, [fp, #0x18] // [V45 tmp28]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address
add x11, x11, [LOW RELOC #0xD1FFAB1E]
mov w2, #41
@@ -228,72 +227,75 @@ G_M58872_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x2
tbz w26, #31, G_M58872_IG09
;; size=72 bbWeight=4 PerfScore 76.00
G_M58872_IG08: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref
- ldr w26, [fp, #0x20] // [V45 tmp28]
+ ldr w26, [fp, #0x18] // [V45 tmp28]
;; size=4 bbWeight=2 PerfScore 4.00
G_M58872_IG09: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=2000000 {x25}, byref, isz
- cbz w26, G_M58872_IG10
- add x0, fp, #24 // [V11 loc9]
+ cbz w26, G_M58872_IG11
+ add x0, fp, #16 // [V11 loc9]
mov w1, w26
mov x11, x22
ldr x2, [x11]
...
+12 (+2.78%) : 266698.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -10,31 +10,30 @@
; 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 loc0 [V01,T10] ( 5, 3.50) int -> x21
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> x22
-; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> x23
-; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> x0
+; V01 loc0 [V01,T09] ( 5, 3.50) int -> x21
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> x22
+; V03 loc2 [V03,T10] ( 4, 3.50) ubyte -> x23
+; V04 loc3 [V04,T15] ( 3, 2.50) ubyte -> x0
; V05 loc4 [V05,T06] ( 4, 12.50) int -> x0
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T17] ( 3, 2 ) int -> x0
-; V08 tmp2 [V08,T18] ( 3, 1.50) int -> x22
+; V07 tmp1 [V07,T16] ( 3, 2 ) int -> x0
+; V08 tmp2 [V08,T17] ( 3, 1.50) int -> x22
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> x0 "dup spill"
-;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> x1 "Inlining Arg"
-;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T11] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V12 tmp6 [V12,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T12] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+;* V14 tmp8 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> x1 "Inlining Arg"
-;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> x0 "Inlining Arg"
-;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V18 tmp12 [V18,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T05] ( 6, 11 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V25 cse0 [V25,T07] ( 3, 8.50) int -> x1 "CSE - aggressive"
+;* V21 tmp15 [V21,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T14] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T05] ( 7, 15 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 8
@@ -120,7 +119,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
+ bge G_M17180_IG24
ldrh w1, [x19, w22, UXTW #2]
cmp w1, #92
beq G_M17180_IG13
@@ -134,15 +133,15 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=12 bbWeight=4 PerfScore 8.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w22, #1
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
- cbz w23, G_M17180_IG21
+ cbz w23, G_M17180_IG22
mov w22, #4
b G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.25
@@ -151,55 +150,58 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
- ldrh w1, [x19, w22, UXTW #2]
- sxtw w0, w1
+ bge G_M17180_IG20
+ ldrh w0, [x19, w22, UXTW #2]
cmp w0, #92
- beq G_M17180_IG19
+ beq G_M17180_IG20
cmp w0, #47
bne G_M17180_IG17
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x19]
- cmp w22, #4
- ble G_M17180_IG23
+ ;; size=28 bbWeight=4 PerfScore 30.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ b G_M17180_IG21
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cmp w22, w20
+ bge G_M17180_IG24
;; size=8 bbWeight=4 PerfScore 6.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w1, #92
- beq G_M17180_IG22
- cmp w1, #47
- bne G_M17180_IG23
- b G_M17180_IG22
- ;; size=20 bbWeight=0.50 PerfScore 2.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs +[x19]
+ cmp w22, #4
+ ble G_M17180_IG24
+ ldrh w0, [x19, w22, UXTW #2]
+ cmp w0, #92
+ beq G_M17180_IG23
+ cmp w0, #47
+ bne G_M17180_IG24
+ b G_M17180_IG23
+ ;; size=32 bbWeight=0.50 PerfScore 4.25
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w20, #2
- blt G_M17180_IG23
+ blt G_M17180_IG24
ldrh w0, [x19, #0x02]
cmp w0, #58
- bne G_M17180_IG23
+ bne G_M17180_IG24
ldrh w0, [x19]
orr w0, w0, #32
sub w0, w0, #97
cmp w0, #25
- bhi G_M17180_IG23
+ bhi G_M17180_IG24
mov w22, #2
cmp w20, #2
- ble G_M17180_IG23
+ ble G_M17180_IG24
ldrh w0, [x19, #0x04]
cmp w0, #92
- beq G_M17180_IG22
+ beq G_M17180_IG23
cmp w0, #47
- bne G_M17180_IG23
+ bne G_M17180_IG24
;; size=72 bbWeight=0.50 PerfScore 9.75
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
add w22, w22, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22
;; size=4 bbWeight=1 PerfScore 0.50
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -207,7 +209,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 432, prolog size 28, PerfScore 129.50, instruction count 108, allocated bytes for code 432 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 444, prolog size 28, PerfScore 130.25, instruction count 111, allocated bytes for code 444 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -218,7 +220,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 108 (0x0006c) Actual length = 432 (0x0001b0)
+ Function Length : 111 (0x0006f) Actual length = 444 (0x0001bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+5.88%) : 169941.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -11,14 +11,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -56,53 +56,62 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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]
@@ -111,18 +120,18 @@ G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 8, PerfScore 56.64, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 216, prolog size 8, PerfScore 61.84, instruction count 54, allocated bytes for code 216 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
@@ -130,6 +139,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+12 (+5.88%) : 215260.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -11,14 +11,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -56,53 +56,62 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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]
@@ -111,18 +120,18 @@ G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
brk_windows #0
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 8, PerfScore 56.64, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 216, prolog size 8, PerfScore 61.84, instruction count 54, allocated bytes for code 216 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
@@ -130,6 +139,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries.pmi.windows.arm64.checked.mch
-12 (-12.00%) : 4778.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,27 +10,27 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> x0 single-def
; V01 arg1 [V01,T04] ( 4, 6.28) int -> x1 ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.28) int -> x2 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> x2 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> x3 single-def
-; V04 loc0 [V04,T00] ( 7, 19.72) int -> x3
+; V04 loc0 [V04,T00] ( 7, 18.72) int -> x3
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> x4
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.56) int -> x5 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.56) int -> x4 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> x4 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> x4 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
G_M34838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
; byrRegs +[x0]
sub w3, w3, #1
- tbnz w3, #31, G_M34838_IG09
+ tbnz w3, #31, G_M34838_IG06
;; size=8 bbWeight=1 PerfScore 1.50
G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
sbfiz x4, x3, #2, #32
@@ -44,43 +44,31 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
;; size=24 bbWeight=4 PerfScore 26.00
G_M34838_IG04: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w1, w5
- bgt G_M34838_IG06
+ bgt G_M34838_IG08
;; size=8 bbWeight=0.28 PerfScore 0.42
G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w2, w4
- bge G_M34838_IG11
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M34838_IG06: ; bbWeight=1.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
- mov w0, w3
- ;; size=4 bbWeight=1.72 PerfScore 0.86
-G_M34838_IG07: ; bbWeight=1.72, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=1.72 PerfScore 3.44
-G_M34838_IG08: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
- ; byrRegs +[x0]
+ blt G_M34838_IG08
sub w3, w3, #1
tbz w3, #31, G_M34838_IG03
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M34838_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=16 bbWeight=4 PerfScore 12.00
+G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
movn w0, #0
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M34838_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M34838_IG11: ; bbWeight=0.28, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w2, w4
- ble G_M34838_IG08
- ;; size=8 bbWeight=0.28 PerfScore 0.42
-G_M34838_IG12: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- b G_M34838_IG08
- ;; size=4 bbWeight=0.06 PerfScore 0.06
+G_M34838_IG08: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, w3
+ ;; size=4 bbWeight=0.72 PerfScore 0.36
+G_M34838_IG09: ; bbWeight=0.72, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.72 PerfScore 1.44
-; Total bytes of code 100, prolog size 8, PerfScore 47.45, instruction count 25, allocated bytes for code 100 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 88, prolog size 8, PerfScore 44.47, instruction count 22, allocated bytes for code 88 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -91,7 +79,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 25 (0x00019) Actual length = 100 (0x000064)
+ Function Length : 22 (0x00016) Actual length = 88 (0x000058)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-12 (-11.11%) : 4766.dasm - System.SpanHelpers:IndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,20 +10,20 @@
;
; V00 arg0 [V00,T07] ( 3, 6 ) byref -> x0 single-def
; V01 arg1 [V01,T05] ( 4, 6.28) int -> x1 ld-addr-op single-def
-; V02 arg2 [V02,T06] ( 4, 6.28) int -> x2 ld-addr-op single-def
+; V02 arg2 [V02,T06] ( 3, 6 ) int -> x2 ld-addr-op single-def
; V03 arg3 [V03,T04] ( 4, 7 ) int -> x3 single-def
-; V04 loc0 [V04,T00] ( 6, 18.72) int -> x4
+; V04 loc0 [V04,T00] ( 6, 17.72) int -> x4
; V05 loc1 [V05,T08] ( 2, 8 ) byref -> x5
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.56) int -> x6 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.56) int -> x5 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> x5 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> x5 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M35228_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M35228_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x10]!
mov fp, sp
;; size=8 bbWeight=1 PerfScore 1.50
@@ -31,7 +31,7 @@ G_M35228_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
; byrRegs +[x0]
mov w4, wzr
cmp w3, #0
- ble G_M35228_IG09
+ ble G_M35228_IG06
;; size=12 bbWeight=1 PerfScore 2.00
G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
sbfiz x5, x4, #2, #32
@@ -45,44 +45,32 @@ G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre
;; size=24 bbWeight=4 PerfScore 26.00
G_M35228_IG04: ; bbWeight=0.28, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w1, w6
- bgt G_M35228_IG06
+ bgt G_M35228_IG08
;; size=8 bbWeight=0.28 PerfScore 0.42
G_M35228_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
cmp w2, w5
- bge G_M35228_IG11
- ;; size=8 bbWeight=4 PerfScore 6.00
-G_M35228_IG06: ; bbWeight=1.72, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[x0]
- mov w0, w4
- ;; size=4 bbWeight=1.72 PerfScore 0.86
-G_M35228_IG07: ; bbWeight=1.72, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=1.72 PerfScore 3.44
-G_M35228_IG08: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
- ; byrRegs +[x0]
+ blt G_M35228_IG08
add w4, w4, #1
cmp w4, w3
blt G_M35228_IG03
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M35228_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=20 bbWeight=4 PerfScore 14.00
+G_M35228_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x0]
movn w0, #0
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M35228_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M35228_IG07: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M35228_IG11: ; bbWeight=0.28, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, gcvars, byref, isz
- ; byrRegs +[x0]
- cmp w2, w5
- ble G_M35228_IG08
- ;; size=8 bbWeight=0.28 PerfScore 0.42
-G_M35228_IG12: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref
- b G_M35228_IG08
- ;; size=4 bbWeight=0.06 PerfScore 0.06
+G_M35228_IG08: ; bbWeight=0.72, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, w4
+ ;; size=4 bbWeight=0.72 PerfScore 0.36
+G_M35228_IG09: ; bbWeight=0.72, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.72 PerfScore 1.44
-; Total bytes of code 108, prolog size 8, PerfScore 49.95, instruction count 27, allocated bytes for code 108 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 96, prolog size 8, PerfScore 46.97, instruction count 24, allocated bytes for code 96 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
@@ -93,7 +81,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 27 (0x0001b) Actual length = 108 (0x00006c)
+ Function Length : 24 (0x00018) Actual length = 96 (0x000060)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-24 (-3.31%) : 206926.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
@@ -8,32 +8,33 @@
; 0 inlinees with PGO data; 3 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 26,731 ) ref -> x20 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
-; V01 arg1 [V01,T00] ( 26,754 ) ref -> x19 class-hnd single-def <System.Xml.XPath.XPathNavigator>
+; V00 this [V00,T00] ( 26,245.50) ref -> x19 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
+; V01 arg1 [V01,T01] ( 20,214 ) ref -> x20 class-hnd single-def <System.Xml.XPath.XPathNavigator>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T02] ( 6,559 ) int -> x21
+; V03 loc1 [V03,T04] ( 6,109.50) int -> x21
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref
-; V09 tmp5 [V09,T15] ( 3, 8 ) int -> x2
+; V09 tmp5 [V09,T13] ( 3, 8 ) int -> x2
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp7 [V11,T11] ( 2, 32 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
-; V12 tmp8 [V12,T12] ( 2, 32 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
-; V13 tmp9 [V13,T13] ( 2, 32 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
-; V14 tmp10 [V14,T06] ( 4, 64 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
+; V11 tmp7 [V11,T14] ( 2, 8 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
+; V12 tmp8 [V12,T15] ( 2, 8 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
+; V13 tmp9 [V13,T16] ( 2, 8 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
+; V14 tmp10 [V14,T11] ( 4, 16 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp12 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
+; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
; V18 tmp14 [V18,T08] ( 2, 64 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
; V19 tmp15 [V19,T09] ( 2, 64 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
; V20 tmp16 [V20,T03] ( 4,128 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref
-; V22 tmp18 [V22,T14] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V23 tmp19 [V23,T10] ( 3, 48 ) ref -> x0 "argument with side effect"
+; V22 tmp18 [V22,T10] ( 3, 24 ) ref -> x0 "argument with side effect"
+; V23 tmp19 [V23,T12] ( 3, 12 ) ref -> x0 "argument with side effect"
; V24 tmp20 [V24,T05] ( 3, 96 ) ref -> x0 "argument with side effect"
-; V25 cse0 [V25,T04] ( 9, 96 ) long -> x22 multi-def "CSE - aggressive"
+; V25 cse0 [V25,T06] ( 9, 78 ) long -> x23 multi-def "CSE - aggressive"
+; V26 cse1 [V26,T02] ( 10,146 ) long -> x22 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -43,21 +44,21 @@ G_M8478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
mov fp, sp
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
+ mov x20, x1
+ ; gcrRegs +[x20]
;; size=28 bbWeight=1 PerfScore 5.50
G_M8478_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ldr w21, [x20, #0x58]
+ ldr w21, [x19, #0x58]
;; size=4 bbWeight=1 PerfScore 3.00
G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x20, #0x58]
+ ldr w2, [x19, #0x58]
cmp w2, w21
cset x2, eq
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
@@ -68,26 +69,25 @@ G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
cbz w0, G_M8478_IG16
;; size=44 bbWeight=8 PerfScore 92.00
G_M8478_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x22, [x1, #0x60]
- ldr x1, [x22, #0x08]
+ ldr x22, [x20]
+ ldr x23, [x22, #0x60]
+ ldr x1, [x23, #0x08]
blr x1
; gcrRegs -[x0]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x68]
+ ldr x1, [x22, #0x68]
ldr x1, [x1, #0x38]
blr x1
; gcrRegs -[x0]
cbz w0, G_M8478_IG07
- ;; size=44 bbWeight=4 PerfScore 88.00
+ ;; size=40 bbWeight=4 PerfScore 76.00
G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
mov w2, wzr
movz x3, #0xD1FFAB1E // code for <unknown method>
@@ -96,26 +96,24 @@ G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x70]
+ ldr x1, [x22, #0x70]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG05
- ;; size=56 bbWeight=16 PerfScore 296.00
+ ;; size=52 bbWeight=16 PerfScore 248.00
G_M8478_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1, #0x08]
blr x1
; gcrRegs -[x0]
- ;; size=20 bbWeight=2 PerfScore 21.00
+ ;; size=16 bbWeight=2 PerfScore 15.00
G_M8478_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
beq G_M8478_IG09
@@ -128,9 +126,9 @@ G_M8478_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
mov w2, #1
;; size=4 bbWeight=2 PerfScore 1.00
G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNamespaces(System.Xml.XPath.XPathNavigator,int):this
movk x3, #0xD1FFAB1E LSL #16
@@ -138,11 +136,11 @@ G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr w0, [x20, #0x60]
+ ldr w0, [x19, #0x60]
cbz w0, G_M8478_IG12
;; size=36 bbWeight=4 PerfScore 42.00
G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteCachedNamespaces():this
movk x1, #0xD1FFAB1E LSL #16
@@ -152,7 +150,7 @@ G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
; gcrRegs -[x0]
;; size=24 bbWeight=2 PerfScore 12.00
G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x20, #0x10]
+ ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x98]
@@ -160,24 +158,23 @@ G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
mov w0, #2
- str w0, [x20, #0x5C]
- mov x0, x19
+ str w0, [x19, #0x5C]
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG03
- ;; size=52 bbWeight=4 PerfScore 104.00
-G_M8478_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ;; size=48 bbWeight=4 PerfScore 92.00
+G_M8478_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
bne G_M8478_IG15
- ;; size=16 bbWeight=2 PerfScore 10.00
-G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M8478_IG14: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteEndElement():this
movk x1, #0xD1FFAB1E LSL #16
@@ -186,26 +183,26 @@ G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
b G_M8478_IG16
- ;; size=28 bbWeight=8 PerfScore 56.00
-G_M8478_IG15: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ ;; size=28 bbWeight=2 PerfScore 14.00
+G_M8478_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x22, #0x28]
+ ldr x1, [x23, #0x28]
blr x1
- mov x23, x0
- ; gcrRegs +[x23]
- mov x0, x19
- ldr x1, [x22, #0x10]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ mov x0, x20
+ ldr x1, [x23, #0x10]
blr x1
mov x24, x0
; gcrRegs +[x24]
- mov x0, x19
- ldr x1, [x22, #0x20]
+ mov x0, x20
+ ldr x1, [x23, #0x20]
blr x1
mov x3, x0
; gcrRegs +[x3]
- ldr x0, [x20, #0x10]
- mov x1, x23
+ ldr x0, [x19, #0x10]
+ mov x1, x22
...
+24 (+4.69%) : 235227.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
@@ -8,9 +8,9 @@
; 0 inlinees with PGO data; 6 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T03] ( 6, 8 ) byref -> x19 this single-def
+; V00 this [V00,T03] ( 6, 8.98) byref -> x19 this single-def
; V01 loc0 [V01,T04] ( 6, 8 ) int -> x21 single-def
-; V02 loc1 [V02,T08] ( 6, 3.58) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
+; V02 loc1 [V02,T09] ( 6, 3.08) ref -> x20 class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
;* V03 loc2 [V03 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Reflection.Metadata.SignatureHeader>
; V04 loc3 [V04,T00] ( 10, 17.04) int -> x22
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -22,7 +22,7 @@
; V11 tmp6 [V11,T07] ( 4, 4 ) long -> x0 single-def "Inline stloc first use temp"
;* V12 tmp7 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V13 tmp8 [V13,T13] ( 2, 1 ) ubyte -> x1 "Inline return value spill temp"
-; V14 tmp9 [V14,T09] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
+; V14 tmp9 [V14,T08] ( 4, 3.50) int -> x1 single-def "Inline stloc first use temp"
; V15 tmp10 [V15,T02] ( 6, 12 ) byref -> x20 single-def "Inlining Arg"
;* V16 tmp11 [V16 ] ( 0, 0 ) int -> zero-ref ld-addr-op single-def "Inline ldloca(s) first use temp"
;* V17 tmp12 [V17 ] ( 0, 0 ) byref -> zero-ref "impAppendStmt"
@@ -52,7 +52,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
; byrRegs +[x1]
ldp x2, x0, [x1, #0x10]
cmp x0, x2
- beq G_M22286_IG12
+ beq G_M22286_IG15
add x2, x0, #1
str x2, [x1, #0x18]
ldrb w1, [x0]
@@ -60,12 +60,12 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
and w1, w1, #15
cmp w1, #5
ccmp w1, #9, z, gt
- beq G_M22286_IG13
+ beq G_M22286_IG16
;; size=48 bbWeight=1 PerfScore 13.50
G_M22286_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
uxtb w1, w1
cmp w1, #10
- bne G_M22286_IG13
+ bne G_M22286_IG16
;; size=12 bbWeight=0.50 PerfScore 1.00
G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20}, byref, isz
ldr x1, [x20, #0x18]
@@ -87,9 +87,9 @@ G_M22286_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=180000 {x19 x20
str x1, [x20, #0x18]
movn w1, #0xD1FFAB1E LSL #16
cmp w21, w1
- beq G_M22286_IG14
+ beq G_M22286_IG17
cmp w21, #0
- ble G_M22286_IG15
+ ble G_M22286_IG18
sxtw x1, w21
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -130,10 +130,10 @@ G_M22286_IG06: ; bbWeight=3.96, gcrefRegs=100000 {x20}, byrefRegs=880000
cmp w22, w21
blt G_M22286_IG06
;; size=48 bbWeight=3.96 PerfScore 41.58
-G_M22286_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG07: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
; byrRegs -[x23]
b G_M22286_IG09
- ;; size=4 bbWeight=1 PerfScore 1.00
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
mov x0, x19
; byrRegs +[x0]
@@ -146,7 +146,7 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
; byrRegs -[x0]
ldr w14, [x20, #0x08]
cmp w22, w14
- bhs G_M22286_IG11
+ bhs G_M22286_IG14
add x23, x20, #16
; byrRegs +[x23]
add x14, x23, x22, LSL #3
@@ -160,25 +160,39 @@ G_M22286_IG08: ; bbWeight=0.04, gcrefRegs=100000 {x20}, byrefRegs=80000 {
cmp w22, w21
blt G_M22286_IG08
;; size=64 bbWeight=0.04 PerfScore 0.62
-G_M22286_IG09: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
+G_M22286_IG09: ; bbWeight=1.98, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref, isz
ldr x0, [x19, #0x18]
; gcrRegs +[x0]
- cmp x0, #0
- csel x0, xzr, x20, ne
- ;; size=12 bbWeight=1 PerfScore 4.00
-G_M22286_IG10: ; bbWeight=1, epilog, nogc, extend
+ cbnz x0, G_M22286_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 7.92
+G_M22286_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x0]
+ ; byrRegs -[x19]
+ mov x0, x20
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG11: ; 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
ret lr
- ;; size=20 bbWeight=1 PerfScore 6.00
-G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0 x20]
- ; byrRegs -[x19]
+ mov x0, xzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22286_IG13: ; 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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M22286_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
;; size=4 bbWeight=0 PerfScore 0.00
-G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:OutOfBounds()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -186,7 +200,7 @@ G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -205,7 +219,7 @@ G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_THROW
; gcrRegs -[x0 x19]
;; size=48 bbWeight=0 PerfScore 0.00
-G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.Reflection.Throw:InvalidCompressedInteger()
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -213,7 +227,7 @@ G_M22286_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x0
brk_windows #0
;; size=24 bbWeight=0 PerfScore 0.00
-G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -234,22 +248,25 @@ G_M22286_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=52 bbWeight=0 PerfScore 0.00
-; Total bytes of code 512, prolog size 24, PerfScore 106.45, instruction count 128, allocated bytes for code 512 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
+; Total bytes of code 536, prolog size 24, PerfScore 111.85, instruction count 134, allocated bytes for code 536 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 2
- Epilog Count : 1
+ Epilog Count : 2
E bit : 0
X bit : 0
Vers : 0
- Function Length : 128 (0x00080) Actual length = 512 (0x000200)
+ Function Length : 134 (0x00086) Actual length = 536 (0x000218)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 1
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+12 (+6.25%) : 130165.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -10,14 +10,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -55,70 +55,79 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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 192, prolog size 8, PerfScore 56.64, instruction count 48, allocated bytes for code 192 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 204, prolog size 8, PerfScore 61.84, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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)
@@ -126,6 +135,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
+12 (+6.25%) : 163692.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -10,14 +10,14 @@
;
; V00 arg0 [V00,T03] ( 5, 3.54) ref -> x0 class-hnd single-def <System.String>
; V01 arg1 [V01,T04] ( 5, 3.54) ref -> x1 class-hnd single-def <System.String>
-; V02 loc0 [V02,T07] ( 4, 3.50) int -> x3 single-def
-; V03 loc1 [V03,T08] ( 4, 3.50) int -> x5 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> x3 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> x5 single-def
; V04 loc2 [V04,T02] ( 7, 7.50) int -> x6 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> x7
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T11] ( 2, 2 ) int -> x6 "Inline return value spill temp"
-; V08 cse0 [V08,T05] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
-; V09 cse1 [V09,T06] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V08 cse0 [V08,T07] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
+; V09 cse1 [V09,T08] ( 4, 4.54) byref -> registers hoist multi-def "CSE - aggressive"
; V10 cse2 [V10,T09] ( 4, 2.54) int -> x2 "CSE - aggressive"
; V11 cse3 [V11,T10] ( 4, 2.54) int -> x4 "CSE - aggressive"
; V12 cse4 [V12,T01] ( 3, 11.88) long -> x2 "CSE - aggressive"
@@ -55,70 +55,79 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0110 {x4 x8}
ldrh w0, [x4, x2, LSL #2]
ldrh w1, [x8, x2, LSL #2]
cmp w0, w1
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG04
;; size=32 bbWeight=3.96 PerfScore 39.60
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x4 x8]
b G_M50530_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0003 {x0 x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0-x1]
cmp w7, w2
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x8, x0, #12
; byrRegs +[x8]
ldrh w8, [x8, w7, UXTW #2]
; byrRegs -[x8]
cmp w7, w4
- bhs G_M50530_IG11
+ bhs G_M50530_IG14
add x9, x1, #12
; byrRegs +[x9]
ldrh w9, [x9, w7, UXTW #2]
; byrRegs -[x9]
cmp w8, w9
- bne G_M50530_IG09
+ bne G_M50530_IG10
add w7, w7, #1
cmp w7, w6
blt G_M50530_IG06
;; size=52 bbWeight=0.04 PerfScore 0.54
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0-x1]
- movn w0, #0
cmp w3, w5
- csinc w0, w0, w6, eq
- ;; size=12 bbWeight=0.50 PerfScore 0.75
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ beq G_M50530_IG12
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ add w0, w6, #1
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, w7
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
ret lr
;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ movn w0, #0
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG13: ; bbWeight=0.50, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.50 PerfScore 1.00
+G_M50530_IG14: ; 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 192, prolog size 8, PerfScore 56.64, instruction count 48, allocated bytes for code 192 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 204, prolog size 8, PerfScore 61.84, instruction count 51, allocated bytes for code 204 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
>> Start offset : 0x000000 (not in unwind data)
>> End offset : 0xd1ffab1e (not in unwind data)
Code Words : 1
- Epilog Count : 2
+ Epilog Count : 3
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ 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)
@@ -126,6 +135,9 @@ Unwind Info:
---- Scope 1
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
Epilog Start Index : 1 (0x01)
+ ---- Scope 2
+ Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+ Epilog Start Index : 1 (0x01)
---- Unwind codes ----
E1 set_fp; mov fp, sp
---- Epilog start at index 1 ----
libraries_tests.run.windows.arm64.Release.mch
-4 (-2.08%) : 4712.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -24,88 +24,86 @@ G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=8 bbWeight=1 PerfScore 1.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M24157_IG06
+ cbz x1, G_M24157_IG15
ldr x2, [x1]
ldrh w3, [x2, #0x0E]
- cbz x3, G_M24157_IG13
+ cbz x3, G_M24157_IG11
ldr x4, [x2, #0x40]
cmp x3, #4
- blt G_M24157_IG11
+ blt G_M24157_IG09
;; size=28 bbWeight=1 PerfScore 12.50
G_M24157_IG03: ; bbWeight=1.08, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x5, [x4]
cmp x5, x0
- beq G_M24157_IG06
+ beq G_M24157_IG15
;; size=12 bbWeight=1.08 PerfScore 4.87
G_M24157_IG04: ; bbWeight=1.03, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x5, [x4, #0x08]
cmp x5, x0
- beq G_M24157_IG06
+ beq G_M24157_IG15
;; size=12 bbWeight=1.03 PerfScore 4.63
G_M24157_IG05: ; bbWeight=0.95, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x5, [x4, #0x10]
cmp x5, x0
- bne G_M24157_IG08
+ beq G_M24157_IG15
;; size=12 bbWeight=0.95 PerfScore 4.27
-G_M24157_IG06: ; bbWeight=0.85, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- mov x0, x1
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=0.85 PerfScore 0.43
-G_M24157_IG07: ; bbWeight=0.85, epilog, nogc, extend
- ldp fp, lr, [sp], #0x10
- ret lr
- ;; size=8 bbWeight=0.85 PerfScore 1.71
-G_M24157_IG08: ; bbWeight=0.39, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+G_M24157_IG06: ; bbWeight=0.39, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x5, [x4, #0x18]
cmp x5, x0
- beq G_M24157_IG06
+ beq G_M24157_IG15
;; size=12 bbWeight=0.39 PerfScore 1.74
-G_M24157_IG09: ; bbWeight=0.37, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG07: ; bbWeight=0.37, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
add x4, x4, #32
sub x3, x3, #4
cmp x3, #4
bge G_M24157_IG03
;; size=16 bbWeight=0.37 PerfScore 0.94
-G_M24157_IG10: ; bbWeight=0.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbz x3, G_M24157_IG13
+G_M24157_IG08: ; bbWeight=0.29, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ cbz x3, G_M24157_IG11
;; size=4 bbWeight=0.29 PerfScore 0.29
-G_M24157_IG11: ; bbWeight=0.37, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG09: ; bbWeight=0.37, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x5, [x4]
cmp x5, x0
- beq G_M24157_IG06
+ beq G_M24157_IG15
;; size=12 bbWeight=0.37 PerfScore 1.69
-G_M24157_IG12: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG10: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
add x4, x4, #8
sub x3, x3, #1
cmp x3, #0
- bgt G_M24157_IG11
+ bgt G_M24157_IG09
;; size=16 bbWeight=0.36 PerfScore 0.90
-G_M24157_IG13: ; bbWeight=0.28, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG11: ; bbWeight=0.28, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x2]
mov w3, #0xD1FFAB1E
tst w2, w3
- beq G_M24157_IG16
+ beq G_M24157_IG14
;; size=16 bbWeight=0.28 PerfScore 1.38
-G_M24157_IG14: ; bbWeight=0.15, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG12: ; bbWeight=0.15, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
movz x2, #0xD1FFAB1E // code for <unknown method>
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
;; size=16 bbWeight=0.15 PerfScore 0.66
-G_M24157_IG15: ; bbWeight=0.15, epilog, nogc, extend
+G_M24157_IG13: ; bbWeight=0.15, epilog, nogc, extend
ldp fp, lr, [sp], #0x10
br x2
; gcr arg pop 0
;; size=8 bbWeight=0.15 PerfScore 0.29
-G_M24157_IG16: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M24157_IG14: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1]
mov x1, xzr
; gcrRegs +[x1]
- b G_M24157_IG06
- ;; size=8 bbWeight=0.13 PerfScore 0.20
+ ;; size=4 bbWeight=0.13 PerfScore 0.07
+G_M24157_IG15: ; bbWeight=0.85, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.85 PerfScore 0.43
+G_M24157_IG16: ; bbWeight=0.85, epilog, nogc, extend
+ ldp fp, lr, [sp], #0x10
+ ret lr
+ ;; size=8 bbWeight=0.85 PerfScore 1.71
-; Total bytes of code 192, prolog size 8, PerfScore 37.99, instruction count 48, allocated bytes for code 192 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 188, prolog size 8, PerfScore 37.86, instruction count 47, allocated bytes for code 188 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -116,7 +114,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 48 (0x00030) Actual length = 192 (0x0000c0)
+ Function Length : 47 (0x0002f) Actual length = 188 (0x0000bc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.56%) : 442.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Instrumented Tier1)
@@ -43,13 +43,34 @@ G_M29205_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x22]
;; size=48 bbWeight=1 PerfScore 8.50
G_M29205_IG02: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M29205_IG08
+ cbz x20, G_M29205_IG07
mov w25, wzr
ldr w0, [x20, #0x08]
cmp w0, #0
- bgt G_M29205_IG05
+ ble G_M29205_IG05
;; size=20 bbWeight=1 PerfScore 6.00
-G_M29205_IG03: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+G_M29205_IG03: ; bbWeight=0.18, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
+ movz x26, #0xD1FFAB1E
+ movk x26, #0xD1FFAB1E LSL #16
+ movk x26, #0xD1FFAB1E LSL #32
+ ;; size=12 bbWeight=0.18 PerfScore 0.27
+G_M29205_IG04: ; bbWeight=0.22, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
+ mov x0, x26
+ bl CORINFO_HELP_COUNTPROFILE32
+ ; gcr arg pop 0
+ add x0, x20, #16
+ ; byrRegs +[x0]
+ ldr x0, [x0, w25, UXTW #3]
+ ; gcrRegs +[x0]
+ ; byrRegs -[x0]
+ cbz x0, G_M29205_IG07
+ add w25, w25, #1
+ ldr w0, [x20, #0x08]
+ ; gcrRegs -[x0]
+ cmp w0, w25
+ bgt G_M29205_IG04
+ ;; size=36 bbWeight=0.22 PerfScore 2.47
+G_M29205_IG05: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
movz x26, #0xD1FFAB1E
movk x26, #0xD1FFAB1E LSL #16
movk x26, #0xD1FFAB1E LSL #32
@@ -76,7 +97,7 @@ G_M29205_IG03: ; bbWeight=1, gcrefRegs=780000 {x19 x20 x21 x22}, byrefReg
ldr x6, [x6, #0x80]
ldr x6, [x6, #0x38]
;; size=68 bbWeight=1 PerfScore 17.00
-G_M29205_IG04: ; bbWeight=1, epilog, nogc, extend
+G_M29205_IG06: ; bbWeight=1, epilog, nogc, extend
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
ldp x21, x22, [sp, #0x20]
@@ -85,33 +106,8 @@ G_M29205_IG04: ; bbWeight=1, epilog, nogc, extend
br x6
; gcr arg pop 0
;; size=24 bbWeight=1 PerfScore 6.00
-G_M29205_IG05: ; bbWeight=0.18, gcVars=0000000000000000 {}, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x2 x4-x5]
- movz x26, #0xD1FFAB1E
- movk x26, #0xD1FFAB1E LSL #16
- movk x26, #0xD1FFAB1E LSL #32
- ;; size=12 bbWeight=0.18 PerfScore 0.27
-G_M29205_IG06: ; bbWeight=0.22, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref, isz
- mov x0, x26
- bl CORINFO_HELP_COUNTPROFILE32
- ; gcr arg pop 0
- add x0, x20, #16
- ; byrRegs +[x0]
- ldr x0, [x0, w25, UXTW #3]
- ; gcrRegs +[x0]
- ; byrRegs -[x0]
- cbz x0, G_M29205_IG08
- add w25, w25, #1
- ldr w0, [x20, #0x08]
- ; gcrRegs -[x0]
- cmp w0, w25
- bgt G_M29205_IG06
- ;; size=36 bbWeight=0.22 PerfScore 2.47
-G_M29205_IG07: ; bbWeight=0.18, gcrefRegs=780000 {x19 x20 x21 x22}, byrefRegs=0000 {}, byref
- b G_M29205_IG03
- ;; size=4 bbWeight=0.18 PerfScore 0.18
-G_M29205_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19-x22]
+G_M29205_IG07: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x2 x4-x5 x19-x22]
mov w0, #0xD1FFAB1E
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -129,7 +125,7 @@ G_M29205_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
brk_windows #0
;; size=44 bbWeight=0 PerfScore 0.00
-; Total bytes of code 256, prolog size 48, PerfScore 40.42, instruction count 64, allocated bytes for code 256 (MethodHash=a96a8dea) for method System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Instrumented Tier1)
+; Total bytes of code 252, prolog size 48, PerfScore 40.24, instruction count 63, allocated bytes for code 252 (MethodHash=a96a8dea) for method System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Instrumented Tier1)
; ============================================================
Unwind Info:
@@ -140,7 +136,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 64 (0x00040) Actual length = 256 (0x000100)
+ Function Length : 63 (0x0003f) Actual length = 252 (0x0000fc)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-4 (-1.54%) : 8802.dasm - System.String:GetNonRandomizedHashCode():int:this (Tier1)
@@ -80,23 +80,9 @@ G_M7237_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
movk w1, #0xD1FFAB1E LSL #16
sxtw w2, w1
cmp w20, #2
- bgt G_M7237_IG08
+ ble G_M7237_IG06
;; size=20 bbWeight=1 PerfScore 3.00
-G_M7237_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w20, #0
- bgt G_M7237_IG10
- ;; size=8 bbWeight=1 PerfScore 1.50
-G_M7237_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movz w0, #0xD1FFAB1E
- movk w0, #0xD1FFAB1E LSL #16
- madd w0, w1, w0, w2
- ;; size=12 bbWeight=1 PerfScore 3.00
-G_M7237_IG07: ; 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_M7237_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M7237_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
sub w20, w20, #4
ror w0, w2, #27
add w2, w0, w2
@@ -107,20 +93,31 @@ G_M7237_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000
eor w1, w1, w3
add x19, x19, #8
cmp w20, #2
- bgt G_M7237_IG08
+ bgt G_M7237_IG05
;; size=44 bbWeight=0.50 PerfScore 4.75
-G_M7237_IG09: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- b G_M7237_IG05
- ;; size=4 bbWeight=0.33 PerfScore 0.33
-G_M7237_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M7237_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp w20, #0
+ bgt G_M7237_IG09
+ ;; size=8 bbWeight=1 PerfScore 1.50
+G_M7237_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ movz w0, #0xD1FFAB1E
+ movk w0, #0xD1FFAB1E LSL #16
+ madd w0, w1, w0, w2
+ ;; size=12 bbWeight=1 PerfScore 3.00
+G_M7237_IG08: ; 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_M7237_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ror w0, w1, #27
add w1, w0, w1
ldr w0, [x19]
eor w1, w1, w0
- b G_M7237_IG06
+ b G_M7237_IG07
;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 260, prolog size 16, PerfScore 49.08, instruction count 65, allocated bytes for code 260 (MethodHash=b82be3ba) for method System.String:GetNonRandomizedHashCode():int:this (Tier1)
+; Total bytes of code 256, prolog size 16, PerfScore 48.75, instruction count 64, allocated bytes for code 256 (MethodHash=b82be3ba) for method System.String:GetNonRandomizedHashCode():int:this (Tier1)
; ============================================================
Unwind Info:
@@ -131,7 +128,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 65 (0x00041) Actual length = 260 (0x000104)
+ 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)
+12 (+1.42%) : 1780.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
@@ -11,7 +11,7 @@
;
; V00 this [V00,T10] ( 17, 12.28) ref -> x19 this class-hnd single-def <System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]>
; V01 loc0 [V01,T22] ( 3, 2.74) int -> x0
-; V02 loc1 [V02,T21] ( 4, 3.14) ref -> x20 class-hnd <System.__Canon>
+; V02 loc1 [V02,T21] ( 4, 3.14) ref -> x21 class-hnd <System.__Canon>
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
; V05 tmp2 [V05,T24] ( 4, 1.57) long -> x11 "VirtualCall with runtime lookup"
@@ -29,22 +29,22 @@
; V17 tmp14 [V17,T05] ( 3, 15.78) ref -> x14 class-hnd "Inlining Arg" <System.Collections.Generic.List`1[Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+TargetLibrary]>
; V18 tmp15 [V18,T07] ( 3, 15.78) struct (80) [fp+0x58] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.List`1+Enumerator[Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+TargetLibrary]>
;* V19 tmp16 [V19,T17] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V20 tmp17 [V20,T01] ( 9, 63.11) byref -> x1 "Inlining Arg"
-; V21 tmp18 [V21,T04] ( 4, 15.78) ref -> x13 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+TargetLibrary]>
+; V20 tmp17 [V20,T01] ( 9, 63.11) byref -> x21 "Inlining Arg"
+; V21 tmp18 [V21,T04] ( 4, 15.78) ref -> x1 class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+TargetLibrary]>
;* V22 tmp19 [V22 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
; V23 tmp20 [V23,T27] ( 5, 0.91) ref -> x0 single-def "guarded devirt arg temp"
;* V24 tmp21 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.Linq.Enumerable+WhereSelectArrayIterator`2[Internal.Microsoft.Extensions.DependencyModel.RuntimeLibrary,System.Tuple`2[Internal.Microsoft.Extensions.DependencyModel.RuntimeLibrary,Internal.Microsoft.Extensions.DependencyModel.RuntimeAssetGroup]]>
;* V25 tmp22 [V25 ] ( 0, 0 ) ref -> zero-ref "V18.[000..008)"
;* V26 tmp23 [V26 ] ( 0, 0 ) int -> zero-ref "V18.[008..012)"
-; V27 tmp24 [V27,T18] ( 2, 5.26) int -> x1 "V18.[012..016)"
-; V28 tmp25 [V28,T03] ( 4, 21.04) byref -> x0 "Spilling address for field-by-field copy"
-; V29 tmp26 [V29,T06] ( 3, 15.78) ref -> x13 "arr expr"
-; V30 tmp27 [V30,T08] ( 3, 15.78) int -> x14 "index expr"
+; V27 tmp24 [V27,T18] ( 2, 5.26) int -> x0 "V18.[012..016)"
+; V28 tmp25 [V28,T03] ( 4, 21.04) byref -> x11 "Spilling address for field-by-field copy"
+; V29 tmp26 [V29,T06] ( 3, 15.78) ref -> x14 "arr expr"
+; V30 tmp27 [V30,T08] ( 3, 15.78) int -> x13 "index expr"
; V31 tmp28 [V31 ] ( 2, 21.04) struct (64) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <Internal.Microsoft.Extensions.DependencyModel.DependencyContextJsonReader+TargetLibrary>
; V32 tmp29 [V32,T02] ( 3, 31.55) ref -> x2 "argument with side effect"
-; V33 cse0 [V33,T13] ( 3, 7.89) int -> x14 "CSE - aggressive"
-; V34 cse1 [V34,T11] ( 2, 10.52) int -> x14 "CSE - aggressive"
-; V35 cse2 [V35,T09] ( 3, 13.15) ref -> x0 "CSE - aggressive"
+; V33 cse0 [V33,T13] ( 3, 7.89) int -> x13 "CSE - aggressive"
+; V34 cse1 [V34,T11] ( 2, 10.52) int -> x0 "CSE - aggressive"
+; V35 cse2 [V35,T09] ( 3, 13.15) ref -> x22 "CSE - aggressive"
; V36 rat0 [V36,T26] ( 3, 1.15) long -> x0 "Spilling to split statement for tree"
; V37 rat1 [V37,T25] ( 3, 1.46) long -> x11 "fgMakeTemp is creating a new local variable"
; V38 rat2 [V38,T19] ( 3, 4.21) long -> x0 "Spilling to split statement for tree"
@@ -53,8 +53,9 @@
; Lcl frame size = 160
G_M10116_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0xC0]!
+ stp fp, lr, [sp, #-0xD0]!
stp x19, x20, [sp, #0xB0]
+ stp x21, x22, [sp, #0xC0]
mov fp, sp
add x9, fp, #24
movi v16.16b, #0
@@ -66,15 +67,15 @@ G_M10116_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x0, [fp, #0xA8]
mov x19, x0
; gcrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.00
+ ;; size=52 bbWeight=1 PerfScore 11.00
G_M10116_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w0, [x19, #0x14]
cmp w0, #1
- beq G_M10116_IG16
+ beq G_M10116_IG10
;; size=12 bbWeight=1 PerfScore 4.50
G_M10116_IG03: ; bbWeight=0.74, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w0, #2
- bne G_M10116_IG09
+ bne G_M10116_IG33
;; size=8 bbWeight=0.74 PerfScore 1.11
G_M10116_IG04: ; bbWeight=1.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr x20, [x19, #0x28]
@@ -84,50 +85,77 @@ G_M10116_IG04: ; bbWeight=1.22, gcrefRegs=80000 {x19}, byrefRegs=0000 {},
movk x13, #0xD1FFAB1E LSL #16
movk x13, #0xD1FFAB1E LSL #32
cmp x14, x13
- bne G_M10116_IG27
+ bne G_M10116_IG26
;; size=28 bbWeight=1.22 PerfScore 10.96
G_M10116_IG05: ; bbWeight=0.66, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr w14, [x20, #0x14]
cmp w14, #1
- beq G_M10116_IG11
+ beq G_M10116_IG12
;; size=12 bbWeight=0.66 PerfScore 2.96
G_M10116_IG06: ; bbWeight=2.63, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
cmp w14, #2
- beq G_M10116_IG12
+ beq G_M10116_IG13
;; size=8 bbWeight=2.63 PerfScore 3.94
G_M10116_IG07: ; bbWeight=2.63, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20]
ldr x14, [x19, #0x28]
; gcrRegs +[x14]
- cbnz x14, G_M10116_IG14
+ cbz x14, G_M10116_IG32
;; size=8 bbWeight=2.63 PerfScore 10.52
-G_M10116_IG08: ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M10116_IG08: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x14]
- str xzr, [x19, #0x08]
- movn w0, #0
- str w0, [x19, #0x14]
- ;; size=12 bbWeight=0.26 PerfScore 0.65
-G_M10116_IG09: ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
- mov w0, wzr
- ;; size=4 bbWeight=0.26 PerfScore 0.13
-G_M10116_IG10: ; bbWeight=0.26, epilog, nogc, extend
- ldp x19, x20, [sp, #0xB0]
- ldp fp, lr, [sp], #0xC0
- ret lr
- ;; size=12 bbWeight=0.26 PerfScore 0.78
-G_M10116_IG11: ; bbWeight=2.63, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref
+ ldr x0, [x19, #0x28]
+ ; gcrRegs +[x0]
+ ldr x11, [x0]
+ movz x1, #0xD1FFAB1E
+ movk x1, #0xD1FFAB1E LSL #16
+ movk x1, #0xD1FFAB1E LSL #32
+ cmp x11, x1
+ bne G_M10116_IG30
+ ;; size=28 bbWeight=0.13 PerfScore 1.17
+G_M10116_IG09: ; bbWeight=0.07, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
+ str xzr, [x0, #0x08]
+ movn w11, #0
+ str w11, [x0, #0x14]
+ b G_M10116_IG31
+ ;; size=16 bbWeight=0.07 PerfScore 0.23
+G_M10116_IG10: ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x0]
+ ldr x0, [x19]
+ ldr x1, [x0, #0x38]
+ ldr x1, [x1, #0x08]
+ ldr x11, [x1, #0x10]
+ cbz x11, G_M10116_IG15
+ ;; size=20 bbWeight=0.26 PerfScore 3.39
+G_M10116_IG11: ; bbWeight=0.26, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ldr x0, [x19, #0x18]
+ ; gcrRegs +[x0]
+ ldr x1, [x11]
+ blr x1
+ add x14, x19, #40
+ ; byrRegs +[x14]
+ mov x15, x0
+ ; gcrRegs +[x15]
+ bl CORINFO_HELP_ASSIGN_REF
+ ; gcrRegs -[x0 x15]
+ ; byrRegs -[x14]
+ mov w14, #2
+ str w14, [x19, #0x14]
+ b G_M10116_IG04
+ ;; size=36 bbWeight=0.26 PerfScore 3.00
+G_M10116_IG12: ; bbWeight=2.63, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
; gcrRegs +[x20]
ldr x14, [x20, #0x18]
; gcrRegs +[x14]
- ldr w1, [x14, #0x14]
+ ldr w0, [x14, #0x14]
stp xzr, xzr, [fp, #0x68]
stp xzr, xzr, [fp, #0x78]
stp xzr, xzr, [fp, #0x88]
stp xzr, xzr, [fp, #0x98]
str x14, [fp, #0x58] // [V18 tmp15]
- add x0, x20, #40
- ; byrRegs +[x0]
- mov x14, x0
+ add x11, x20, #40
+ ; byrRegs +[x11]
+ mov x14, x11
; gcrRegs -[x14]
; byrRegs +[x14]
add x13, fp, #88 // [V18 tmp15]
@@ -144,103 +172,42 @@ G_M10116_IG11: ; bbWeight=2.63, gcVars=0000000000000000 {}, gcrefRegs=180
bl CORINFO_HELP_ASSIGN_BYREF
ldr x12, [x13], #0x08
str x12, [x14], #0x08
- stp wzr, w1, [x0, #0x08]
- mov w13, #2
- ; byrRegs -[x13]
- str w13, [x20, #0x14]
+ stp wzr, w0, [x11, #0x08]
+ mov w0, #2
+ str w0, [x20, #0x14]
;; size=100 bbWeight=2.63 PerfScore 81.52
-G_M10116_IG12: ; bbWeight=5.26, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x0 x14]
- add x1, x20, #40
- ; byrRegs +[x1]
- ldr x0, [x1]
- ; gcrRegs +[x0]
- mov x13, x0
- ; gcrRegs +[x13]
- ldr w14, [x1, #0x0C]
- ldr w12, [x13, #0x14]
- cmp w14, w12
- bne G_M10116_IG35
+G_M10116_IG13: ; bbWeight=5.26, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; byrRegs -[x11 x13-x14]
+ add x21, x20, #40
+ ; byrRegs +[x21]
+ ldr x22, [x21]
+ ; gcrRegs +[x22]
+ mov x1, x22
+ ; gcrRegs +[x1]
+ ldr w0, [x21, #0x0C]
+ ldr w11, [x1, #0x14]
+ cmp w0, w11
+ bne G_M10116_IG36
;; size=28 bbWeight=5.26 PerfScore 60.48
-G_M10116_IG13: ; bbWeight=2.63, gcrefRegs=182001 {x0 x13 x19 x20}, byrefRegs=0002 {x1}, byref, isz
- ldr w14, [x1, #0x08]
- ldr w12, [x13, #0x10]
- cmp w14, w12
- bhs G_M10116_IG22
- ldr x13, [x13, #0x08]
- ldr w12, [x13, #0x08]
- cmp w14, w12
- bhs G_M10116_IG34
- ubfiz x14, x14, #6, #32
- add x14, x14, #16
- add x13, x13, x14
- ; gcrRegs -[x13]
- ; byrRegs +[x13]
- add x14, x1, #16
- ; byrRegs +[x14]
- bl CORINFO_HELP_ASSIGN_BYREF
- ; gcrRegs -[x0]
- bl CORINFO_HELP_ASSIGN_BYREF
- bl CORINFO_HELP_ASSIGN_BYREF
- bl CORINFO_HELP_ASSIGN_BYREF
- bl CORINFO_HELP_ASSIGN_BYREF
- bl CORINFO_HELP_ASSIGN_BYREF
- bl CORINFO_HELP_ASSIGN_BYREF
- ldr x12, [x13], #0x08
- str x12, [x14], #0x08
- ldr w0, [x1, #0x08]
- add w0, w0, #1
- str w0, [x1, #0x08]
- b G_M10116_IG18
- ;; size=100 bbWeight=2.63 PerfScore 89.41
-G_M10116_IG14: ; bbWeight=0.13, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x20]
- ; byrRegs -[x1 x13-x14]
- ldr x0, [x19, #0x28]
- ; gcrRegs +[x0]
- ldr x11, [x0]
+G_M10116_IG14: ; bbWeight=2.63, gcrefRegs=580002 {x1 x19 x20 x22}, byrefRegs=200000 {x21}, byref
+ b G_M10116_IG23
+ ;; size=4 bbWeight=2.63 PerfScore 2.63
+G_M10116_IG15: ; bbWeight=0.05, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x1 x20 x22]
...
+4 (+2.33%) : 1609.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 5.75) long -> x0 single-def
-; V01 arg1 [V01,T02] ( 7, 5.50) ref -> registers class-hnd <System.Object>
+; V00 arg0 [V00,T02] ( 8, 5.75) long -> x0 single-def
+; V01 arg1 [V01,T01] ( 7, 5.81) ref -> registers class-hnd <System.Object>
; V02 loc0 [V02,T00] ( 17, 8.25) long -> x19
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -25,32 +25,44 @@ G_M45526_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 2.50
G_M45526_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x1]
- cbz x1, G_M45526_IG07
+ cbz x1, G_M45526_IG04
;; size=4 bbWeight=1 PerfScore 1.00
G_M45526_IG03: ; bbWeight=0.75, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x1]
cmp x2, x0
- beq G_M45526_IG07
+ bne G_M45526_IG06
+ ;; size=12 bbWeight=0.75 PerfScore 3.38
+G_M45526_IG04: ; bbWeight=0.56, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ mov x0, x1
+ ; gcrRegs +[x0]
+ ;; size=4 bbWeight=0.56 PerfScore 0.28
+G_M45526_IG05: ; bbWeight=0.56, epilog, nogc, extend
+ ldr x19, [sp, #0x18]
+ ldp fp, lr, [sp], #0x20
+ ret lr
+ ;; size=12 bbWeight=0.56 PerfScore 2.25
+G_M45526_IG06: ; bbWeight=0.75, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0]
ldr x2, [x1]
ldr x19, [x2, #0x18]
- ;; size=20 bbWeight=0.75 PerfScore 7.88
-G_M45526_IG04: ; bbWeight=0.75, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.75 PerfScore 4.50
+G_M45526_IG07: ; bbWeight=0.75, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
cmp x19, x0
- beq G_M45526_IG07
- cbz x19, G_M45526_IG05
+ beq G_M45526_IG04
+ cbz x19, G_M45526_IG08
ldr x19, [x19, #0x18]
cmp x19, x0
- beq G_M45526_IG07
- cbz x19, G_M45526_IG05
+ beq G_M45526_IG04
+ cbz x19, G_M45526_IG08
ldr x19, [x19, #0x18]
cmp x19, x0
- beq G_M45526_IG07
- cbnz x19, G_M45526_IG09
+ beq G_M45526_IG04
+ cbnz x19, G_M45526_IG10
;; size=44 bbWeight=0.75 PerfScore 10.12
-G_M45526_IG05: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M45526_IG08: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x1]
ldr w0, [x0]
- tbz w0, #25, G_M45526_IG06
+ tbz w0, #25, G_M45526_IG09
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -64,33 +76,24 @@ G_M45526_IG05: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[x0]
; gcr arg pop 0
;; size=44 bbWeight=0.75 PerfScore 8.62
-G_M45526_IG06: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M45526_IG09: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x0, xzr
; gcrRegs +[x0]
mov x1, x0
; gcrRegs +[x1]
- ;; size=8 bbWeight=0.75 PerfScore 0.75
-G_M45526_IG07: ; bbWeight=0.25, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0]
- mov x0, x1
- ; gcrRegs +[x0]
- ;; size=4 bbWeight=0.25 PerfScore 0.12
-G_M45526_IG08: ; bbWeight=0.25, epilog, nogc, extend
- ldr x19, [sp, #0x18]
- ldp fp, lr, [sp], #0x20
- ret lr
- ;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M45526_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ b G_M45526_IG04
+ ;; size=12 bbWeight=0.75 PerfScore 1.50
+G_M45526_IG10: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr x19, [x19, #0x18]
cmp x19, x0
- beq G_M45526_IG07
- cbz x19, G_M45526_IG05
+ beq G_M45526_IG04
+ cbz x19, G_M45526_IG08
ldr x19, [x19, #0x18]
- b G_M45526_IG04
+ b G_M45526_IG07
;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 172, prolog size 12, PerfScore 32.00, instruction count 43, allocated bytes for code 172 (MethodHash=e8d84e29) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 176, prolog size 12, PerfScore 34.16, instruction count 44, allocated bytes for code 176 (MethodHash=e8d84e29) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -101,7 +104,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 43 (0x0002b) Actual length = 172 (0x0000ac)
+ Function Length : 44 (0x0002c) Actual length = 176 (0x0000b0)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+8 (+3.92%) : 5246.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
@@ -9,8 +9,8 @@
; 0 inlinees with PGO data; 2 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 8, 5.00) long -> x19 single-def
-; V01 arg1 [V01,T02] ( 5, 4 ) ref -> x20 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 8, 5.03) long -> x19 single-def
+; V01 arg1 [V01,T02] ( 5, 4.03) ref -> x20 class-hnd single-def <System.Object>
; V02 loc0 [V02,T00] ( 18, 8.51) long -> x21
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V04 tmp1 [V04 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
@@ -50,7 +50,7 @@ G_M64200_IG03: ; bbWeight=1.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}
beq G_M64200_IG05
;; size=12 bbWeight=1.50 PerfScore 6.75
G_M64200_IG04: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M64200_IG09
+ cbz x21, G_M64200_IG08
ldr x21, [x21, #0x18]
cmp x21, x19
bne G_M64200_IG07
@@ -67,19 +67,13 @@ G_M64200_IG06: ; bbWeight=1, epilog, nogc, extend
;; size=16 bbWeight=1 PerfScore 5.00
G_M64200_IG07: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- cbz x21, G_M64200_IG09
+ cbz x21, G_M64200_IG08
ldr x21, [x21, #0x18]
cmp x21, x19
- beq G_M64200_IG05
- ;; size=16 bbWeight=0.00 PerfScore 0.01
-G_M64200_IG08: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
- cbz x21, G_M64200_IG09
- ldr x21, [x21, #0x18]
- cmp x21, x19
- beq G_M64200_IG05
- cbnz x21, G_M64200_IG03
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M64200_IG09: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+ bne G_M64200_IG10
+ b G_M64200_IG05
+ ;; size=20 bbWeight=0.00 PerfScore 0.02
+G_M64200_IG08: ; bbWeight=0.03, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
mov x0, x19
mov x1, x20
; gcrRegs +[x1]
@@ -87,16 +81,25 @@ G_M64200_IG09: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M64200_IG10: ; bbWeight=0, epilog, nogc, extend
+ ;; size=24 bbWeight=0.03 PerfScore 0.17
+G_M64200_IG09: ; bbWeight=0.03, epilog, nogc, extend
ldr x21, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
ldp fp, lr, [sp], #0x30
br x2
; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00
+ ;; size=16 bbWeight=0.03 PerfScore 0.15
+G_M64200_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[x1]
+ cbz x21, G_M64200_IG08
+ ldr x21, [x21, #0x18]
+ cmp x21, x19
+ beq G_M64200_IG05
+ cbnz x21, G_M64200_IG03
+ b G_M64200_IG08
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 204, prolog size 24, PerfScore 32.52, instruction count 51, allocated bytes for code 204 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 212, prolog size 24, PerfScore 32.84, instruction count 53, allocated bytes for code 212 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -107,7 +110,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ 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)
librariestestsnotieredcompilation.run.windows.arm64.Release.mch
-24 (-3.31%) : 177271.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
@@ -8,32 +8,33 @@
; 0 inlinees with PGO data; 3 single block inlinees; 5 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T01] ( 26,731 ) ref -> x20 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
-; V01 arg1 [V01,T00] ( 26,754 ) ref -> x19 class-hnd single-def <System.Xml.XPath.XPathNavigator>
+; V00 this [V00,T00] ( 26,245.50) ref -> x19 this class-hnd single-def <System.Xml.Xsl.Runtime.XmlQueryOutput>
+; V01 arg1 [V01,T01] ( 20,214 ) ref -> x20 class-hnd single-def <System.Xml.XPath.XPathNavigator>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T02] ( 6,559 ) int -> x21
+; V03 loc1 [V03,T04] ( 6,109.50) int -> x21
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V05 tmp1 [V05 ] ( 0, 0 ) ref -> zero-ref
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref
;* V07 tmp3 [V07 ] ( 0, 0 ) ref -> zero-ref
;* V08 tmp4 [V08 ] ( 0, 0 ) ref -> zero-ref
-; V09 tmp5 [V09,T15] ( 3, 8 ) int -> x2
+; V09 tmp5 [V09,T13] ( 3, 8 ) int -> x2
;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V11 tmp7 [V11,T11] ( 2, 32 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
-; V12 tmp8 [V12,T12] ( 2, 32 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
-; V13 tmp9 [V13,T13] ( 2, 32 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
-; V14 tmp10 [V14,T06] ( 4, 64 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
+; V11 tmp7 [V11,T14] ( 2, 8 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
+; V12 tmp8 [V12,T15] ( 2, 8 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
+; V13 tmp9 [V13,T16] ( 2, 8 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
+; V14 tmp10 [V14,T11] ( 4, 16 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V15 tmp11 [V15 ] ( 0, 0 ) ref -> zero-ref
;* V16 tmp12 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x23 class-hnd exact "non-inline candidate call" <System.String>
+; V17 tmp13 [V17,T07] ( 2, 64 ) ref -> x22 class-hnd exact "non-inline candidate call" <System.String>
; V18 tmp14 [V18,T08] ( 2, 64 ) ref -> x24 class-hnd exact "non-inline candidate call" <System.String>
; V19 tmp15 [V19,T09] ( 2, 64 ) ref -> x3 class-hnd exact "Inlining Arg" <System.String>
; V20 tmp16 [V20,T03] ( 4,128 ) ref -> x0 class-hnd "dup spill" <<unknown class>>
;* V21 tmp17 [V21 ] ( 0, 0 ) ref -> zero-ref
-; V22 tmp18 [V22,T14] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V23 tmp19 [V23,T10] ( 3, 48 ) ref -> x0 "argument with side effect"
+; V22 tmp18 [V22,T10] ( 3, 24 ) ref -> x0 "argument with side effect"
+; V23 tmp19 [V23,T12] ( 3, 12 ) ref -> x0 "argument with side effect"
; V24 tmp20 [V24,T05] ( 3, 96 ) ref -> x0 "argument with side effect"
-; V25 cse0 [V25,T04] ( 9, 96 ) long -> x22 multi-def "CSE - aggressive"
+; V25 cse0 [V25,T06] ( 9, 78 ) long -> x23 multi-def "CSE - aggressive"
+; V26 cse1 [V26,T02] ( 10,146 ) long -> x22 multi-def "CSE - aggressive"
;
; Lcl frame size = 0
@@ -43,21 +44,21 @@ G_M8478_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x21, x22, [sp, #0x20]
stp x23, x24, [sp, #0x30]
mov fp, sp
- mov x20, x0
- ; gcrRegs +[x20]
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
+ mov x20, x1
+ ; gcrRegs +[x20]
;; size=28 bbWeight=1 PerfScore 5.50
G_M8478_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- ldr w21, [x20, #0x58]
+ ldr w21, [x19, #0x58]
;; size=4 bbWeight=1 PerfScore 3.00
G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x20, #0x58]
+ ldr w2, [x19, #0x58]
cmp w2, w21
cset x2, eq
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for <unknown method>
movk x3, #0xD1FFAB1E LSL #16
@@ -68,26 +69,25 @@ G_M8478_IG03: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
cbz w0, G_M8478_IG16
;; size=44 bbWeight=8 PerfScore 92.00
G_M8478_IG04: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x22, [x1, #0x60]
- ldr x1, [x22, #0x08]
+ ldr x22, [x20]
+ ldr x23, [x22, #0x60]
+ ldr x1, [x23, #0x08]
blr x1
; gcrRegs -[x0]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x68]
+ ldr x1, [x22, #0x68]
ldr x1, [x1, #0x38]
blr x1
; gcrRegs -[x0]
cbz w0, G_M8478_IG07
- ;; size=44 bbWeight=4 PerfScore 88.00
+ ;; size=40 bbWeight=4 PerfScore 76.00
G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
mov w2, wzr
movz x3, #0xD1FFAB1E // code for <unknown method>
@@ -96,26 +96,24 @@ G_M8478_IG05: ; bbWeight=16, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x70]
+ ldr x1, [x22, #0x70]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG05
- ;; size=56 bbWeight=16 PerfScore 296.00
+ ;; size=52 bbWeight=16 PerfScore 248.00
G_M8478_IG06: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x19
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1, #0x08]
blr x1
; gcrRegs -[x0]
- ;; size=20 bbWeight=2 PerfScore 21.00
+ ;; size=16 bbWeight=2 PerfScore 15.00
G_M8478_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
beq G_M8478_IG09
@@ -128,9 +126,9 @@ G_M8478_IG09: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
mov w2, #1
;; size=4 bbWeight=2 PerfScore 1.00
G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
- mov x1, x19
+ mov x1, x20
; gcrRegs +[x1]
movz x3, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNamespaces(System.Xml.XPath.XPathNavigator,int):this
movk x3, #0xD1FFAB1E LSL #16
@@ -138,11 +136,11 @@ G_M8478_IG10: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
ldr x3, [x3]
blr x3
; gcrRegs -[x0-x1]
- ldr w0, [x20, #0x60]
+ ldr w0, [x19, #0x60]
cbz w0, G_M8478_IG12
;; size=36 bbWeight=4 PerfScore 42.00
G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteCachedNamespaces():this
movk x1, #0xD1FFAB1E LSL #16
@@ -152,7 +150,7 @@ G_M8478_IG11: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
; gcrRegs -[x0]
;; size=24 bbWeight=2 PerfScore 12.00
G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr x0, [x20, #0x10]
+ ldr x0, [x19, #0x10]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0x98]
@@ -160,24 +158,23 @@ G_M8478_IG12: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
mov w0, #2
- str w0, [x20, #0x5C]
- mov x0, x19
+ str w0, [x19, #0x5C]
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x19]
- ldr x1, [x1, #0x78]
+ ldr x1, [x22, #0x78]
ldr x1, [x1]
blr x1
; gcrRegs -[x0]
cbnz w0, G_M8478_IG03
- ;; size=52 bbWeight=4 PerfScore 104.00
-G_M8478_IG13: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- ldr w0, [x20, #0x58]
+ ;; size=48 bbWeight=4 PerfScore 92.00
+G_M8478_IG13: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr w0, [x19, #0x58]
sub w0, w0, #1
cmp w0, w21
bne G_M8478_IG15
- ;; size=16 bbWeight=2 PerfScore 10.00
-G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
- mov x0, x20
+ ;; size=16 bbWeight=0.50 PerfScore 2.50
+G_M8478_IG14: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref
+ mov x0, x19
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Xml.Xsl.Runtime.XmlQueryOutput:WriteEndElement():this
movk x1, #0xD1FFAB1E LSL #16
@@ -186,26 +183,26 @@ G_M8478_IG14: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}
blr x1
; gcrRegs -[x0]
b G_M8478_IG16
- ;; size=28 bbWeight=8 PerfScore 56.00
-G_M8478_IG15: ; bbWeight=8, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- mov x0, x19
+ ;; size=28 bbWeight=2 PerfScore 14.00
+G_M8478_IG15: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ mov x0, x20
; gcrRegs +[x0]
- ldr x1, [x22, #0x28]
+ ldr x1, [x23, #0x28]
blr x1
- mov x23, x0
- ; gcrRegs +[x23]
- mov x0, x19
- ldr x1, [x22, #0x10]
+ mov x22, x0
+ ; gcrRegs +[x22]
+ mov x0, x20
+ ldr x1, [x23, #0x10]
blr x1
mov x24, x0
; gcrRegs +[x24]
- mov x0, x19
- ldr x1, [x22, #0x20]
+ mov x0, x20
+ ldr x1, [x23, #0x20]
blr x1
mov x3, x0
; gcrRegs +[x3]
- ldr x0, [x20, #0x10]
- mov x1, x23
+ ldr x0, [x19, #0x10]
+ mov x1, x22
...
-8 (-2.11%) : 25017.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
@@ -9,7 +9,7 @@
; Final local variable assignments
;
; V00 this [V00,T07] ( 3, 3 ) ref -> x0 this class-hnd single-def <System.Dynamic.DynamicObject+MetaDynamic>
-; V01 arg1 [V01,T04] ( 6, 6.03) ref -> x19 class-hnd single-def <System.Reflection.MethodInfo>
+; V01 arg1 [V01,T04] ( 6, 8 ) ref -> x19 class-hnd single-def <System.Reflection.MethodInfo>
;* V02 loc0 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
; V03 loc1 [V03,T13] ( 3, 2.50) ref -> x0 class-hnd single-def <<unknown class>>
; V04 loc2 [V04,T01] ( 5, 17 ) int -> x20
@@ -22,8 +22,8 @@
; V11 tmp5 [V11,T10] ( 3, 4.25) ref -> x1 single-def "CASTCLASS eval op1"
; V12 tmp6 [V12,T15] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
; V13 tmp7 [V13,T05] ( 5, 6.75) ref -> x0 class-hnd "spilling QMark2" <System.Dynamic.DynamicObject>
-; V14 tmp8 [V14,T14] ( 2, 2.03) ubyte -> x0 "Inline return value spill temp"
-; V15 tmp9 [V15,T03] ( 5, 8.18) ref -> x0 class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
+; V14 tmp8 [V14,T14] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
+; V15 tmp9 [V15,T03] ( 5, 16.06) ref -> x0 class-hnd "Inlining Arg" <System.Reflection.MethodInfo>
; V16 tmp10 [V16,T11] ( 2, 4 ) ref -> x20 single-def "argument with side effect"
; V17 tmp11 [V17,T12] ( 2, 4 ) ref -> x1 single-def "argument with side effect"
; V18 cse0 [V18,T09] ( 2, 4.50) byref -> x22 hoist "CSE - aggressive"
@@ -31,7 +31,7 @@
;
; Lcl frame size = 8
-G_M46876_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M46876_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]
@@ -88,7 +88,7 @@ G_M46876_IG05: ; bbWeight=1, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {},
mov w20, wzr
ldr w21, [x0, #0x08]
cmp w21, #0
- ble G_M46876_IG16
+ ble G_M46876_IG15
;; size=80 bbWeight=1 PerfScore 24.50
G_M46876_IG06: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref
add x22, x0, #16
@@ -130,7 +130,7 @@ G_M46876_IG10: ; bbWeight=4, gcrefRegs=880000 {x19 x23}, byrefRegs=400000
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
cmp x0, x1
- beq G_M46876_IG15
+ beq G_M46876_IG14
;; size=40 bbWeight=4 PerfScore 54.00
G_M46876_IG11: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
@@ -142,38 +142,12 @@ G_M46876_IG11: ; bbWeight=2, gcrefRegs=880000 {x19 x23}, byrefRegs=400000
blr x1
; gcrRegs -[x23]
cmp x0, x19
- beq G_M46876_IG19
+ beq G_M46876_IG17
;; size=28 bbWeight=2 PerfScore 24.00
G_M46876_IG12: ; bbWeight=0.03, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
- cbz x0, G_M46876_IG15
+ cbz x0, G_M46876_IG14
;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M46876_IG13: ; bbWeight=0.03, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref
- b G_M46876_IG18
- ;; size=4 bbWeight=0.03 PerfScore 0.03
-G_M46876_IG14: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x0]
- cbnz w0, G_M46876_IG19
- ;; size=4 bbWeight=2 PerfScore 2.00
-G_M46876_IG15: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
- add w20, w20, #1
- cmp w21, w20
- bgt G_M46876_IG07
- ;; size=12 bbWeight=4 PerfScore 8.00
-G_M46876_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x19]
- ; byrRegs -[x22]
- mov w0, wzr
- ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M46876_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
- ret lr
- ;; size=20 bbWeight=0.50 PerfScore 3.00
-G_M46876_IG18: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, gcvars, byref
- ; gcrRegs +[x0 x19]
- ; byrRegs +[x22]
+G_M46876_IG13: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=400000 {x22}, byref, isz
mov x1, x19
; gcrRegs +[x1]
ldr x2, [x0]
@@ -181,14 +155,29 @@ G_M46876_IG18: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=800
ldr x2, [x2, #0x10]
blr x2
; gcrRegs -[x0-x1]
- b G_M46876_IG14
- ;; size=24 bbWeight=0.03 PerfScore 0.35
-G_M46876_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cbnz w0, G_M46876_IG17
+ ;; size=24 bbWeight=2 PerfScore 23.00
+G_M46876_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=400000 {x22}, byref, isz
+ add w20, w20, #1
+ cmp w21, w20
+ bgt G_M46876_IG07
+ ;; size=12 bbWeight=4 PerfScore 8.00
+G_M46876_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
; byrRegs -[x22]
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M46876_IG16: ; 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
+ ret lr
+ ;; size=20 bbWeight=0.50 PerfScore 3.00
+G_M46876_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M46876_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M46876_IG18: ; bbWeight=0.50, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -196,7 +185,7 @@ G_M46876_IG20: ; bbWeight=0.50, epilog, nogc, extend
ret lr
;; size=20 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 380, prolog size 20, PerfScore 158.35, instruction count 95, allocated bytes for code 380 (MethodHash=33b248e3) for method System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
+; Total bytes of code 372, prolog size 20, PerfScore 178.97, instruction count 93, allocated bytes for code 372 (MethodHash=33b248e3) for method System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
@@ -207,7 +196,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 95 (0x0005f) Actual length = 380 (0x00017c)
+ Function Length : 93 (0x0005d) Actual length = 372 (0x000174)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-20 (-1.34%) : 289551.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1708_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,27 +8,27 @@
; 8 inlinees with PGO data; 21 single block inlinees; 13 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T06] ( 26,104.50) ref -> x19 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V00 arg0 [V00,T06] ( 26, 80.50) ref -> x19 class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]>
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V03 loc1 [V03,T53] ( 6, 5 ) int -> x23 single-def
-; V04 loc2 [V04,T05] ( 23,176.50) int -> registers
+; V04 loc2 [V04,T03] ( 23,112.50) int -> registers
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V06 loc4 [V06,T00] ( 53,421 ) int -> x24
-; V07 loc5 [V07,T02] ( 7,241 ) int -> x27
-; V08 loc6 [V08,T11] ( 10, 64 ) int -> x22
-; V09 loc7 [V09,T28] ( 4, 10 ) int -> [fp+0x2C]
-; V10 loc8 [V10,T30] ( 7, 16 ) int -> [fp+0x28]
-; V11 loc9 [V11,T19] ( 8, 34 ) int -> x28
+; V06 loc4 [V06,T00] ( 53,293 ) int -> x24
+; V07 loc5 [V07,T01] ( 7,129 ) int -> x27
+; V08 loc6 [V08,T07] ( 10, 56 ) int -> registers
+; V09 loc7 [V09,T26] ( 4, 10 ) int -> [fp+0x2C]
+; V10 loc8 [V10,T28] ( 7, 16 ) int -> [fp+0x28]
+; V11 loc9 [V11,T16] ( 8, 34 ) int -> x28
;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V13 tmp1 [V13 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V14 tmp2 [V14,T52] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V14 tmp2 [V14,T65] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V15 tmp3 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V16 tmp4 [V16,T51] ( 3, 6 ) int -> x26 "Inlining Arg"
+; V16 tmp4 [V16,T52] ( 3, 6 ) int -> x26 "Inlining Arg"
; V17 tmp5 [V17,T56] ( 2, 4 ) byref -> x25 single-def "Inlining Arg"
;* V18 tmp6 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V19 tmp7 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V20 tmp8 [V20,T32] ( 2, 16 ) int -> x28 "Inline return value spill temp"
+; V20 tmp8 [V20,T30] ( 2, 16 ) int -> x28 "Inline return value spill temp"
;* V21 tmp9 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V22 tmp10 [V22,T33] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
@@ -46,18 +46,18 @@
;* V35 tmp23 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V36 tmp24 [V36 ] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V37 tmp25 [V37 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V38 tmp26 [V38,T39] ( 3, 12 ) int -> x26 "Inlining Arg"
-; V39 tmp27 [V39,T44] ( 2, 8 ) byref -> x25 "Inlining Arg"
+; V38 tmp26 [V38,T40] ( 3, 12 ) int -> x26 "Inlining Arg"
+; V39 tmp27 [V39,T45] ( 2, 8 ) byref -> x25 "Inlining Arg"
;* V40 tmp28 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V41 tmp29 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V42 tmp30 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V43 tmp31 [V43,T40] ( 3, 12 ) int -> [fp+0x24] spill-single-def "Inlining Arg"
-; V44 tmp32 [V44,T45] ( 2, 8 ) byref -> [fp+0x18] spill-single-def "Inlining Arg"
+; V43 tmp31 [V43,T41] ( 3, 12 ) int -> [fp+0x24] spill-single-def "Inlining Arg"
+; V44 tmp32 [V44,T46] ( 2, 8 ) byref -> [fp+0x18] spill-single-def "Inlining Arg"
;* V45 tmp33 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp34 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V47 tmp35 [V47 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V48 tmp36 [V48,T18] ( 3, 48 ) int -> x25 "Inlining Arg"
-; V49 tmp37 [V49,T29] ( 2, 18 ) byref -> x28 "Inlining Arg"
+; V48 tmp36 [V48,T14] ( 3, 48 ) int -> x25 "Inlining Arg"
+; V49 tmp37 [V49,T27] ( 2, 18 ) byref -> x28 "Inlining Arg"
;* V50 tmp38 [V50 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V51 tmp39 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V52 tmp40 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -66,30 +66,30 @@
;* V55 tmp43 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V56 tmp44 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V57 tmp45 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V58 tmp46 [V58,T26] ( 3, 24 ) int -> x25 "Inlining Arg"
-; V59 tmp47 [V59,T31] ( 2, 16 ) byref -> x22 "Inlining Arg"
+; V58 tmp46 [V58,T24] ( 3, 24 ) int -> x25 "Inlining Arg"
+; V59 tmp47 [V59,T29] ( 2, 16 ) byref -> x22 "Inlining Arg"
;* V60 tmp48 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V61 tmp49 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V62 tmp50 [V62 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V63 tmp51 [V63,T01] ( 3,192 ) int -> x26 "Inlining Arg"
-; V64 tmp52 [V64,T03] ( 2,128 ) byref -> x25 "Inlining Arg"
+; V63 tmp51 [V63,T02] ( 3, 96 ) int -> x26 "Inlining Arg"
+; V64 tmp52 [V64,T04] ( 2, 64 ) byref -> x25 "Inlining Arg"
;* V65 tmp53 [V65 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V66 tmp54 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V67 tmp55 [V67,T55] ( 4, 4 ) int -> x21 "Inlining Arg"
-; V68 tmp56 [V68,T54] ( 5, 5 ) int -> x20 "Inlining Arg"
+; V67 tmp55 [V67,T55] ( 4, 4 ) int -> x20 "Inlining Arg"
+; V68 tmp56 [V68,T54] ( 5, 5 ) int -> x22 "Inlining Arg"
;* V69 tmp57 [V69 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V70 tmp58 [V70,T66] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
-; V71 tmp59 [V71,T65] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V70 tmp58 [V70,T67] ( 4, 2 ) int -> x0 single-def "Inline stloc first use temp"
+; V71 tmp59 [V71,T66] ( 3, 3 ) ref -> x3 class-hnd single-def "impAppendStmt" <<unknown class>>
; V72 tmp60 [V72,T57] ( 2, 2 ) byref -> x1 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
; V73 tmp61 [V73,T60] ( 2, 2 ) int -> x2 single-def "field V01._length (fldOffset=0x8)" P-INDEP
-; V74 tmp62 [V74,T16] ( 6, 48 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V75 tmp63 [V75,T09] ( 11, 95 ) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V76 tmp64 [V76,T12] ( 8, 67 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
-; V77 tmp65 [V77,T10] ( 10, 87 ) int -> registers "field V05._length (fldOffset=0x8)" P-INDEP
+; V74 tmp62 [V74,T17] ( 6, 32 ) byref -> x20 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V75 tmp63 [V75,T08] ( 11, 63 ) int -> x21 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V76 tmp64 [V76,T11] ( 8, 51 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
+; V77 tmp65 [V77,T09] ( 10, 55 ) int -> registers "field V05._length (fldOffset=0x8)" P-INDEP
;* V78 tmp66 [V78 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP
;* V79 tmp67 [V79 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP
-; V80 tmp68 [V80,T67] ( 2, 2 ) byref -> x25 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
-; V81 tmp69 [V81,T68] ( 2, 2 ) int -> x26 single-def "field V15._length (fldOffset=0x8)" P-INDEP
+; V80 tmp68 [V80,T68] ( 2, 2 ) byref -> x25 single-def "field V15._reference (fldOffset=0x0)" P-INDEP
+; V81 tmp69 [V81,T69] ( 2, 2 ) int -> x26 single-def "field V15._length (fldOffset=0x8)" P-INDEP
;* V82 tmp70 [V82 ] ( 0, 0 ) byref -> zero-ref "field V21._reference (fldOffset=0x0)" P-INDEP
;* V83 tmp71 [V83 ] ( 0, 0 ) int -> zero-ref "field V21._length (fldOffset=0x8)" P-INDEP
;* V84 tmp72 [V84 ] ( 0, 0 ) byref -> zero-ref "field V23._reference (fldOffset=0x0)" P-INDEP
@@ -104,35 +104,36 @@
;* V93 tmp81 [V93 ] ( 0, 0 ) int -> zero-ref "field V47._length (fldOffset=0x8)" P-INDEP
;* V94 tmp82 [V94 ] ( 0, 0 ) byref -> zero-ref "field V52._reference (fldOffset=0x0)" P-INDEP
;* V95 tmp83 [V95 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
-; V96 tmp84 [V96,T46] ( 2, 8 ) byref -> x2 "field V57._reference (fldOffset=0x0)" P-INDEP
-; V97 tmp85 [V97,T47] ( 2, 8 ) int -> x3 "field V57._length (fldOffset=0x8)" P-INDEP
-;* V98 tmp86 [V98,T20] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP
-;* V99 tmp87 [V99,T22] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
-; V100 tmp88 [V100,T17] ( 3, 48 ) ref -> x1 "arr expr"
-; V101 tmp89 [V101,T07] ( 3, 96 ) ref -> x1 "arr expr"
-;* V102 tmp90 [V102,T21] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V96 tmp84 [V96,T47] ( 2, 8 ) byref -> x2 "field V57._reference (fldOffset=0x0)" P-INDEP
+; V97 tmp85 [V97,T48] ( 2, 8 ) int -> x3 "field V57._length (fldOffset=0x8)" P-INDEP
+;* V98 tmp86 [V98,T31] ( 0, 0 ) byref -> zero-ref "field V62._reference (fldOffset=0x0)" P-INDEP
+;* V99 tmp87 [V99,T34] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP
+; V100 tmp88 [V100,T12] ( 3, 48 ) ref -> x1 "arr expr"
+; V101 tmp89 [V101,T13] ( 3, 48 ) ref -> x1 "arr expr"
+;* V102 tmp90 [V102,T32] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V103 tmp91 [V103,T63] ( 0, 0 ) ref -> zero-ref "arr expr"
;* V104 tmp92 [V104,T64] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V105 tmp93 [V105,T04] ( 3,192 ) ref -> x0 "arr expr"
-; V106 tmp94 [V106,T23] ( 3, 24 ) ref -> x0 "arr expr"
-;* V107 tmp95 [V107,T48] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V108 tmp96 [V108,T24] ( 3, 24 ) ref -> x0 "arr expr"
-;* V109 tmp97 [V109,T49] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V110 tmp98 [V110,T25] ( 3, 24 ) ref -> x0 "arr expr"
-;* V111 tmp99 [V111,T50] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V112 cse0 [V112,T13] ( 2, 32 ) ref -> x1 "CSE - moderate"
-; V113 cse1 [V113,T27] ( 4, 14 ) ref -> x1 "CSE - moderate"
-; V114 cse2 [V114,T34] ( 2, 8 ) ref -> x0 "CSE - moderate"
-; V115 cse3 [V115,T35] ( 2, 8 ) ref -> x0 "CSE - moderate"
-; V116 cse4 [V116,T15] ( 5, 52 ) int -> x2 "CSE - moderate"
-; V117 cse5 [V117,T14] ( 5, 52 ) byref -> x3 "CSE - moderate"
-; V118 cse6 [V118,T41] ( 3, 12 ) int -> x4 "CSE - moderate"
-; V119 cse7 [V119,T36] ( 3, 12 ) byref -> x0 "CSE - moderate"
-; V120 cse8 [V120,T42] ( 3, 12 ) int -> x1 "CSE - moderate"
-; V121 cse9 [V121,T37] ( 3, 12 ) byref -> x0 "CSE - moderate"
-; V122 cse10 [V122,T43] ( 3, 12 ) int -> x1 "CSE - moderate"
-; V123 cse11 [V123,T38] ( 3, 12 ) byref -> x0 "CSE - moderate"
-; V124 rat0 [V124,T08] ( 3, 96 ) int -> x4 "ReplaceWithLclVar is creating a new local variable"
+; V105 tmp93 [V105,T05] ( 3, 96 ) ref -> x0 "arr expr"
+; V106 tmp94 [V106,T21] ( 3, 24 ) ref -> x0 "arr expr"
+;* V107 tmp95 [V107,T49] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V108 tmp96 [V108,T22] ( 3, 24 ) ref -> x0 "arr expr"
+;* V109 tmp97 [V109,T50] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V110 tmp98 [V110,T23] ( 3, 24 ) ref -> x0 "arr expr"
+;* V111 tmp99 [V111,T51] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V112 cse0 [V112,T18] ( 2, 16 ) ref -> x1 "CSE - moderate"
+; V113 cse1 [V113,T25] ( 4, 14 ) ref -> x1 "CSE - moderate"
+; V114 cse2 [V114,T35] ( 2, 8 ) ref -> x0 "CSE - moderate"
+; V115 cse3 [V115,T36] ( 2, 8 ) ref -> x0 "CSE - moderate"
+; V116 cse4 [V116,T10] ( 20, 53.50) ref -> registers multi-def "CSE - aggressive"
+; V117 cse5 [V117,T20] ( 5, 28 ) int -> registers "CSE - moderate"
+; V118 cse6 [V118,T19] ( 5, 28 ) byref -> x2 "CSE - moderate"
+; V119 cse7 [V119,T42] ( 3, 12 ) int -> x4 "CSE - moderate"
+; V120 cse8 [V120,T37] ( 3, 12 ) byref -> x0 "CSE - moderate"
+; V121 cse9 [V121,T43] ( 3, 12 ) int -> x1 "CSE - moderate"
+; V122 cse10 [V122,T38] ( 3, 12 ) byref -> x0 "CSE - moderate"
+; V123 cse11 [V123,T44] ( 3, 12 ) int -> x1 "CSE - moderate"
+; V124 cse12 [V124,T39] ( 3, 12 ) byref -> x0 "CSE - moderate"
+; V125 rat0 [V125,T15] ( 3, 48 ) int -> x4 "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 32
@@ -156,7 +157,7 @@ G_M34073_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
sxtw w23, w22
mov w24, wzr
cmp w23, w21
- bhi G_M34073_IG44
+ bhi G_M34073_IG43
ubfiz x0, x23, #1, #32
add x25, x20, x0
; byrRegs +[x25]
@@ -165,19 +166,21 @@ G_M34073_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0002 {x1},
;; size=44 bbWeight=1 PerfScore 9.50
G_M34073_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x20 x25}, byref
; byrRegs -[x1]
- 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 x27, #8
+ movk x27, #0xD1FFAB1E LSL #16
+ movk x27, #0xD1FFAB1E LSL #32
+ mov x0, x27
+ ; gcrRegs +[x0]
+ mov x1, x27
+ ; 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-x1]
; gcr arg pop 0
- ;; size=44 bbWeight=0.50 PerfScore 4.25
+ ;; size=40 bbWeight=0.50 PerfScore 4.00
G_M34073_IG04: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x20 x25}, byref
mov w27, wzr
;; size=4 bbWeight=1 PerfScore 0.50
@@ -210,7 +213,7 @@ G_M34073_IG07: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x2
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
cmp w24, w0
- bhs G_M34073_IG43
+ bhs G_M34073_IG42
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -241,7 +244,7 @@ G_M34073_IG09: ; bbWeight=8, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x2
;; size=8 bbWeight=8 PerfScore 12.00
G_M34073_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=2100000 {x20 x25}, byref, isz
cmp w28, w26
- bhi G_M34073_IG44
+ bhi G_M34073_IG43
ubfiz x0, x28, #1, #32
add x25, x25, x0
sub w26, w26, w28
@@ -249,43 +252,46 @@ G_M34073_IG10: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=2100000 {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
+ mov x2, x0
+ ; gcrRegs +[x2]
+ mov x1, x2
+ ; gcrRegs +[x1]
movz x2, #0xD1FFAB1E // code for <unknown method>
+ ; gcrRegs -[x2]
movk x2, #0xD1FFAB1E LSL #16
movk x2, #0xD1FFAB1E LSL #32
ldr x2, [x2]
blr x2
+ ; gcrRegs -[x1]
; gcr arg pop 0
- ;; size=68 bbWeight=2 PerfScore 26.00
+ ;; size=64 bbWeight=2 PerfScore 25.00
...
+12 (+2.73%) : 16863.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,31 +9,30 @@
; 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 loc0 [V01,T10] ( 5, 3.50) int -> x21 single-def
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> x22
-; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> x23 single-def
-; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> x0 single-def
+; V01 loc0 [V01,T09] ( 5, 3.50) int -> x21 single-def
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> x22
+; V03 loc2 [V03,T10] ( 4, 3.50) ubyte -> x23 single-def
+; V04 loc3 [V04,T15] ( 3, 2.50) ubyte -> x0 single-def
; V05 loc4 [V05,T06] ( 4, 12.50) int -> x0
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T17] ( 3, 2 ) int -> x0
-; V08 tmp2 [V08,T18] ( 3, 1.50) int -> x22
+; V07 tmp1 [V07,T16] ( 3, 2 ) int -> x0
+; V08 tmp2 [V08,T17] ( 3, 1.50) int -> x22
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> x0 "dup spill"
-;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> x1 "Inlining Arg"
-;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T11] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V12 tmp6 [V12,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T12] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+;* V14 tmp8 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> x1 "Inlining Arg"
-;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> x0 "Inlining Arg"
-;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V18 tmp12 [V18,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T05] ( 6, 11 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V25 cse0 [V25,T07] ( 3, 8.50) int -> x1 "CSE - aggressive"
+;* V21 tmp15 [V21,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T14] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T05] ( 7, 15 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 8
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
+ bge G_M17180_IG24
ldrh w1, [x19, w22, UXTW #2]
cmp w1, #92
beq G_M17180_IG13
@@ -135,15 +134,15 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=12 bbWeight=4 PerfScore 8.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w22, #1
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
- cbz w23, G_M17180_IG21
+ cbz w23, G_M17180_IG22
mov w22, #4
b G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.25
@@ -152,55 +151,58 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
- ldrh w1, [x19, w22, UXTW #2]
- sxtw w0, w1
+ bge G_M17180_IG20
+ ldrh w0, [x19, w22, UXTW #2]
cmp w0, #92
- beq G_M17180_IG19
+ beq G_M17180_IG20
cmp w0, #47
bne G_M17180_IG17
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x19]
- cmp w22, #4
- ble G_M17180_IG23
+ ;; size=28 bbWeight=4 PerfScore 30.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ b G_M17180_IG21
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cmp w22, w20
+ bge G_M17180_IG24
;; size=8 bbWeight=4 PerfScore 6.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w1, #92
- beq G_M17180_IG22
- cmp w1, #47
- bne G_M17180_IG23
- b G_M17180_IG22
- ;; size=20 bbWeight=0.50 PerfScore 2.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs +[x19]
+ cmp w22, #4
+ ble G_M17180_IG24
+ ldrh w0, [x19, w22, UXTW #2]
+ cmp w0, #92
+ beq G_M17180_IG23
+ cmp w0, #47
+ bne G_M17180_IG24
+ b G_M17180_IG23
+ ;; size=32 bbWeight=0.50 PerfScore 4.25
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w20, #2
- blt G_M17180_IG23
+ blt G_M17180_IG24
ldrh w0, [x19, #0x02]
cmp w0, #58
- bne G_M17180_IG23
+ bne G_M17180_IG24
ldrh w0, [x19]
orr w0, w0, #32
sub w0, w0, #97
cmp w0, #25
- bhi G_M17180_IG23
+ bhi G_M17180_IG24
mov w22, #2
cmp w20, #2
- ble G_M17180_IG23
+ ble G_M17180_IG24
ldrh w0, [x19, #0x04]
cmp w0, #92
- beq G_M17180_IG22
+ beq G_M17180_IG23
cmp w0, #47
- bne G_M17180_IG23
+ bne G_M17180_IG24
;; size=72 bbWeight=0.50 PerfScore 9.75
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
add w22, w22, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22
;; size=4 bbWeight=1 PerfScore 0.50
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -208,7 +210,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 440, prolog size 28, PerfScore 130.25, instruction count 110, allocated bytes for code 440 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 452, prolog size 28, PerfScore 131.00, instruction count 113, allocated bytes for code 452 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -219,7 +221,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+12 (+2.73%) : 127527.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,31 +9,30 @@
; 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 loc0 [V01,T10] ( 5, 3.50) int -> x21 single-def
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> x22
-; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> x23 single-def
-; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> x0 single-def
+; V01 loc0 [V01,T09] ( 5, 3.50) int -> x21 single-def
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> x22
+; V03 loc2 [V03,T10] ( 4, 3.50) ubyte -> x23 single-def
+; V04 loc3 [V04,T15] ( 3, 2.50) ubyte -> x0 single-def
; V05 loc4 [V05,T06] ( 4, 12.50) int -> x0
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T17] ( 3, 2 ) int -> x0
-; V08 tmp2 [V08,T18] ( 3, 1.50) int -> x22
+; V07 tmp1 [V07,T16] ( 3, 2 ) int -> x0
+; V08 tmp2 [V08,T17] ( 3, 1.50) int -> x22
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> x0 "dup spill"
-;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> x1 "Inlining Arg"
-;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T11] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V12 tmp6 [V12,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T12] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+;* V14 tmp8 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> x1 "Inlining Arg"
-;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> x0 "Inlining Arg"
-;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V18 tmp12 [V18,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T05] ( 6, 11 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V25 cse0 [V25,T07] ( 3, 8.50) int -> x1 "CSE - aggressive"
+;* V21 tmp15 [V21,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T14] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T05] ( 7, 15 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 8
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
+ bge G_M17180_IG24
ldrh w1, [x19, w22, UXTW #2]
cmp w1, #92
beq G_M17180_IG13
@@ -135,15 +134,15 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=12 bbWeight=4 PerfScore 8.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w22, #1
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
- cbz w23, G_M17180_IG21
+ cbz w23, G_M17180_IG22
mov w22, #4
b G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.25
@@ -152,55 +151,58 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
- ldrh w1, [x19, w22, UXTW #2]
- sxtw w0, w1
+ bge G_M17180_IG20
+ ldrh w0, [x19, w22, UXTW #2]
cmp w0, #92
- beq G_M17180_IG19
+ beq G_M17180_IG20
cmp w0, #47
bne G_M17180_IG17
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x19]
- cmp w22, #4
- ble G_M17180_IG23
+ ;; size=28 bbWeight=4 PerfScore 30.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ b G_M17180_IG21
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cmp w22, w20
+ bge G_M17180_IG24
;; size=8 bbWeight=4 PerfScore 6.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w1, #92
- beq G_M17180_IG22
- cmp w1, #47
- bne G_M17180_IG23
- b G_M17180_IG22
- ;; size=20 bbWeight=0.50 PerfScore 2.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs +[x19]
+ cmp w22, #4
+ ble G_M17180_IG24
+ ldrh w0, [x19, w22, UXTW #2]
+ cmp w0, #92
+ beq G_M17180_IG23
+ cmp w0, #47
+ bne G_M17180_IG24
+ b G_M17180_IG23
+ ;; size=32 bbWeight=0.50 PerfScore 4.25
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w20, #2
- blt G_M17180_IG23
+ blt G_M17180_IG24
ldrh w0, [x19, #0x02]
cmp w0, #58
- bne G_M17180_IG23
+ bne G_M17180_IG24
ldrh w0, [x19]
orr w0, w0, #32
sub w0, w0, #97
cmp w0, #25
- bhi G_M17180_IG23
+ bhi G_M17180_IG24
mov w22, #2
cmp w20, #2
- ble G_M17180_IG23
+ ble G_M17180_IG24
ldrh w0, [x19, #0x04]
cmp w0, #92
- beq G_M17180_IG22
+ beq G_M17180_IG23
cmp w0, #47
- bne G_M17180_IG23
+ bne G_M17180_IG24
;; size=72 bbWeight=0.50 PerfScore 9.75
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
add w22, w22, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22
;; size=4 bbWeight=1 PerfScore 0.50
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -208,7 +210,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 440, prolog size 28, PerfScore 130.25, instruction count 110, allocated bytes for code 440 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 452, prolog size 28, PerfScore 131.00, instruction count 113, allocated bytes for code 452 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -219,7 +221,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
+44 (+3.15%) : 156429.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
@@ -8,19 +8,19 @@
; 36 inlinees with PGO data; 82 single block inlinees; 10 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T11] ( 7, 15.50) ref -> x19 class-hnd single-def <System.String>
-; V01 loc0 [V01,T08] ( 9, 18 ) int -> x21
+; V00 arg0 [V00,T10] ( 8, 16 ) ref -> x19 class-hnd single-def <System.String>
+; V01 loc0 [V01,T08] ( 11, 20 ) int -> x21
;* V02 loc1 [V02,T51] ( 0, 0 ) int -> zero-ref
-; V03 loc2 [V03,T00] ( 35, 73 ) int -> x22
+; V03 loc2 [V03,T00] ( 39, 80.46) int -> x22
;* V04 loc3 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.String>
-; V05 loc4 [V05,T10] ( 12, 17.54) int -> x2
-; V06 loc5 [V06,T09] ( 6, 18 ) ushort -> x0
+; V05 loc4 [V05,T07] ( 12, 21 ) int -> x2
+; V06 loc5 [V06,T11] ( 6, 18 ) ushort -> x0
; V07 loc6 [V07,T12] ( 5, 12 ) ushort -> x25
; V08 loc7 [V08 ] ( 5, 2.50) struct (16) [fp+0x18] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.ReadOnlySpan`1[ushort]>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V10 tmp1 [V10 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
;* V11 tmp2 [V11 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V12 tmp3 [V12,T04] ( 3, 24 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.CompareInfo>
+; V12 tmp3 [V12,T05] ( 3, 24 ) ref -> x0 class-hnd exact "Inlining Arg" <System.Globalization.CompareInfo>
; V13 tmp4 [V13,T21] ( 2, 4 ) ubyte -> x0 "Inline return value spill temp"
;* V14 tmp5 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]>
;* V15 tmp6 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]>
@@ -233,11 +233,11 @@
;* V222 tmp213 [V222 ] ( 0, 0 ) int -> zero-ref "field V104._length (fldOffset=0x8)" P-INDEP
;* V223 tmp214 [V223 ] ( 0, 0 ) byref -> zero-ref single-def "field V105._reference (fldOffset=0x0)" P-INDEP
;* V224 tmp215 [V224 ] ( 0, 0 ) int -> zero-ref "field V105._length (fldOffset=0x8)" P-INDEP
-; V225 tmp216 [V225,T05] ( 3, 24 ) ref -> x0 "argument with side effect"
-; V226 cse0 [V226,T06] ( 12, 23.04) int -> x20 "CSE - aggressive"
+; V225 tmp216 [V225,T06] ( 3, 24 ) ref -> x0 "argument with side effect"
+; V226 cse0 [V226,T04] ( 14, 24.04) int -> x20 "CSE - aggressive"
; V227 cse1 [V227,T24] ( 6, 3 ) ref -> x1 multi-def "CSE - aggressive"
-; V228 cse2 [V228,T03] ( 13, 30.50) byref -> x24 multi-def "CSE - aggressive"
-; V229 cse3 [V229,T07] ( 5, 20 ) int -> x23 "CSE - aggressive"
+; V228 cse2 [V228,T03] ( 14, 31 ) byref -> x24 multi-def "CSE - aggressive"
+; V229 cse3 [V229,T09] ( 5, 20 ) int -> x23 "CSE - aggressive"
; V230 cse4 [V230,T13] ( 3, 12 ) int -> x0 "CSE - aggressive"
;
; Lcl frame size = 24
@@ -254,7 +254,7 @@ G_M18406_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 7.00
G_M18406_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- cbz x19, G_M18406_IG37
+ cbz x19, G_M18406_IG41
;; size=4 bbWeight=1 PerfScore 1.00
G_M18406_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
ldr w20, [x19, #0x08]
@@ -299,12 +299,12 @@ G_M18406_IG04: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
bge G_M18406_IG11
sub w0, w22, #1
cmp w0, w20
- bhs G_M18406_IG52
+ bhs G_M18406_IG56
add x24, x19, #12
; byrRegs +[x24]
ldrh w0, [x24, w0, UXTW #2]
cmp w23, w20
- bhs G_M18406_IG52
+ bhs G_M18406_IG56
ldrh w25, [x24, w23, UXTW #2]
mov w1, #44
cmp w0, #59
@@ -359,90 +359,111 @@ G_M18406_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by
sxtw w22, w23
b G_M18406_IG04
;; size=8 bbWeight=4 PerfScore 6.00
-G_M18406_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M18406_IG11: ; bbWeight=1.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, w21
ccmp w22, #0, nc, lt
- blt G_M18406_IG37
+ blt G_M18406_IG41
+ ;; size=12 bbWeight=1.50 PerfScore 3.00
+G_M18406_IG12: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add w22, w22, #7
- b G_M18406_IG13
- ;; size=20 bbWeight=0.50 PerfScore 1.75
-G_M18406_IG12: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M18406_IG14
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M18406_IG13: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
add w22, w22, #1
;; size=4 bbWeight=2 PerfScore 1.00
-G_M18406_IG13: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M18406_IG14: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, w21
- bge G_M18406_IG37
+ bge G_M18406_IG18
cmp w22, w20
- bhs G_M18406_IG52
+ bhs G_M18406_IG56
add x24, x19, #12
; byrRegs +[x24]
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M18406_IG15
+ blo G_M18406_IG16
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
+ ; byrRegs -[x24]
; gcr arg pop 0
- cbnz w0, G_M18406_IG12
+ cbnz w0, G_M18406_IG13
;; size=56 bbWeight=4 PerfScore 58.00
-G_M18406_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
- ; gcrRegs -[x19]
- b G_M18406_IG16
+G_M18406_IG15: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M18406_IG18
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18406_IG15: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs +[x19]
+G_M18406_IG16: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M18406_IG12
+ tbnz w0, #7, G_M18406_IG13
;; size=20 bbWeight=4 PerfScore 22.00
-G_M18406_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
- ; gcrRegs -[x19]
+G_M18406_IG17: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ b G_M18406_IG19
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M18406_IG18: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cmp w22, w21
+ bge G_M18406_IG41
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M18406_IG19: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ cmp w22, w20
+ bhs G_M18406_IG56
+ add x24, x19, #12
+ ; byrRegs +[x24]
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #61
- bne G_M18406_IG37
- ;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M18406_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ bne G_M18406_IG41
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
+G_M18406_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ ; gcrRegs -[x19]
add w22, w22, #1
cmp w22, w21
- bge G_M18406_IG37
+ bge G_M18406_IG24
cmp w22, w20
- bhs G_M18406_IG52
+ bhs G_M18406_IG56
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #0xD1FFAB1E
- blo G_M18406_IG19
+ blo G_M18406_IG22
movz x1, #0xD1FFAB1E // code for System.Globalization.CharUnicodeInfo:GetIsWhiteSpace(ushort):ubyte
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldr x1, [x1]
blr x1
; gcr arg pop 0
- cbnz w0, G_M18406_IG17
+ cbnz w0, G_M18406_IG20
;; size=56 bbWeight=4 PerfScore 58.00
-G_M18406_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
- b G_M18406_IG20
+G_M18406_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
+ b G_M18406_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18406_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG22: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
ldrb w0, [x1, w0, UXTW #2]
- tbnz w0, #7, G_M18406_IG17
+ tbnz w0, #7, G_M18406_IG20
;; size=20 bbWeight=4 PerfScore 22.00
-G_M18406_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
+ b G_M18406_IG25
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M18406_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ cmp w22, w21
+ bge G_M18406_IG41
+ ;; size=8 bbWeight=0.50 PerfScore 0.75
+G_M18406_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ cmp w22, w20
+ bhs G_M18406_IG56
ldrh w0, [x24, w22, UXTW #2]
cmp w0, #34
- bne G_M18406_IG32
+ bne G_M18406_IG37
sub w0, w21, #1
cmp w22, w0
- beq G_M18406_IG37
+ beq G_M18406_IG41
add w21, w22, #1
sub w2, w20, w21
cmp w20, w21
- blo G_M18406_IG53
+ blo G_M18406_IG57
sbfiz x0, x21, #1, #32
add x0, x24, x0
; byrRegs +[x0]
@@ -460,7 +481,7 @@ G_M18406_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24
add w1, w22, #1
cmp w0, w1
ccmp w0, #0, nc, ne
- blt G_M18406_IG37
+ blt G_M18406_IG41
add w1, w22, #1
sub w0, w0, w22
sub w22, w0, #1
@@ -468,10 +489,10 @@ G_M18406_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24
add x0, x0, w22, UXTW
mov w2, w20
cmp x0, x2
- bhi G_M18406_IG54
+ bhi G_M18406_IG58
ubfiz x0, x1, #1, #32
add x24, x24, x0
- tbz w22, #31, G_M18406_IG21
+ tbz w22, #31, G_M18406_IG26
movz x1, #8
movk x1, #0xD1FFAB1E LSL #16
movk x1, #0xD1FFAB1E LSL #32
@@ -484,63 +505,63 @@ G_M18406_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24
blr x2
; gcrRegs -[x0]
; gcr arg pop 0
- ;; size=180 bbWeight=0.50 PerfScore 17.75
-G_M18406_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
- cbz w22, G_M18406_IG29
+ ;; size=188 bbWeight=0.50 PerfScore 18.50
+G_M18406_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+ cbz w22, G_M18406_IG34
;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M18406_IG22: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG27: ; bbWeight=0.48, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
ldrh w0, [x24]
cmp w0, #0xD1FFAB1E
- blo G_M18406_IG24
+ blo G_M18406_IG29
...
realworld.run.windows.arm64.checked.mch
-12 (-1.23%) : 2181.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
@@ -8,15 +8,15 @@
; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T07] ( 12, 7 ) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
-; V01 arg1 [V01,T10] ( 6, 4.54) ref -> x19 class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T11] ( 8, 5.54) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V00 this [V00,T04] ( 12, 11.44) ref -> [fp+0x68] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V01 arg1 [V01,T14] ( 6, 4.54) ref -> x20 class-hnd single-def <System.Type[]>
+; V02 loc0 [V02,T12] ( 8, 7.02) ref -> [fp+0x60] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
-; V04 loc2 [V04,T21] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T23] ( 2, 1 ) ref -> x0 class-hnd single-def <System.Reflection.MethodInfo>
; V05 loc3 [V05,T00] ( 11, 17.08) int -> x0
; V06 loc4 [V06,T02] ( 8, 16 ) ref -> x15 class-hnd <System.Type>
-; V07 loc5 [V07,T08] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
-; V08 loc6 [V08,T20] ( 6, 1.83) ref -> x1 class-hnd exact <System.Type[]>
+; V07 loc5 [V07,T09] ( 4, 8 ) ref -> x15 class-hnd exact <System.RuntimeType>
+; V08 loc6 [V08,T18] ( 6, 3.31) ref -> x1 class-hnd exact <System.Type[]>
; V09 loc7 [V09,T01] ( 11, 16.58) int -> x0
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -25,36 +25,36 @@
;* V14 tmp3 [V14 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType>
; V16 tmp5 [V16,T26] ( 2, 0 ) ref -> x2 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
-; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp7 [V18,T17] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
+; V17 tmp6 [V17,T25] ( 3, 0 ) ref -> x20 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V18 tmp7 [V18,T21] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
;* V19 tmp8 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp10 [V21,T22] ( 2, 1 ) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
-; V22 tmp11 [V22 ] ( 4, 2 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
-; V23 tmp12 [V23,T18] ( 2, 2 ) long -> x0 "impAppendStmt"
+; V21 tmp10 [V21,T16] ( 2, 3.96) ref -> x1 class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
+; V22 tmp11 [V22 ] ( 4, 7.92) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
+; V23 tmp12 [V23,T11] ( 2, 7.92) long -> x0 "impAppendStmt"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V27 tmp16 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T14] ( 3, 4 ) ref -> x0 "Single return block return value"
-; V31 FramesRoot [V31,T13] ( 6, 4 ) long -> x20 "Pinvoke FrameListRoot"
-; V32 PInvokeFrame [V32 ] ( 8, 6 ) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp19 [V30,T13] ( 3, 6.96) ref -> x0 "Single return block return value"
+; V31 FramesRoot [V31,T08] ( 6, 9.92) long -> x21 "Pinvoke FrameListRoot"
+; V32 PInvokeFrame [V32 ] ( 8, 11.92) struct (72) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V33 tmp22 [V33 ] ( 0, 0 ) long -> zero-ref "field V24._ptr (fldOffset=0x0)" P-INDEP
-; V34 tmp23 [V34,T23] ( 2, 1 ) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp24 [V35,T19] ( 2, 2 ) long -> x1 "argument with side effect"
-; V36 tmp25 [V36,T15] ( 2, 2 ) ref -> x20 single-def "argument with side effect"
-; V37 tmp26 [V37,T16] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
+; V34 tmp23 [V34,T17] ( 2, 3.96) long -> x1 "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp24 [V35,T22] ( 2, 2 ) long -> x1 "argument with side effect"
+; V36 tmp25 [V36,T19] ( 2, 2 ) ref -> x21 single-def "argument with side effect"
+; V37 tmp26 [V37,T20] ( 2, 2 ) ref -> x1 single-def "argument with side effect"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V39 tmp28 [V39,T27] ( 2, 0 ) ref -> x0 single-def "argument with side effect"
; V40 tmp29 [V40,T28] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
; V41 PSPSym [V41,T24] ( 1, 1 ) long -> [fp+0x78] do-not-enreg[V] "PSPSym"
-; V42 cse0 [V42,T04] ( 10, 12.50) int -> x21 "CSE - aggressive"
-; V43 cse1 [V43,T09] ( 6, 8.54) byref -> x22 hoist multi-def "CSE - aggressive"
-; V44 cse2 [V44,T12] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
-; V45 cse3 [V45,T05] ( 3, 11.88) long -> x14 "CSE - aggressive"
-; V46 cse4 [V46,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V42 cse0 [V42,T05] ( 10, 12.50) int -> x22 "CSE - aggressive"
+; V43 cse1 [V43,T10] ( 6, 8.54) byref -> x23 hoist multi-def "CSE - aggressive"
+; V44 cse2 [V44,T15] ( 4, 4.29) byref -> x2 hoist multi-def "CSE - moderate"
+; V45 cse3 [V45,T06] ( 3, 11.88) long -> x14 "CSE - aggressive"
+; V46 cse4 [V46,T07] ( 3, 11.88) long -> x14 "CSE - aggressive"
;
; Lcl frame size = 112
@@ -71,21 +71,23 @@ G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
str x2, [fp, #0x78] // [V41 PSPSym]
str x0, [fp, #0x68] // [V00 this]
; GC ptr vars +{V00}
- mov x19, x1
+ mov x19, x0
; gcrRegs +[x19]
- ;; size=48 bbWeight=1 PerfScore 10.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov x20, x1
+ ; gcrRegs +[x20]
+ ;; size=52 bbWeight=1 PerfScore 11.00
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000010 {V00}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
add x0, fp, #32 // [V32 PInvokeFrame+0x08]
mov x1, x12
bl CORINFO_HELP_INIT_PINVOKE_FRAME
- mov x20, x0
+ mov x21, x0
mov x1, sp
str x1, [fp, #0x40] // [V32 PInvokeFrame+0x28]
mov x1, fp
str x1, [fp, #0x50] // [V32 PInvokeFrame+0x38]
- cbz x19, G_M59170_IG21
- ldr w21, [x19, #0x08]
- mov w1, w21
+ cbz x20, G_M59170_IG21
+ ldr w22, [x20, #0x08]
+ mov w1, w22
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
movk x0, #0xD1FFAB1E LSL #32
@@ -94,33 +96,28 @@ G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000080 {V00}, gcrefRegs=800
; gcr arg pop 0
str x0, [fp, #0x60] // [V02 loc0]
; GC ptr vars +{V02}
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
- ldr x0, [x1, #0x50]
+ ldr x0, [x19, #0x50]
; gcrRegs -[x0]
bl <unknown method>
- ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x1, [fp, #0x68] // [V00 this]
- ; gcrRegs +[x1]
cbz w0, G_M59170_IG22
mov w0, wzr
- cmp w21, #0
+ cmp w22, #0
ble G_M59170_IG07
- ;; size=96 bbWeight=1 PerfScore 24.50
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- ldr w14, [x2, #0x08]
- cmp w14, w21
+ ;; size=88 bbWeight=1 PerfScore 20.50
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ ldr w14, [x1, #0x08]
+ cmp w14, w22
blt G_M59170_IG06
- add x22, x19, #16
- ; byrRegs +[x22]
+ add x23, x20, #16
+ ; byrRegs +[x23]
;; size=20 bbWeight=0.50 PerfScore 3.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000 {x22}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=80002 {x1 x19}, byrefRegs=800000 {x23}, byref, isz
+ ; gcrRegs -[x20]
mov w14, w0
- ldr x15, [x22, x14, LSL #3]
+ ldr x15, [x23, x14, LSL #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x12, [x15]
@@ -129,7 +126,7 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
movk xip0, #0xD1FFAB1E LSL #32
cmp x12, xip0
bne G_M59170_IG12
- add x12, x2, #16
+ add x12, x1, #16
; byrRegs +[x12]
add x14, x12, x14, LSL #3
; byrRegs +[x14]
@@ -137,20 +134,20 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0006 {x1 x2}, byrefRegs=400000
; gcrRegs -[x15]
; byrRegs -[x12 x14]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG04
;; size=60 bbWeight=3.96 PerfScore 59.40
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0006 {x1 x2}, byrefRegs=0000 {}, byref
- ; byrRegs -[x22]
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref
+ ; byrRegs -[x23]
b G_M59170_IG07
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x2] +[x19]
- ldr x2, [fp, #0x60] // [V02 loc0]
- ; gcrRegs +[x2]
- add x22, x19, #16
- ; byrRegs +[x22]
- ldr x15, [x22, w0, UXTW #3]
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x1] +[x20]
+ ldr x1, [fp, #0x60] // [V02 loc0]
+ ; gcrRegs +[x1]
+ add x23, x20, #16
+ ; byrRegs +[x23]
+ ldr x15, [x23, w0, UXTW #3]
; gcrRegs +[x15]
cbz x15, G_M59170_IG23
ldr x14, [x15]
@@ -159,30 +156,30 @@ G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=80002 {x1 x19}, byrefRegs=0000
movk x12, #0xD1FFAB1E LSL #32
cmp x14, x12
bne G_M59170_IG12
- ldr w14, [x2, #0x08]
+ ldr w14, [x1, #0x08]
cmp w0, w14
bhs G_M59170_IG20
- add x14, x2, #16
+ add x14, x1, #16
; byrRegs +[x14]
add x14, x14, x0, LSL #3
bl CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[x2 x15]
- ; byrRegs -[x14 x22]
+ ; gcrRegs -[x1 x15]
+ ; byrRegs -[x14 x23]
add w0, w0, #1
- cmp w21, w0
+ cmp w22, w0
bgt G_M59170_IG06
;; size=76 bbWeight=0.04 PerfScore 0.86
-G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+G_M59170_IG07: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
str xzr, [fp, #0x70] // [V22 tmp11]
- mov x0, x1
+ mov x0, x19
; gcrRegs +[x0]
- movz x3, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
- movk x3, #0xD1FFAB1E LSL #16
- movk x3, #0xD1FFAB1E LSL #32
- ldr x3, [x3]
- blr x3
- ; gcrRegs -[x0-x1]
+ movz x2, #0xD1FFAB1E // code for System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
add x1, fp, #112 // [V22 tmp11]
mov w2, #1
@@ -194,23 +191,23 @@ G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b
str x3, [fp, #0x48] // [V32 PInvokeFrame+0x30]
add x3, fp, #32 // [V32 PInvokeFrame+0x08]
; byrRegs +[x3]
- str x3, [x20, #0x10]
- strb wzr, [x20, #0x0C]
- ;; size=72 bbWeight=0.50 PerfScore 7.25
-G_M59170_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ str x3, [x21, #0x10]
+ strb wzr, [x21, #0x0C]
...
-24 (-0.40%) : 21933.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:BetterFunctionMemberSystem.__Canon:int:this (FullOpts)
@@ -28,7 +28,7 @@
; V17 loc10 [V17 ] ( 5, 5 ) int -> [fp+0x218] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V18 loc11 [V18,T167] ( 3, 3 ) ubyte -> x0 single-def
; V19 loc12 [V19,T168] ( 3, 3 ) ubyte -> x2 single-def
-; V20 loc13 [V20,T169] ( 3, 3 ) int -> x22 single-def
+; V20 loc13 [V20,T169] ( 3, 3 ) int -> x24 single-def
; V21 loc14 [V21,T170] ( 3, 3 ) int -> x0 single-def
; V22 loc15 [V22,T34] ( 7, 28 ) ref -> [fp+0x70] class-hnd spill-single-def <Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol>
;* V23 loc16 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>
@@ -1789,22 +1789,20 @@ G_M42452_IG91: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x1
bne G_M42452_IG92
cmp w3, #1
beq G_M42452_IG160
- ldr w3, [fp, #0xE0] // [V361 tmp315]
cmp w3, #2
bne G_M42452_IG93
ldr w0, [fp, #0xD1FFAB1E] // [V14 loc7]
ldr w2, [fp, #0xD1FFAB1E] // [V15 loc8]
cmp w0, w2
bgt G_M42452_IG162
- ldr w1, [fp, #0xE4] // [V360 tmp314]
- ldp x20, x19, [fp, #0x78] // [V04 arg3], [V03 arg2]
ldr w0, [fp, #0xD1FFAB1E] // [V14 loc7]
ldr w2, [fp, #0xD1FFAB1E] // [V15 loc8]
cmp w0, w2
blt G_M42452_IG160
ldr w3, [fp, #0xE0] // [V361 tmp315]
+ ldp x20, x19, [fp, #0x78] // [V04 arg3], [V03 arg2]
b G_M42452_IG93
- ;; size=96 bbWeight=1 PerfScore 31.50
+ ;; size=88 bbWeight=1 PerfScore 27.50
G_M42452_IG92: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref
ldr w0, [fp, #0xD1FFAB1E] // [V14 loc7]
ldr x2, [x20, #0x08]
@@ -1815,14 +1813,9 @@ G_M42452_IG92: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x1
cset x0, eq
b G_M42452_IG94
;; size=24 bbWeight=1 PerfScore 10.00
-G_M42452_IG93: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x20]
- ; byrRegs -[x19]
+G_M42452_IG93: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref
mov w0, #1
- ldp x20, x19, [fp, #0x78] // [V04 arg3], [V03 arg2]
- ; gcrRegs +[x20]
- ; byrRegs +[x19]
- ;; size=8 bbWeight=1 PerfScore 3.50
+ ;; size=4 bbWeight=1 PerfScore 0.50
G_M42452_IG94: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref, isz
uxtb w0, w0
cmp w3, #2
@@ -1853,14 +1846,12 @@ G_M42452_IG97: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x1
stp xzr, xzr, [fp, #0xD1FFAB1E]
stp xzr, xzr, [fp, #0xD1FFAB1E]
;; size=28 bbWeight=1 PerfScore 5.50
-G_M42452_IG98: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
- ; gcrRegs -[x20]
- ; byrRegs -[x19]
+G_M42452_IG98: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref
stp xzr, xzr, [fp, #0xD1FFAB1E]
stp xzr, xzr, [fp, #0xD1FFAB1E]
stp xzr, xzr, [fp, #0xD1FFAB1E]
;; size=12 bbWeight=1 PerfScore 3.00
-G_M42452_IG99: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz
+G_M42452_IG99: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x19 x22}, byref, isz
ldr x2, [fp, #0x88] // [V02 arg1]
; byrRegs +[x2]
ldr x0, [x2, #0x08]
@@ -1879,8 +1870,6 @@ G_M42452_IG99: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, b
; gcr arg pop 0
mov x21, x0
; gcrRegs +[x21]
- ldr x19, [fp, #0x80] // [V03 arg2]
- ; byrRegs +[x19]
ldr x0, [x19, #0x08]
ldr x1, [x0]
ldr x1, [x1, #0x68]
@@ -1896,14 +1885,12 @@ G_M42452_IG99: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, b
mov x23, x0
; gcrRegs +[x23]
mov w28, wzr
- ldr x20, [fp, #0x78] // [V04 arg3]
- ; gcrRegs +[x20]
ldr x0, [x20, #0x08]
ldr w0, [x0, #0x10]
; gcrRegs -[x0]
cmp w0, #0
ble G_M42452_IG121
- ;; size=120 bbWeight=1 PerfScore 52.00
+ ;; size=112 bbWeight=1 PerfScore 48.00
G_M42452_IG100: ; bbWeight=8, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=480000 {x19 x22}, byref, isz
mov x0, x20
; gcrRegs +[x0]
@@ -2239,10 +2226,9 @@ G_M42452_IG121: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=480000 {x
sxtw w24, w0
cmp w24, #2
beq G_M42452_IG152
- sxtw w22, w24
- str w22, [fp, #0xD1FFAB1E] // [V42 loc35]
+ str w24, [fp, #0xD1FFAB1E] // [V42 loc35]
b G_M42452_IG153
- ;; size=56 bbWeight=1 PerfScore 11.50
+ ;; size=52 bbWeight=1 PerfScore 11.00
G_M42452_IG122: ; bbWeight=0, gcrefRegs=100000 {x20}, byrefRegs=80000 {x19}, byref
movz x0, #0xD1FFAB1E
movk x0, #0xD1FFAB1E LSL #16
@@ -2753,7 +2739,7 @@ G_M42452_IG159: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x0]
; byrRegs -[x2]
; gcr arg pop 0
- sxtw w22, w0
+ sxtw w24, w0
ldr x19, [fp, #0x80] // [V03 arg2]
; byrRegs +[x19]
ldr x0, [x19, #0x08]
@@ -2765,9 +2751,9 @@ G_M42452_IG159: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
blr x1
; gcrRegs -[x0]
; gcr arg pop 0
- cmp w22, w0
+ cmp w24, w0
beq G_M42452_IG164
- cmp w22, w0
+ cmp w24, w0
blt G_M42452_IG162
;; size=80 bbWeight=1 PerfScore 26.50
G_M42452_IG160: ; bbWeight=1, gcVars=000000000000000000000000000000000000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
@@ -2854,8 +2840,8 @@ G_M42452_IG168: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=80000 {x1
b G_M42452_IG170
;; size=44 bbWeight=1 PerfScore 13.50
G_M42452_IG169: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ldr w22, [fp, #0xD1FFAB1E] // [V42 loc35]
- sxtw w0, w22
+ ldr w24, [fp, #0xD1FFAB1E] // [V42 loc35]
+ sxtw w0, w24
;; size=8 bbWeight=1 PerfScore 2.50
G_M42452_IG170: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
ldp fp, lr, [sp, #0x30]
@@ -2955,7 +2941,7 @@ RWD12 dd G_M42452_IG145 - G_M42452_IG02
dd G_M42452_IG147 - G_M42452_IG02
-; Total bytes of code 5980, prolog size 124, PerfScore 6115.54, instruction count 1495, allocated bytes for code 5980 (MethodHash=d3455a2b) for method 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)
+; Total bytes of code 5956, prolog size 124, PerfScore 6104.04, instruction count 1489, allocated bytes for code 5956 (MethodHash=d3455a2b) for method 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)
; ============================================================
Unwind Info:
@@ -2966,7 +2952,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 1443 (0x005a3) Actual length = 5772 (0x00168c)
+ Function Length : 1437 (0x0059d) Actual length = 5748 (0x001674)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
-44 (-0.40%) : 31221.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
@@ -11,23 +11,23 @@
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.DefaultBinder>
; V01 arg1 [V01,T116] ( 3, 3 ) int -> x22 single-def
; V02 arg2 [V02,T106] ( 5, 5 ) ref -> x2 class-hnd single-def <System.Reflection.MethodBase[]>
-; V03 arg3 [V03,T02] ( 80,143.50) byref -> x19 single-def
+; V03 arg3 [V03,T02] ( 80,149.94) byref -> x19 single-def
;* V04 arg4 [V04 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Reflection.ParameterModifier[]>
;* V05 arg5 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.Globalization.CultureInfo>
; V06 arg6 [V06,T91] ( 8, 9 ) ref -> x20 class-hnd single-def <System.String[]>
-; V07 arg7 [V07,T110] ( 5, 4 ) byref -> x21 single-def
-; V08 loc0 [V08,T32] ( 27, 32.02) ref -> x23 class-hnd single-def <System.Reflection.MethodBase[]>
-; V09 loc1 [V09,T01] (134,221.02) int -> [fp+0x9C]
-; V10 loc2 [V10,T00] (112,442.70) int -> [fp+0x98]
+; V07 arg7 [V07,T111] ( 5, 4 ) byref -> x21 single-def
+; V08 loc0 [V08,T32] ( 27, 33.50) ref -> x23 class-hnd single-def <System.Reflection.MethodBase[]>
+; V09 loc1 [V09,T01] (134,222.00) int -> [fp+0x9C]
+; V10 loc2 [V10,T00] (112,445.70) int -> [fp+0x98]
; V11 loc3 [V11,T17] ( 49, 54.15) ref -> x25 class-hnd exact single-def <<unknown class>>
-; V12 loc4 [V12,T30] ( 41, 35.29) ref -> x27 class-hnd exact single-def <<unknown class>>
-; V13 loc5 [V13,T15] ( 23, 61 ) ref -> x28 class-hnd exact single-def <<unknown class>>
-; V14 loc6 [V14,T38] ( 30, 28.50) int -> registers
+; V12 loc4 [V12,T30] ( 41, 36.27) ref -> x27 class-hnd exact single-def <<unknown class>>
+; V13 loc5 [V13,T15] ( 23, 61.98) ref -> x28 class-hnd exact single-def <<unknown class>>
+; V14 loc6 [V14,T38] ( 30, 29.48) int -> registers
; V15 loc7 [V15,T51] ( 7, 17.00) ubyte -> x22
-; V16 loc8 [V16,T09] ( 30, 89 ) ref -> [fp+0x50] class-hnd <System.Type>
-; V17 loc9 [V17,T29] ( 33, 35.50) int -> registers
-; V18 loc10 [V18,T112] ( 6, 5 ) ubyte -> [fp+0x94]
-; V19 loc11 [V19,T128] ( 7, 3 ) ref -> x23 class-hnd single-def <System.Reflection.MethodBase>
+; V16 loc8 [V16,T09] ( 30, 92 ) ref -> [fp+0x50] class-hnd <System.Type>
+; V17 loc9 [V17,T29] ( 33, 38.46) int -> registers
+; V18 loc10 [V18,T109] ( 6, 6.48) ubyte -> [fp+0x94]
+; V19 loc11 [V19,T119] ( 7, 4.48) ref -> x23 class-hnd single-def <System.Reflection.MethodBase>
;* V20 loc12 [V20 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V21 loc13 [V21 ] ( 0, 0 ) struct (16) zero-ref multireg-arg multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
;* V22 loc14 [V22 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
@@ -37,17 +37,17 @@
; V26 loc18 [V26,T49] ( 24, 20.08) int -> [fp+0x88]
; V27 loc19 [V27,T04] ( 49,105.27) int -> [fp+0x84]
;* V28 loc20 [V28 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V29 loc21 [V29,T124] ( 7, 3.50) ref -> x25 class-hnd exact single-def <System.Object[]>
-; V30 loc22 [V30,T119] ( 8, 4 ) int -> x21
-; V31 loc23 [V31,T105] ( 12, 7.31) ref -> x26 class-hnd exact single-def <System.Object[]>
+; V29 loc21 [V29,T125] ( 7, 3.50) ref -> x25 class-hnd exact single-def <System.Object[]>
+; V30 loc22 [V30,T120] ( 8, 4 ) int -> x21
+; V31 loc23 [V31,T95] ( 12, 8.79) ref -> x26 class-hnd exact single-def <System.Object[]>
; V32 loc24 [V32,T66] ( 8, 12 ) int -> x3
-; V33 loc25 [V33,T125] ( 7, 3.50) ref -> x28 class-hnd exact single-def <System.Object[]>
+; V33 loc25 [V33,T126] ( 7, 3.50) ref -> x28 class-hnd exact single-def <System.Object[]>
; V34 loc26 [V34,T117] ( 9, 4.50) int -> x25
; V35 loc27 [V35,T92] ( 6, 10 ) int -> x0
-; V36 loc28 [V36,T126] ( 7, 3.50) ref -> x26 class-hnd exact single-def <System.Object[]>
-; V37 loc29 [V37,T120] ( 8, 4 ) int -> x21
+; V36 loc28 [V36,T127] ( 7, 3.50) ref -> x26 class-hnd exact single-def <System.Object[]>
+; V37 loc29 [V37,T121] ( 8, 4 ) int -> x21
; V38 loc30 [V38,T50] ( 10, 19 ) ref -> x24 class-hnd exact single-def <System.Object[]>
-; V39 loc31 [V39,T127] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.Object[]>
+; V39 loc31 [V39,T128] ( 7, 3.50) ref -> x20 class-hnd exact single-def <System.Object[]>
; V40 loc32 [V40,T118] ( 9, 4.50) int -> x21
;# V41 OutArgs [V41 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V42 tmp1 [V42,T177] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -56,25 +56,25 @@
;* V45 tmp4 [V45 ] ( 0, 0 ) int -> zero-ref
;* V46 tmp5 [V46 ] ( 0, 0 ) ref -> zero-ref
;* V47 tmp6 [V47 ] ( 0, 0 ) int -> zero-ref
-; V48 tmp7 [V48,T95] ( 6, 8 ) int -> x3
-; V49 tmp8 [V49,T103] ( 2, 8 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
+; V48 tmp7 [V48,T96] ( 6, 8 ) int -> x3
+; V49 tmp8 [V49,T104] ( 2, 8 ) ref -> x15 class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>>
;* V50 tmp9 [V50 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
-; V51 tmp10 [V51,T109] ( 6, 6 ) int -> x2
-; V52 tmp11 [V52,T96] ( 4, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <int[]>
+; V51 tmp10 [V51,T110] ( 6, 6 ) int -> x2
+; V52 tmp11 [V52,T97] ( 4, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <int[]>
; V53 tmp12 [V53,T52] ( 8, 16 ) int -> x4 "impSpillLclRefs"
-; V54 tmp13 [V54,T97] ( 4, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
+; V54 tmp13 [V54,T98] ( 4, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
; V55 tmp14 [V55,T24] ( 6, 48 ) ref -> x0 class-hnd "dup spill" <System.Object>
;* V56 tmp15 [V56 ] ( 0, 0 ) ref -> zero-ref
; V57 tmp16 [V57,T40] ( 6, 24 ) ref -> x0
-; V58 tmp17 [V58,T98] ( 4, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <int[]>
+; V58 tmp17 [V58,T99] ( 4, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <int[]>
; V59 tmp18 [V59,T53] ( 8, 16 ) int -> x26 "impSpillLclRefs"
-; V60 tmp19 [V60,T99] ( 4, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
+; V60 tmp19 [V60,T100] ( 4, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Reflection.MethodBase>
;* V61 tmp20 [V61 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.ReadOnlySpan`1[System.Reflection.ParameterInfo]>
; V62 tmp21 [V62,T144] ( 2, 2 ) ref -> x15 class-hnd single-def "Strict ordering of exceptions for Array store" <System.Array>
; V63 tmp22 [V63,T145] ( 2, 2 ) ref -> x27 class-hnd single-def "bubbling QMark2" <System.Object>
; V64 tmp23 [V64,T140] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
; V65 tmp24 [V65,T170] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V66 tmp25 [V66,T122] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <System.Array>
+; V66 tmp25 [V66,T123] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <System.Array>
; V67 tmp26 [V67,T61] ( 2, 16 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V68 tmp27 [V68,T62] ( 2, 16 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V69 tmp28 [V69,T146] ( 2, 2 ) ref -> x15 class-hnd single-def "Strict ordering of exceptions for Array store" <System.Object>
@@ -89,10 +89,10 @@
; V78 tmp37 [V78,T150] ( 2, 2 ) ref -> x22 class-hnd single-def "bubbling QMark2" <System.Object>
; V79 tmp38 [V79,T142] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
; V80 tmp39 [V80,T172] ( 3, 1.25) long -> x3 "fgMakeTemp is creating a new local variable"
-; V81 tmp40 [V81,T123] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <System.Array>
-; V82 tmp41 [V82,T100] ( 4, 8 ) ref -> x0 class-hnd "Strict ordering of exceptions for Array store" <System.Object>
-; V83 tmp42 [V83,T101] ( 4, 8 ) ref -> x0 class-hnd "Strict ordering of exceptions for Array store" <System.Array>
-; V84 tmp43 [V84,T102] ( 4, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Object>
+; V81 tmp40 [V81,T124] ( 5, 3.75) ref -> x2 class-hnd "spilling QMark2" <System.Array>
+; V82 tmp41 [V82,T101] ( 4, 8 ) ref -> x0 class-hnd "Strict ordering of exceptions for Array store" <System.Object>
+; V83 tmp42 [V83,T102] ( 4, 8 ) ref -> x0 class-hnd "Strict ordering of exceptions for Array store" <System.Array>
+; V84 tmp43 [V84,T103] ( 4, 8 ) ref -> x15 class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V85 tmp44 [V85,T151] ( 2, 2 ) ref -> x15 class-hnd single-def "Strict ordering of exceptions for Array store" <System.Array>
; V86 tmp45 [V86,T143] ( 3, 2.25) ref -> x1 single-def "CASTCLASS eval op1"
; V87 tmp46 [V87,T173] ( 3, 1.25) long -> x2 "fgMakeTemp is creating a new local variable"
@@ -126,7 +126,7 @@
; V115 tmp74 [V115,T132] ( 3, 3 ) byref -> x25 single-def "Inlining Arg"
; V116 tmp75 [V116,T115] ( 3, 5 ) byref -> x26 "field V20._reference (fldOffset=0x0)" P-INDEP
; V117 tmp76 [V117,T64] ( 12, 13 ) int -> x21 "field V20._length (fldOffset=0x8)" P-INDEP
-; V118 tmp77 [V118,T111] ( 4, 6 ) byref -> x28 "field V21._reference (fldOffset=0x0)" P-INDEP
+; V118 tmp77 [V118,T112] ( 4, 6 ) byref -> x28 "field V21._reference (fldOffset=0x0)" P-INDEP
; V119 tmp78 [V119,T37] ( 14, 30.99) int -> [fp+0x80] "field V21._length (fldOffset=0x8)" P-INDEP
; V120 tmp79 [V120,T13] ( 32, 64 ) byref -> [fp+0x40] "field V22._reference (fldOffset=0x0)" P-INDEP
; V121 tmp80 [V121,T16] ( 38, 56.42) int -> [fp+0x7C] "field V22._length (fldOffset=0x8)" P-INDEP
@@ -144,7 +144,7 @@
; V133 tmp92 [V133,T54] ( 4, 16 ) ref -> x0 "argument with side effect"
; V134 tmp93 [V134,T11] ( 8, 64.64) ref -> x5 "arr expr"
; V135 tmp94 [V135,T43] ( 3, 24 ) ref -> x0 "arr expr"
-;* V136 tmp95 [V136,T121] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V136 tmp95 [V136,T122] ( 0, 0 ) ref -> zero-ref "arr expr"
; V137 tmp96 [V137,T67] ( 6, 12 ) ref -> x0 "argument with side effect"
; V138 tmp97 [V138,T68] ( 6, 12 ) ref -> x0 "argument with side effect"
; V139 tmp98 [V139,T69] ( 6, 12 ) ref -> x0 "argument with side effect"
@@ -215,13 +215,13 @@
; V204 cse5 [V204,T138] ( 3, 2.97) ref -> x0 "CSE - conservative"
; V205 cse6 [V205,T06] ( 34, 96.08) int -> [fp+0x78] multi-def "CSE - aggressive"
; V206 cse7 [V206,T05] ( 34, 96.08) byref -> [fp+0x38] multi-def "CSE - aggressive"
-; V207 cse8 [V207,T39] ( 28, 24.41) int -> x24 "CSE - moderate"
+; V207 cse8 [V207,T39] ( 28, 26.87) int -> x24 "CSE - moderate"
; V208 cse9 [V208,T31] ( 10, 33.66) int -> [fp+0x74] multi-def "CSE - moderate"
; V209 cse10 [V209,T36] ( 4, 31.36) long -> [fp+0x68] spill-single-def "CSE - moderate"
; V210 cse11 [V210,T48] ( 40, 20.54) int -> [fp+0x64] hoist multi-def "CSE - moderate"
; V211 cse12 [V211,T10] ( 9, 70.57) long -> [fp+0x58] spill-single-def "CSE - aggressive"
; V212 rat0 [V212,T14] ( 2, 63.36) ref -> [fp+0x30] spill-single-def "Spilling to split statement for tree"
-; V213 rat1 [V213,T104] ( 2, 7.92) ref -> [fp+0x28] spill-single-def "Spilling to split statement for tree"
+; V213 rat1 [V213,T105] ( 2, 7.92) ref -> [fp+0x28] spill-single-def "Spilling to split statement for tree"
; V214 rat2 [V214,T174] ( 2, 0.64) ref -> [fp+0x20] spill-single-def "Spilling to split statement for tree"
; V215 rat3 [V215,T176] ( 2, 0.08) ref -> [fp+0x18] spill-single-def "Spilling to split statement for tree"
;
@@ -245,9 +245,9 @@ G_M46529_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=44 bbWeight=1 PerfScore 8.50
G_M46529_IG02: ; bbWeight=1, gcrefRegs=100004 {x2 x20}, byrefRegs=280000 {x19 x21}, byref, isz
; gcrRegs +[x2]
- cbz x2, G_M46529_IG219
+ cbz x2, G_M46529_IG217
ldr w0, [x2, #0x08]
- cbz w0, G_M46529_IG219
+ cbz w0, G_M46529_IG217
mov x0, x2
; gcrRegs +[x0]
movz x1, #0xD1FFAB1E // code for System.Object:MemberwiseClone():System.Object:this
@@ -273,13 +273,13 @@ G_M46529_IG02: ; bbWeight=1, gcrefRegs=100004 {x2 x20}, byrefRegs=280000
; gcrRegs +[x25]
mov w26, wzr
cmp w24, #0
- ble G_M46529_IG27
+ ble G_M46529_IG26
;; size=84 bbWeight=1 PerfScore 21.00
G_M46529_IG03: ; bbWeight=0.50, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=280000 {x19 x21}, byref, isz
; gcrRegs -[x0]
ldr w27, [x25, #0x08]
cmp w27, w24
- blt G_M46529_IG17
+ blt G_M46529_IG16
;; size=12 bbWeight=0.50 PerfScore 2.25
G_M46529_IG04: ; bbWeight=3.96, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=280000 {x19 x21}, byref, isz
add x0, x23, #16
@@ -332,14 +332,14 @@ G_M46529_IG07: ; bbWeight=3.96, gcrefRegs=2900000 {x20 x23 x25}, byrefReg
bl CORINFO_HELP_ARRADDR_ST
; gcrRegs -[x0 x2]
; gcr arg pop 0
- cbnz x20, G_M46529_IG14
+ cbnz x20, G_M46529_IG13
;; size=40 bbWeight=3.96 PerfScore 25.74
G_M46529_IG08: ; bbWeight=1.98, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=280000 {x19 x21}, byref, isz
; byrRegs -[x28]
mov w28, wzr
ldr w4, [fp, #0x80] // [V119 tmp78]
cmp w4, #0
- ble G_M46529_IG15
+ ble G_M46529_IG14
;; size=16 bbWeight=1.98 PerfScore 7.92
G_M46529_IG09: ; bbWeight=0.99, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=280000 {x19 x21}, byref, isz
cmp w27, w26
@@ -365,11 +365,11 @@ G_M46529_IG10: ; bbWeight=15.68, gcrefRegs=2900001 {x0 x20 x23 x25}, byre
cmp w28, w4
blt G_M46529_IG10
;; size=24 bbWeight=15.68 PerfScore 62.73
-G_M46529_IG11: ; bbWeight=1.98, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=280000 {x19 x21}, byref
+G_M46529_IG11: ; bbWeight=7.84, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=280000 {x19 x21}, byref
; gcrRegs -[x0]
; byrRegs -[x5]
- b G_M46529_IG15
- ;; size=4 bbWeight=1.98 PerfScore 1.98
+ b G_M46529_IG14
+ ;; size=4 bbWeight=7.84 PerfScore 7.84
G_M46529_IG12: ; bbWeight=0.16, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=280000 {x19 x21}, byref, isz
add x0, x25, #16
; byrRegs +[x0]
@@ -381,21 +381,18 @@ G_M46529_IG12: ; bbWeight=0.16, gcrefRegs=2900000 {x20 x23 x25}, byrefReg
ldr w0, [x5, #0x08]
; gcrRegs -[x0]
cmp w28, w0
- bhs G_M46529_IG218
+ bhs G_M46529_IG216
add x0, x5, #16
; byrRegs +[x0]
str w28, [x0, w28, UXTW #2]
add w28, w28, #1
cmp w28, w4
blt G_M46529_IG12
- ;; size=44 bbWeight=0.16 PerfScore 1.90
-G_M46529_IG13: ; bbWeight=1.98, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=280000 {x19 x21}, byref
+ b G_M46529_IG14
+ ;; size=48 bbWeight=0.16 PerfScore 2.06
+G_M46529_IG13: ; bbWeight=1.98, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
; gcrRegs -[x5]
- ; byrRegs -[x0]
- b G_M46529_IG15
- ;; size=4 bbWeight=1.98 PerfScore 1.98
-G_M46529_IG14: ; bbWeight=1.98, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=10280000 {x19 x21 x28}, byref, isz
- ; byrRegs +[x28]
+ ; byrRegs -[x0] +[x28]
ldr w4, [fp, #0x80] // [V119 tmp78]
add x0, x25, #16
; byrRegs +[x0]
@@ -415,21 +412,21 @@ G_M46529_IG14: ; bbWeight=1.98, gcrefRegs=2900000 {x20 x23 x25}, byrefReg
; gcrRegs -[x0 x3]
; byrRegs -[x1 x28]
; gcr arg pop 0
- cbnz w0, G_M46529_IG15
+ cbnz w0, G_M46529_IG14
add x0, x23, #16
; byrRegs +[x0]
str xzr, [x0, w26, UXTW #3]
;; size=56 bbWeight=1.98 PerfScore 29.70
-G_M46529_IG15: ; bbWeight=3.96, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=280000 {x19 x21}, byref, isz
+G_M46529_IG14: ; bbWeight=3.96, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=280000 {x19 x21}, byref, isz
; byrRegs -[x0]
add w26, w26, #1
cmp w24, w26
bgt G_M46529_IG04
;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M46529_IG16: ; bbWeight=1, gcrefRegs=2900000 {x20 x23 x25}, byrefRegs=280000 {x19 x21}, byref
- b G_M46529_IG27
...
+8 (+0.79%) : 14946.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
@@ -16,8 +16,8 @@
; V05 arg5 [V05,T09] ( 8, 5.02) ref -> x23 class-hnd single-def <Microsoft.ML.Data.VBuffer`1[float][]>
; V06 arg6 [V06,T10] ( 8, 5.02) ref -> x24 class-hnd single-def <float[]>
; V07 arg7 [V07,T16] ( 4, 3 ) ubyte -> x27 single-def
-; V08 arg8 [V08,T25] ( 1, 0.50) ubyte -> [fp+0xA8] single-def
-; V09 arg9 [V09,T23] ( 3, 1.50) byref -> x28 single-def
+; V08 arg8 [V08,T23] ( 1, 1.98) ubyte -> x28 single-def
+; V09 arg9 [V09,T24] ( 3, 1.50) byref -> [fp+0xB0] single-def
; V10 arg10 [V10,T14] ( 7, 5 ) byref -> x26 single-def
; V11 loc0 [V11,T29] ( 3, 1.50) float -> [fp+0x3C] spill-single-def
; V12 loc1 [V12,T26] ( 9, 6.50) float -> d8
@@ -43,7 +43,7 @@
; V32 tmp12 [V32,T03] ( 6, 12 ) int -> registers "MD array shared temp"
; V33 cse0 [V33,T05] ( 3, 9.90) ref -> x4 "CSE - aggressive"
; V34 cse1 [V34,T12] ( 3, 5.94) int -> x0 "CSE - aggressive"
-; V35 cse2 [V35,T24] ( 3, 1.50) int -> x4 "CSE - moderate"
+; V35 cse2 [V35,T25] ( 3, 1.50) int -> x4 "CSE - moderate"
; V36 cse3 [V36,T13] ( 3, 5.94) long -> [fp+0x18] spill-single-def "CSE - aggressive"
;
; Lcl frame size = 56
@@ -73,23 +73,24 @@ G_M52104_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x24, x6
; gcrRegs +[x24]
mov w27, w7
- ldp x28, x26, [fp, #0xB0] // [V09 arg9], [V10 arg10]
- ; byrRegs +[x26 x28]
- ;; size=84 bbWeight=1 PerfScore 18.00
-G_M52104_IG02: ; bbWeight=1, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+ ldr w28, [fp, #0xA8] // [V08 arg8]
+ ldr x26, [fp, #0xB8] // [V10 arg10]
+ ; byrRegs +[x26]
+ ;; size=88 bbWeight=1 PerfScore 19.00
+G_M52104_IG02: ; bbWeight=1, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
movn w0, #0
str w0, [x26]
cmn w21, #1
- beq G_M52104_IG27
+ beq G_M52104_IG28
;; size=16 bbWeight=1 PerfScore 3.00
-G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
mov x0, x25
; byrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.ML.Numeric.VectorUtils:NormSquared(byref):float
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
+ movz x2, #0xD1FFAB1E // code for Microsoft.ML.Numeric.VectorUtils:NormSquared(byref):float
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
; byrRegs -[x0]
; gcr arg pop 0
str s0, [fp, #0x3C] // [V11 loc0]
@@ -97,7 +98,7 @@ G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
cmp w21, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -108,7 +109,7 @@ G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
; gcrRegs +[x1]
ldr w0, [x1, #0x08]
cmp w21, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
add x1, x1, #16
; gcrRegs -[x1]
; byrRegs +[x1]
@@ -121,11 +122,11 @@ G_M52104_IG03: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
movi v17.16b, #0
b G_M52104_IG05
;; size=108 bbWeight=0.50 PerfScore 20.75
-G_M52104_IG04: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+G_M52104_IG04: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
; byrRegs -[x1]
fmov s17, s16
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M52104_IG05: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG05: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
fcvt d16, s17
fsqrt d16, d16
fcvt s9, d16
@@ -133,7 +134,7 @@ G_M52104_IG05: ; bbWeight=0.50, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
cmp w22, w20
bge G_M52104_IG19
;; size=24 bbWeight=0.50 PerfScore 14.50
-G_M52104_IG06: ; bbWeight=0.25, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG06: ; bbWeight=0.25, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
cbz x23, G_M52104_IG15
cbz x24, G_M52104_IG15
orr w1, w22, w20
@@ -145,12 +146,12 @@ G_M52104_IG06: ; bbWeight=0.25, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
cmp w1, w20
blt G_M52104_IG15
;; size=40 bbWeight=0.25 PerfScore 3.12
-G_M52104_IG07: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG07: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
ldr x4, [x19, #0x20]
; gcrRegs +[x4]
cbz x4, G_M52104_IG14
;; size=8 bbWeight=3.96 PerfScore 15.84
-G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
cmn w2, #1
beq G_M52104_IG13
sub w1, w3, w22
@@ -158,11 +159,11 @@ G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byref
sub w5, w1, w0
ldp w1, w0, [x4, #0x10]
cmp w5, w1
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
ldr w1, [x4, #0x1C]
sub w6, w2, w1
cmp w6, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
madd w1, w5, w0, w6
ubfiz x1, x1, #2, #32
add x1, x1, #32
@@ -171,7 +172,7 @@ G_M52104_IG08: ; bbWeight=1.98, gcrefRegs=1880010 {x4 x19 x23 x24}, byref
fcmp s16, s9
bgt G_M52104_IG10
;; size=76 bbWeight=1.98 PerfScore 52.47
-G_M52104_IG09: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG09: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x4]
str w3, [fp, #0x34] // [V16 loc5]
mov w4, w3
@@ -204,39 +205,39 @@ G_M52104_IG09: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
str w2, [x26]
mov w3, w2
;; size=100 bbWeight=1.98 PerfScore 59.40
-G_M52104_IG10: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG10: ; bbWeight=3.96, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; byrRegs -[x1]
add w3, w3, #1
cmp w3, w20
ldr w2, [fp, #0x38] // [V13 loc2]
blt G_M52104_IG07
;; size=16 bbWeight=3.96 PerfScore 15.84
-G_M52104_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=14000000 {x26 x28}, byref
+G_M52104_IG11: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=4000000 {x26}, byref
; gcrRegs -[x23-x24]
; byrRegs -[x25]
b G_M52104_IG19
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M52104_IG12: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M52104_IG12: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
; gcrRegs +[x23-x24]
; byrRegs +[x25]
ldr w3, [fp, #0x34] // [V16 loc5]
b G_M52104_IG10
;; size=8 bbWeight=0.99 PerfScore 2.97
-G_M52104_IG13: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+G_M52104_IG13: ; bbWeight=0.99, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
b G_M52104_IG09
;; size=4 bbWeight=0.99 PerfScore 0.99
-G_M52104_IG14: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref
+G_M52104_IG14: ; bbWeight=1.98, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref
b G_M52104_IG09
;; size=4 bbWeight=1.98 PerfScore 1.98
-G_M52104_IG15: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG15: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
ldr x1, [x19, #0x20]
; gcrRegs +[x1]
- cbz x1, G_M52104_IG24
+ cbz x1, G_M52104_IG25
;; size=8 bbWeight=0.04 PerfScore 0.16
-G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x1]
cmn w2, #1
- beq G_M52104_IG23
+ beq G_M52104_IG24
ldr x4, [x19, #0x20]
; gcrRegs +[x4]
sub w1, w3, w22
@@ -244,11 +245,11 @@ G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
sub w1, w1, w0
ldp w0, w6, [x4, #0x10]
cmp w1, w0
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
sub w0, w2, w5
ldr w5, [x4, #0x14]
cmp w0, w5
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
madd w1, w1, w6, w0
ubfiz x1, x1, #2, #32
add x1, x1, #32
@@ -257,11 +258,11 @@ G_M52104_IG16: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
fcmp s16, s9
bgt G_M52104_IG18
;; size=80 bbWeight=0.02 PerfScore 0.59
-G_M52104_IG17: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG17: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; gcrRegs -[x4]
ldr w1, [x23, #0x08]
cmp w3, w1
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
mov w1, #24
mov x0, #16
str w3, [fp, #0x34] // [V16 loc5]
@@ -282,38 +283,39 @@ G_M52104_IG17: ; bbWeight=0.02, gcrefRegs=1880000 {x19 x23 x24}, byrefReg
ldr w4, [x24, #0x08]
ldr w7, [fp, #0x34] // [V16 loc5]
cmp w7, w4
- bhs G_M52104_IG29
+ bhs G_M52104_IG30
add x4, x24, #16
; byrRegs +[x4]
ldr s17, [x4, w7, UXTW #2]
fadd s10, s16, s17
fcmp s8, s10
- blt G_M52104_IG22
+ blt G_M52104_IG23
fmov s8, s10
str w7, [x26]
mov w3, w7
;; size=112 bbWeight=0.02 PerfScore 0.77
-G_M52104_IG18: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=16000000 {x25 x26 x28}, byref, isz
+G_M52104_IG18: ; bbWeight=0.04, gcrefRegs=1880000 {x19 x23 x24}, byrefRegs=6000000 {x25 x26}, byref, isz
; byrRegs -[x4]
add w3, w3, #1
cmp w3, w20
ldr w2, [fp, #0x38] // [V13 loc2]
blt G_M52104_IG15
;; size=16 bbWeight=0.04 PerfScore 0.16
-G_M52104_IG19: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=14000000 {x26 x28}, byref, isz
+G_M52104_IG19: ; bbWeight=1.98, gcrefRegs=80000 {x19}, byrefRegs=4000000 {x26}, byref, isz
; gcrRegs -[x23-x24]
; byrRegs -[x25]
- ldrb w22, [fp, #0xA8] // [V08 arg8]
- tst w22, #255
- beq G_M52104_IG20
+ tst w28, #255
+ beq G_M52104_IG21
+ ;; size=8 bbWeight=1.98 PerfScore 2.97
+G_M52104_IG20: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=4000000 {x26}, byref, isz
ldr w4, [x26]
...
+16 (+1.35%) : 16268.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
@@ -8,28 +8,28 @@
; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 39,506 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
-; V01 TypeCtx [V01,T42] ( 7, 5.56) long -> x26 single-def
-; V02 arg1 [V02,T32] ( 4, 14 ) byref -> x24 single-def
-; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> x20 single-def
-; V04 arg3 [V04,T45] ( 3, 3 ) ref -> x4 class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
-; V05 arg4 [V05,T29] ( 6, 26 ) ref -> x21 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V06 arg5 [V06,T30] ( 6, 26 ) ref -> x22 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
-; V07 arg6 [V07,T31] ( 3, 18 ) ubyte -> x23 single-def
-; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> x25
-; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [fp+0x88] single-def
+; V00 this [V00,T00] ( 39,432 ) ref -> x19 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
+; V01 TypeCtx [V01,T43] ( 7, 5.56) long -> x26 single-def
+; V02 arg1 [V02,T30] ( 4, 14 ) byref -> x22 single-def
+; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> x23 single-def
+; V04 arg3 [V04,T46] ( 3, 3 ) ref -> x4 class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
+; V05 arg4 [V05,T28] ( 6, 22 ) ref -> x21 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V06 arg5 [V06,T27] ( 6, 26 ) ref -> x20 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
+; V07 arg6 [V07,T37] ( 3, 10 ) ubyte -> x24 single-def
+; V08 arg7 [V08,T38] ( 2, 10 ) ubyte -> x25
+; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [fp+0x88] single-def
;* V10 loc0 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+<>c__DisplayClass417_0`1[System.__Canon]>
-; V11 loc1 [V11 ] ( 7, 42 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V12 loc2 [V12,T17] ( 3, 52 ) int -> [fp+0x1C] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 8) [fp+0x20] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
+; V12 loc2 [V12,T16] ( 3, 34 ) int -> [fp+0x1C] ld-addr-op
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T47] ( 3, 4 ) long -> x1 "spilling helperCall"
+; V14 tmp1 [V14,T48] ( 3, 4 ) long -> x1 "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V17 tmp4 [V17,T48] ( 3, 4 ) long -> x1 "spilling helperCall"
+; V17 tmp4 [V17,T49] ( 3, 4 ) long -> x1 "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V19 tmp6 [V19 ] ( 0, 0 ) byref -> zero-ref
-; V20 tmp7 [V20,T26] ( 2, 32 ) byref -> [fp+0x10] spill-single-def
-; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> x1
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [fp+0x10] spill-single-def
+; V21 tmp8 [V21,T29] ( 3, 24 ) ref -> x1
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V23 tmp10 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
@@ -37,59 +37,60 @@
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V27 tmp14 [V27,T41] ( 2, 8 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> x1
-; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V31 tmp18 [V31,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V33 tmp20 [V33,T33] ( 2, 16 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> x1
-; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V34 tmp21 [V34,T33] ( 4, 14 ) ref -> x2
+; V35 tmp22 [V35,T36] ( 3, 12 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V38 tmp25 [V38,T07] ( 2, 64 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V39 tmp26 [V39,T12] ( 4, 56 ) ref -> x1
-; V40 tmp27 [V40,T19] ( 3, 48 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> x2
+; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp29 [V42,T34] ( 2, 16 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T42] ( 2, 8 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V44 tmp31 [V44,T08] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp32 [V45,T13] ( 4, 56 ) ref -> x2
-; V46 tmp33 [V46,T20] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V44 tmp31 [V44,T21] ( 2, 32 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V45 tmp32 [V45,T17] ( 4, 32 ) ref -> x2
+; V46 tmp33 [V46,T09] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V48 tmp35 [V48,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp35 [V48,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V50 tmp37 [V50,T09] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V51 tmp38 [V51,T14] ( 4, 56 ) ref -> x2
-; V52 tmp39 [V52,T21] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> x3
+; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V55 tmp42 [V55,T01] ( 2,256 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V56 tmp43 [V56,T02] ( 4,224 ) ref -> x2
-; V57 tmp44 [V57,T04] ( 3,192 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V55 tmp42 [V55,T01] ( 2,256 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V56 tmp43 [V56,T02] ( 4,224 ) ref -> x3
+; V57 tmp44 [V57,T03] ( 3,192 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V60 tmp47 [V60,T10] ( 2, 64 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> x2
-; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> x2 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> x3
+; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> x3 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V65 tmp52 [V65,T11] ( 2, 64 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> x1
-; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> x1
+; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> x1 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V69 tmp56 [V69,T27] ( 2, 32 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
-;* V70 tmp57 [V70,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V71 tmp58 [V71,T06] ( 3, 80 ) int -> x0 "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> x1 class-hnd "Inlining Arg" <System.__Canon>
+;* V70 tmp57 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V71 tmp58 [V71,T13] ( 3, 48 ) int -> x0 "Inline stloc first use temp"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V10.<>4__this (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T03] ( 7,193 ) ref -> x28 single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
-;* V74 tmp61 [V74,T50] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> x28 single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
+;* V74 tmp61 [V74,T51] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> x27 single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [fp+0x20] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "field V16._builder (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "field V24._builder (fldOffset=0x0)" P-INDEP
-; V79 rat0 [V79,T43] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
-; V80 rat1 [V80,T44] ( 3, 5.60) long -> x0 "spilling expr"
-; V81 rat2 [V81,T46] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [fp+0x18] multi-def "CSE - moderate"
+; V80 rat0 [V80,T44] ( 3, 5.60) long -> x1 "fgMakeTemp is creating a new local variable"
+; V81 rat1 [V81,T45] ( 3, 5.60) long -> x0 "spilling expr"
+; V82 rat2 [V82,T47] ( 3, 4.48) long -> x1 "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 32
@@ -105,17 +106,17 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov x19, x0
; gcrRegs +[x19]
mov x26, x1
- mov x24, x2
- ; byrRegs +[x24]
- mov w20, w3
+ mov x22, x2
+ ; byrRegs +[x22]
+ mov w23, w3
mov x21, x5
; gcrRegs +[x21]
- mov x22, x6
- ; gcrRegs +[x22]
- mov w23, w7
+ mov x20, x6
+ ; gcrRegs +[x20]
+ mov w24, w7
ldr w25, [fp, #0x80] // [V08 arg7]
;; size=64 bbWeight=1 PerfScore 13.00
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=680010 {x4 x19 x21 x22}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=380010 {x4 x19 x20 x21}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs +[x4]
ldrb w27, [fp, #0x88] // [V09 arg8]
mov x28, x4
@@ -124,11 +125,11 @@ G_M39451_IG02: ; bbWeight=1, gcrefRegs=680010 {x4 x19 x21 x22}, byrefRegs
ldr x1, [x0, #0x10]
cbz x1, G_M39451_IG04
;; size=20 bbWeight=1 PerfScore 9.50
-G_M39451_IG03: ; bbWeight=0.80, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
+G_M39451_IG03: ; bbWeight=0.80, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
; gcrRegs -[x4]
b G_M39451_IG05
;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
mov x0, x26
movz x1, #0xD1FFAB1E
movk x1, #0xD1FFAB1E LSL #16
@@ -136,7 +137,7 @@ G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=10680000 {x19 x21 x22 x28}, byr
bl CORINFO_HELP_RUNTIMEHANDLE_METHOD
mov x1, x0
;; size=24 bbWeight=0.20 PerfScore 0.70
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
ldr x0, [x19, #0xD1FFAB1E]
; gcrRegs +[x0]
movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:AllocateSeparated[System.__Canon]():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]:this
@@ -147,12 +148,12 @@ G_M39451_IG05: ; bbWeight=1, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefR
blr x2
str x0, [fp, #0x20] // [V11 loc1]
;; size=32 bbWeight=1 PerfScore 12.50
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
; gcrRegs -[x0]
tst w25, #255
bne G_M39451_IG16
;; size=8 bbWeight=8 PerfScore 12.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
ldr x1, [x19, #0x10]
; gcrRegs +[x1]
cbnz x1, G_M39451_IG08
@@ -174,78 +175,79 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefR
; gcrRegs -[x0 x15]
; byrRegs -[x14]
;; size=48 bbWeight=2 PerfScore 25.00
-G_M39451_IG08: ; bbWeight=2, gcrefRegs=10680002 {x1 x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
+G_M39451_IG08: ; bbWeight=2, gcrefRegs=10380002 {x1 x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
ldrh w0, [x1, #0x0C]
- uxth w1, w20
+ uxth w1, w23
; gcrRegs -[x1]
+ str w1, [fp, #0x18] // [V79 cse0]
cmp w0, w1
- beq G_M39451_IG39
- ;; size=16 bbWeight=2 PerfScore 10.00
-G_M39451_IG09: ; bbWeight=4, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref, isz
- ldr x1, [x19, #0x10]
- ; gcrRegs +[x1]
- cbnz x1, G_M39451_IG11
+ beq G_M39451_IG33
+ ;; size=20 bbWeight=2 PerfScore 12.00
+G_M39451_IG09: ; bbWeight=4, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref, isz
+ ldr x2, [x19, #0x10]
+ ; gcrRegs +[x2]
+ cbnz x2, G_M39451_IG11
;; size=8 bbWeight=4 PerfScore 16.00
-G_M39451_IG10: ; bbWeight=2, gcrefRegs=10680000 {x19 x21 x22 x28}, byrefRegs=1000000 {x24}, byref
- ; gcrRegs -[x1]
+G_M39451_IG10: ; bbWeight=2, gcrefRegs=10380000 {x19 x20 x21 x28}, byrefRegs=400000 {x22}, byref
+ ; gcrRegs -[x2]
mov x0, x19
; gcrRegs +[x0]
- movz x1, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this
- movk x1, #0xD1FFAB1E LSL #16
- movk x1, #0xD1FFAB1E LSL #32
- ldr x1, [x1]
- blr x1
- mov x1, x0
- ; gcrRegs +[x1]
+ movz x2, #0xD1FFAB1E // code for Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this
+ movk x2, #0xD1FFAB1E LSL #16
+ movk x2, #0xD1FFAB1E LSL #32
+ ldr x2, [x2]
+ blr x2
+ mov x2, x0
+ ; gcrRegs +[x2]
add x14, x19, #16
; byrRegs +[x14]
- mov x15, x1
...
+12 (+2.73%) : 1611.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,31 +9,30 @@
; 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 loc0 [V01,T10] ( 5, 3.50) int -> x21
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> x22
-; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> x23
-; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> x0
+; V01 loc0 [V01,T09] ( 5, 3.50) int -> x21
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> x22
+; V03 loc2 [V03,T10] ( 4, 3.50) ubyte -> x23
+; V04 loc3 [V04,T15] ( 3, 2.50) ubyte -> x0
; V05 loc4 [V05,T06] ( 4, 12.50) int -> x0
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T17] ( 3, 2 ) int -> x0
-; V08 tmp2 [V08,T18] ( 3, 1.50) int -> x22
+; V07 tmp1 [V07,T16] ( 3, 2 ) int -> x0
+; V08 tmp2 [V08,T17] ( 3, 1.50) int -> x22
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> x0 "dup spill"
-;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> x1 "Inlining Arg"
-;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T11] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V12 tmp6 [V12,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T12] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+;* V14 tmp8 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> x1 "Inlining Arg"
-;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> x0 "Inlining Arg"
-;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V18 tmp12 [V18,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T05] ( 6, 11 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V25 cse0 [V25,T07] ( 3, 8.50) int -> x1 "CSE - aggressive"
+;* V21 tmp15 [V21,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T14] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T05] ( 7, 15 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 8
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
+ bge G_M17180_IG24
ldrh w1, [x19, w22, UXTW #2]
cmp w1, #92
beq G_M17180_IG13
@@ -135,15 +134,15 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=12 bbWeight=4 PerfScore 8.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w22, #1
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
- cbz w23, G_M17180_IG21
+ cbz w23, G_M17180_IG22
mov w22, #4
b G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.25
@@ -152,55 +151,58 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
- ldrh w1, [x19, w22, UXTW #2]
- sxtw w0, w1
+ bge G_M17180_IG20
+ ldrh w0, [x19, w22, UXTW #2]
cmp w0, #92
- beq G_M17180_IG19
+ beq G_M17180_IG20
cmp w0, #47
bne G_M17180_IG17
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x19]
- cmp w22, #4
- ble G_M17180_IG23
+ ;; size=28 bbWeight=4 PerfScore 30.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ b G_M17180_IG21
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cmp w22, w20
+ bge G_M17180_IG24
;; size=8 bbWeight=4 PerfScore 6.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w1, #92
- beq G_M17180_IG22
- cmp w1, #47
- bne G_M17180_IG23
- b G_M17180_IG22
- ;; size=20 bbWeight=0.50 PerfScore 2.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs +[x19]
+ cmp w22, #4
+ ble G_M17180_IG24
+ ldrh w0, [x19, w22, UXTW #2]
+ cmp w0, #92
+ beq G_M17180_IG23
+ cmp w0, #47
+ bne G_M17180_IG24
+ b G_M17180_IG23
+ ;; size=32 bbWeight=0.50 PerfScore 4.25
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w20, #2
- blt G_M17180_IG23
+ blt G_M17180_IG24
ldrh w0, [x19, #0x02]
cmp w0, #58
- bne G_M17180_IG23
+ bne G_M17180_IG24
ldrh w0, [x19]
orr w0, w0, #32
sub w0, w0, #97
cmp w0, #25
- bhi G_M17180_IG23
+ bhi G_M17180_IG24
mov w22, #2
cmp w20, #2
- ble G_M17180_IG23
+ ble G_M17180_IG24
ldrh w0, [x19, #0x04]
cmp w0, #92
- beq G_M17180_IG22
+ beq G_M17180_IG23
cmp w0, #47
- bne G_M17180_IG23
+ bne G_M17180_IG24
;; size=72 bbWeight=0.50 PerfScore 9.75
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
add w22, w22, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22
;; size=4 bbWeight=1 PerfScore 0.50
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -208,7 +210,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 440, prolog size 28, PerfScore 130.25, instruction count 110, allocated bytes for code 440 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 452, prolog size 28, PerfScore 131.00, instruction count 113, allocated bytes for code 452 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -219,7 +221,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 110 (0x0006e) Actual length = 440 (0x0001b8)
+ Function Length : 113 (0x00071) Actual length = 452 (0x0001c4)
---- Epilog scopes ----
---- Scope 0
Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)
smoke_tests.nativeaot.windows.arm64.checked.mch
+0 (0.00%) : 3965.dasm - System.Enum+<>c1`1[ubyte]:b1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
@@ -9,21 +9,21 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Enum+<>c__1`1[ubyte]>
-; V01 arg1 [V01,T08] ( 3, 3 ) ref -> x20 class-hnd single-def <System.Type>
-; V02 arg2 [V02,T09] ( 3, 3 ) ref -> x21 class-hnd single-def <System.String[]>
-; V03 arg3 [V03,T07] ( 5, 3.54) ref -> x19 class-hnd single-def <System.Object[]>
-; V04 arg4 [V04,T10] ( 3, 3 ) ubyte -> x22 single-def
-; V05 loc0 [V05,T13] ( 6, 3.08) ref -> x24 class-hnd exact single-def <ubyte[]>
+; V01 arg1 [V01,T06] ( 3, 3.98) ref -> x19 class-hnd single-def <System.Type>
+; V02 arg2 [V02,T07] ( 3, 3.98) ref -> x20 class-hnd single-def <System.String[]>
+; V03 arg3 [V03,T10] ( 5, 3.54) ref -> x22 class-hnd single-def <System.Object[]>
+; V04 arg4 [V04,T08] ( 3, 3.98) ubyte -> x21 single-def
+; V05 loc0 [V05,T13] ( 6, 4.06) ref -> x24 class-hnd exact single-def <ubyte[]>
; V06 loc1 [V06,T01] ( 11, 17.08) int -> x25
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V08 tmp1 [V08,T00] ( 8, 26 ) ref -> [fp+0x18] "inline UNBOX clone1"
; V09 tmp2 [V09,T02] ( 4, 16 ) int -> x3 "Strict ordering of exceptions for Array store"
-; V10 tmp3 [V10,T05] ( 3, 6 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.EnumInfo`1[ubyte]>
-; V11 cse0 [V11,T04] ( 6, 7.50) int -> x23 "CSE - aggressive"
+; V10 tmp3 [V10,T03] ( 3, 11.88) ref -> x22 class-hnd exact single-def "NewObj constructor temp" <System.Reflection.EnumInfo`1[ubyte]>
+; V11 cse0 [V11,T05] ( 6, 7.50) int -> x23 "CSE - aggressive"
; V12 cse1 [V12,T11] ( 4, 4.54) byref -> x26 hoist multi-def "CSE - aggressive"
; V13 cse2 [V13,T12] ( 4, 4.54) byref -> x28 hoist multi-def "CSE - aggressive"
-; V14 cse3 [V14,T06] ( 6, 5.54) long -> x27 hoist multi-def "CSE - aggressive"
-; V15 cse4 [V15,T03] ( 3, 11.88) long -> x19 "CSE - aggressive"
+; V14 cse3 [V14,T09] ( 6, 5.54) long -> x27 hoist multi-def "CSE - aggressive"
+; V15 cse4 [V15,T04] ( 3, 11.88) long -> x22 "CSE - aggressive"
;
; Lcl frame size = 16
@@ -35,16 +35,16 @@ G_M59494_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x25, x26, [sp, #0x50]
stp x27, x28, [sp, #0x60]
mov fp, sp
- mov x20, x1
- ; gcrRegs +[x20]
- mov x21, x2
- ; gcrRegs +[x21]
- mov x19, x3
+ mov x19, x1
; gcrRegs +[x19]
- mov w22, w4
+ mov x20, x2
+ ; gcrRegs +[x20]
+ mov x22, x3
+ ; gcrRegs +[x22]
+ mov w21, w4
;; size=44 bbWeight=1 PerfScore 8.50
-G_M59494_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ldr w23, [x19, #0x08]
+G_M59494_IG02: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ ldr w23, [x22, #0x08]
mov w1, w23
adrp x0, [HIGH RELOC #0xD1FFAB1E] // ubyte[]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
@@ -57,28 +57,28 @@ G_M59494_IG02: ; bbWeight=1, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=00
cmp w23, #0
ble G_M59494_IG11
;; size=36 bbWeight=1 PerfScore 8.00
-G_M59494_IG03: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M59494_IG03: ; bbWeight=0.50, gcrefRegs=1580000 {x19 x20 x22 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr w1, [x24, #0x08]
cmp w1, w23
blt G_M59494_IG08
- add x26, x19, #16
+ add x26, x22, #16
; byrRegs +[x26]
adrp x27, [HIGH RELOC #0xD1FFAB1E]
add x27, x27, [LOW RELOC #0xD1FFAB1E]
add x28, x24, #16
; byrRegs +[x28]
;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M59494_IG04: ; bbWeight=3.96, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=14000000 {x26 x28}, byref, isz
- ; gcrRegs -[x19]
- mov w19, w25
- ldr x2, [x26, x19, LSL #3]
+G_M59494_IG04: ; bbWeight=3.96, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=14000000 {x26 x28}, byref, isz
+ ; gcrRegs -[x22]
+ mov w22, w25
+ ldr x2, [x26, x22, LSL #3]
; gcrRegs +[x2]
ldr x1, [x2]
cmp x1, x27
beq G_M59494_IG06
;; size=20 bbWeight=3.96 PerfScore 31.68
-G_M59494_IG05: ; bbWeight=0.99, gcrefRegs=1300004 {x2 x20 x21 x24}, byrefRegs=14000000 {x26 x28}, byref
+G_M59494_IG05: ; bbWeight=0.99, gcrefRegs=1180004 {x2 x19 x20 x24}, byrefRegs=14000000 {x26 x28}, byref
str x2, [fp, #0x18] // [V08 tmp1]
; GC ptr vars +{V08}
mov x1, x2
@@ -90,22 +90,22 @@ G_M59494_IG05: ; bbWeight=0.99, gcrefRegs=1300004 {x2 x20 x21 x24}, byref
ldr x2, [fp, #0x18] // [V08 tmp1]
; gcrRegs +[x2]
;; size=20 bbWeight=0.99 PerfScore 4.95
-G_M59494_IG06: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=1300004 {x2 x20 x21 x24}, byrefRegs=14000000 {x26 x28}, gcvars, byref, isz
+G_M59494_IG06: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=1180004 {x2 x19 x20 x24}, byrefRegs=14000000 {x26 x28}, gcvars, byref, isz
; GC ptr vars -{V08}
ldrb w3, [x2, #0x08]
- strb w3, [x28, x19]
+ strb w3, [x28, x22]
add w25, w25, #1
cmp w23, w25
bgt G_M59494_IG04
;; size=20 bbWeight=3.96 PerfScore 23.76
-G_M59494_IG07: ; bbWeight=1, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=0000 {}, byref
+G_M59494_IG07: ; bbWeight=1.98, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref
; gcrRegs -[x2]
; byrRegs -[x26 x28]
b G_M59494_IG11
- ;; size=4 bbWeight=1 PerfScore 1.00
-G_M59494_IG08: ; bbWeight=0.04, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19]
- add x26, x19, #16
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M59494_IG08: ; bbWeight=0.04, gcrefRegs=1580000 {x19 x20 x22 x24}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x22]
+ add x26, x22, #16
; byrRegs +[x26]
ldr x2, [x26, w25, UXTW #3]
; gcrRegs +[x2]
@@ -115,7 +115,7 @@ G_M59494_IG08: ; bbWeight=0.04, gcrefRegs=1380000 {x19 x20 x21 x24}, byre
cmp x1, x27
beq G_M59494_IG10
;; size=28 bbWeight=0.04 PerfScore 0.36
-G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, byref
+G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=1580004 {x2 x19 x20 x22 x24}, byrefRegs=0000 {}, byref
; byrRegs -[x26]
str x2, [fp, #0x18] // [V08 tmp1]
; GC ptr vars +{V08}
@@ -128,7 +128,7 @@ G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, b
ldr x2, [fp, #0x18] // [V08 tmp1]
; gcrRegs +[x2]
;; size=20 bbWeight=0.01 PerfScore 0.05
-G_M59494_IG10: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=1380004 {x2 x19 x20 x21 x24}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M59494_IG10: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=1580004 {x2 x19 x20 x22 x24}, byrefRegs=0000 {}, gcvars, byref, isz
; GC ptr vars -{V08}
ldrb w3, [x2, #0x08]
ldr w0, [x24, #0x08]
@@ -141,31 +141,31 @@ G_M59494_IG10: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=138
cmp w23, w25
bgt G_M59494_IG08
;; size=36 bbWeight=0.04 PerfScore 0.44
-G_M59494_IG11: ; bbWeight=1, gcrefRegs=1300000 {x20 x21 x24}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x2 x19]
+G_M59494_IG11: ; bbWeight=1.98, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x2 x22]
; byrRegs -[x28]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Reflection.EnumInfo`1[ubyte]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
bl CORINFO_HELP_NEWSFAST
; gcrRegs +[x0]
; gcr arg pop 0
- mov x19, x0
- ; gcrRegs +[x19]
- uxtb w4, w22
- mov x0, x19
- mov x1, x20
+ mov x22, x0
+ ; gcrRegs +[x22]
+ uxtb w4, w21
+ mov x0, x22
+ mov x1, x19
; gcrRegs +[x1]
mov x2, x24
; gcrRegs +[x2]
- mov x3, x21
+ mov x3, x20
; gcrRegs +[x3]
bl System.Reflection.EnumInfo`1[ubyte]:.ctor(System.Type,ubyte[],System.String[],ubyte):this
- ; gcrRegs -[x0-x3 x20-x21 x24]
+ ; gcrRegs -[x0-x3 x19-x20 x24]
; gcr arg pop 0
- mov x0, x19
+ mov x0, x22
; gcrRegs +[x0]
- ;; size=44 bbWeight=1 PerfScore 6.50
-G_M59494_IG12: ; bbWeight=1, epilog, nogc, extend
+ ;; size=44 bbWeight=1.98 PerfScore 12.87
+G_M59494_IG12: ; bbWeight=1.98, epilog, nogc, extend
ldp x27, x28, [sp, #0x60]
ldp x25, x26, [sp, #0x50]
ldp x23, x24, [sp, #0x40]
@@ -173,15 +173,15 @@ G_M59494_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x20]
ldp fp, lr, [sp], #0x70
ret lr
- ;; size=28 bbWeight=1 PerfScore 7.00
+ ;; size=28 bbWeight=1.98 PerfScore 13.86
G_M59494_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[x0 x19]
+ ; gcrRegs -[x0 x22]
bl CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 336, prolog size 44, PerfScore 95.49, instruction count 84, allocated bytes for code 336 (MethodHash=8bac1799) for method System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
+; Total bytes of code 336, prolog size 44, PerfScore 109.70, instruction count 84, allocated bytes for code 336 (MethodHash=8bac1799) for method System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 4285.dasm - System.Reflection.Runtime.BindingFlagSupport.MethodPolicies:IsSuppressedByMoreDerivedMember(System.Reflection.MethodInfo,System.Reflection.MethodInfo[],int,int):ubyte:this (FullOpts)
@@ -110,23 +110,23 @@ G_M50734_IG08: ; bbWeight=1.98, gcrefRegs=2280000 {x19 x21 x25}, byrefReg
add x0, x0, [LOW RELOC #0xD1FFAB1E]
bl <unknown method>
; gcrRegs -[x1-x2 x25]
- cbnz w0, G_M50734_IG15
+ cbnz w0, G_M50734_IG14
;; size=28 bbWeight=1.98 PerfScore 13.86
G_M50734_IG09: ; bbWeight=3.96, gcrefRegs=280000 {x19 x21}, byrefRegs=1000000 {x24}, byref, isz
add w23, w23, #1
cmp w23, w20
blt G_M50734_IG07
;; size=12 bbWeight=3.96 PerfScore 7.92
-G_M50734_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50734_IG10: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x21]
; byrRegs -[x24]
b G_M50734_IG03
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M50734_IG11: ; bbWeight=0.04, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x19 x21-x22]
ldr w15, [x22, #0x08]
cmp w23, w15
- bhs G_M50734_IG17
+ bhs G_M50734_IG16
add x24, x22, #16
; byrRegs +[x24]
ldr x25, [x24, w23, UXTW #3]
@@ -158,21 +158,19 @@ G_M50734_IG12: ; bbWeight=0.02, gcrefRegs=2680000 {x19 x21 x22 x25}, byre
add x0, x0, [LOW RELOC #0xD1FFAB1E]
bl <unknown method>
; gcrRegs -[x1-x2 x25]
- cbnz w0, G_M50734_IG15
+ cbnz w0, G_M50734_IG14
;; size=28 bbWeight=0.02 PerfScore 0.14
G_M50734_IG13: ; bbWeight=0.04, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
add w23, w23, #1
cmp w23, w20
blt G_M50734_IG11
- ;; size=12 bbWeight=0.04 PerfScore 0.08
+ b G_M50734_IG03
+ ;; size=16 bbWeight=0.04 PerfScore 0.12
G_M50734_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19 x21-x22]
- b G_M50734_IG03
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M50734_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M50734_IG16: ; bbWeight=0.50, epilog, nogc, extend
+G_M50734_IG15: ; bbWeight=0.50, epilog, nogc, extend
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
@@ -180,12 +178,12 @@ G_M50734_IG16: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M50734_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50734_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 400, prolog size 24, PerfScore 129.32, instruction count 100, allocated bytes for code 400 (MethodHash=bb3639d1) for method System.Reflection.Runtime.BindingFlagSupport.MethodPolicies:IsSuppressedByMoreDerivedMember(System.Reflection.MethodInfo,System.Reflection.MethodInfo[],int,int):ubyte:this (FullOpts)
+; Total bytes of code 400, prolog size 24, PerfScore 130.35, instruction count 100, allocated bytes for code 400 (MethodHash=bb3639d1) for method System.Reflection.Runtime.BindingFlagSupport.MethodPolicies:IsSuppressedByMoreDerivedMember(System.Reflection.MethodInfo,System.Reflection.MethodInfo[],int,int):ubyte:this (FullOpts)
; ============================================================
Unwind Info:
+0 (0.00%) : 8941.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (FullOpts)
@@ -7,20 +7,20 @@
; fully interruptible
; Final local variable assignments
;
-; V00 this [V00,T10] ( 10, 6 ) ref -> x19 this class-hnd single-def <System.MulticastDelegate>
+; V00 this [V00,T10] ( 10, 8.96) ref -> x19 this class-hnd single-def <System.MulticastDelegate>
; V01 arg1 [V01,T13] ( 8, 5 ) ref -> x20 class-hnd single-def <System.Delegate>
; V02 loc0 [V02,T17] ( 5, 2.50) ref -> x20 class-hnd single-def <System.MulticastDelegate>
-; V03 loc1 [V03,T03] ( 17, 17.50) ref -> registers class-hnd <System.Delegate[]>
+; V03 loc1 [V03,T00] ( 17, 21.94) ref -> registers class-hnd <System.Delegate[]>
; V04 loc2 [V04,T05] ( 16, 16.25) int -> x22
-; V05 loc3 [V05,T15] ( 17, 4.24) ref -> x23 class-hnd single-def <System.Delegate[]>
-; V06 loc4 [V06,T11] ( 8, 7.50) int -> registers
+; V05 loc3 [V05,T14] ( 17, 5.72) ref -> x23 class-hnd single-def <System.Delegate[]>
+; V06 loc4 [V06,T11] ( 8, 10.46) int -> registers
; V07 loc5 [V07,T12] ( 11, 7.08) ref -> x24 class-hnd single-def <System.Delegate[]>
; V08 loc6 [V08,T04] ( 11, 16.58) int -> x24
; V09 loc7 [V09,T06] ( 12, 14.75) int -> x25
-; V10 loc8 [V10,T00] ( 12, 20.54) int -> x28
+; V10 loc8 [V10,T01] ( 12, 20.54) int -> x28
; V11 loc9 [V11,T07] ( 6, 13.50) int -> x1
-; V12 loc10 [V12,T01] ( 12, 20.54) int -> x21
-; V13 loc11 [V13,T02] ( 12, 20.54) int -> x24
+; V12 loc10 [V12,T02] ( 12, 20.54) int -> x21
+; V13 loc11 [V13,T03] ( 12, 20.54) int -> x24
;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V15 tmp1 [V15,T18] ( 3, 2.50) long -> x1 "fgMakeTemp is creating a new local variable"
; V16 tmp2 [V16,T16] ( 4, 3 ) ref -> x21 class-hnd "spilling QMark2" <System.MulticastDelegate>
@@ -28,7 +28,7 @@
; V18 tmp4 [V18,T20] ( 3, 0 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V19 tmp5 [V19 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
; V20 cse0 [V20,T08] ( 12, 12.87) byref -> x21 hoist multi-def "CSE - aggressive"
-; V21 cse1 [V21,T14] ( 4, 4.29) byref -> x28 hoist multi-def "CSE - aggressive"
+; V21 cse1 [V21,T15] ( 4, 4.29) byref -> x28 hoist multi-def "CSE - aggressive"
; V22 cse2 [V22,T09] ( 3, 11.88) int -> x24 "CSE - aggressive"
;
; Lcl frame size = 0
@@ -68,7 +68,7 @@ G_M24678_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
ldr x0, [x19]
ldr x1, [x20]
cmp x0, x1
- bne G_M24678_IG41
+ bne G_M24678_IG43
mov x0, x19
; gcrRegs +[x0]
bl System.Delegate:IsDynamicDelegate():ubyte:this
@@ -80,7 +80,7 @@ G_M24678_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
bl System.Delegate:IsDynamicDelegate():ubyte:this
; gcrRegs -[x0]
; gcr arg pop 0
- cbnz w0, G_M24678_IG42
+ cbnz w0, G_M24678_IG44
;; size=40 bbWeight=0.50 PerfScore 6.25
G_M24678_IG06: ; bbWeight=0.50, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
ldr x0, [x20]
@@ -188,15 +188,15 @@ G_M24678_IG13: ; bbWeight=3.96, gcrefRegs=4080000 {x19 x26}, byrefRegs=20
cmp w24, w22
blt G_M24678_IG13
;; size=28 bbWeight=3.96 PerfScore 27.72
-G_M24678_IG14: ; bbWeight=0.50, gcrefRegs=4080000 {x19 x26}, byrefRegs=0000 {}, byref
+G_M24678_IG14: ; bbWeight=1.98, gcrefRegs=4080000 {x19 x26}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
b G_M24678_IG16
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M24678_IG15: ; bbWeight=0.04, gcrefRegs=4880000 {x19 x23 x26}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x23]
ldr w2, [x23, #0x08]
cmp w24, w2
- bhs G_M24678_IG40
+ bhs G_M24678_IG42
add x21, x23, #16
; byrRegs +[x21]
ldr x2, [x21, w24, UXTW #3]
@@ -213,7 +213,7 @@ G_M24678_IG15: ; bbWeight=0.04, gcrefRegs=4880000 {x19 x23 x26}, byrefReg
cmp w24, w22
blt G_M24678_IG15
;; size=48 bbWeight=0.04 PerfScore 0.50
-G_M24678_IG16: ; bbWeight=0.50, gcrefRegs=4080000 {x19 x26}, byrefRegs=0000 {}, byref
+G_M24678_IG16: ; bbWeight=1.98, gcrefRegs=4080000 {x19 x26}, byrefRegs=0000 {}, byref
; gcrRegs -[x23]
mov x0, x19
; gcrRegs +[x0]
@@ -221,8 +221,8 @@ G_M24678_IG16: ; bbWeight=0.50, gcrefRegs=4080000 {x19 x26}, byrefRegs=00
; gcrRegs +[x1]
mov w2, w25
mov w3, wzr
- ;; size=16 bbWeight=0.50 PerfScore 1.00
-G_M24678_IG17: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=16 bbWeight=1.98 PerfScore 3.96
+G_M24678_IG17: ; bbWeight=1.98, epilog, nogc, extend
ldp x27, x28, [sp, #0x50]
ldp x25, x26, [sp, #0x40]
ldp x23, x24, [sp, #0x30]
@@ -231,7 +231,7 @@ G_M24678_IG17: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x60
b System.MulticastDelegate:NewMulticastDelegate(System.Delegate[],int,ubyte):System.MulticastDelegate:this
; gcr arg pop 0
- ;; size=28 bbWeight=0.50 PerfScore 3.50
+ ;; size=28 bbWeight=1.98 PerfScore 13.86
G_M24678_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0-x1 x26] +[x20 x23-x24]
ldr w25, [x19, #0x18]
@@ -241,9 +241,9 @@ G_M24678_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=198
; gcrRegs +[x27]
ldr w0, [x24, #0x08]
cmp w0, w26
- blt G_M24678_IG24
+ blt G_M24678_IG25
mov x27, x24
- cbnz x23, G_M24678_IG19
+ cbnz x23, G_M24678_IG20
mov x0, x27
; gcrRegs +[x0]
mov w1, w25
@@ -252,22 +252,26 @@ G_M24678_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=198
bl <unknown method>
; gcrRegs -[x0 x2]
; gcr arg pop 0
- cbnz w0, G_M24678_IG24
- b G_M24678_IG25
- ;; size=60 bbWeight=0.50 PerfScore 7.50
-G_M24678_IG19: ; bbWeight=0.50, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
+ cbnz w0, G_M24678_IG25
+ ;; size=56 bbWeight=0.50 PerfScore 7.00
+G_M24678_IG19: ; bbWeight=1.98, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x27]
+ b G_M24678_IG26
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M24678_IG20: ; bbWeight=0.50, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[x27]
mov w28, wzr
cmp w22, #0
- ble G_M24678_IG24
+ ble G_M24678_IG25
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M24678_IG20: ; bbWeight=0.25, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
+G_M24678_IG21: ; bbWeight=0.25, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
ldr w2, [x23, #0x08]
cmp w2, w22
- blt G_M24678_IG23
+ blt G_M24678_IG24
add x21, x23, #16
; byrRegs +[x21]
;; size=16 bbWeight=0.25 PerfScore 1.25
-G_M24678_IG21: ; bbWeight=3.96, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=200000 {x21}, byref, isz
+G_M24678_IG22: ; bbWeight=3.96, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=200000 {x21}, byref, isz
ldr x2, [x21, w28, UXTW #3]
; gcrRegs +[x2]
add w1, w25, w28
@@ -276,19 +280,19 @@ G_M24678_IG21: ; bbWeight=3.96, gcrefRegs=9980000 {x19 x20 x23 x24 x27},
bl <unknown method>
; gcrRegs -[x0 x2]
; gcr arg pop 0
- cbz w0, G_M24678_IG25
+ cbz w0, G_M24678_IG26
add w28, w28, #1
cmp w28, w22
- blt G_M24678_IG21
+ blt G_M24678_IG22
;; size=32 bbWeight=3.96 PerfScore 31.68
-G_M24678_IG22: ; bbWeight=0.50, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref
+G_M24678_IG23: ; bbWeight=1.98, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref
; byrRegs -[x21]
- b G_M24678_IG24
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24678_IG23: ; bbWeight=0.04, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
+ b G_M24678_IG25
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M24678_IG24: ; bbWeight=0.04, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
ldr w2, [x23, #0x08]
cmp w28, w2
- bhs G_M24678_IG40
+ bhs G_M24678_IG42
add x21, x23, #16
; byrRegs +[x21]
ldr x2, [x21, w28, UXTW #3]
@@ -300,26 +304,26 @@ G_M24678_IG23: ; bbWeight=0.04, gcrefRegs=9980000 {x19 x20 x23 x24 x27},
; gcrRegs -[x0 x2]
; byrRegs -[x21]
; gcr arg pop 0
- cbz w0, G_M24678_IG25
+ cbz w0, G_M24678_IG26
add w28, w28, #1
cmp w28, w22
- blt G_M24678_IG23
+ blt G_M24678_IG24
;; size=48 bbWeight=0.04 PerfScore 0.52
-G_M24678_IG24: ; bbWeight=0.50, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
- cbnz x27, G_M24678_IG38
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24678_IG25: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M24678_IG25: ; bbWeight=1.98, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
+ cbnz x27, G_M24678_IG40
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
+G_M24678_IG26: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27]
ldr w1, [x24, #0x08]
cmp w1, w26
- bge G_M24678_IG27
+ bge G_M24678_IG28
;; size=12 bbWeight=0.50 PerfScore 2.25
-G_M24678_IG26: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M24678_IG27: ; bbWeight=4, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
lsl w1, w1, #1
cmp w1, w26
- blt G_M24678_IG26
+ blt G_M24678_IG27
;; size=12 bbWeight=4 PerfScore 10.00
-G_M24678_IG27: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
+G_M24678_IG28: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz
sxtw x1, w1
adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Delegate[]
add x0, x0, [LOW RELOC #0xD1FFAB1E]
@@ -330,17 +334,17 @@ G_M24678_IG27: ; bbWeight=0.50, gcrefRegs=1980000 {x19 x20 x23 x24}, byre
; gcrRegs +[x27]
mov w21, wzr
cmp w25, #0
- ble G_M24678_IG32
+ ble G_M24678_IG33
;; size=32 bbWeight=0.50 PerfScore 2.50
-G_M24678_IG28: ; bbWeight=0.25, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
+G_M24678_IG29: ; bbWeight=0.25, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
ldr w2, [x24, #0x08]
cmp w2, w25
- blt G_M24678_IG31
+ blt G_M24678_IG32
add x28, x24, #16
; byrRegs +[x28]
;; size=16 bbWeight=0.25 PerfScore 1.25
-G_M24678_IG29: ; bbWeight=3.96, gcrefRegs=8980000 {x19 x20 x23 x27}, byrefRegs=10000000 {x28}, byref, isz
+G_M24678_IG30: ; bbWeight=3.96, gcrefRegs=8980000 {x19 x20 x23 x27}, byrefRegs=10000000 {x28}, byref, isz
; gcrRegs -[x24]
ldr x2, [x28, w21, UXTW #3]
; gcrRegs +[x2]
@@ -352,17 +356,17 @@ G_M24678_IG29: ; bbWeight=3.96, gcrefRegs=8980000 {x19 x20 x23 x27}, byre
; gcr arg pop 0
add w21, w21, #1
cmp w21, w25
- blt G_M24678_IG29
+ blt G_M24678_IG30
;; size=28 bbWeight=3.96 PerfScore 27.72
-G_M24678_IG30: ; bbWeight=0.50, gcrefRegs=8980000 {x19 x20 x23 x27}, byrefRegs=0000 {}, byref
+G_M24678_IG31: ; bbWeight=1.98, gcrefRegs=8980000 {x19 x20 x23 x27}, byrefRegs=0000 {}, byref
; byrRegs -[x28]
- b G_M24678_IG32
- ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M24678_IG31: ; bbWeight=0.04, gcrefRegs=9980000 {x19 x20 x23 x24 x27}, byrefRegs=0000 {}, byref, isz
+ b G_M24678_IG33
...
+0 (0.00%) : 10688.dasm - System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo:GetRuntimeTypeHandleIfAny(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[],System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo+TryGetConstructedGenericTypeDelegate):System.RuntimeTypeHandle (FullOpts)
@@ -7,13 +7,13 @@
; partially interruptible
; Final local variable assignments
;
-; V00 arg0 [V00,T04] ( 4, 4 ) ref -> x0 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo>
-; V01 arg1 [V01,T07] ( 6, 3.04) ref -> x19 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[]>
-; V02 arg2 [V02,T08] ( 4, 3 ) ref -> x20 class-hnd exact single-def <System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo+TryGetConstructedGenericTypeDelegate>
+; V00 arg0 [V00,T06] ( 4, 4 ) ref -> x0 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo>
+; V01 arg1 [V01,T08] ( 6, 3.04) ref -> x20 class-hnd single-def <System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[]>
+; V02 arg2 [V02,T04] ( 4, 5.96) ref -> x19 class-hnd exact single-def <System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo+TryGetConstructedGenericTypeDelegate>
;* V03 loc0 [V03 ] ( 0, 0 ) struct ( 8) zero-ref <System.RuntimeTypeHandle>
-; V04 loc1 [V04,T05] ( 6, 5.75) int -> x22
-; V05 loc2 [V05,T06] ( 6, 5.29) ref -> x23 class-hnd exact single-def <<unknown class>>
-; V06 loc3 [V06 ] ( 2, 1 ) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op <System.RuntimeTypeHandle>
+; V04 loc1 [V04,T07] ( 6, 5.75) int -> x22
+; V05 loc2 [V05,T05] ( 6, 6.77) ref -> x23 class-hnd exact single-def <<unknown class>>
+; V06 loc3 [V06 ] ( 2, 2.48) struct ( 8) [fp+0x10] do-not-enreg[XS] addr-exposed ld-addr-op <System.RuntimeTypeHandle>
;* V07 loc4 [V07 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.RuntimeTypeHandle>
; V08 loc5 [V08,T01] ( 11, 16.58) int -> x24
;* V09 loc6 [V09 ] ( 0, 0 ) struct ( 8) zero-ref <System.RuntimeTypeHandle>
@@ -24,8 +24,8 @@
;* V14 tmp4 [V14 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
;* V15 tmp5 [V15 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.RuntimeTypeHandle>
;* V16 tmp6 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inlining Arg" <System.RuntimeTypeHandle>
-; V17 tmp7 [V17,T10] ( 3, 2.50) long -> x21 "field V03._value (fldOffset=0x0)" P-INDEP
-; V18 tmp8 [V18 ] ( 2, 1 ) long -> [fp+0x10] do-not-enreg[X] addr-exposed "field V06._value (fldOffset=0x0)" P-DEP
+; V17 tmp7 [V17,T10] ( 3, 3.98) long -> x21 "field V03._value (fldOffset=0x0)" P-INDEP
+; V18 tmp8 [V18 ] ( 2, 2.48) long -> [fp+0x10] do-not-enreg[X] addr-exposed "field V06._value (fldOffset=0x0)" P-DEP
;* V19 tmp9 [V19 ] ( 0, 0 ) long -> zero-ref "field V07._value (fldOffset=0x0)" P-INDEP
; V20 tmp10 [V20,T02] ( 6, 12 ) long -> x0 "field V09._value (fldOffset=0x0)" P-INDEP
;* V21 tmp11 [V21 ] ( 0, 0 ) long -> zero-ref "field V11._value (fldOffset=0x0)" P-INDEP
@@ -36,7 +36,7 @@
;* V26 tmp16 [V26 ] ( 0, 0 ) long -> zero-ref "field V16._value (fldOffset=0x0)" P-INDEP
; V27 tmp17 [V27,T00] ( 6, 24 ) ref -> x0 "argument with side effect"
; V28 cse0 [V28,T09] ( 4, 4.29) byref -> x25 hoist multi-def "CSE - aggressive"
-; V29 cse1 [V29,T03] ( 3, 11.88) long -> x19 "CSE - aggressive"
+; V29 cse1 [V29,T03] ( 3, 11.88) long -> x20 "CSE - aggressive"
;
; Lcl frame size = 8
@@ -47,10 +47,10 @@ G_M22233_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
stp x23, x24, [sp, #0x38]
str x25, [sp, #0x48]
mov fp, sp
- mov x19, x1
- ; gcrRegs +[x19]
- mov x20, x2
+ mov x20, x1
; gcrRegs +[x20]
+ mov x19, x2
+ ; gcrRegs +[x19]
;; size=32 bbWeight=1 PerfScore 6.50
G_M22233_IG02: ; bbWeight=1, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
@@ -75,7 +75,7 @@ G_M22233_IG04: ; bbWeight=0.50, epilog, nogc, extend
;; size=24 bbWeight=0.50 PerfScore 3.50
G_M22233_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[x19-x20]
- ldr w22, [x19, #0x08]
+ ldr w22, [x20, #0x08]
sxtw x1, w22
adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class>
add x0, x0, [LOW RELOC #0xD1FFAB1E]
@@ -89,37 +89,37 @@ G_M22233_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=180
;; size=36 bbWeight=0.50 PerfScore 4.00
G_M22233_IG06: ; bbWeight=0.25, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- ldr wzr, [x19, #0x08]
+ ldr wzr, [x20, #0x08]
ldr w0, [x23, #0x08]
cmp w0, w22
blt G_M22233_IG09
- add x25, x19, #16
+ add x25, x20, #16
; byrRegs +[x25]
;; size=20 bbWeight=0.25 PerfScore 2.00
-G_M22233_IG07: ; bbWeight=3.96, gcrefRegs=900000 {x20 x23}, byrefRegs=2000000 {x25}, byref, isz
- ; gcrRegs -[x19]
- mov w19, w24
- ldr x0, [x25, x19, LSL #3]
+G_M22233_IG07: ; bbWeight=3.96, gcrefRegs=880000 {x19 x23}, byrefRegs=2000000 {x25}, byref, isz
+ ; gcrRegs -[x20]
+ mov w20, w24
+ ldr x0, [x25, x20, LSL #3]
; gcrRegs +[x0]
ldr x1, [x0]
ldr x1, [x1, #0xD1FFAB1E]
blr x1
; gcrRegs -[x0]
- cbz x0, G_M22233_IG12
- lsl x1, x19, #3
+ cbz x0, G_M22233_IG13
+ lsl x1, x20, #3
add x1, x1, #16
str x0, [x23, x1]
add w24, w24, #1
cmp w24, w22
blt G_M22233_IG07
;; size=48 bbWeight=3.96 PerfScore 63.36
-G_M22233_IG08: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref
+G_M22233_IG08: ; bbWeight=1.98, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref
; byrRegs -[x25]
b G_M22233_IG10
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1.98 PerfScore 1.98
G_M22233_IG09: ; bbWeight=0.04, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[x19]
- add x25, x19, #16
+ ; gcrRegs +[x20]
+ add x25, x20, #16
; byrRegs +[x25]
ldr x0, [x25, w24, UXTW #3]
; gcrRegs +[x0]
@@ -128,10 +128,10 @@ G_M22233_IG09: ; bbWeight=0.04, gcrefRegs=980000 {x19 x20 x23}, byrefRegs
blr x1
; gcrRegs -[x0]
; byrRegs -[x25]
- cbz x0, G_M22233_IG12
+ cbz x0, G_M22233_IG13
ldr w3, [x23, #0x08]
cmp w24, w3
- bhs G_M22233_IG16
+ bhs G_M22233_IG17
ubfiz x3, x24, #3, #32
add x3, x3, #16
str x0, [x23, x3]
@@ -139,32 +139,23 @@ G_M22233_IG09: ; bbWeight=0.04, gcrefRegs=980000 {x19 x20 x23}, byrefRegs
cmp w24, w22
blt G_M22233_IG09
;; size=60 bbWeight=0.04 PerfScore 0.82
-G_M22233_IG10: ; bbWeight=0.50, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x19]
+G_M22233_IG10: ; bbWeight=1.98, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x20]
add x3, fp, #16 // [V06 loc3]
mov x1, x21
mov x2, x23
; gcrRegs +[x2]
- ldr x0, [x20, #0x08]
+ ldr x0, [x19, #0x08]
; gcrRegs +[x0]
- ldr x4, [x20, #0x20]
+ ldr x4, [x19, #0x20]
blr x4
- ; gcrRegs -[x0 x2 x20 x23]
- cbnz w0, G_M22233_IG14
- mov w0, wzr
- ;; size=32 bbWeight=0.50 PerfScore 5.00
-G_M22233_IG11: ; bbWeight=0.50, epilog, nogc, extend
- ldr x25, [sp, #0x48]
- ldp x23, x24, [sp, #0x38]
- ldp x21, x22, [sp, #0x28]
- ldp x19, x20, [sp, #0x18]
- ldp fp, lr, [sp], #0x50
- ret lr
- ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M22233_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[x0 x2 x19 x23]
+ cbnz w0, G_M22233_IG15
+ ;; size=28 bbWeight=1.98 PerfScore 18.81
+G_M22233_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, wzr
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M22233_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M22233_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
@@ -172,10 +163,21 @@ G_M22233_IG13: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M22233_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M22233_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov w0, wzr
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M22233_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ ldr x25, [sp, #0x48]
+ ldp x23, x24, [sp, #0x38]
+ ldp x21, x22, [sp, #0x28]
+ ldp x19, x20, [sp, #0x18]
+ ldp fp, lr, [sp], #0x50
+ ret lr
+ ;; size=24 bbWeight=0.50 PerfScore 3.50
+G_M22233_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
ldr x0, [fp, #0x10] // [V06 loc3]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M22233_IG15: ; bbWeight=0.50, epilog, nogc, extend
+G_M22233_IG16: ; bbWeight=0.50, epilog, nogc, extend
ldr x25, [sp, #0x48]
ldp x23, x24, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
@@ -183,12 +185,12 @@ G_M22233_IG15: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x50
ret lr
;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M22233_IG16: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M22233_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
bl CORINFO_HELP_RNGCHKFAIL
brk_windows #0
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 368, prolog size 24, PerfScore 106.18, instruction count 92, allocated bytes for code 368 (MethodHash=f3e1a926) for method System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo:GetRuntimeTypeHandleIfAny(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[],System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo+TryGetConstructedGenericTypeDelegate):System.RuntimeTypeHandle (FullOpts)
+; Total bytes of code 368, prolog size 24, PerfScore 121.72, instruction count 92, allocated bytes for code 368 (MethodHash=f3e1a926) for method System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo:GetRuntimeTypeHandleIfAny(System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo,System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo[],System.Reflection.Runtime.TypeInfos.RuntimeConstructedGenericTypeInfo+TryGetConstructedGenericTypeDelegate):System.RuntimeTypeHandle (FullOpts)
; ============================================================
Unwind Info:
+12 (+2.94%) : 2569.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -8,31 +8,30 @@
; 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 loc0 [V01,T10] ( 5, 3.50) int -> x21
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> x22
-; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> x23
-; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> x0
+; V01 loc0 [V01,T09] ( 5, 3.50) int -> x21
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> x22
+; V03 loc2 [V03,T10] ( 4, 3.50) ubyte -> x23
+; V04 loc3 [V04,T15] ( 3, 2.50) ubyte -> x0
; V05 loc4 [V05,T06] ( 4, 12.50) int -> x0
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T17] ( 3, 2 ) int -> x0
-; V08 tmp2 [V08,T18] ( 3, 1.50) int -> x22
+; V07 tmp1 [V07,T16] ( 3, 2 ) int -> x0
+; V08 tmp2 [V08,T17] ( 3, 1.50) int -> x22
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> x0 "dup spill"
-;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> x1 "Inlining Arg"
-;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T11] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V12 tmp6 [V12,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T12] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+;* V14 tmp8 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> x1 "Inlining Arg"
-;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> x0 "Inlining Arg"
-;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V18 tmp12 [V18,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T05] ( 6, 11 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V25 cse0 [V25,T07] ( 3, 8.50) int -> x1 "CSE - aggressive"
+;* V21 tmp15 [V21,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T14] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T05] ( 7, 15 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 8
@@ -112,7 +111,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
+ bge G_M17180_IG24
ldrh w1, [x19, w22, UXTW #2]
cmp w1, #92
beq G_M17180_IG13
@@ -126,15 +125,15 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=12 bbWeight=4 PerfScore 8.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w22, #1
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
- cbz w23, G_M17180_IG21
+ cbz w23, G_M17180_IG22
mov w22, #4
b G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.25
@@ -143,55 +142,58 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
- ldrh w1, [x19, w22, UXTW #2]
- sxtw w0, w1
+ bge G_M17180_IG20
+ ldrh w0, [x19, w22, UXTW #2]
cmp w0, #92
- beq G_M17180_IG19
+ beq G_M17180_IG20
cmp w0, #47
bne G_M17180_IG17
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x19]
- cmp w22, #4
- ble G_M17180_IG23
+ ;; size=28 bbWeight=4 PerfScore 30.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ b G_M17180_IG21
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cmp w22, w20
+ bge G_M17180_IG24
;; size=8 bbWeight=4 PerfScore 6.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w1, #92
- beq G_M17180_IG22
- cmp w1, #47
- bne G_M17180_IG23
- b G_M17180_IG22
- ;; size=20 bbWeight=0.50 PerfScore 2.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs +[x19]
+ cmp w22, #4
+ ble G_M17180_IG24
+ ldrh w0, [x19, w22, UXTW #2]
+ cmp w0, #92
+ beq G_M17180_IG23
+ cmp w0, #47
+ bne G_M17180_IG24
+ b G_M17180_IG23
+ ;; size=32 bbWeight=0.50 PerfScore 4.25
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w20, #2
- blt G_M17180_IG23
+ blt G_M17180_IG24
ldrh w0, [x19, #0x02]
cmp w0, #58
- bne G_M17180_IG23
+ bne G_M17180_IG24
ldrh w0, [x19]
orr w0, w0, #32
sub w0, w0, #97
cmp w0, #25
- bhi G_M17180_IG23
+ bhi G_M17180_IG24
mov w22, #2
cmp w20, #2
- ble G_M17180_IG23
+ ble G_M17180_IG24
ldrh w0, [x19, #0x04]
cmp w0, #92
- beq G_M17180_IG22
+ beq G_M17180_IG23
cmp w0, #47
- bne G_M17180_IG23
+ bne G_M17180_IG24
;; size=72 bbWeight=0.50 PerfScore 9.75
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
add w22, w22, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22
;; size=4 bbWeight=1 PerfScore 0.50
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -199,7 +201,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 408, prolog size 28, PerfScore 123.50, instruction count 102, allocated bytes for code 408 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 420, prolog size 28, PerfScore 124.25, instruction count 105, allocated bytes for code 420 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -210,7 +212,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 102 (0x00066) Actual length = 408 (0x000198)
+ 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)
+12 (+2.94%) : 7493.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,31 +9,30 @@
; 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 loc0 [V01,T10] ( 5, 3.50) int -> x21
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> x22
-; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> x23
-; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> x0
+; V01 loc0 [V01,T09] ( 5, 3.50) int -> x21
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> x22
+; V03 loc2 [V03,T10] ( 4, 3.50) ubyte -> x23
+; V04 loc3 [V04,T15] ( 3, 2.50) ubyte -> x0
; V05 loc4 [V05,T06] ( 4, 12.50) int -> x0
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T17] ( 3, 2 ) int -> x0
-; V08 tmp2 [V08,T18] ( 3, 1.50) int -> x22
+; V07 tmp1 [V07,T16] ( 3, 2 ) int -> x0
+; V08 tmp2 [V08,T17] ( 3, 1.50) int -> x22
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> x0 "dup spill"
-;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> x1 "Inlining Arg"
-;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T18] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T11] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V12 tmp6 [V12,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T12] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+;* V14 tmp8 [V14,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> x1 "Inlining Arg"
-;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> x0 "Inlining Arg"
-;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> x1 "Inlining Arg"
+;* V18 tmp12 [V18,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T13] ( 3, 3 ) ushort -> x0 "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> x0 "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T05] ( 6, 11 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V25 cse0 [V25,T07] ( 3, 8.50) int -> x1 "CSE - aggressive"
+;* V21 tmp15 [V21,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T14] ( 3, 3 ) ushort -> x0 "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> x19 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T05] ( 7, 15 ) int -> x20 single-def "field V00._length (fldOffset=0x8)" P-INDEP
;
; Lcl frame size = 8
@@ -113,7 +112,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
+ bge G_M17180_IG24
ldrh w1, [x19, w22, UXTW #2]
cmp w1, #92
beq G_M17180_IG13
@@ -127,15 +126,15 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=12 bbWeight=4 PerfScore 8.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=4 bbWeight=0.50 PerfScore 0.50
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w22, #1
- b G_M17180_IG23
+ b G_M17180_IG24
;; size=8 bbWeight=0.50 PerfScore 0.75
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
; byrRegs +[x19]
- cbz w23, G_M17180_IG21
+ cbz w23, G_M17180_IG22
mov w22, #4
b G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.25
@@ -144,55 +143,58 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by
;; size=4 bbWeight=2 PerfScore 1.00
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w22, w20
- bge G_M17180_IG23
- ldrh w1, [x19, w22, UXTW #2]
- sxtw w0, w1
+ bge G_M17180_IG20
+ ldrh w0, [x19, w22, UXTW #2]
cmp w0, #92
- beq G_M17180_IG19
+ beq G_M17180_IG20
cmp w0, #47
bne G_M17180_IG17
- ;; size=32 bbWeight=4 PerfScore 32.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[x19]
- cmp w22, #4
- ble G_M17180_IG23
+ ;; size=28 bbWeight=4 PerfScore 30.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref
+ b G_M17180_IG21
+ ;; size=4 bbWeight=0.50 PerfScore 0.50
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
+ cmp w22, w20
+ bge G_M17180_IG24
;; size=8 bbWeight=4 PerfScore 6.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp w1, #92
- beq G_M17180_IG22
- cmp w1, #47
- bne G_M17180_IG23
- b G_M17180_IG22
- ;; size=20 bbWeight=0.50 PerfScore 2.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
- ; byrRegs +[x19]
+ cmp w22, #4
+ ble G_M17180_IG24
+ ldrh w0, [x19, w22, UXTW #2]
+ cmp w0, #92
+ beq G_M17180_IG23
+ cmp w0, #47
+ bne G_M17180_IG24
+ b G_M17180_IG23
+ ;; size=32 bbWeight=0.50 PerfScore 4.25
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz
cmp w20, #2
- blt G_M17180_IG23
+ blt G_M17180_IG24
ldrh w0, [x19, #0x02]
cmp w0, #58
- bne G_M17180_IG23
+ bne G_M17180_IG24
ldrh w0, [x19]
orr w0, w0, #32
sub w0, w0, #97
cmp w0, #25
- bhi G_M17180_IG23
+ bhi G_M17180_IG24
mov w22, #2
cmp w20, #2
- ble G_M17180_IG23
+ ble G_M17180_IG24
ldrh w0, [x19, #0x04]
cmp w0, #92
- beq G_M17180_IG22
+ beq G_M17180_IG23
cmp w0, #47
- bne G_M17180_IG23
+ bne G_M17180_IG24
;; size=72 bbWeight=0.50 PerfScore 9.75
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x19]
add w22, w22, #1
;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov w0, w22
;; size=4 bbWeight=1 PerfScore 0.50
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
ldr x23, [sp, #0x38]
ldp x21, x22, [sp, #0x28]
ldp x19, x20, [sp, #0x18]
@@ -200,7 +202,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret lr
;; size=20 bbWeight=1 PerfScore 6.00
-; Total bytes of code 408, prolog size 28, PerfScore 123.50, instruction count 102, allocated bytes for code 408 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 420, prolog size 28, PerfScore 124.25, instruction count 105, allocated bytes for code 420 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
@@ -211,7 +213,7 @@ Unwind Info:
E bit : 0
X bit : 0
Vers : 0
- Function Length : 102 (0x00066) Actual length = 408 (0x000198)
+ 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)
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
benchmarks.run.windows.arm64.checked.mch |
73 |
6 |
9 |
58 |
-84 |
+72 |
benchmarks.run_pgo.windows.arm64.checked.mch |
1,987 |
590 |
336 |
1,061 |
-6,444 |
+2,332 |
benchmarks.run_tiered.windows.arm64.checked.mch |
26 |
2 |
5 |
19 |
-20 |
+28 |
coreclr_tests.run.windows.arm64.checked.mch |
3,751 |
68 |
121 |
3,562 |
-624 |
+1,084 |
libraries.crossgen2.windows.arm64.checked.mch |
266 |
10 |
24 |
232 |
-144 |
+312 |
libraries.pmi.windows.arm64.checked.mch |
387 |
39 |
48 |
300 |
-364 |
+536 |
libraries_tests.run.windows.arm64.Release.mch |
93 |
52 |
22 |
19 |
-320 |
+100 |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
529 |
97 |
111 |
321 |
-832 |
+1,048 |
realworld.run.windows.arm64.checked.mch |
95 |
9 |
7 |
79 |
-168 |
+96 |
smoke_tests.nativeaot.windows.arm64.checked.mch |
32 |
0 |
2 |
30 |
-0 |
+24 |
|
7,239 |
873 |
685 |
5,681 |
-9,000 |
+5,632 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
benchmarks.run.windows.arm64.checked.mch |
24,427 |
4 |
24,423 |
49 (0.20%) |
49 (0.20%) |
benchmarks.run_pgo.windows.arm64.checked.mch |
74,716 |
40,165 |
34,551 |
53 (0.07%) |
53 (0.07%) |
benchmarks.run_tiered.windows.arm64.checked.mch |
48,580 |
36,755 |
11,825 |
47 (0.10%) |
47 (0.10%) |
coreclr_tests.run.windows.arm64.checked.mch |
366,979 |
161,422 |
205,557 |
118 (0.03%) |
118 (0.03%) |
libraries.crossgen2.windows.arm64.checked.mch |
273,940 |
15 |
273,925 |
599 (0.22%) |
599 (0.22%) |
libraries.pmi.windows.arm64.checked.mch |
305,617 |
6 |
305,611 |
50 (0.02%) |
50 (0.02%) |
libraries_tests.run.windows.arm64.Release.mch |
10,746 |
3,531 |
7,215 |
0 (0.00%) |
0 (0.00%) |
librariestestsnotieredcompilation.run.windows.arm64.Release.mch |
315,067 |
21,618 |
293,449 |
2,289 (0.72%) |
2,289 (0.72%) |
realworld.run.windows.arm64.checked.mch |
33,281 |
3 |
33,278 |
13 (0.04%) |
13 (0.04%) |
smoke_tests.nativeaot.windows.arm64.checked.mch |
23,944 |
8 |
23,936 |
246 (1.02%) |
246 (1.02%) |
|
1,477,297 |
263,527 |
1,213,770 |
3,464 (0.23%) |
3,464 (0.23%) |
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: 10887060 (overridden on cmd)
Total bytes of diff: 10887048 (overridden on cmd)
Total bytes of delta: -12 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
16 : 7465.dasm (0.80 % of base)
12 : 2237.dasm (2.73 % of base)
12 : 3233.dasm (1.84 % of base)
8 : 10184.dasm (1.12 % of base)
8 : 1822.dasm (0.18 % of base)
4 : 10754.dasm (0.17 % of base)
4 : 22403.dasm (0.09 % of base)
4 : 6038.dasm (0.28 % of base)
4 : 20115.dasm (0.09 % of base)
Top file improvements (bytes):
-44 : 1865.dasm (-0.40 % of base)
-12 : 13003.dasm (-0.51 % of base)
-12 : 1359.dasm (-1.23 % of base)
-8 : 18351.dasm (-0.14 % of base)
-4 : 18043.dasm (-0.12 % of base)
-4 : 23957.dasm (-0.76 % of base)
15 total files with Code Size differences (6 improved, 9 regressed), 33 unchanged.
Top method regressions (bytes):
16 (0.80 % of base) : 7465.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):this (FullOpts)
12 (1.84 % of base) : 3233.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
12 (2.73 % of base) : 2237.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
8 (1.12 % of base) : 10184.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
8 (0.18 % of base) : 1822.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
4 (0.28 % of base) : 6038.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (FullOpts)
4 (0.09 % of base) : 22403.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 20115.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.17 % of base) : 10754.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
Top method improvements (bytes):
-44 (-0.40 % of base) : 1865.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-12 (-1.23 % of base) : 1359.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-12 (-0.51 % of base) : 13003.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-8 (-0.14 % of base) : 18351.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.12 % of base) : 18043.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-4 (-0.76 % of base) : 23957.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
Top method regressions (percentages):
12 (2.73 % of base) : 2237.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (1.84 % of base) : 3233.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
8 (1.12 % of base) : 10184.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
16 (0.80 % of base) : 7465.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):this (FullOpts)
4 (0.28 % of base) : 6038.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (FullOpts)
8 (0.18 % of base) : 1822.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
4 (0.17 % of base) : 10754.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
4 (0.09 % of base) : 22403.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 20115.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-12 (-1.23 % of base) : 1359.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-4 (-0.76 % of base) : 23957.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
-12 (-0.51 % of base) : 13003.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-44 (-0.40 % of base) : 1865.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-8 (-0.14 % of base) : 18351.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.12 % of base) : 18043.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):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: 36163000 (overridden on cmd)
Total bytes of diff: 36158888 (overridden on cmd)
Total bytes of delta: -4112 (-0.01 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
56 : 23184.dasm (1.34 % of base)
56 : 69903.dasm (1.34 % of base)
44 : 40431.dasm (1.08 % of base)
44 : 74033.dasm (0.99 % of base)
40 : 60535.dasm (0.92 % of base)
36 : 38759.dasm (0.89 % of base)
36 : 43464.dasm (0.89 % of base)
36 : 44548.dasm (0.88 % of base)
36 : 35303.dasm (0.89 % of base)
36 : 6901.dasm (0.88 % of base)
32 : 53489.dasm (0.78 % of base)
32 : 44612.dasm (0.78 % of base)
32 : 47975.dasm (0.78 % of base)
24 : 54648.dasm (0.78 % of base)
20 : 28380.dasm (0.45 % of base)
20 : 34170.dasm (0.97 % of base)
16 : 14423.dasm (6.90 % of base)
16 : 17386.dasm (2.65 % of base)
16 : 53556.dasm (2.65 % of base)
16 : 12745.dasm (7.02 % of base)
Top file improvements (bytes):
-52 : 31270.dasm (-1.21 % of base)
-52 : 31903.dasm (-1.21 % of base)
-40 : 63957.dasm (-0.95 % of base)
-32 : 36485.dasm (-2.17 % of base)
-32 : 55068.dasm (-2.17 % of base)
-32 : 63420.dasm (-2.17 % of base)
-32 : 70108.dasm (-2.17 % of base)
-32 : 15374.dasm (-2.15 % of base)
-32 : 47560.dasm (-2.17 % of base)
-32 : 59613.dasm (-0.73 % of base)
-32 : 73008.dasm (-2.15 % of base)
-24 : 42669.dasm (-1.95 % of base)
-24 : 56844.dasm (-0.70 % of base)
-24 : 67003.dasm (-3.08 % of base)
-24 : 71647.dasm (-0.70 % of base)
-24 : 9135.dasm (-1.95 % of base)
-24 : 39119.dasm (-1.95 % of base)
-20 : 34906.dasm (-4.07 % of base)
-20 : 15465.dasm (-2.50 % of base)
-20 : 36241.dasm (-4.07 % of base)
88 total files with Code Size differences (48 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
56 (1.34 % of base) : 23184.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
56 (1.34 % of base) : 69903.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
44 (0.99 % of base) : 74033.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
44 (1.08 % of base) : 40431.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
40 (0.92 % of base) : 60535.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
36 (0.89 % of base) : 38759.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
36 (0.89 % of base) : 43464.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
36 (0.88 % of base) : 44548.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
36 (0.89 % of base) : 35303.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
36 (0.88 % of base) : 6901.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
32 (0.78 % of base) : 53489.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
32 (0.78 % of base) : 44612.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
32 (0.78 % of base) : 47975.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
24 (0.78 % of base) : 54648.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
20 (0.97 % of base) : 34170.dasm - System.Attribute:GetCustomAttributes(System.Reflection.Assembly,System.Type,ubyte):System.Attribute[] (Tier1)
20 (0.45 % of base) : 28380.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
16 (0.32 % of base) : 71544.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[System.__Canon]:MoveNext():this (Tier1-OSR)
16 (0.32 % of base) : 68380.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
16 (0.79 % of base) : 63428.dasm - System.Collections.Frozen.FrozenDictionary:CreateFromDictionary[System.__Canon,System.__Canon](System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]):System.Collections.Frozen.FrozenDictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
16 (1.39 % of base) : 72812.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:IntroSort(System.Span`1[System.Collections.BigStruct],int) (Tier1)
Top method improvements (bytes):
-52 (-1.21 % of base) : 31270.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
-52 (-1.21 % of base) : 31903.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
-40 (-0.95 % of base) : 63957.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
-32 (-0.73 % of base) : 59613.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
-32 (-2.17 % of base) : 36485.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 55068.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 63420.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 70108.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.15 % of base) : 15374.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.17 % of base) : 47560.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-32 (-2.15 % of base) : 73008.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
-24 (-0.70 % of base) : 71647.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
-24 (-0.70 % of base) : 56844.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:IntroSort(System.Span`1[System.Collections.IntStruct],int,System.Comparison`1[System.Collections.IntStruct]) (Tier1)
-24 (-1.95 % of base) : 42669.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-24 (-1.95 % of base) : 9135.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-24 (-1.95 % of base) : 39119.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
-24 (-3.08 % of base) : 67003.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
-20 (-2.50 % of base) : 15465.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
-20 (-2.50 % of base) : 19973.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
-20 (-2.50 % of base) : 24013.dasm - System.Linq.Enumerable:Any[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte]):ubyte (Tier1-OSR)
Top method regressions (percentages):
16 (7.02 % of base) : 12745.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
16 (6.90 % of base) : 14423.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
8 (4.08 % of base) : 36711.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (4.08 % of base) : 36726.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (3.85 % of base) : 40073.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.64 % of base) : 66898.dasm - Benchstone.MDBenchI.MDLogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (3.64 % of base) : 66908.dasm - Benchstone.MDBenchI.MDLogicArray:Inner(byref):ubyte (Tier1-OSR)
8 (3.03 % of base) : 23369.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
8 (3.03 % of base) : 24619.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
8 (3.03 % of base) : 15389.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
8 (3.03 % of base) : 46297.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
8 (3.03 % of base) : 52785.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
8 (3.03 % of base) : 56225.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
8 (3.03 % of base) : 68125.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
8 (2.99 % of base) : 64191.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
16 (2.65 % of base) : 17386.dasm - System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte (Tier1)
16 (2.65 % of base) : 53556.dasm - System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte (Tier1)
4 (2.50 % of base) : 62564.dasm - BenchmarksGame.ByteString:Equals(BenchmarksGame.ByteString):ubyte:this (Tier1)
12 (2.44 % of base) : 55079.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
12 (2.44 % of base) : 47571.dasm - System.Collections.Frozen.LengthBuckets:CreateLengthBucketsArrayIfAppropriate(System.String[],System.Collections.Generic.IEqualityComparer`1[System.String],int,int):int[] (Tier1-OSR)
Top method improvements (percentages):
-16 (-15.38 % of base) : 59738.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
-16 (-8.33 % of base) : 54518.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 42256.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 34911.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 58672.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 64905.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-8.33 % of base) : 65171.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-16 (-7.84 % of base) : 21231.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-12 (-4.29 % of base) : 62561.dasm - BenchmarksGame.KNucleotide:KFrequency(int,int):this (Tier1-OSR)
-20 (-4.07 % of base) : 34906.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 36241.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 54513.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 57157.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 71441.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 15378.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 39385.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 54741.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 54761.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 58905.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
-20 (-4.07 % of base) : 65785.dasm - System.Linq.Enumerable:SpanToDictionary[System.__Canon,System.__Canon,System.__Canon](System.ReadOnlySpan`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon]):System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon] (Tier1-OSR)
benchmarks.run_tiered.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 15268852 (overridden on cmd)
Total bytes of diff: 15268860 (overridden on cmd)
Total bytes of delta: 8 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
12 : 44460.dasm (2.73 % of base)
4 : 40217.dasm (0.09 % of base)
4 : 47682.dasm (0.28 % of base)
4 : 45277.dasm (0.09 % of base)
4 : 10152.dasm (0.30 % of base)
Top file improvements (bytes):
-12 : 6337.dasm (-1.23 % of base)
-8 : 31939.dasm (-1.01 % of base)
7 total files with Code Size differences (2 improved, 5 regressed), 19 unchanged.
Top method regressions (bytes):
12 (2.73 % of base) : 44460.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
4 (0.28 % of base) : 47682.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
4 (0.30 % of base) : 10152.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
4 (0.09 % of base) : 40217.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 45277.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (bytes):
-12 (-1.23 % of base) : 6337.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
-8 (-1.01 % of base) : 31939.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
Top method regressions (percentages):
12 (2.73 % of base) : 44460.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
4 (0.30 % of base) : 10152.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1-OSR)
4 (0.28 % of base) : 47682.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
4 (0.09 % of base) : 45277.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
4 (0.09 % of base) : 40217.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-12 (-1.23 % of base) : 6337.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
-8 (-1.01 % of base) : 31939.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
7 total methods with Code Size differences (2 improved, 5 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: 277084748 (overridden on cmd)
Total bytes of diff: 277085208 (overridden on cmd)
Total bytes of delta: 460 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
28 : 150211.dasm (0.82 % of base)
28 : 154223.dasm (2.42 % of base)
28 : 154241.dasm (2.33 % of base)
28 : 154253.dasm (2.42 % of base)
28 : 206137.dasm (6.54 % of base)
28 : 154211.dasm (2.33 % of base)
28 : 150204.dasm (0.82 % of base)
28 : 154205.dasm (2.44 % of base)
28 : 150218.dasm (0.82 % of base)
28 : 154199.dasm (2.21 % of base)
28 : 154217.dasm (2.39 % of base)
28 : 154229.dasm (2.21 % of base)
28 : 154247.dasm (2.39 % of base)
24 : 153886.dasm (0.72 % of base)
24 : 153878.dasm (0.72 % of base)
24 : 295775.dasm (4.69 % of base)
24 : 297971.dasm (4.69 % of base)
12 : 198964.dasm (0.28 % of base)
12 : 344768.dasm (2.22 % of base)
12 : 354667.dasm (1.32 % of base)
Top file improvements (bytes):
-20 : 341879.dasm (-9.62 % of base)
-20 : 361857.dasm (-3.40 % of base)
-16 : 158248.dasm (-2.13 % of base)
-16 : 319249.dasm (-7.84 % of base)
-16 : 319517.dasm (-7.84 % of base)
-16 : 342036.dasm (-7.84 % of base)
-16 : 343724.dasm (-7.84 % of base)
-16 : 344718.dasm (-7.84 % of base)
-16 : 354825.dasm (-7.84 % of base)
-16 : 354906.dasm (-7.84 % of base)
-16 : 355266.dasm (-7.84 % of base)
-16 : 158223.dasm (-2.13 % of base)
-16 : 172774.dasm (-2.13 % of base)
-16 : 335367.dasm (-7.84 % of base)
-16 : 341357.dasm (-7.84 % of base)
-16 : 342326.dasm (-7.84 % of base)
-16 : 342472.dasm (-7.84 % of base)
-16 : 342802.dasm (-7.84 % of base)
-16 : 344133.dasm (-7.84 % of base)
-16 : 344188.dasm (-7.84 % of base)
60 total files with Code Size differences (29 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
28 (6.54 % of base) : 206137.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
28 (2.21 % of base) : 154199.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Byte:RunReflectionScenario():this (FullOpts)
28 (2.44 % of base) : 154205.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Double:RunReflectionScenario():this (FullOpts)
28 (2.33 % of base) : 154211.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int16:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 154217.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int32:RunReflectionScenario():this (FullOpts)
28 (2.42 % of base) : 154223.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int64:RunReflectionScenario():this (FullOpts)
28 (2.21 % of base) : 154229.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256SByte:RunReflectionScenario():this (FullOpts)
28 (2.33 % of base) : 154241.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt16:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 154247.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt32:RunReflectionScenario():this (FullOpts)
28 (2.42 % of base) : 154253.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt64:RunReflectionScenario():this (FullOpts)
28 (0.82 % of base) : 150204.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementDouble0:RunReflectionScenario(int,ubyte):this (FullOpts)
28 (0.82 % of base) : 150211.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementDouble1:RunReflectionScenario(int,ubyte):this (FullOpts)
28 (0.82 % of base) : 150218.dasm - JIT.HardwareIntrinsics.General._Vector256_1.VectorGetAndWithElement__GetAndWithElementDouble3:RunReflectionScenario(int,ubyte):this (FullOpts)
24 (4.69 % of base) : 295775.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (4.69 % of base) : 297971.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (0.72 % of base) : 153878.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithElement__GetAndWithElementDouble0:RunReflectionScenario(int,ubyte):this (FullOpts)
24 (0.72 % of base) : 153886.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorGetAndWithElement__GetAndWithElementDouble1:RunReflectionScenario(int,ubyte):this (FullOpts)
12 (2.73 % of base) : 314081.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (1.32 % of base) : 354667.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
12 (0.28 % of base) : 198964.dasm - UnrollEqualsStartsWith:RunTests(System.Type):int (FullOpts)
Top method improvements (bytes):
-20 (-3.40 % of base) : 361857.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
-20 (-9.62 % of base) : 341879.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-2.13 % of base) : 158223.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateScalarDouble:ValidateResult(double[],double,System.String):this (FullOpts)
-16 (-2.13 % of base) : 158248.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateScalarSingle:ValidateResult(float[],float,System.String):this (FullOpts)
-16 (-2.13 % of base) : 172774.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorCreate__CreateScalarSingle:ValidateResult(float[],float,System.String):this (FullOpts)
-16 (-7.84 % of base) : 319249.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 319517.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 342036.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 343724.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 344718.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 354825.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 354906.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 355266.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 335367.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 341357.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 342326.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 342472.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 342802.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 344133.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 344188.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
Top method regressions (percentages):
28 (6.54 % of base) : 206137.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
24 (4.69 % of base) : 295775.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (4.69 % of base) : 297971.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
8 (3.92 % of base) : 348010.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 358002.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 358192.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 355796.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 356026.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 356294.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
8 (3.92 % of base) : 365359.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
12 (2.73 % of base) : 314081.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
28 (2.44 % of base) : 154205.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Double:RunReflectionScenario():this (FullOpts)
28 (2.42 % of base) : 154223.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int64:RunReflectionScenario():this (FullOpts)
28 (2.42 % of base) : 154253.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt64:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 154217.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int32:RunReflectionScenario():this (FullOpts)
28 (2.39 % of base) : 154247.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt32:RunReflectionScenario():this (FullOpts)
4 (2.38 % of base) : 353859.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
28 (2.33 % of base) : 154211.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256Int16:RunReflectionScenario():this (FullOpts)
28 (2.33 % of base) : 154241.dasm - JIT.HardwareIntrinsics.General._Vector128_1.VectorExtend__ToVector256UInt16:RunReflectionScenario():this (FullOpts)
4 (2.33 % of base) : 318491.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
Top method improvements (percentages):
-20 (-9.62 % of base) : 341879.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 319249.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 319517.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 342036.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 343724.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 344718.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 354825.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 354906.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 355266.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 335367.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 341357.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 342326.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 342472.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 342802.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 344133.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 344188.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 355492.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 360489.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-16 (-7.84 % of base) : 366641.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-12 (-4.00 % of base) : 353182.dasm - Test_pluggaps:Main():int (Tier1-OSR)
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: 66634756 (overridden on cmd)
Total bytes of diff: 66634924 (overridden on cmd)
Total bytes of delta: 168 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
84 : 231716.dasm (1.36 % of base)
48 : 156363.dasm (0.18 % of base)
20 : 151076.dasm (1.51 % of base)
16 : 779.dasm (0.17 % of base)
12 : 24036.dasm (1.87 % of base)
12 : 266698.dasm (2.78 % of base)
12 : 18749.dasm (2.78 % of base)
12 : 169941.dasm (5.88 % of base)
12 : 215260.dasm (5.88 % of base)
8 : 30459.dasm (0.77 % of base)
8 : 16679.dasm (1.67 % of base)
8 : 155596.dasm (0.16 % of base)
8 : 17470.dasm (1.82 % of base)
8 : 191190.dasm (1.21 % of base)
8 : 243824.dasm (1.28 % of base)
4 : 266551.dasm (0.55 % of base)
4 : 112511.dasm (0.56 % of base)
4 : 165111.dasm (0.26 % of base)
4 : 106103.dasm (1.01 % of base)
4 : 270179.dasm (0.33 % of base)
Top file improvements (bytes):
-48 : 3344.dasm (-0.42 % of base)
-24 : 90139.dasm (-0.45 % of base)
-20 : 10787.dasm (-2.23 % of base)
-16 : 37067.dasm (-2.16 % of base)
-12 : 192050.dasm (-0.79 % of base)
-8 : 203198.dasm (-0.20 % of base)
-4 : 112968.dasm (-0.18 % of base)
-4 : 112989.dasm (-0.26 % of base)
-4 : 112980.dasm (-0.09 % of base)
-4 : 92578.dasm (-0.12 % of base)
33 total files with Code Size differences (10 improved, 23 regressed), 28 unchanged.
Top method regressions (bytes):
84 (1.36 % of base) : 231716.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
48 (0.18 % of base) : 156363.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.51 % of base) : 151076.dasm - System.DirectoryServices.SearchResultCollection+ResultsEnumerator:GetCurrentResult():System.DirectoryServices.SearchResult:this (FullOpts)
16 (0.17 % of base) : 779.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
12 (5.88 % of base) : 169941.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (5.88 % of base) : 215260.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (1.87 % of base) : 24036.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
12 (2.78 % of base) : 266698.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (2.78 % of base) : 18749.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
8 (0.77 % of base) : 30459.dasm - Microsoft.FSharp.Control.FSharpEvent`2[System.__Canon,System.__Canon]:.cctor() (FullOpts)
8 (0.16 % of base) : 155596.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
8 (1.28 % of base) : 243824.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
8 (1.67 % of base) : 16679.dasm - System.Environment:GetEnvironmentVariablesFromRegistry(ubyte):System.Collections.Hashtable (FullOpts)
8 (1.82 % of base) : 17470.dasm - System.TimeZoneInfo:PopulateAllSystemTimeZones(System.TimeZoneInfo+CachedData) (FullOpts)
8 (1.21 % of base) : 191190.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (0.26 % of base) : 96101.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:DetermineDefaultPropertyName(System.Collections.Generic.Dictionary`2[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.String:this (FullOpts)
4 (1.01 % of base) : 106103.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContextExtensions:MatchEndElement(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContext],Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameSyntax):int (FullOpts)
4 (0.56 % of base) : 112511.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
4 (0.59 % of base) : 36504.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
4 (0.19 % of base) : 27558.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:objectValueWithPropertiesL(int,System.Type,System.Object):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
Top method improvements (bytes):
-48 (-0.42 % of base) : 3344.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-24 (-0.45 % of base) : 90139.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)
-20 (-2.23 % of base) : 10787.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-16 (-2.16 % of base) : 37067.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
-12 (-0.79 % of base) : 192050.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-8 (-0.20 % of base) : 203198.dasm - System.Speech.Internal.SrgsCompiler.Backend:InitFromBinaryGrammar(System.Speech.Internal.StreamMarshaler):this (FullOpts)
-4 (-0.12 % of base) : 92578.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindLateBoundInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-4 (-0.26 % of base) : 112989.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CombineCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,int,System.Collections.Immutable.ImmutableArray`1[System.String],byref) (FullOpts)
-4 (-0.09 % of base) : 112980.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
-4 (-0.18 % of base) : 112968.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ShadowBasedOnInferenceLevel(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref,byref) (FullOpts)
Top method regressions (percentages):
12 (5.88 % of base) : 169941.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (5.88 % of base) : 215260.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (2.78 % of base) : 266698.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (2.78 % of base) : 18749.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (1.87 % of base) : 24036.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
8 (1.82 % of base) : 17470.dasm - System.TimeZoneInfo:PopulateAllSystemTimeZones(System.TimeZoneInfo+CachedData) (FullOpts)
8 (1.67 % of base) : 16679.dasm - System.Environment:GetEnvironmentVariablesFromRegistry(ubyte):System.Collections.Hashtable (FullOpts)
20 (1.51 % of base) : 151076.dasm - System.DirectoryServices.SearchResultCollection+ResultsEnumerator:GetCurrentResult():System.DirectoryServices.SearchResult:this (FullOpts)
84 (1.36 % of base) : 231716.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
8 (1.28 % of base) : 243824.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
8 (1.21 % of base) : 191190.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (1.01 % of base) : 106103.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContextExtensions:MatchEndElement(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContext],Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameSyntax):int (FullOpts)
8 (0.77 % of base) : 30459.dasm - Microsoft.FSharp.Control.FSharpEvent`2[System.__Canon,System.__Canon]:.cctor() (FullOpts)
4 (0.59 % of base) : 36504.dasm - Microsoft.Diagnostics.Utilities.PathUtil:PathRelativeTo(System.String,System.String):System.String (FullOpts)
4 (0.56 % of base) : 112511.dasm - Microsoft.CodeAnalysis.VisualBasic.SynthesizedStateMachineMethod:.ctor(Microsoft.CodeAnalysis.VisualBasic.StateMachineTypeSymbol,System.String,Microsoft.CodeAnalysis.VisualBasic.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,int,ubyte,ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.PropertySymbol):this (FullOpts)
4 (0.55 % of base) : 266551.dasm - System.Data.ProviderBase.DbConnectionPool:PoolCreateRequest(System.Object):this (FullOpts)
4 (0.33 % of base) : 270179.dasm - System.Security.Principal.WindowsIdentity:AddDeviceGroupSidClaims(System.Collections.Generic.List`1[System.Security.Claims.Claim],int):this (FullOpts)
4 (0.26 % of base) : 96101.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:DetermineDefaultPropertyName(System.Collections.Generic.Dictionary`2[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.String:this (FullOpts)
4 (0.26 % of base) : 165111.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
4 (0.19 % of base) : 27558.dasm - Microsoft.FSharp.Text.StructuredPrintfImpl.Display+ObjectGraphFormatter:objectValueWithPropertiesL(int,System.Type,System.Object):Microsoft.FSharp.Text.StructuredPrintfImpl.Layout:this (FullOpts)
Top method improvements (percentages):
-20 (-2.23 % of base) : 10787.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-16 (-2.16 % of base) : 37067.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
-12 (-0.79 % of base) : 192050.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-24 (-0.45 % of base) : 90139.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)
-48 (-0.42 % of base) : 3344.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.26 % of base) : 112989.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:CombineCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult,int,System.Collections.Immutable.ImmutableArray`1[System.String],byref) (FullOpts)
-8 (-0.20 % of base) : 203198.dasm - System.Speech.Internal.SrgsCompiler.Backend:InitFromBinaryGrammar(System.Speech.Internal.StreamMarshaler):this (FullOpts)
-4 (-0.18 % of base) : 112968.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:ShadowBasedOnInferenceLevel(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],ubyte,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref,byref) (FullOpts)
-4 (-0.12 % of base) : 92578.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindLateBoundInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-4 (-0.09 % of base) : 112980.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
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: 79824464 (overridden on cmd)
Total bytes of diff: 79824636 (overridden on cmd)
Total bytes of delta: 172 (0.00 % of base)
diff is a regression.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
64 : 142966.dasm (0.22 % of base)
48 : 117185.dasm (0.87 % of base)
48 : 151366.dasm (1.21 % of base)
44 : 276312.dasm (3.15 % of base)
24 : 235227.dasm (4.69 % of base)
24 : 145905.dasm (2.27 % of base)
16 : 186771.dasm (1.20 % of base)
16 : 200301.dasm (2.55 % of base)
12 : 130165.dasm (6.25 % of base)
12 : 163692.dasm (6.25 % of base)
12 : 234697.dasm (0.16 % of base)
12 : 267212.dasm (2.73 % of base)
12 : 269169.dasm (2.73 % of base)
12 : 153833.dasm (0.99 % of base)
12 : 154608.dasm (2.31 % of base)
12 : 179323.dasm (2.29 % of base)
12 : 258469.dasm (0.89 % of base)
8 : 192109.dasm (1.12 % of base)
8 : 1078.dasm (0.09 % of base)
8 : 203825.dasm (1.15 % of base)
Top file improvements (bytes):
-44 : 227591.dasm (-2.84 % of base)
-24 : 145861.dasm (-1.25 % of base)
-24 : 206926.dasm (-3.31 % of base)
-20 : 131744.dasm (-2.00 % of base)
-16 : 145622.dasm (-1.32 % of base)
-16 : 93891.dasm (-0.78 % of base)
-12 : 139258.dasm (-0.28 % of base)
-12 : 172297.dasm (-0.28 % of base)
-12 : 264979.dasm (-0.90 % of base)
-12 : 4766.dasm (-11.11 % of base)
-12 : 4778.dasm (-12.00 % of base)
-12 : 120297.dasm (-0.29 % of base)
-12 : 177881.dasm (-0.32 % of base)
-8 : 187086.dasm (-2.11 % of base)
-8 : 127316.dasm (-0.38 % of base)
-8 : 120355.dasm (-0.16 % of base)
-8 : 160951.dasm (-0.38 % of base)
-8 : 279292.dasm (-0.73 % of base)
-8 : 89300.dasm (-0.38 % of base)
-8 : 241287.dasm (-1.18 % of base)
51 total files with Code Size differences (27 improved, 24 regressed), 20 unchanged.
Top method regressions (bytes):
64 (0.22 % of base) : 142966.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)
48 (1.21 % of base) : 151366.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
48 (0.87 % of base) : 117185.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
44 (3.15 % of base) : 276312.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
24 (4.69 % of base) : 235227.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
24 (2.27 % of base) : 145905.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeMultidimensionalArray(Newtonsoft.Json.JsonWriter,System.Array,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,int,int[]):this (FullOpts)
16 (1.20 % of base) : 186771.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteSwitchExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
16 (2.55 % of base) : 200301.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
12 (0.16 % of base) : 234697.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
12 (2.31 % of base) : 154608.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
12 (0.99 % of base) : 153833.dasm - Microsoft.Build.Shared.ResourceUtilities:ExtractMessageCode(ubyte,System.String,byref):System.String (FullOpts)
12 (6.25 % of base) : 130165.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (6.25 % of base) : 163692.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (2.29 % of base) : 179323.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
12 (2.73 % of base) : 267212.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (2.73 % of base) : 269169.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (0.89 % of base) : 258469.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FA531B1B140B4C4724EBE448DE02C2BB45C5CE928BA56DEA80B8B0BA098711049__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
8 (0.17 % of base) : 121296.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
8 (0.09 % of base) : 1078.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
8 (1.15 % of base) : 203825.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
Top method improvements (bytes):
-44 (-2.84 % of base) : 227591.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-24 (-1.25 % of base) : 145861.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:PopulateMultidimensionalArray(System.Collections.IList,Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,System.String):System.Object:this (FullOpts)
-24 (-3.31 % of base) : 206926.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-20 (-2.00 % of base) : 131744.dasm - Microsoft.CodeAnalysis.Text.SourceText:ContentEqualsImpl(Microsoft.CodeAnalysis.Text.SourceText):ubyte:this (FullOpts)
-16 (-0.78 % of base) : 93891.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-16 (-1.32 % of base) : 145622.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-12 (-0.28 % of base) : 139258.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesAndTokensIntoTrivia>d__175:MoveNext():ubyte:this (FullOpts)
-12 (-0.28 % of base) : 172297.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesAndTokensIntoTrivia>d__175:MoveNext():ubyte:this (FullOpts)
-12 (-0.29 % of base) : 120297.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
-12 (-0.32 % of base) : 177881.dasm - System.Data.XMLDiffLoader:ReadOldRowData(System.Data.DataSet,byref,byref,System.Xml.XmlReader):int:this (FullOpts)
-12 (-0.90 % of base) : 264979.dasm - System.DirectoryServices.SearchResultCollection+ResultsEnumerator:GetCurrentResult():System.DirectoryServices.SearchResult:this (FullOpts)
-12 (-11.11 % of base) : 4766.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-12 (-12.00 % of base) : 4778.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-8 (-0.38 % of base) : 127316.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):this (FullOpts)
-8 (-0.38 % of base) : 160951.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):this (FullOpts)
-8 (-0.16 % of base) : 120355.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
-8 (-2.11 % of base) : 187086.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
-8 (-0.73 % of base) : 279292.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-8 (-1.18 % of base) : 241287.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
-8 (-1.18 % of base) : 293595.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
Top method regressions (percentages):
12 (6.25 % of base) : 130165.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
12 (6.25 % of base) : 163692.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
24 (4.69 % of base) : 235227.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
44 (3.15 % of base) : 276312.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
12 (2.73 % of base) : 267212.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (2.73 % of base) : 269169.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
16 (2.55 % of base) : 200301.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
12 (2.31 % of base) : 154608.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
12 (2.29 % of base) : 179323.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
24 (2.27 % of base) : 145905.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalWriter:SerializeMultidimensionalArray(Newtonsoft.Json.JsonWriter,System.Array,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,int,int[]):this (FullOpts)
4 (1.27 % of base) : 108331.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContextExtensions:MatchEndElement(System.Collections.Generic.List`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlContext],Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.XmlNameSyntax):int (FullOpts)
48 (1.21 % of base) : 151366.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
16 (1.20 % of base) : 186771.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteSwitchExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
8 (1.15 % of base) : 203825.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (1.12 % of base) : 285577.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
8 (1.12 % of base) : 192109.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
12 (0.99 % of base) : 153833.dasm - Microsoft.Build.Shared.ResourceUtilities:ExtractMessageCode(ubyte,System.String,byref):System.String (FullOpts)
4 (0.99 % of base) : 208852.dasm - System.Xml.Serialization.AccessorMapping:ElementsMatch(System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.ElementAccessor[]):ubyte (FullOpts)
12 (0.89 % of base) : 258469.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FA531B1B140B4C4724EBE448DE02C2BB45C5CE928BA56DEA80B8B0BA098711049__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
48 (0.87 % of base) : 117185.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
Top method improvements (percentages):
-12 (-12.00 % of base) : 4778.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-12 (-11.11 % of base) : 4766.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-24 (-3.31 % of base) : 206926.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-44 (-2.84 % of base) : 227591.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-8 (-2.11 % of base) : 187086.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
-20 (-2.00 % of base) : 131744.dasm - Microsoft.CodeAnalysis.Text.SourceText:ContentEqualsImpl(Microsoft.CodeAnalysis.Text.SourceText):ubyte:this (FullOpts)
-4 (-1.67 % of base) : 253580.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
-16 (-1.32 % of base) : 145622.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-4 (-1.30 % of base) : 153853.dasm - Microsoft.Build.Shared.TypeLoader:IsPartialTypeNameMatch(System.String,System.String):ubyte (FullOpts)
-24 (-1.25 % of base) : 145861.dasm - Newtonsoft.Json.Serialization.JsonSerializerInternalReader:PopulateMultidimensionalArray(System.Collections.IList,Newtonsoft.Json.JsonReader,Newtonsoft.Json.Serialization.JsonArrayContract,Newtonsoft.Json.Serialization.JsonProperty,System.String):System.Object:this (FullOpts)
-8 (-1.18 % of base) : 241287.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
-8 (-1.18 % of base) : 293595.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
-4 (-1.04 % of base) : 187002.dasm - System.Dynamic.ExpandoObject+ValueCollection:Contains(System.Object):ubyte:this (FullOpts)
-12 (-0.90 % of base) : 264979.dasm - System.DirectoryServices.SearchResultCollection+ResultsEnumerator:GetCurrentResult():System.DirectoryServices.SearchResult:this (FullOpts)
-4 (-0.85 % of base) : 35614.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetParameterSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this (FullOpts)
-16 (-0.78 % of base) : 93891.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-8 (-0.73 % of base) : 279292.dasm - System.Net.Cookie:set_Port(System.String):this (FullOpts)
-4 (-0.71 % of base) : 258595.dasm - System.Diagnostics.Activity+TagsLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.Object]):this (FullOpts)
-4 (-0.46 % of base) : 178783.dasm - System.Data.DataRelation:Create(System.String,System.Data.DataColumn[],System.Data.DataColumn[],ubyte):this (FullOpts)
-8 (-0.38 % of base) : 127316.dasm - Microsoft.CodeAnalysis.DeterministicKeyBuilder:WriteCompilation(Roslyn.Utilities.JsonWriter,Microsoft.CodeAnalysis.CompilationOptions,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.SyntaxTreeKey],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[System.Collections.Generic.KeyValuePair`2[System.String,System.String]],int,System.Threading.CancellationToken):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: 6477948 (overridden on cmd)
Total bytes of diff: 6477728 (overridden on cmd)
Total bytes of delta: -220 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
12 : 1780.dasm (1.42 % of base)
8 : 5246.dasm (3.92 % of base)
4 : 10009.dasm (0.86 % of base)
4 : 1366.dasm (0.85 % of base)
4 : 1609.dasm (2.33 % of base)
4 : 6060.dasm (0.70 % of base)
4 : 6159.dasm (0.70 % of base)
4 : 7198.dasm (0.85 % of base)
4 : 7260.dasm (0.70 % of base)
4 : 1170.dasm (0.83 % of base)
4 : 4671.dasm (0.83 % of base)
4 : 5903.dasm (0.85 % of base)
4 : 6597.dasm (0.85 % of base)
4 : 7100.dasm (0.83 % of base)
4 : 7279.dasm (0.70 % of base)
4 : 7895.dasm (0.85 % of base)
4 : 9922.dasm (0.70 % of base)
4 : 4298.dasm (0.83 % of base)
4 : 4699.dasm (0.85 % of base)
4 : 6012.dasm (0.70 % of base)
Top file improvements (bytes):
-8 : 2081.dasm (-1.11 % of base)
-8 : 4346.dasm (-1.10 % of base)
-8 : 4658.dasm (-1.11 % of base)
-8 : 5931.dasm (-1.11 % of base)
-8 : 779.dasm (-1.11 % of base)
-8 : 1429.dasm (-1.11 % of base)
-8 : 1630.dasm (-1.11 % of base)
-8 : 1975.dasm (-1.11 % of base)
-8 : 5467.dasm (-1.11 % of base)
-8 : 5534.dasm (-1.11 % of base)
-8 : 5881.dasm (-1.11 % of base)
-8 : 9913.dasm (-1.11 % of base)
-8 : 1779.dasm (-1.11 % of base)
-8 : 1897.dasm (-1.11 % of base)
-8 : 4565.dasm (-1.11 % of base)
-8 : 4589.dasm (-1.11 % of base)
-8 : 5637.dasm (-1.11 % of base)
-8 : 5797.dasm (-1.11 % of base)
-8 : 5822.dasm (-1.11 % of base)
-8 : 5853.dasm (-1.11 % of base)
54 total files with Code Size differences (32 improved, 22 regressed), 19 unchanged.
Top method regressions (bytes):
12 (1.42 % of base) : 1780.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
8 (3.92 % of base) : 5246.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
4 (0.70 % of base) : 6060.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 6159.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 7260.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 7279.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 9922.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 6012.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 10397.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (2.33 % of base) : 1609.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
4 (0.86 % of base) : 10009.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 1366.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 7198.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.83 % of base) : 1170.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.83 % of base) : 4671.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 5903.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 6597.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.83 % of base) : 7100.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 7895.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.83 % of base) : 4298.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
Top method improvements (bytes):
-8 (-1.11 % of base) : 2081.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.10 % of base) : 4346.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 4658.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 5931.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 779.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 1429.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 1630.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 1975.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 5467.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 5534.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 5881.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 9913.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 1779.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 1897.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 4565.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 4589.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 5637.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 5797.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 5822.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 5853.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
Top method regressions (percentages):
8 (3.92 % of base) : 5246.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
4 (2.33 % of base) : 1609.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
12 (1.42 % of base) : 1780.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
4 (0.86 % of base) : 10009.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 1366.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 5903.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 6597.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 4699.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 8834.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 7198.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.85 % of base) : 7895.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.83 % of base) : 1170.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.83 % of base) : 4671.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.83 % of base) : 7100.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.83 % of base) : 4298.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
4 (0.70 % of base) : 6060.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 6159.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 7260.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 7279.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
4 (0.70 % of base) : 9922.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
Top method improvements (percentages):
-4 (-2.08 % of base) : 4712.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-1.56 % of base) : 442.dasm - System.Type:GetConstructor(int,System.Reflection.Binder,int,System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.ConstructorInfo:this (Instrumented Tier1)
-4 (-1.54 % of base) : 8802.dasm - System.String:GetNonRandomizedHashCode():int:this (Tier1)
-4 (-1.47 % of base) : 5970.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
-4 (-1.47 % of base) : 7601.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
-4 (-1.47 % of base) : 6485.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
-4 (-1.47 % of base) : 1461.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
-4 (-1.47 % of base) : 6832.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
-4 (-1.47 % of base) : 7433.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
-4 (-1.47 % of base) : 8301.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
-4 (-1.47 % of base) : 9313.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
-4 (-1.47 % of base) : 9558.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
-8 (-1.11 % of base) : 2081.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 4658.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 5931.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 779.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 1429.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 1630.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 1975.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1)
-8 (-1.11 % of base) : 5467.dasm - System.Linq.Enumerable:TryGetFirst[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (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: 168096992 (overridden on cmd)
Total bytes of diff: 168097208 (overridden on cmd)
Total bytes of delta: 216 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
64 : 59993.dasm (0.22 % of base)
44 : 156429.dasm (3.15 % of base)
40 : 293612.dasm (2.62 % of base)
36 : 292131.dasm (2.65 % of base)
36 : 292180.dasm (1.80 % of base)
36 : 292304.dasm (2.40 % of base)
36 : 292309.dasm (2.18 % of base)
36 : 292192.dasm (1.67 % of base)
28 : 145818.dasm (0.75 % of base)
24 : 292130.dasm (1.38 % of base)
16 : 4071.dasm (1.35 % of base)
16 : 92956.dasm (2.55 % of base)
16 : 25271.dasm (0.17 % of base)
16 : 50109.dasm (0.57 % of base)
12 : 127527.dasm (2.73 % of base)
12 : 16863.dasm (2.73 % of base)
12 : 275888.dasm (0.81 % of base)
12 : 290714.dasm (1.03 % of base)
12 : 290731.dasm (1.01 % of base)
12 : 297532.dasm (0.68 % of base)
Top file improvements (bytes):
-36 : 289816.dasm (-0.97 % of base)
-28 : 289813.dasm (-0.79 % of base)
-24 : 177271.dasm (-3.31 % of base)
-24 : 13025.dasm (-0.40 % of base)
-20 : 289551.dasm (-1.34 % of base)
-16 : 304630.dasm (-0.67 % of base)
-16 : 280908.dasm (-0.63 % of base)
-16 : 292065.dasm (-0.64 % of base)
-12 : 280883.dasm (-0.68 % of base)
-12 : 280890.dasm (-0.65 % of base)
-12 : 280893.dasm (-0.67 % of base)
-12 : 289591.dasm (-0.72 % of base)
-12 : 302126.dasm (-0.72 % of base)
-12 : 43794.dasm (-0.82 % of base)
-12 : 95562.dasm (-0.33 % of base)
-12 : 12221.dasm (-0.29 % of base)
-12 : 280886.dasm (-0.65 % of base)
-12 : 280889.dasm (-0.65 % of base)
-12 : 302133.dasm (-0.71 % of base)
-12 : 280884.dasm (-0.67 % of base)
60 total files with Code Size differences (31 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
64 (0.22 % of base) : 59993.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)
44 (3.15 % of base) : 156429.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
40 (2.62 % of base) : 293612.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3469_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (2.65 % of base) : 292131.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2916_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (1.80 % of base) : 292180.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3081_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (1.67 % of base) : 292192.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3100_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (2.40 % of base) : 292304.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3303_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (2.18 % of base) : 292309.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3309_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
28 (0.75 % of base) : 145818.dasm - System.Linq.Tests.TakeTests:ElementAtOfLazySkipTakeChain(int[],int,int,int[],int[]):this (FullOpts)
24 (1.38 % of base) : 292130.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2915_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (0.57 % of base) : 50109.dasm - Microsoft.CodeAnalysis.CSharp.Symbol:LoadAndValidateAttributes(Roslyn.Utilities.OneOrMany`1[Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeListSyntax]],byref,short,ubyte,Microsoft.CodeAnalysis.CSharp.Binder,System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax,ubyte]):ubyte:this (FullOpts)
16 (1.35 % of base) : 4071.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)
16 (0.17 % of base) : 25271.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
16 (2.55 % of base) : 92956.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
12 (0.87 % of base) : 17832.dasm - IntrinsicsInSystemPrivateCoreLib.IntrinsicsInSystemPrivateCoreLibAnalyzer:<AnalyzeOperation>g__HandleConditionalCase|32_0(Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.SyntaxNode,byref):ubyte (FullOpts)
12 (2.29 % of base) : 91672.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
12 (2.73 % of base) : 127527.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (2.73 % of base) : 16863.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (2.73 % of base) : 127078.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (0.85 % of base) : 275588.dasm - System.Text.Json.Serialization.Tests.CustomConverterTests+DictionaryEnumConverter+DictionaryEnumConverterInner`2[int,int]:Read(byref,System.Type,System.Text.Json.JsonSerializerOptions):System.Collections.Generic.Dictionary`2[int,int]:this (FullOpts)
Top method improvements (bytes):
-36 (-0.97 % of base) : 289816.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4378_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-28 (-0.79 % of base) : 289813.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4376_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-24 (-0.40 % of base) : 13025.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)
-24 (-3.31 % of base) : 177271.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-20 (-1.34 % of base) : 289551.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1708_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-16 (-0.63 % of base) : 280908.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex212_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-16 (-0.67 % of base) : 304630.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33289_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-16 (-0.64 % of base) : 292065.dasm - System.Text.RegularExpressions.Tests.CustomDerivedRegex+CustomRegexRunnerFactory+CustomRegexRunner:Go():this (FullOpts)
-12 (-0.82 % of base) : 43794.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-12 (-0.82 % of base) : 49593.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-12 (-0.29 % of base) : 12221.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesAndTokensIntoTrivia>d__175:MoveNext():ubyte:this (FullOpts)
-12 (-0.33 % of base) : 95562.dasm - System.Data.XMLDiffLoader:ReadOldRowData(System.Data.DataSet,byref,byref,System.Xml.XmlReader):int:this (FullOpts)
-12 (-0.72 % of base) : 289591.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1737_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.68 % of base) : 280883.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex189_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.67 % of base) : 280884.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex190_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.65 % of base) : 280885.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex191_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.65 % of base) : 280886.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex192_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.65 % of base) : 280889.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex195_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.65 % of base) : 280890.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex196_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.67 % of base) : 280893.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex199_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method regressions (percentages):
44 (3.15 % of base) : 156429.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
12 (2.73 % of base) : 127527.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (2.73 % of base) : 16863.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (2.73 % of base) : 127078.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
36 (2.65 % of base) : 292131.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2916_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
40 (2.62 % of base) : 293612.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3469_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (2.55 % of base) : 92956.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
36 (2.40 % of base) : 292304.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3303_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (2.29 % of base) : 91672.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
36 (2.18 % of base) : 292309.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3309_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (1.80 % of base) : 292180.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3081_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
36 (1.67 % of base) : 292192.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3100_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
24 (1.38 % of base) : 292130.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2915_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
16 (1.35 % of base) : 4071.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.25 % of base) : 178625.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):this (FullOpts)
4 (1.12 % of base) : 131593.dasm - System.Xml.Linq.NamespaceResolver:GetPrefixOfNamespace(System.Xml.Linq.XNamespace,ubyte):System.String:this (FullOpts)
8 (1.12 % of base) : 104515.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
12 (1.04 % of base) : 287805.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex689_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (1.03 % of base) : 290714.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2572_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
12 (1.01 % of base) : 290731.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2575_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method improvements (percentages):
-24 (-3.31 % of base) : 177271.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-8 (-2.11 % of base) : 25017.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
-20 (-1.34 % of base) : 289551.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1708_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-8 (-1.18 % of base) : 238024.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
-36 (-0.97 % of base) : 289816.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4378_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.85 % of base) : 14439.dasm - Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel:GetParameterSymbol(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],Microsoft.CodeAnalysis.CSharp.Syntax.ParameterSyntax,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol:this (FullOpts)
-12 (-0.82 % of base) : 43794.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-12 (-0.82 % of base) : 49593.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:ReuseAssemblySymbolsWithNoPiaLocalTypes(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.__Canon[],System.Collections.Immutable.ImmutableArray`1[System.__Canon],int):ubyte:this (FullOpts)
-28 (-0.79 % of base) : 289813.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4376_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.76 % of base) : 39874.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
-12 (-0.72 % of base) : 289591.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1737_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.72 % of base) : 302126.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6427_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.72 % of base) : 302132.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6433_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-4 (-0.71 % of base) : 54491.dasm - System.Diagnostics.Activity+TagsLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.Object]):this (FullOpts)
-12 (-0.71 % of base) : 302133.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6435_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.69 % of base) : 302128.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6429_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.68 % of base) : 280883.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex189_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.67 % of base) : 280884.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex190_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-12 (-0.67 % of base) : 280893.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex199_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-16 (-0.67 % of base) : 304630.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33289_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 15898576 (overridden on cmd)
Total bytes of diff: 15898504 (overridden on cmd)
Total bytes of delta: -72 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
44 : 12522.dasm (0.51 % of base)
16 : 16268.dasm (1.35 % of base)
12 : 1611.dasm (2.73 % of base)
8 : 14946.dasm (0.79 % of base)
8 : 12135.dasm (0.58 % of base)
4 : 21250.dasm (0.22 % of base)
4 : 14909.dasm (0.24 % of base)
Top file improvements (bytes):
-64 : 5784.dasm (-0.06 % of base)
-44 : 31221.dasm (-0.40 % of base)
-24 : 21933.dasm (-0.40 % of base)
-12 : 2181.dasm (-1.23 % of base)
-8 : 20204.dasm (-0.14 % of base)
-4 : 19637.dasm (-0.12 % of base)
-4 : 31453.dasm (-0.14 % of base)
-4 : 26789.dasm (-0.12 % of base)
-4 : 23242.dasm (-0.11 % of base)
16 total files with Code Size differences (9 improved, 7 regressed), 36 unchanged.
Top method regressions (bytes):
44 (0.51 % of base) : 12522.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
16 (1.35 % of base) : 16268.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)
12 (2.73 % of base) : 1611.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
8 (0.79 % of base) : 14946.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
8 (0.58 % of base) : 12135.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
4 (0.22 % of base) : 21250.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeArguments(Microsoft.CodeAnalysis.ISymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]]):this (FullOpts)
4 (0.24 % of base) : 14909.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
Top method improvements (bytes):
-64 (-0.06 % of base) : 5784.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
-44 (-0.40 % of base) : 31221.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-24 (-0.40 % of base) : 21933.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)
-12 (-1.23 % of base) : 2181.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-8 (-0.14 % of base) : 20204.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.11 % of base) : 23242.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.12 % of base) : 26789.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.12 % of base) : 19637.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-4 (-0.14 % of base) : 31453.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
Top method regressions (percentages):
12 (2.73 % of base) : 1611.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
16 (1.35 % of base) : 16268.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 (0.79 % of base) : 14946.dasm - Microsoft.ML.Trainers.KMeansBarBarInitialization:FindBestCluster(byref,int,Microsoft.ML.Trainers.KMeansBarBarInitialization+SharedState,int,int,Microsoft.ML.Data.VBuffer`1[float][],float[],ubyte,ubyte,byref,byref) (FullOpts)
8 (0.58 % of base) : 12135.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
44 (0.51 % of base) : 12522.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
4 (0.24 % of base) : 14909.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
4 (0.22 % of base) : 21250.dasm - Microsoft.CodeAnalysis.CSharp.SymbolDisplayVisitor:AddTypeArguments(Microsoft.CodeAnalysis.ISymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CustomModifier]]):this (FullOpts)
Top method improvements (percentages):
-12 (-1.23 % of base) : 2181.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-24 (-0.40 % of base) : 21933.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)
-44 (-0.40 % of base) : 31221.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.14 % of base) : 31453.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
-8 (-0.14 % of base) : 20204.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
-4 (-0.12 % of base) : 19637.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
-4 (-0.12 % of base) : 26789.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-4 (-0.11 % of base) : 23242.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindForOrUsingOrFixedDeclarations(Microsoft.CodeAnalysis.CSharp.Syntax.VariableDeclarationSyntax,ubyte,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-64 (-0.06 % of base) : 5784.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
smoke_tests.nativeaot.windows.arm64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 3806968 (overridden on cmd)
Total bytes of diff: 3806992 (overridden on cmd)
Total bytes of delta: 24 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
12 : 2569.dasm (2.94 % of base)
12 : 7493.dasm (2.94 % of base)
2 total files with Code Size differences (0 improved, 2 regressed), 30 unchanged.
Top method regressions (bytes):
12 (2.94 % of base) : 2569.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (2.94 % of base) : 7493.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
Top method regressions (percentages):
12 (2.94 % of base) : 2569.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (2.94 % of base) : 7493.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
2 total methods with Code Size differences (0 improved, 2 regressed).
windows x64
Diffs are based on 1,999,231 contexts (587,594 MinOpts, 1,411,637 FullOpts).
MISSED contexts: 3,657 (0.18%)
Overall (-11,691 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
46,755,446 |
-3,070 |
benchmarks.run.windows.x64.checked.mch |
11,726,698 |
+337 |
benchmarks.run_pgo.windows.x64.checked.mch |
34,354,002 |
-12,476 |
benchmarks.run_tiered.windows.x64.checked.mch |
19,448,995 |
+407 |
coreclr_tests.run.windows.x64.checked.mch |
296,147,901 |
-564 |
libraries.crossgen2.windows.x64.checked.mch |
44,779,562 |
+503 |
libraries.pmi.windows.x64.checked.mch |
67,659,393 |
+1,289 |
libraries_tests.run.windows.x64.Release.mch |
42,430,193 |
-659 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
142,635,440 |
+1,742 |
realworld.run.windows.x64.checked.mch |
14,768,264 |
+634 |
smoke_tests.nativeaot.windows.x64.checked.mch |
5,049,681 |
+166 |
FullOpts (-11,691 bytes)
Collection |
Base size (bytes) |
Diff size (bytes) |
aspnet.run.windows.x64.checked.mch |
28,266,706 |
-3,070 |
benchmarks.run.windows.x64.checked.mch |
11,726,103 |
+337 |
benchmarks.run_pgo.windows.x64.checked.mch |
15,517,306 |
-12,476 |
benchmarks.run_tiered.windows.x64.checked.mch |
4,081,106 |
+407 |
coreclr_tests.run.windows.x64.checked.mch |
110,373,511 |
-564 |
libraries.crossgen2.windows.x64.checked.mch |
44,778,375 |
+503 |
libraries.pmi.windows.x64.checked.mch |
67,545,872 |
+1,289 |
libraries_tests.run.windows.x64.Release.mch |
10,788,313 |
-659 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
131,852,570 |
+1,742 |
realworld.run.windows.x64.checked.mch |
14,381,655 |
+634 |
smoke_tests.nativeaot.windows.x64.checked.mch |
5,048,734 |
+166 |
Example diffs
aspnet.run.windows.x64.checked.mch
-28 (-11.97%) : 40657.dasm - System.Collections.Concurrent.ConcurrentDictionary2[System.__Canon,System.__Canon]:CopyToPairs(System.Collections.Generic.KeyValuePair
2[System.Canon,System.Canon][],int):this (Tier1-OSR)
@@ -28,9 +28,9 @@
; V15 tmp8 [V15,T05] ( 3, 50 ) byref -> r13 "BlockOp address local"
;* V16 cse0 [V16,T16] ( 0, 0 ) long -> zero-ref hoist "CSE - aggressive"
; V17 cse1 [V17,T01] ( 3,275.00) int -> rax "CSE - aggressive"
-; V18 rat0 [V18,T08] ( 2, 30.56) long -> rcx "Spilling to split statement for tree"
+;* V18 rat0 [V18,T08] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V19 rat1 [V19,T11] ( 0, 0 ) long -> zero-ref "runtime lookup"
-; V20 rat2 [V20,T06] ( 2, 30.56) long -> rcx "fgMakeTemp is creating a new local variable"
+;* V20 rat2 [V20,T06] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
;
; Lcl frame size = 32
@@ -53,36 +53,29 @@ G_M31452_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M31452_IG02: ; bbWeight=1, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M31452_IG04
;; size=2 bbWeight=1 PerfScore 2.00
-G_M31452_IG03: ; bbWeight=91.67, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M31452_IG03: ; bbWeight=91.67, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
cmp r15d, eax
- jae G_M31452_IG11
+ jae SHORT G_M31452_IG08
mov eax, r15d
mov rbp, gword ptr [r14+8*rax+0x10]
; gcrRegs +[rbp]
mov dword ptr [rsp+0xC4], r15d
- ;; size=25 bbWeight=91.67 PerfScore 412.50
+ ;; size=21 bbWeight=91.67 PerfScore 412.50
G_M31452_IG04: ; bbWeight=91.67, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
test rbp, rbp
- jne SHORT G_M31452_IG08
+ je SHORT G_M31452_IG07
;; size=5 bbWeight=91.67 PerfScore 114.58
-G_M31452_IG05: ; bbWeight=91.67, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbp]
- mov r15d, dword ptr [rsp+0xC4]
- inc r15d
- mov eax, dword ptr [r14+0x08]
- cmp eax, r15d
- jle SHORT G_M31452_IG10
- jmp SHORT G_M31452_IG03
- ;; size=22 bbWeight=91.67 PerfScore 595.83
+G_M31452_IG05: ; bbWeight=7.64, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref
+ cmp dword ptr [rdi], edi
+ ;; size=2 bbWeight=7.64 PerfScore 22.92
G_M31452_IG06: ; bbWeight=8.33, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbp]
mov rdx, gword ptr [rbp+0x08]
; gcrRegs +[rdx]
mov r15, gword ptr [rbp+0x10]
; gcrRegs +[r15]
cmp ebx, dword ptr [rsi+0x08]
- jae SHORT G_M31452_IG11
+ jae SHORT G_M31452_IG08
mov ecx, ebx
shl rcx, 4
lea r13, bword ptr [rsi+rcx+0x10]
@@ -104,24 +97,24 @@ G_M31452_IG06: ; bbWeight=8.33, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRe
test rbp, rbp
jne SHORT G_M31452_IG06
;; size=55 bbWeight=8.33 PerfScore 135.42
-G_M31452_IG07: ; bbWeight=7.64, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M31452_IG07: ; bbWeight=91.67, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbp]
- jmp SHORT G_M31452_IG05
- ;; size=2 bbWeight=7.64 PerfScore 15.28
-G_M31452_IG08: ; bbWeight=7.64, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbp]
- mov rcx, qword ptr [rdi]
- mov rcx, qword ptr [rcx+0x30]
- mov rcx, qword ptr [rcx]
- mov rcx, qword ptr [rcx+0x90]
- test rcx, rcx
- je SHORT G_M31452_IG06
- ;; size=22 bbWeight=7.64 PerfScore 70.66
-G_M31452_IG09: ; bbWeight=6.11, gcrefRegs=40E0 {rbp rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M31452_IG06
- ;; size=2 bbWeight=6.11 PerfScore 12.22
-G_M31452_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, epilog, nogc
- ; gcrRegs -[rbp rsi r14]
+ mov r15d, dword ptr [rsp+0xC4]
+ inc r15d
+ mov eax, dword ptr [r14+0x08]
+ cmp eax, r15d
+ jle SHORT G_M31452_IG09
+ jmp SHORT G_M31452_IG03
+ ;; size=22 bbWeight=91.67 PerfScore 595.83
+G_M31452_IG08: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rsi r14]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M31452_IG09: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ nop
+ ;; size=1 bbWeight=0 PerfScore 0.00
+G_M31452_IG10: ; bbWeight=0, epilog, nogc, extend
add rsp, 224
pop rbx
pop r13
@@ -132,13 +125,8 @@ G_M31452_IG10: ; bbWeight=0, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byr
pop rbp
ret
;; size=18 bbWeight=0 PerfScore 0.00
-G_M31452_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, gcvars, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- int3
- ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 234, prolog size 75, PerfScore 1372.74, instruction count 59, allocated bytes for code 234 (MethodHash=a7fd8523) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:CopyToPairs(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][],int):this (Tier1-OSR)
+; Total bytes of code 206, prolog size 75, PerfScore 1297.50, instruction count 52, allocated bytes for code 206 (MethodHash=a7fd8523) for method System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:CopyToPairs(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][],int):this (Tier1-OSR)
; ============================================================
Unwind Info:
-2 (-10.00%) : 127921.dasm - System.Text.StringBuilder:FindChunkForIndex(int):System.Text.StringBuilder:this (Tier1)
@@ -22,22 +22,19 @@ G_M56687_IG02: ; bbWeight=1, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
mov rax, rcx
; gcrRegs +[rax]
cmp dword ptr [rcx+0x1C], edx
- jg SHORT G_M56687_IG04
+ jle SHORT G_M56687_IG04
;; size=8 bbWeight=1 PerfScore 4.25
-G_M56687_IG03: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M56687_IG03: ; bbWeight=0.57, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1 PerfScore 1.00
-G_M56687_IG04: ; bbWeight=0.57, gcVars=0000000000000000 {}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz
mov rax, gword ptr [rax+0x10]
cmp dword ptr [rax+0x1C], edx
- jg SHORT G_M56687_IG04
+ jg SHORT G_M56687_IG03
;; size=9 bbWeight=0.57 PerfScore 3.42
-G_M56687_IG05: ; bbWeight=0.36, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M56687_IG03
- ;; size=2 bbWeight=0.36 PerfScore 0.73
+G_M56687_IG04: ; bbWeight=1, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 20, prolog size 0, PerfScore 9.40, instruction count 8, allocated bytes for code 20 (MethodHash=3c6f2290) for method System.Text.StringBuilder:FindChunkForIndex(int):System.Text.StringBuilder:this (Tier1)
+; Total bytes of code 18, prolog size 0, PerfScore 8.67, instruction count 7, allocated bytes for code 18 (MethodHash=3c6f2290) for method System.Text.StringBuilder:FindChunkForIndex(int):System.Text.StringBuilder:this (Tier1)
; ============================================================
Unwind Info:
-20 (-9.05%) : 36041.dasm - System.Convert:FromBase64_ComputeResultLength(ulong,int):int (Tier1-OSR)
@@ -13,7 +13,7 @@
;* V01 arg1 [V01 ] ( 0, 0 ) int -> zero-ref single-def
; V02 loc0 [V02,T02] ( 2,100 ) long -> [rsp+0x80] tier0-frame
; V03 loc1 [V03,T04] ( 6, 0 ) int -> [rsp+0x7C] tier0-frame
-; V04 loc2 [V04,T03] ( 8, 0 ) int -> [rsp+0x78] tier0-frame
+; V04 loc2 [V04,T03] ( 8, 5.86) int -> [rsp+0x78] tier0-frame
; V05 loc3 [V05,T01] ( 3,281.25) int -> rdx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V07 tmp1 [V07,T05] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
@@ -31,34 +31,67 @@ G_M650_IG02: ; bbWeight=6.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp rcx, rax
jae SHORT G_M650_IG05
;; size=13 bbWeight=6.25 PerfScore 14.06
-G_M650_IG03: ; bbWeight=93.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M650_IG03: ; bbWeight=93.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx rdx, word ptr [rcx]
add rcx, 2
cmp edx, 32
- jbe G_M650_IG10
+ jbe SHORT G_M650_IG08
cmp edx, 61
- je G_M650_IG11
- ;; size=25 bbWeight=93.75 PerfScore 445.31
+ je SHORT G_M650_IG09
+ ;; size=17 bbWeight=93.75 PerfScore 445.31
G_M650_IG04: ; bbWeight=93.75, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rcx, rax
jb SHORT G_M650_IG03
;; size=5 bbWeight=93.75 PerfScore 117.19
-G_M650_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M650_IG05: ; bbWeight=5.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [rsp+0x78]
+ test eax, eax
+ jne SHORT G_M650_IG10
+ ;; size=8 bbWeight=5.86 PerfScore 13.18
+G_M650_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov edx, dword ptr [rsp+0x7C]
+ mov ecx, edx
+ sar ecx, 31
+ and ecx, 3
+ add ecx, edx
+ sar ecx, 2
+ lea ecx, [rcx+2*rcx]
+ add eax, ecx
+ ;; size=22 bbWeight=0 PerfScore 0.00
+G_M650_IG07: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 184
+ pop rbx
+ pop rbp
+ ret
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M650_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov edx, dword ptr [rsp+0x7C]
+ dec edx
+ mov dword ptr [rsp+0x7C], edx
+ jmp SHORT G_M650_IG04
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M650_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov edx, dword ptr [rsp+0x7C]
+ dec edx
mov r8d, dword ptr [rsp+0x78]
- test r8d, r8d
- je SHORT G_M650_IG08
- cmp r8d, 1
- jne SHORT G_M650_IG06
- mov r8d, 2
- jmp SHORT G_M650_IG08
- ;; size=24 bbWeight=0 PerfScore 0.00
-G_M650_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp r8d, 2
- jne SHORT G_M650_IG07
- mov r8d, 1
- jmp SHORT G_M650_IG08
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M650_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ inc r8d
+ mov dword ptr [rsp+0x78], r8d
+ mov dword ptr [rsp+0x7C], edx
+ jmp SHORT G_M650_IG04
+ ;; size=25 bbWeight=0 PerfScore 0.00
+G_M650_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 1
+ jne SHORT G_M650_IG11
+ mov eax, 2
+ jmp SHORT G_M650_IG06
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M650_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp eax, 2
+ jne SHORT G_M650_IG12
+ mov eax, 1
+ jmp SHORT G_M650_IG06
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M650_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -79,40 +112,10 @@ G_M650_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_THROW
; gcrRegs -[rcx rbx]
; gcr arg pop 0
- ;; size=44 bbWeight=0 PerfScore 0.00
-G_M650_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov edx, dword ptr [rsp+0x7C]
- mov eax, edx
- sar eax, 31
- and eax, 3
- add eax, edx
- sar eax, 2
- lea eax, [rax+2*rax]
- add eax, r8d
- ;; size=23 bbWeight=0 PerfScore 0.00
-G_M650_IG09: ; bbWeight=0, epilog, nogc, extend
- add rsp, 184
- pop rbx
- pop rbp
- ret
- ;; size=10 bbWeight=0 PerfScore 0.00
-G_M650_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- mov edx, dword ptr [rsp+0x7C]
- dec edx
- mov dword ptr [rsp+0x7C], edx
- jmp G_M650_IG04
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M650_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov edx, dword ptr [rsp+0x7C]
- dec edx
- mov r8d, dword ptr [rsp+0x78]
- inc r8d
- mov dword ptr [rsp+0x78], r8d
- mov dword ptr [rsp+0x7C], edx
- jmp G_M650_IG04
- ;; size=28 bbWeight=0 PerfScore 0.00
+ int3
+ ;; size=45 bbWeight=0 PerfScore 0.00
-; Total bytes of code 221, prolog size 20, PerfScore 596.88, instruction count 57, allocated bytes for code 221 (MethodHash=4878fd75) for method System.Convert:FromBase64_ComputeResultLength(ulong,int):int (Tier1-OSR)
+; Total bytes of code 201, prolog size 20, PerfScore 610.06, instruction count 58, allocated bytes for code 201 (MethodHash=4878fd75) for method System.Convert:FromBase64_ComputeResultLength(ulong,int):int (Tier1-OSR)
; ============================================================
Unwind Info:
+7 (+10.14%) : 69240.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
@@ -10,21 +10,22 @@
; Final local variable assignments
;
; V00 arg0 [V00,T01] ( 7, 3.00) long -> rcx single-def
-; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rdx class-hnd single-def <System.Object>
-; V02 loc0 [V02,T02] ( 17, 4.00) long -> r8
+; V01 arg1 [V01,T00] ( 5, 4.00) ref -> rdx class-hnd single-def <System.Object>
+; V02 loc0 [V02,T02] ( 17, 4.00) long -> rbx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M64200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
+ push rbx
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M64200_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov r8, qword ptr [rdx]
+ mov rbx, qword ptr [rdx]
;; size=3 bbWeight=1 PerfScore 2.00
G_M64200_IG03: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
jne SHORT G_M64200_IG06
;; size=9 bbWeight=1 PerfScore 3.25
G_M64200_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
@@ -32,36 +33,40 @@ G_M64200_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
G_M64200_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop rbx
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M64200_IG06: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- test r8, r8
- je SHORT G_M64200_IG08
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
- je SHORT G_M64200_IG04
- ;; size=14 bbWeight=0.00 PerfScore 0.00
-G_M64200_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test r8, r8
- je SHORT G_M64200_IG08
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
- je SHORT G_M64200_IG04
- test r8, r8
- je SHORT G_M64200_IG08
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
- je SHORT G_M64200_IG04
- test r8, r8
- jne SHORT G_M64200_IG03
- ;; size=33 bbWeight=0 PerfScore 0.00
-G_M64200_IG08: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ test rbx, rbx
+ je SHORT G_M64200_IG07
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
+ jne SHORT G_M64200_IG08
+ jmp SHORT G_M64200_IG04
+ ;; size=16 bbWeight=0.00 PerfScore 0.00
+G_M64200_IG07: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbx
tail.jmp [<unknown method>]
; gcr arg pop 0
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0.00 PerfScore 0.00
+G_M64200_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+ test rbx, rbx
+ je SHORT G_M64200_IG07
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
+ je SHORT G_M64200_IG04
+ test rbx, rbx
+ je SHORT G_M64200_IG07
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
+ je SHORT G_M64200_IG04
+ test rbx, rbx
+ jne SHORT G_M64200_IG03
+ jmp SHORT G_M64200_IG07
+ ;; size=35 bbWeight=0 PerfScore 0.00
-; Total bytes of code 69, prolog size 0, PerfScore 6.50, instruction count 24, allocated bytes for code 69 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 76, prolog size 1, PerfScore 8.00, instruction count 29, allocated bytes for code 76 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -69,8 +74,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+7 (+10.14%) : 80564.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
@@ -9,22 +9,23 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 7, 3.02) long -> rcx single-def
-; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rdx class-hnd single-def <System.Object>
-; V02 loc0 [V02,T02] ( 17, 4.10) long -> r8
+; V00 arg0 [V00,T01] ( 7, 3.03) long -> rcx single-def
+; V01 arg1 [V01,T00] ( 5, 4.00) ref -> rdx class-hnd single-def <System.Object>
+; V02 loc0 [V02,T02] ( 17, 4.10) long -> rbx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M64200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
+ push rbx
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M64200_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov r8, qword ptr [rdx]
+ mov rbx, qword ptr [rdx]
;; size=3 bbWeight=1 PerfScore 2.00
G_M64200_IG03: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
jne SHORT G_M64200_IG06
;; size=9 bbWeight=1 PerfScore 3.25
G_M64200_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
@@ -32,36 +33,40 @@ G_M64200_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
G_M64200_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop rbx
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M64200_IG06: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- test r8, r8
- je SHORT G_M64200_IG08
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
+ test rbx, rbx
+ je SHORT G_M64200_IG07
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
je SHORT G_M64200_IG04
- test r8, r8
- je SHORT G_M64200_IG08
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
- je SHORT G_M64200_IG04
- ;; size=28 bbWeight=0.01 PerfScore 0.11
-G_M64200_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test r8, r8
- je SHORT G_M64200_IG08
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
- je SHORT G_M64200_IG04
- test r8, r8
- jne SHORT G_M64200_IG03
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M64200_IG08: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ test rbx, rbx
+ je SHORT G_M64200_IG07
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
+ jne SHORT G_M64200_IG08
+ jmp SHORT G_M64200_IG04
+ ;; size=30 bbWeight=0.01 PerfScore 0.14
+G_M64200_IG07: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbx
tail.jmp [<unknown method>]
; gcr arg pop 0
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0.00 PerfScore 0.00
+G_M64200_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+ test rbx, rbx
+ je SHORT G_M64200_IG07
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
+ je SHORT G_M64200_IG04
+ test rbx, rbx
+ jne SHORT G_M64200_IG03
+ jmp SHORT G_M64200_IG07
+ ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 69, prolog size 0, PerfScore 6.61, instruction count 24, allocated bytes for code 69 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 76, prolog size 1, PerfScore 8.14, instruction count 29, allocated bytes for code 76 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -69,8 +74,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+7 (+10.14%) : 117448.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
@@ -9,22 +9,23 @@
; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 7, 3.09) long -> rcx single-def
-; V01 arg1 [V01,T00] ( 5, 4 ) ref -> rdx class-hnd single-def <System.Object>
-; V02 loc0 [V02,T02] ( 17, 4.35) long -> r8
+; V00 arg0 [V00,T01] ( 7, 3.11) long -> rcx single-def
+; V01 arg1 [V01,T00] ( 5, 4.02) ref -> rdx class-hnd single-def <System.Object>
+; V02 loc0 [V02,T02] ( 17, 4.35) long -> rbx
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M64200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- ;; size=0 bbWeight=1 PerfScore 0.00
+ push rbx
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M64200_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; gcrRegs +[rdx]
- mov r8, qword ptr [rdx]
+ mov rbx, qword ptr [rdx]
;; size=3 bbWeight=1 PerfScore 2.00
G_M64200_IG03: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
jne SHORT G_M64200_IG06
;; size=9 bbWeight=1 PerfScore 3.25
G_M64200_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
@@ -32,38 +33,42 @@ G_M64200_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr
; gcrRegs +[rax]
;; size=3 bbWeight=1 PerfScore 0.25
G_M64200_IG05: ; bbWeight=1, epilog, nogc, extend
+ pop rbx
ret
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=2 bbWeight=1 PerfScore 1.50
G_M64200_IG06: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- test r8, r8
- je SHORT G_M64200_IG09
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
+ test rbx, rbx
+ je SHORT G_M64200_IG08
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
je SHORT G_M64200_IG04
;; size=14 bbWeight=0.09 PerfScore 0.39
G_M64200_IG07: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test r8, r8
- je SHORT G_M64200_IG09
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
- je SHORT G_M64200_IG04
- ;; size=14 bbWeight=0.00 PerfScore 0.00
-G_M64200_IG08: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test r8, r8
- je SHORT G_M64200_IG09
- mov r8, qword ptr [r8+0x10]
- cmp r8, rcx
- je SHORT G_M64200_IG04
- test r8, r8
- jne SHORT G_M64200_IG03
- ;; size=19 bbWeight=0 PerfScore 0.00
-G_M64200_IG09: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ test rbx, rbx
+ je SHORT G_M64200_IG08
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
+ jne SHORT G_M64200_IG09
+ jmp SHORT G_M64200_IG04
+ ;; size=16 bbWeight=0.00 PerfScore 0.00
+G_M64200_IG08: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ pop rbx
tail.jmp [<unknown method>]
; gcr arg pop 0
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0.02 PerfScore 0.04
+G_M64200_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+ test rbx, rbx
+ je SHORT G_M64200_IG08
+ mov rbx, qword ptr [rbx+0x10]
+ cmp rbx, rcx
+ je SHORT G_M64200_IG04
+ test rbx, rbx
+ jne SHORT G_M64200_IG03
+ jmp SHORT G_M64200_IG08
+ ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 69, prolog size 0, PerfScore 6.89, instruction count 24, allocated bytes for code 69 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 76, prolog size 1, PerfScore 8.44, instruction count 29, allocated bytes for code 76 (MethodHash=72ee0537) for method System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -71,8 +76,9 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x00
- CountOfUnwindCodes: 0
+ SizeOfProlog : 0x01
+ CountOfUnwindCodes: 1
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
benchmarks.run.windows.x64.checked.mch
-16 (-4.47%) : 7478.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
@@ -13,11 +13,11 @@
; V02 loc1 [V02,T02] ( 10, 7.75) int -> rdi
; V03 loc2 [V03,T05] ( 3, 1.50) ref -> rbp class-hnd exact single-def <ushort[]>
;* V04 loc3 [V04,T07] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc4 [V05,T00] ( 10, 16.54) int -> rcx
+; V05 loc4 [V05,T00] ( 10, 16.54) int -> rdx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rcx single-def "spilling varStr"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr"
;* V10 tmp4 [V10,T06] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;
; Lcl frame size = 40
@@ -77,28 +77,28 @@ G_M48063_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs -[rcx]
jmp G_M48063_IG15
;; size=56 bbWeight=0.50 PerfScore 8.62
-G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M48063_IG14
- ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M48063_IG06: ; bbWeight=0.25, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
- cmp dword ptr [rcx+0x08], 5
- jne G_M48063_IG14
- ;; size=10 bbWeight=0.25 PerfScore 1.00
-G_M48063_IG07: ; bbWeight=0.12, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8, 0xD1FFAB1E
- xor r8, qword ptr [rcx+0x0C]
- mov ecx, dword ptr [rcx+0x12]
- ; gcrRegs -[rcx]
- xor ecx, 0xD1FFAB1E
- or rcx, r8
+ mov rdx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdx]
+ test rdx, rdx
+ je SHORT G_M48063_IG14
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M48063_IG06: ; bbWeight=0.25, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rdx+0x08], 5
+ jne SHORT G_M48063_IG14
+ ;; size=6 bbWeight=0.25 PerfScore 1.00
+G_M48063_IG07: ; bbWeight=0.12, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x12]
+ ; gcrRegs -[rdx]
+ xor edx, 0xD1FFAB1E
+ or rdx, rcx
jne SHORT G_M48063_IG14
;; size=28 bbWeight=0.12 PerfScore 0.84
G_M48063_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- xor ecx, ecx
+ xor edx, edx
test edi, edi
jle SHORT G_M48063_IG13
;; size=6 bbWeight=0.50 PerfScore 0.75
@@ -107,26 +107,26 @@ G_M48063_IG09: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
jg SHORT G_M48063_IG12
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M48063_IG10: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG14
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG10
- ;; size=18 bbWeight=3.96 PerfScore 22.77
-G_M48063_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=3.96 PerfScore 22.77
+G_M48063_IG11: ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M48063_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M48063_IG12: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 23
- jae G_M48063_IG17
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ cmp edx, 23
+ jae SHORT G_M48063_IG17
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG14
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG12
- ;; size=27 bbWeight=0.04 PerfScore 0.28
+ ;; size=21 bbWeight=0.04 PerfScore 0.28
G_M48063_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc edi
mov dword ptr [rsp+0x20], 21
@@ -184,7 +184,7 @@ G_M48063_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 358, prolog size 11, PerfScore 62.33, instruction count 88, allocated bytes for code 358 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
+; Total bytes of code 342, prolog size 11, PerfScore 65.29, instruction count 88, allocated bytes for code 342 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
; ============================================================
Unwind Info:
-14 (-0.95%) : 581.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
@@ -8,61 +8,60 @@
; 0 inlinees with PGO data; 24 single block inlinees; 17 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 64,25612.50) long -> rbx
-; V01 arg1 [V01,T19] ( 9, 8 ) int -> rsi
-; V02 arg2 [V02,T21] ( 4, 3 ) byref -> rdi single-def
-; V03 arg3 [V03,T22] ( 4, 3 ) byref -> rbp single-def
-; V04 loc0 [V04,T24] ( 3, 3 ) long -> rax
-; V05 loc1 [V05,T26] ( 4, 2 ) long -> r14
-; V06 loc2 [V06,T25] ( 5, 2.50) int -> rsi
-; V07 loc3 [V07,T04] ( 18, 5265 ) int -> r15
-; V08 loc4 [V08,T23] ( 4, 5 ) int -> r13
-; V09 loc5 [V09,T03] ( 12, 8933.50) long -> r12
-; V10 loc6 [V10,T12] ( 4, 72.50) long -> [rsp+0x40]
-; V11 loc7 [V11,T17] ( 13, 22 ) long -> r12
-; V12 loc8 [V12,T02] ( 27,12532 ) int -> [rsp+0x3C]
-; V13 loc9 [V13,T13] ( 2, 72 ) long -> rcx
-; V14 loc10 [V14,T15] ( 3, 24 ) long -> [rsp+0x30] spill-single-def
-;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V17 loc13 [V17,T09] ( 3, 136 ) int -> rdx
-;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
-;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
-; V20 loc16 [V20,T00] ( 20,47616 ) long -> registers
-; V21 loc17 [V21,T18] ( 7, 18 ) int -> rcx
-; V22 loc18 [V22,T20] ( 5, 10 ) int -> rdx
-; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V24 tmp1 [V24,T27] ( 2, 1 ) int -> rcx
-;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
-;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
-;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
-;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
-;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V48 tmp25 [V48,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V49 tmp26 [V49,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V53 cse0 [V53,T11] ( 15, 75 ) ref -> [rsp+0x20] multi-def "CSE - aggressive"
-; V54 cse1 [V54,T16] ( 3, 24 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
+; V00 arg0 [V00,T01] ( 64,3570.50) long -> rbx
+; V01 arg1 [V01,T16] ( 9, 8 ) int -> rsi
+; V02 arg2 [V02,T20] ( 4, 3 ) byref -> rdi single-def
+; V03 arg3 [V03,T21] ( 4, 3 ) byref -> rbp single-def
+; V04 loc0 [V04,T23] ( 3, 3 ) long -> rax
+; V05 loc1 [V05,T25] ( 4, 2 ) long -> r14
+; V06 loc2 [V06,T24] ( 5, 2.50) int -> rsi
+; V07 loc3 [V07,T04] ( 18, 945 ) int -> r15
+; V08 loc4 [V08,T22] ( 4, 5 ) int -> r13
+; V09 loc5 [V09,T03] ( 12,1133.50) long -> r12
+; V10 loc6 [V10,T15] ( 4, 10.50) long -> [rsp+0x40]
+; V11 loc7 [V11,T11] ( 13, 22 ) long -> r12
+; V12 loc8 [V12,T02] ( 27,1596 ) int -> [rsp+0x3C]
+; V13 loc9 [V13,T13] ( 2, 18 ) long -> rcx
+; V14 loc10 [V14,T18] ( 3, 6 ) long -> [rsp+0x30] spill-single-def
+;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+; V17 loc13 [V17,T07] ( 3, 34 ) int -> rdx
+;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
+;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
+; V20 loc16 [V20,T00] ( 20,6144 ) long -> registers
+; V21 loc17 [V21,T12] ( 7, 18 ) int -> rcx
+; V22 loc18 [V22,T17] ( 5, 10 ) int -> rdx
+; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V24 tmp1 [V24,T26] ( 2, 1 ) int -> rcx
+;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
+;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
+;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
+;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
+;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
+;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V48 tmp25 [V48,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V49 tmp26 [V49,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V53 cse0 [V53,T19] ( 3, 6 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
;
; Lcl frame size = 72
@@ -91,14 +90,12 @@ G_M60901_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi},
G_M60901_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=29 bbWeight=0.50 PerfScore 1.88
+ ;; size=26 bbWeight=0.50 PerfScore 1.75
G_M60901_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
test rbx, rbx
jne SHORT G_M60901_IG06
@@ -111,14 +108,12 @@ G_M60901_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rd
jne SHORT G_M60901_IG06
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=40 bbWeight=0.50 PerfScore 3.25
+ ;; size=37 bbWeight=0.50 PerfScore 3.12
G_M60901_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov edx, esi
mov rcx, rbx
@@ -155,54 +150,51 @@ G_M60901_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
xor r15d, r15d
xor r13d, r13d
cmp esi, 4
- jl G_M60901_IG46
+ jl G_M60901_IG45
mov ecx, esi
lea r12, [r14+rcx-0x04]
xor eax, eax
cmp r14, r12
- ja G_M60901_IG47
+ ja G_M60901_IG46
;; size=36 bbWeight=0.50 PerfScore 2.38
G_M60901_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov r8d, dword ptr [rbx]
mov dword ptr [rsp+0x3C], r8d
;; size=8 bbWeight=4 PerfScore 12.00
-G_M60901_IG12: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
cmp rax, rbx
jb SHORT G_M60901_IG14
- ;; size=5 bbWeight=32 PerfScore 40.00
-G_M60901_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M60901_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
- mov r10, rdx
- ; gcrRegs +[r10]
- mov rdx, r10
call [<unknown method>]
- ; gcrRegs -[rcx rdx r10]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=32 bbWeight=8 PerfScore 32.00
-G_M60901_IG14: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=26 bbWeight=2 PerfScore 7.00
+G_M60901_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rax, rbx
mov r8d, dword ptr [rsp+0x3C]
test r8d, 0xD1FFAB1E
jne G_M60901_IG21
- ;; size=21 bbWeight=32 PerfScore 80.00
-G_M60901_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=21 bbWeight=4 PerfScore 10.00
+G_M60901_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov qword ptr [rsp+0x40], rax
lea rbx, [rax+0x04]
mov r8, r12
sub r8, rbx
cmp r8, 16
- jl G_M60901_IG44
+ jl G_M60901_IG43
mov r8d, dword ptr [rbx]
test r8d, 0xD1FFAB1E
jne SHORT G_M60901_IG18
add rbx, 4
and rbx, -4
lea rcx, [r12-0x0C]
- ;; size=50 bbWeight=8 PerfScore 60.00
-G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=50 bbWeight=2 PerfScore 15.00
+G_M60901_IG16: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
vmovups xmm0, xmmword ptr [rbx]
vpmovmskb edx, xmm0
test edx, edx
@@ -210,94 +202,87 @@ G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}
add rbx, 16
cmp rbx, rcx
jbe SHORT G_M60901_IG16
- ;; size=21 bbWeight=64 PerfScore 560.00
+ ;; size=21 bbWeight=16 PerfScore 140.00
G_M60901_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
- jmp G_M60901_IG44
+ jmp G_M60901_IG43
;; size=5 bbWeight=4 PerfScore 8.00
-G_M60901_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov rax, qword ptr [rsp+0x40]
jmp SHORT G_M60901_IG21
- ;; size=7 bbWeight=4 PerfScore 12.00
-G_M60901_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M60901_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
xor ecx, ecx
tzcnt ecx, edx
mov r8d, ecx
mov qword ptr [rsp+0x30], r8
cmp r8, 16
jb SHORT G_M60901_IG20
- mov r10, 0xD1FFAB1E
- ; gcrRegs +[r10]
- mov rcx, r10
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, r10
...
-14 (-0.95%) : 12335.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
@@ -8,61 +8,60 @@
; 0 inlinees with PGO data; 24 single block inlinees; 17 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 64,25612.50) long -> rbx
-; V01 arg1 [V01,T19] ( 9, 8 ) int -> rsi
-; V02 arg2 [V02,T21] ( 4, 3 ) byref -> rdi single-def
-; V03 arg3 [V03,T22] ( 4, 3 ) byref -> rbp single-def
-; V04 loc0 [V04,T24] ( 3, 3 ) long -> rax
-; V05 loc1 [V05,T26] ( 4, 2 ) long -> r14
-; V06 loc2 [V06,T25] ( 5, 2.50) int -> rsi
-; V07 loc3 [V07,T04] ( 18, 5265 ) int -> r15
-; V08 loc4 [V08,T23] ( 4, 5 ) int -> r13
-; V09 loc5 [V09,T03] ( 12, 8933.50) long -> r12
-; V10 loc6 [V10,T12] ( 4, 72.50) long -> [rsp+0x40]
-; V11 loc7 [V11,T17] ( 13, 22 ) long -> r12
-; V12 loc8 [V12,T02] ( 27,12532 ) int -> [rsp+0x3C]
-; V13 loc9 [V13,T13] ( 2, 72 ) long -> rcx
-; V14 loc10 [V14,T15] ( 3, 24 ) long -> [rsp+0x30] spill-single-def
-;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V17 loc13 [V17,T09] ( 3, 136 ) int -> rdx
-;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
-;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
-; V20 loc16 [V20,T00] ( 20,47616 ) long -> registers
-; V21 loc17 [V21,T18] ( 7, 18 ) int -> rcx
-; V22 loc18 [V22,T20] ( 5, 10 ) int -> rdx
-; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V24 tmp1 [V24,T27] ( 2, 1 ) int -> rcx
-;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
-;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
-;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
-;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
-;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V48 tmp25 [V48,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V49 tmp26 [V49,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V53 cse0 [V53,T11] ( 15, 75 ) ref -> [rsp+0x20] multi-def "CSE - aggressive"
-; V54 cse1 [V54,T16] ( 3, 24 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
+; V00 arg0 [V00,T01] ( 64,3570.50) long -> rbx
+; V01 arg1 [V01,T16] ( 9, 8 ) int -> rsi
+; V02 arg2 [V02,T20] ( 4, 3 ) byref -> rdi single-def
+; V03 arg3 [V03,T21] ( 4, 3 ) byref -> rbp single-def
+; V04 loc0 [V04,T23] ( 3, 3 ) long -> rax
+; V05 loc1 [V05,T25] ( 4, 2 ) long -> r14
+; V06 loc2 [V06,T24] ( 5, 2.50) int -> rsi
+; V07 loc3 [V07,T04] ( 18, 945 ) int -> r15
+; V08 loc4 [V08,T22] ( 4, 5 ) int -> r13
+; V09 loc5 [V09,T03] ( 12,1133.50) long -> r12
+; V10 loc6 [V10,T15] ( 4, 10.50) long -> [rsp+0x40]
+; V11 loc7 [V11,T11] ( 13, 22 ) long -> r12
+; V12 loc8 [V12,T02] ( 27,1596 ) int -> [rsp+0x3C]
+; V13 loc9 [V13,T13] ( 2, 18 ) long -> rcx
+; V14 loc10 [V14,T18] ( 3, 6 ) long -> [rsp+0x30] spill-single-def
+;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+; V17 loc13 [V17,T07] ( 3, 34 ) int -> rdx
+;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
+;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
+; V20 loc16 [V20,T00] ( 20,6144 ) long -> registers
+; V21 loc17 [V21,T12] ( 7, 18 ) int -> rcx
+; V22 loc18 [V22,T17] ( 5, 10 ) int -> rdx
+; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V24 tmp1 [V24,T26] ( 2, 1 ) int -> rcx
+;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
+;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
+;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
+;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
+;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
+;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V48 tmp25 [V48,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V49 tmp26 [V49,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V53 cse0 [V53,T19] ( 3, 6 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
;
; Lcl frame size = 72
@@ -91,14 +90,12 @@ G_M60901_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi},
G_M60901_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=29 bbWeight=0.50 PerfScore 1.88
+ ;; size=26 bbWeight=0.50 PerfScore 1.75
G_M60901_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
test rbx, rbx
jne SHORT G_M60901_IG06
@@ -111,14 +108,12 @@ G_M60901_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rd
jne SHORT G_M60901_IG06
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=40 bbWeight=0.50 PerfScore 3.25
+ ;; size=37 bbWeight=0.50 PerfScore 3.12
G_M60901_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov edx, esi
mov rcx, rbx
@@ -155,54 +150,51 @@ G_M60901_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
xor r15d, r15d
xor r13d, r13d
cmp esi, 4
- jl G_M60901_IG46
+ jl G_M60901_IG45
mov ecx, esi
lea r12, [r14+rcx-0x04]
xor eax, eax
cmp r14, r12
- ja G_M60901_IG47
+ ja G_M60901_IG46
;; size=36 bbWeight=0.50 PerfScore 2.38
G_M60901_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov r8d, dword ptr [rbx]
mov dword ptr [rsp+0x3C], r8d
;; size=8 bbWeight=4 PerfScore 12.00
-G_M60901_IG12: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
cmp rax, rbx
jb SHORT G_M60901_IG14
- ;; size=5 bbWeight=32 PerfScore 40.00
-G_M60901_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M60901_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
- mov r10, rdx
- ; gcrRegs +[r10]
- mov rdx, r10
call [<unknown method>]
- ; gcrRegs -[rcx rdx r10]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=32 bbWeight=8 PerfScore 32.00
-G_M60901_IG14: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=26 bbWeight=2 PerfScore 7.00
+G_M60901_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rax, rbx
mov r8d, dword ptr [rsp+0x3C]
test r8d, 0xD1FFAB1E
jne G_M60901_IG21
- ;; size=21 bbWeight=32 PerfScore 80.00
-G_M60901_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=21 bbWeight=4 PerfScore 10.00
+G_M60901_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov qword ptr [rsp+0x40], rax
lea rbx, [rax+0x04]
mov r8, r12
sub r8, rbx
cmp r8, 16
- jl G_M60901_IG44
+ jl G_M60901_IG43
mov r8d, dword ptr [rbx]
test r8d, 0xD1FFAB1E
jne SHORT G_M60901_IG18
add rbx, 4
and rbx, -4
lea rcx, [r12-0x0C]
- ;; size=50 bbWeight=8 PerfScore 60.00
-G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=50 bbWeight=2 PerfScore 15.00
+G_M60901_IG16: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
vmovups xmm0, xmmword ptr [rbx]
vpmovmskb edx, xmm0
test edx, edx
@@ -210,94 +202,87 @@ G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}
add rbx, 16
cmp rbx, rcx
jbe SHORT G_M60901_IG16
- ;; size=21 bbWeight=64 PerfScore 560.00
+ ;; size=21 bbWeight=16 PerfScore 140.00
G_M60901_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
- jmp G_M60901_IG44
+ jmp G_M60901_IG43
;; size=5 bbWeight=4 PerfScore 8.00
-G_M60901_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov rax, qword ptr [rsp+0x40]
jmp SHORT G_M60901_IG21
- ;; size=7 bbWeight=4 PerfScore 12.00
-G_M60901_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M60901_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
xor ecx, ecx
tzcnt ecx, edx
mov r8d, ecx
mov qword ptr [rsp+0x30], r8
cmp r8, 16
jb SHORT G_M60901_IG20
- mov r10, 0xD1FFAB1E
- ; gcrRegs +[r10]
- mov rcx, r10
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, r10
...
+11 (+2.93%) : 31537.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
@@ -9,29 +9,29 @@
; Final local variable assignments
;
; V00 this [V00,T09] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.RuntimePropertyInfo>
-; V01 arg1 [V01,T06] ( 4, 3 ) ref -> rsi class-hnd single-def <System.Object>
-; V02 arg2 [V02,T07] ( 4, 3 ) ref -> rdi class-hnd single-def <System.Object>
-; V03 arg3 [V03,T08] ( 4, 3 ) int -> rbp single-def
-; V04 arg4 [V04,T14] ( 2, 1 ) ref -> [rsp+0xA0] class-hnd single-def <System.Reflection.Binder>
-; V05 arg5 [V05,T05] ( 4, 5.50) ref -> rbx class-hnd single-def <System.Object[]>
-; V06 arg6 [V06,T15] ( 2, 1 ) ref -> [rsp+0xB0] class-hnd single-def <System.Globalization.CultureInfo>
-; V07 loc0 [V07,T11] ( 3, 2.50) ref -> r14 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo>
-; V08 loc1 [V08,T04] ( 8, 6.29) ref -> r12 class-hnd exact single-def <System.Object[]>
-; V09 loc2 [V09,T00] ( 11, 16.58) int -> [rsp+0x34]
+; V01 arg1 [V01,T05] ( 4, 4.48) ref -> rbx class-hnd single-def <System.Object>
+; V02 arg2 [V02,T06] ( 4, 4.48) ref -> rsi class-hnd single-def <System.Object>
+; V03 arg3 [V03,T07] ( 4, 4.48) int -> rdi single-def
+; V04 arg4 [V04,T13] ( 2, 2.48) ref -> r14 class-hnd single-def <System.Reflection.Binder>
+; V05 arg5 [V05,T08] ( 4, 5.50) ref -> rbp class-hnd single-def <System.Object[]>
+; V06 arg6 [V06,T14] ( 2, 2.48) ref -> r15 class-hnd single-def <System.Globalization.CultureInfo>
+; V07 loc0 [V07,T10] ( 3, 3.98) ref -> r13 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo>
+; V08 loc1 [V08,T03] ( 8, 10.73) ref -> [rsp+0x38] class-hnd exact spill-single-def <System.Object[]>
+; V09 loc2 [V09,T00] ( 11, 16.58) int -> [rsp+0x44]
; V10 OutArgs [V10 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V11 tmp1 [V11,T01] ( 4, 16 ) ref -> rdx class-hnd "Strict ordering of exceptions for Array store" <System.Object>
; V12 tmp2 [V12,T17] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V13 tmp3 [V13,T10] ( 4, 2.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
+; V13 tmp3 [V13,T11] ( 4, 2.50) ref -> rcx class-hnd "Inline return value spill temp" <System.Reflection.RuntimeMethodInfo>
;* V14 tmp4 [V14,T16] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V15 tmp5 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Reflection.RuntimeMethodInfo>
;* V16 tmp6 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp7 [V17,T18] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V18 cse0 [V18,T12] ( 3, 2.50) ref -> rcx "CSE - aggressive"
-; V19 cse1 [V19,T03] ( 8, 6.75) int -> r13 "CSE - aggressive"
+; V19 cse1 [V19,T04] ( 8, 9.71) int -> r12 "CSE - aggressive"
; V20 cse2 [V20,T02] ( 3, 11.88) long -> rcx "CSE - aggressive"
-; V21 rat0 [V21,T13] ( 2, 2 ) ref -> r9 "Fast tail call lowering is creating a new local variable"
+; V21 rat0 [V21,T15] ( 2, 2 ) ref -> r9 "Fast tail call lowering is creating a new local variable"
;
-; Lcl frame size = 56
+; Lcl frame size = 72
G_M50642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -42,50 +42,50 @@ G_M50642_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 56
- mov rsi, rdx
- ; gcrRegs +[rsi]
- mov rdi, r8
- ; gcrRegs +[rdi]
- mov ebp, r9d
- mov rbx, gword ptr [rsp+0xA8]
+ sub rsp, 72
+ mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=33 bbWeight=1 PerfScore 10.00
-G_M50642_IG02: ; bbWeight=1, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ mov rsi, r8
+ ; gcrRegs +[rsi]
+ mov edi, r9d
+ mov r14, gword ptr [rsp+0xB0]
+ ; gcrRegs +[r14]
+ mov rbp, gword ptr [rsp+0xB8]
+ ; gcrRegs +[rbp]
+ mov r15, gword ptr [rsp+0xC0]
+ ; gcrRegs +[r15]
+ ;; size=49 bbWeight=1 PerfScore 12.00
+G_M50642_IG02: ; bbWeight=1, gcrefRegs=C06A {rcx rbx rbp rsi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx]
mov rcx, gword ptr [rcx+0x20]
test rcx, rcx
jne SHORT G_M50642_IG04
;; size=9 bbWeight=1 PerfScore 3.25
-G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M50642_IG03: ; bbWeight=0.50, gcrefRegs=C068 {rbx rbp rsi r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx]
xor rcx, rcx
; gcrRegs +[rcx]
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M50642_IG04: ; bbWeight=1, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- mov r14, rcx
- ; gcrRegs +[r14]
- test r14, r14
+G_M50642_IG04: ; bbWeight=1, gcrefRegs=C06A {rcx rbx rbp rsi r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov r13, rcx
+ ; gcrRegs +[r13]
+ test r13, r13
je G_M50642_IG15
- test rbx, rbx
+ test rbp, rbp
jne SHORT G_M50642_IG07
;; size=17 bbWeight=1 PerfScore 2.75
-G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=00C2 {rcx rsi rdi}, byrefRegs=0000 {}, byref, nogc
- ; gcrRegs -[rbx r14]
- mov rbx, gword ptr [rsp+0xA0]
- ; gcrRegs +[rbx]
- mov r9, rbx
+G_M50642_IG05: ; bbWeight=0.50, gcrefRegs=C04A {rcx rbx rsi r14 r15}, byrefRegs=0000 {}, byref, nogc
+ ; gcrRegs -[rbp r13]
+ mov r9, r14
; gcrRegs +[r9]
- mov gword ptr [rsp+0xA0], rdi
- mov r15, gword ptr [rsp+0xB0]
- ; gcrRegs +[r15]
- mov gword ptr [rsp+0xA8], r15
- mov rdx, rsi
+ mov gword ptr [rsp+0xB0], rsi
+ mov gword ptr [rsp+0xB8], r15
+ mov rdx, rbx
; gcrRegs +[rdx]
- mov r8d, ebp
- ;; size=41 bbWeight=0.50 PerfScore 2.38
+ mov r8d, edi
+ ;; size=25 bbWeight=0.50 PerfScore 1.38
G_M50642_IG06: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 56
+ add rsp, 72
pop rbx
pop rbp
pop rsi
@@ -97,97 +97,101 @@ G_M50642_IG06: ; bbWeight=0.50, epilog, nogc, extend
tail.jmp [System.Reflection.RuntimeMethodInfo:InvokePropertySetter(System.Object,int,System.Reflection.Binder,System.Object,System.Globalization.CultureInfo):this]
; gcr arg pop 0
;; size=22 bbWeight=0.50 PerfScore 3.12
-G_M50642_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rcx rdx r9 r15] +[r14]
- mov r13d, dword ptr [rbx+0x08]
- lea edx, [r13+0x01]
+G_M50642_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=E068 {rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs -[rcx rdx r9] +[rbp r13]
+ mov r12d, dword ptr [rbp+0x08]
+ lea edx, [r12+0x01]
movsxd rdx, edx
mov rcx, 0xD1FFAB1E ; System.Object[]
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[rax]
; gcr arg pop 0
- mov r12, rax
- ; gcrRegs +[r12]
- xor eax, eax
- ; gcrRegs -[rax]
- test r13d, r13d
+ mov gword ptr [rsp+0x38], rax
+ ; GC ptr vars +{V08}
+ xor r8d, r8d
+ test r12d, r12d
jle SHORT G_M50642_IG12
- ;; size=36 bbWeight=0.50 PerfScore 2.88
-G_M50642_IG08: ; bbWeight=0.25, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [r12+0x08], r13d
+ ;; size=40 bbWeight=0.50 PerfScore 3.25
+G_M50642_IG08: ; bbWeight=0.25, gcVars=0000000000000008 {V08}, gcrefRegs=E069 {rax rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ cmp dword ptr [rax+0x08], r12d
jl SHORT G_M50642_IG11
- ;; size=7 bbWeight=0.25 PerfScore 1.00
-G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- mov dword ptr [rsp+0x34], eax
- mov ecx, eax
- mov rdx, gword ptr [rbx+8*rcx+0x10]
+ ;; size=6 bbWeight=0.25 PerfScore 1.00
+G_M50642_IG09: ; bbWeight=3.96, gcrefRegs=E069 {rax rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rsp+0x44], r8d
+ mov ecx, r8d
+ mov rdx, gword ptr [rbp+8*rcx+0x10]
; gcrRegs +[rdx]
- lea rcx, bword ptr [r12+8*rcx+0x10]
+ lea rcx, bword ptr [rax+8*rcx+0x10]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov eax, dword ptr [rsp+0x34]
- inc eax
- cmp r13d, eax
+ mov r8d, dword ptr [rsp+0x44]
+ inc r8d
+ cmp r12d, r8d
+ mov rax, gword ptr [rsp+0x38]
+ ; gcrRegs +[rax]
jg SHORT G_M50642_IG09
- ;; size=32 bbWeight=3.96 PerfScore 30.69
-G_M50642_IG10: ; bbWeight=0.50, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
+ ;; size=41 bbWeight=3.96 PerfScore 34.65
+G_M50642_IG10: ; bbWeight=1.98, gcrefRegs=E049 {rax rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbp]
jmp SHORT G_M50642_IG12
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
- mov ecx, eax
- mov rdx, gword ptr [rbx+8*rcx+0x10]
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=E069 {rax rbx rbp rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rbp]
+ mov ecx, r8d
+ mov rdx, gword ptr [rbp+8*rcx+0x10]
; gcrRegs +[rdx]
- cmp eax, dword ptr [r12+0x08]
+ cmp r8d, dword ptr [rax+0x08]
jae SHORT G_M50642_IG14
- mov dword ptr [rsp+0x34], eax
- mov ecx, eax
- lea rcx, bword ptr [r12+8*rcx+0x10]
+ mov dword ptr [rsp+0x44], r8d
+ mov ecx, r8d
+ lea rcx, bword ptr [rax+8*rcx+0x10]
; byrRegs +[rcx]
call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov ecx, dword ptr [rsp+0x34]
+ mov ecx, dword ptr [rsp+0x44]
inc ecx
- cmp r13d, ecx
- mov eax, ecx
+ cmp r12d, ecx
+ mov r8d, ecx
+ mov rax, gword ptr [rsp+0x38]
+ ; gcrRegs +[rax]
jg SHORT G_M50642_IG11
- ;; size=43 bbWeight=0.04 PerfScore 0.49
-G_M50642_IG12: ; bbWeight=0.50, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
- cmp r13d, dword ptr [r12+0x08]
+ ;; size=51 bbWeight=0.04 PerfScore 0.53
+G_M50642_IG12: ; bbWeight=1.98, gcrefRegs=E049 {rax rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbp]
+ cmp r12d, dword ptr [rax+0x08]
jae SHORT G_M50642_IG14
- mov ecx, r13d
- lea rcx, bword ptr [r12+8*rcx+0x10]
+ mov ecx, r12d
+ lea rcx, bword ptr [rax+8*rcx+0x10]
; byrRegs +[rcx]
- mov rdx, rdi
- ; gcrRegs +[rdx]
- call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rdi]
- ; byrRegs -[rcx]
- mov gword ptr [rsp+0x20], r12
- ; gcr arg write
- mov r15, gword ptr [rsp+0xB0]
- ; gcrRegs +[r15]
- mov gword ptr [rsp+0x28], r15
- ; gcr arg write
...
+10 (+3.21%) : 2990.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,33 +9,32 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T11] ( 5, 3.50) int -> rdi
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> rbp
-; V03 loc2 [V03,T12] ( 4, 3.50) ubyte -> r14
-; V04 loc3 [V04,T17] ( 3, 2.50) ubyte -> rax
+; V01 loc0 [V01,T10] ( 5, 3.50) int -> rdi
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> rbp
+; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> r14
+; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> rax
; V05 loc4 [V05,T05] ( 4, 12.50) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T18] ( 3, 2 ) int -> rax
-; V08 tmp2 [V08,T19] ( 3, 1.50) int -> rbp
+; V07 tmp1 [V07,T17] ( 3, 2 ) int -> rax
+; V08 tmp2 [V08,T18] ( 3, 1.50) int -> rbp
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rax "dup spill"
-;* V10 tmp4 [V10,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T13] ( 3, 3 ) ushort -> rcx "Inlining Arg"
-;* V12 tmp6 [V12,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
-;* V14 tmp8 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> rax "Inlining Arg"
+;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rcx "Inlining Arg"
-;* V16 tmp10 [V16,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rax "Inlining Arg"
-;* V18 tmp12 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T15] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T16] ( 3, 3 ) ushort -> rax "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T06] ( 6, 11 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> rax "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T06] ( 7, 15 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V26 tmp20 [V26 ] ( 6, 9 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V27 cse0 [V27,T08] ( 3, 8.50) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge G_M17180_IG23
+ jge G_M17180_IG24
mov ecx, ebp
movzx rcx, word ptr [rbx+2*rcx]
cmp ecx, 92
@@ -136,16 +135,16 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=6 bbWeight=4 PerfScore 6.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rbx]
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ebp, 1
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
test r14d, r14d
- je SHORT G_M17180_IG21
+ je SHORT G_M17180_IG22
mov ebp, 4
jmp SHORT G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.75
@@ -154,55 +153,59 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge SHORT G_M17180_IG23
+ jge SHORT G_M17180_IG20
mov eax, ebp
- movzx rcx, word ptr [rbx+2*rax]
- mov eax, ecx
+ movzx rax, word ptr [rbx+2*rax]
cmp eax, 92
- je SHORT G_M17180_IG19
+ je SHORT G_M17180_IG20
cmp eax, 47
jne SHORT G_M17180_IG17
- ;; size=22 bbWeight=4 PerfScore 25.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rbx]
- cmp ebp, 4
- jle SHORT G_M17180_IG23
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 92
- je SHORT G_M17180_IG22
- cmp ecx, 47
- jne SHORT G_M17180_IG23
- jmp SHORT G_M17180_IG22
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=20 bbWeight=4 PerfScore 24.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M17180_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ebp, esi
+ jge SHORT G_M17180_IG24
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+ cmp ebp, 4
+ jle SHORT G_M17180_IG24
+ mov eax, ebp
+ movzx rax, word ptr [rbx+2*rax]
+ cmp eax, 92
+ je SHORT G_M17180_IG23
+ cmp eax, 47
+ jne SHORT G_M17180_IG24
+ jmp SHORT G_M17180_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.00
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp esi, 2
- jl SHORT G_M17180_IG23
+ jl SHORT G_M17180_IG24
cmp word ptr [rbx+0x02], 58
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
movzx rax, word ptr [rbx]
or eax, 32
add eax, -97
cmp eax, 25
- ja SHORT G_M17180_IG23
+ ja SHORT G_M17180_IG24
mov ebp, 2
cmp esi, 2
- jle SHORT G_M17180_IG23
+ jle SHORT G_M17180_IG24
movzx rax, word ptr [rbx+0x04]
cmp eax, 92
- je SHORT G_M17180_IG22
+ je SHORT G_M17180_IG23
cmp eax, 47
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
;; size=50 bbWeight=0.50 PerfScore 7.50
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
inc ebp
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ebp
;; size=2 bbWeight=1 PerfScore 0.25
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -212,7 +215,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 312, prolog size 17, PerfScore 112.38, instruction count 114, allocated bytes for code 312 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 322, prolog size 17, PerfScore 114.12, instruction count 118, allocated bytes for code 322 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
+10 (+3.21%) : 12639.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,33 +9,32 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T11] ( 5, 3.50) int -> rdi
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> rbp
-; V03 loc2 [V03,T12] ( 4, 3.50) ubyte -> r14
-; V04 loc3 [V04,T17] ( 3, 2.50) ubyte -> rax
+; V01 loc0 [V01,T10] ( 5, 3.50) int -> rdi
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> rbp
+; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> r14
+; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> rax
; V05 loc4 [V05,T05] ( 4, 12.50) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T18] ( 3, 2 ) int -> rax
-; V08 tmp2 [V08,T19] ( 3, 1.50) int -> rbp
+; V07 tmp1 [V07,T17] ( 3, 2 ) int -> rax
+; V08 tmp2 [V08,T18] ( 3, 1.50) int -> rbp
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rax "dup spill"
-;* V10 tmp4 [V10,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T13] ( 3, 3 ) ushort -> rcx "Inlining Arg"
-;* V12 tmp6 [V12,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
-;* V14 tmp8 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> rax "Inlining Arg"
+;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rcx "Inlining Arg"
-;* V16 tmp10 [V16,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rax "Inlining Arg"
-;* V18 tmp12 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T15] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T16] ( 3, 3 ) ushort -> rax "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T06] ( 6, 11 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> rax "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T06] ( 7, 15 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V26 tmp20 [V26 ] ( 6, 9 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V27 cse0 [V27,T08] ( 3, 8.50) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge G_M17180_IG23
+ jge G_M17180_IG24
mov ecx, ebp
movzx rcx, word ptr [rbx+2*rcx]
cmp ecx, 92
@@ -136,16 +135,16 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=6 bbWeight=4 PerfScore 6.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rbx]
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ebp, 1
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
test r14d, r14d
- je SHORT G_M17180_IG21
+ je SHORT G_M17180_IG22
mov ebp, 4
jmp SHORT G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.75
@@ -154,55 +153,59 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge SHORT G_M17180_IG23
+ jge SHORT G_M17180_IG20
mov eax, ebp
- movzx rcx, word ptr [rbx+2*rax]
- mov eax, ecx
+ movzx rax, word ptr [rbx+2*rax]
cmp eax, 92
- je SHORT G_M17180_IG19
+ je SHORT G_M17180_IG20
cmp eax, 47
jne SHORT G_M17180_IG17
- ;; size=22 bbWeight=4 PerfScore 25.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rbx]
- cmp ebp, 4
- jle SHORT G_M17180_IG23
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 92
- je SHORT G_M17180_IG22
- cmp ecx, 47
- jne SHORT G_M17180_IG23
- jmp SHORT G_M17180_IG22
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=20 bbWeight=4 PerfScore 24.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M17180_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ebp, esi
+ jge SHORT G_M17180_IG24
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+ cmp ebp, 4
+ jle SHORT G_M17180_IG24
+ mov eax, ebp
+ movzx rax, word ptr [rbx+2*rax]
+ cmp eax, 92
+ je SHORT G_M17180_IG23
+ cmp eax, 47
+ jne SHORT G_M17180_IG24
+ jmp SHORT G_M17180_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.00
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp esi, 2
- jl SHORT G_M17180_IG23
+ jl SHORT G_M17180_IG24
cmp word ptr [rbx+0x02], 58
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
movzx rax, word ptr [rbx]
or eax, 32
add eax, -97
cmp eax, 25
- ja SHORT G_M17180_IG23
+ ja SHORT G_M17180_IG24
mov ebp, 2
cmp esi, 2
- jle SHORT G_M17180_IG23
+ jle SHORT G_M17180_IG24
movzx rax, word ptr [rbx+0x04]
cmp eax, 92
- je SHORT G_M17180_IG22
+ je SHORT G_M17180_IG23
cmp eax, 47
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
;; size=50 bbWeight=0.50 PerfScore 7.50
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
inc ebp
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ebp
;; size=2 bbWeight=1 PerfScore 0.25
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -212,7 +215,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 312, prolog size 17, PerfScore 112.38, instruction count 114, allocated bytes for code 312 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 322, prolog size 17, PerfScore 114.12, instruction count 118, allocated bytes for code 322 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
benchmarks.run_pgo.windows.x64.checked.mch
-15 (-24.19%) : 91602.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
@@ -10,10 +10,10 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <Lowering.InstructionReplacement>
-; V01 loc0 [V01,T02] ( 5,100.25) int -> rcx
-; V02 loc1 [V02,T01] ( 8,299.99) int -> registers
+; V01 loc0 [V01,T02] ( 4,100.26) int -> rcx
+; V02 loc1 [V02,T01] ( 5,299.99) int -> registers
;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T00] ( 9,600.00) int -> rax "impSpillLclRefs"
+; V04 tmp1 [V04,T00] ( 6,600.00) int -> rax "impSpillLclRefs"
;
; Lcl frame size = 0
@@ -24,39 +24,32 @@ G_M4100_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre
G_M4100_IG02: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea edx, [rax+0x01]
cmp eax, 0xD1FFAB1E
- jge SHORT G_M4100_IG07
+ jge SHORT G_M4100_IG05
;; size=10 bbWeight=0.01 PerfScore 0.02
G_M4100_IG03: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
bt edx, ecx
- jae SHORT G_M4100_IG06
- ;; size=5 bbWeight=99.99 PerfScore 149.98
-G_M4100_IG04: ; bbWeight=99.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jae SHORT G_M4100_IG07
+ ;; size=5 bbWeight=99.99 PerfScore 149.99
+G_M4100_IG04: ; bbWeight=99.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, edx
lea edx, [rax+0x01]
cmp eax, 0xD1FFAB1E
- jge SHORT G_M4100_IG07
- ;; size=12 bbWeight=99.86 PerfScore 199.72
-G_M4100_IG05: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- bt edx, ecx
- jb SHORT G_M4100_IG04
- ;; size=5 bbWeight=0.00 PerfScore 0.01
-G_M4100_IG06: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- inc ecx
- mov eax, edx
- lea edx, [rax+0x01]
- cmp eax, 0xD1FFAB1E
- jl SHORT G_M4100_IG05
- ;; size=14 bbWeight=0.13 PerfScore 0.29
-G_M4100_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jl SHORT G_M4100_IG03
+ ;; size=12 bbWeight=99.99 PerfScore 199.98
+G_M4100_IG05: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ecx
- ;; size=2 bbWeight=0 PerfScore 0.00
-G_M4100_IG08: ; bbWeight=0, epilog, nogc, extend
+ ;; size=2 bbWeight=0.01 PerfScore 0.00
+G_M4100_IG06: ; bbWeight=0.01, epilog, nogc, extend
add rsp, 120
pop rbp
ret
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=0.01 PerfScore 0.02
+G_M4100_IG07: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ inc ecx
+ jmp SHORT G_M4100_IG04
+ ;; size=4 bbWeight=0.13 PerfScore 0.29
-; Total bytes of code 62, prolog size 8, PerfScore 350.05, instruction count 22, allocated bytes for code 62 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
+; Total bytes of code 47, prolog size 8, PerfScore 350.33, instruction count 17, allocated bytes for code 47 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
; ============================================================
Unwind Info:
-36 (-6.94%) : 94695.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 13, 23.99) long -> rbx single-def
-; V01 loc0 [V01,T01] ( 33, 58.58) long -> rsi
+; V01 loc0 [V01,T01] ( 33, 58.69) long -> rsi
; V02 loc1 [V02,T00] ( 20, 72.14) long -> rdi
;* V03 loc2 [V03 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ushort]>
;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref
@@ -36,7 +36,7 @@
;* V24 tmp2 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp3 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp4 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V27 tmp5 [V27,T05] ( 8, 4 ) int -> rax "Single return block return value"
+; V27 tmp5 [V27,T05] ( 8, 4.23) int -> rax "Single return block return value"
; V28 rat0 [V28,T04] ( 3, 6 ) int -> rax "ReplaceWithLclVar is creating a new local variable"
;
; Lcl frame size = 32
@@ -63,36 +63,58 @@ G_M54480_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov edi, eax
and rdi, 7
;; size=31 bbWeight=1 PerfScore 4.25
-G_M54480_IG03: ; bbWeight=1.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG03: ; bbWeight=1.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rdi, 4
- jge G_M54480_IG19
- ;; size=10 bbWeight=1.31 PerfScore 1.64
-G_M54480_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jl SHORT G_M54480_IG05
+ ;; size=6 bbWeight=1.31 PerfScore 1.64
+G_M54480_IG04: ; bbWeight=0.35, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp word ptr [rbx+2*rsi], 0
+ je G_M54480_IG19
+ cmp word ptr [rbx+2*rsi+0x02], 0
+ je G_M54480_IG28
+ cmp word ptr [rbx+2*rsi+0x04], 0
+ je G_M54480_IG27
+ cmp word ptr [rbx+2*rsi+0x06], 0
+ je G_M54480_IG26
+ add rsi, 4
+ add rdi, -4
+ cmp rdi, 4
+ jge SHORT G_M54480_IG04
+ ;; size=61 bbWeight=0.35 PerfScore 6.19
+G_M54480_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- jg G_M54480_IG15
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M54480_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jle SHORT G_M54480_IG07
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M54480_IG06: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp word ptr [rbx+2*rsi], 0
+ je G_M54480_IG19
+ inc rsi
+ dec rdi
+ test rdi, rdi
+ jg SHORT G_M54480_IG06
+ ;; size=22 bbWeight=0.78 PerfScore 4.48
+G_M54480_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp rsi, 0xD1FFAB1E
- jge G_M54480_IG26
+ jge G_M54480_IG25
mov rax, rsi
neg rax
add rax, 0xD1FFAB1E
cmp rax, 8
- jl G_M54480_IG21
+ jl G_M54480_IG20
;; size=35 bbWeight=1 PerfScore 3.25
-G_M54480_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rax, [rbx+2*rsi]
test al, 31
- je SHORT G_M54480_IG10
+ je SHORT G_M54480_IG12
;; size=8 bbWeight=1 PerfScore 1.75
-G_M54480_IG07: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG09: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vxorps xmm0, xmm0, xmm0
vpcmpeqw xmm0, xmm0, xmmword ptr [rbx+2*rsi]
vpmovmskb eax, xmm0
test eax, eax
- je SHORT G_M54480_IG09
+ je SHORT G_M54480_IG11
;; size=17 bbWeight=0.53 PerfScore 3.50
-G_M54480_IG08: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG10: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor ecx, ecx
tzcnt ecx, eax
shr ecx, 1
@@ -100,47 +122,36 @@ G_M54480_IG08: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
add eax, esi
jmp SHORT G_M54480_IG18
;; size=14 bbWeight=0.30 PerfScore 1.59
-G_M54480_IG09: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG11: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add rsi, 8
;; size=4 bbWeight=0.23 PerfScore 0.06
-G_M54480_IG10: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG12: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, rsi
neg rdi
add rdi, 0xD1FFAB1E
and rdi, -16
- jle G_M54480_IG23
- ;; size=23 bbWeight=0.70 PerfScore 1.39
-G_M54480_IG11: ; bbWeight=16.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jle SHORT G_M54480_IG22
+ ;; size=19 bbWeight=0.70 PerfScore 1.39
+G_M54480_IG13: ; bbWeight=16.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rdi, 16
- jl G_M54480_IG22
- ;; size=10 bbWeight=16.28 PerfScore 20.36
-G_M54480_IG12: ; bbWeight=16.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M54480_IG21
+ ;; size=6 bbWeight=16.28 PerfScore 20.36
+G_M54480_IG14: ; bbWeight=16.28, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vxorps ymm0, ymm0, ymm0
vpcmpeqw ymm0, ymm0, ymmword ptr [rbx+2*rsi]
vpmovmskb ecx, ymm0
test ecx, ecx
jne SHORT G_M54480_IG17
;; size=17 bbWeight=16.28 PerfScore 123.49
-G_M54480_IG13: ; bbWeight=15.59, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG15: ; bbWeight=15.59, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add rsi, 16
add rdi, -16
test rdi, rdi
- jle G_M54480_IG23
- ;; size=17 bbWeight=15.59 PerfScore 27.28
-G_M54480_IG14: ; bbWeight=0.35, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M54480_IG11
+ jle SHORT G_M54480_IG22
+ ;; size=13 bbWeight=15.59 PerfScore 27.28
+G_M54480_IG16: ; bbWeight=0.35, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M54480_IG13
;; size=2 bbWeight=0.35 PerfScore 0.70
-G_M54480_IG15: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp word ptr [rbx+2*rsi], 0
- je G_M54480_IG30
- inc rsi
- dec rdi
- test rdi, rdi
- jg SHORT G_M54480_IG15
- ;; size=22 bbWeight=0.78 PerfScore 4.48
-G_M54480_IG16: ; bbWeight=0.44, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- jmp G_M54480_IG05
- ;; size=5 bbWeight=0.44 PerfScore 0.88
G_M54480_IG17: ; bbWeight=0.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
tzcnt eax, ecx
@@ -155,24 +166,11 @@ G_M54480_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop rdi
ret
;; size=11 bbWeight=1 PerfScore 3.75
-G_M54480_IG19: ; bbWeight=0.35, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp word ptr [rbx+2*rsi], 0
- je G_M54480_IG30
- cmp word ptr [rbx+2*rsi+0x02], 0
- je G_M54480_IG29
- cmp word ptr [rbx+2*rsi+0x04], 0
- je G_M54480_IG28
- cmp word ptr [rbx+2*rsi+0x06], 0
- je G_M54480_IG27
- add rsi, 4
- add rdi, -4
- cmp rdi, 4
- jge SHORT G_M54480_IG19
- ;; size=61 bbWeight=0.35 PerfScore 6.19
-G_M54480_IG20: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- jmp G_M54480_IG04
- ;; size=5 bbWeight=0.26 PerfScore 0.52
-G_M54480_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG19: ; bbWeight=0.12, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ mov eax, esi
+ jmp SHORT G_M54480_IG18
+ ;; size=4 bbWeight=0.12 PerfScore 0.26
+G_M54480_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -180,9 +178,9 @@ G_M54480_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp G_M54480_IG06
+ jmp G_M54480_IG08
;; size=31 bbWeight=0 PerfScore 0.00
-G_M54480_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -190,14 +188,14 @@ G_M54480_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp G_M54480_IG12
- ;; size=31 bbWeight=0 PerfScore 0.00
-G_M54480_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M54480_IG14
+ ;; size=28 bbWeight=0 PerfScore 0.00
+G_M54480_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, rsi
neg rdi
add rdi, 0xD1FFAB1E
and rdi, -8
- jle SHORT G_M54480_IG24
+ jle SHORT G_M54480_IG23
xor ecx, ecx
cmp rdi, 8
setge cl
@@ -207,46 +205,42 @@ G_M54480_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
vpcmpeqw xmm0, xmm0, xmmword ptr [rbx+2*rsi]
vpmovmskb eax, xmm0
test eax, eax
- jne SHORT G_M54480_IG25
+ jne SHORT G_M54480_IG24
add rsi, 8
;; size=55 bbWeight=0 PerfScore 0.00
-G_M54480_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rsi, 0xD1FFAB1E
- jge SHORT G_M54480_IG26
+ jge SHORT G_M54480_IG25
mov rdi, rsi
neg rdi
add rdi, 0xD1FFAB1E
jmp G_M54480_IG03
;; size=27 bbWeight=0 PerfScore 0.00
-G_M54480_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
tzcnt eax, eax
shr eax, 1
add eax, esi
jmp G_M54480_IG18
;; size=13 bbWeight=0 PerfScore 0.00
-G_M54480_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.SpanHelpers:ThrowMustBeNullTerminatedString()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M54480_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea eax, [rsi+0x03]
jmp G_M54480_IG18
;; size=8 bbWeight=0 PerfScore 0.00
-G_M54480_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
-36 (-6.86%) : 96825.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 319
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 319
; 3 inlinees with PGO data; 13 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
@@ -82,90 +82,22 @@ G_M26761_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
G_M26761_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor ebp, ebp
cmp rbx, 16
- jae G_M26761_IG13
+ jb G_M26761_IG11
;; size=12 bbWeight=1 PerfScore 1.50
-G_M26761_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- cmp rbp, rbx
- ja G_M26761_IG25
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M26761_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- sub rbx, rbp
- cmp rbx, 4
- jb SHORT G_M26761_IG07
- ;; size=9 bbWeight=1 PerfScore 1.50
-G_M26761_IG05: ; bbWeight=0.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rax, [rbp+rbx-0x04]
- ;; size=5 bbWeight=0.82 PerfScore 1.63
-G_M26761_IG06: ; bbWeight=1.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov r14d, dword ptr [rdi+rbp]
- test r14d, 0xD1FFAB1E
- jne G_M26761_IG22
- vmovd xmm0, r14
- vpmovzxbw xmm0, xmm0
- vmovd qword ptr [rsi+2*rbp], xmm0
- add rbp, 4
- cmp rbp, rax
- jbe SHORT G_M26761_IG06
- ;; size=42 bbWeight=1.93 PerfScore 18.80
-G_M26761_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test bl, 2
- je SHORT G_M26761_IG09
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M26761_IG08: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- movzx r14, word ptr [rdi+rbp]
- test r14d, 0xD1FFAB1E
- jne G_M26761_IG22
- movzx rax, r14b
- mov word ptr [rsi+2*rbp], ax
- shr r14d, 8
- mov word ptr [rsi+2*rbp+0x02], r14w
- add rbp, 2
- ;; size=40 bbWeight=0.52 PerfScore 3.25
-G_M26761_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test bl, 1
- je SHORT G_M26761_IG11
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M26761_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- movzx r14, byte ptr [rdi+rbp]
- test r14b, 128
- jne SHORT G_M26761_IG11
- mov word ptr [rsi+2*rbp], r14w
- inc rbp
- ;; size=19 bbWeight=0.50 PerfScore 2.27
-G_M26761_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- mov rax, rbp
- ;; size=3 bbWeight=1 PerfScore 0.25
-G_M26761_IG12: ; bbWeight=1, epilog, nogc, extend
- vzeroupper
- add rsp, 32
- pop rbx
- pop rbp
- pop rsi
- pop rdi
- pop r14
- ret
- ;; size=14 bbWeight=1 PerfScore 4.75
-G_M26761_IG13: ; bbWeight=0.40, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M26761_IG03: ; bbWeight=0.40, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rax, rsi
cmp rbx, 64
- jae SHORT G_M26761_IG16
+ jb SHORT G_M26761_IG06
;; size=9 bbWeight=0.40 PerfScore 0.60
-G_M26761_IG14: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- cmp rbx, 32
- jb G_M26761_IG20
- ;; size=10 bbWeight=0.25 PerfScore 0.31
-G_M26761_IG15: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M26761_IG18
- ;; size=2 bbWeight=0.13 PerfScore 0.27
-G_M26761_IG16: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26761_IG04: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rbx-0x40]
;; size=4 bbWeight=0.15 PerfScore 0.08
-G_M26761_IG17: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG05: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vmovups zmm0, zmmword ptr [rdi+rbp]
vpmovb2m k1, zmm0
kmovq rdx, k1
test rdx, rdx
- jne G_M26761_IG03
+ jne G_M26761_IG11
vmovaps zmm1, zmm0
vpmovzxbw zmm1, zmm1
vextracti64x4 ymm0, zmm0, 1
@@ -175,17 +107,21 @@ G_M26761_IG17: ; bbWeight=0.15, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
add rbp, 64
add rax, 128
cmp rbp, rcx
- jbe SHORT G_M26761_IG17
- jmp G_M26761_IG03
- ;; size=85 bbWeight=0.15 PerfScore 3.26
-G_M26761_IG18: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jbe SHORT G_M26761_IG05
+ jmp SHORT G_M26761_IG11
+ ;; size=82 bbWeight=0.15 PerfScore 3.26
+G_M26761_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp rbx, 32
+ jb SHORT G_M26761_IG09
+ ;; size=6 bbWeight=0.25 PerfScore 0.31
+G_M26761_IG07: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rbx-0x20]
;; size=4 bbWeight=0.13 PerfScore 0.07
-G_M26761_IG19: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG08: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vmovups ymm0, ymmword ptr [rdi+rbp]
vpmovmskb edx, ymm0
test edx, edx
- jne G_M26761_IG03
+ jne SHORT G_M26761_IG11
vmovaps ymm1, ymm0
vpmovzxbw ymm1, ymm1
vextracti128 xmm0, ymm0, 1
@@ -195,16 +131,16 @@ G_M26761_IG19: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
add rbp, 32
add rax, 64
cmp rbp, rcx
- jbe SHORT G_M26761_IG19
- jmp G_M26761_IG03
- ;; size=64 bbWeight=0.13 PerfScore 3.13
-G_M26761_IG20: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jbe SHORT G_M26761_IG08
+ jmp SHORT G_M26761_IG11
+ ;; size=57 bbWeight=0.13 PerfScore 3.13
+G_M26761_IG09: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rcx, [rbx-0x10]
;; size=4 bbWeight=0.11 PerfScore 0.06
-G_M26761_IG21: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG10: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vmovups xmm0, xmmword ptr [rdi+rbp]
vptest xmm0, xmmword ptr [reloc @RWD00]
- jne G_M26761_IG03
+ jne SHORT G_M26761_IG11
vpmovzxbw xmm1, xmm0
vpsrldq xmm0, xmm0, 8
vpmovzxbw xmm0, xmm0
@@ -213,12 +149,72 @@ G_M26761_IG21: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
add rbp, 16
add rax, 32
cmp rbp, rcx
- jbe SHORT G_M26761_IG21
- jmp G_M26761_IG03
- ;; size=62 bbWeight=0.11 PerfScore 2.34
-G_M26761_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jbe SHORT G_M26761_IG10
+ ;; size=53 bbWeight=0.11 PerfScore 2.12
+G_M26761_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ cmp rbp, rbx
+ ja G_M26761_IG24
+ ;; size=9 bbWeight=1 PerfScore 1.25
+G_M26761_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ sub rbx, rbp
+ cmp rbx, 4
+ jb SHORT G_M26761_IG15
+ ;; size=9 bbWeight=1 PerfScore 1.50
+G_M26761_IG13: ; bbWeight=0.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea rax, [rbp+rbx-0x04]
+ ;; size=5 bbWeight=0.82 PerfScore 1.63
+G_M26761_IG14: ; bbWeight=1.93, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov r14d, dword ptr [rdi+rbp]
test r14d, 0xD1FFAB1E
- jne SHORT G_M26761_IG24
+ jne SHORT G_M26761_IG21
+ vmovd xmm0, r14
+ vpmovzxbw xmm0, xmm0
+ vmovd qword ptr [rsi+2*rbp], xmm0
+ add rbp, 4
+ cmp rbp, rax
+ jbe SHORT G_M26761_IG14
+ ;; size=38 bbWeight=1.93 PerfScore 18.80
+G_M26761_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test bl, 2
+ je SHORT G_M26761_IG17
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M26761_IG16: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx r14, word ptr [rdi+rbp]
+ test r14d, 0xD1FFAB1E
+ jne SHORT G_M26761_IG21
+ movzx rax, r14b
+ mov word ptr [rsi+2*rbp], ax
+ shr r14d, 8
+ mov word ptr [rsi+2*rbp+0x02], r14w
+ add rbp, 2
+ ;; size=36 bbWeight=0.52 PerfScore 3.25
+G_M26761_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test bl, 1
+ je SHORT G_M26761_IG19
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M26761_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ movzx r14, byte ptr [rdi+rbp]
+ test r14b, 128
+ jne SHORT G_M26761_IG19
+ mov word ptr [rsi+2*rbp], r14w
+ inc rbp
+ ;; size=19 bbWeight=0.50 PerfScore 2.27
+G_M26761_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov rax, rbp
+ ;; size=3 bbWeight=1 PerfScore 0.25
+G_M26761_IG20: ; bbWeight=1, epilog, nogc, extend
+ vzeroupper
+ add rsp, 32
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ pop r14
+ ret
+ ;; size=14 bbWeight=1 PerfScore 4.75
+G_M26761_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+ test r14d, 0xD1FFAB1E
+ jne SHORT G_M26761_IG23
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
@@ -226,21 +222,21 @@ G_M26761_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
call [<unknown method>]
; gcrRegs -[rcx rdx]
; gcr arg pop 0
- jmp SHORT G_M26761_IG24
+ jmp SHORT G_M26761_IG23
;; size=37 bbWeight=0 PerfScore 0.00
-G_M26761_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26761_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, r14b
mov word ptr [rsi+2*rbp], ax
inc rbp
shr r14d, 8
;; size=15 bbWeight=0 PerfScore 0.00
-G_M26761_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
...
+36 (+5.52%) : 85896.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)
@@ -9,16 +9,16 @@
; 6 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T11] ( 8, 5.23) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T03] ( 8, 13.97) ref -> rbx class-hnd single-def <System.__Canon[]>
+; V00 this [V00,T10] ( 8, 5.23) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V01 arg1 [V01,T06] ( 8, 9.39) ref -> rbx class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T02] ( 17, 18.42) ref -> rdi class-hnd <System.__Canon[]>
-; V03 loc1 [V03,T06] ( 5, 12.08) int -> rbp
-; V04 loc2 [V04,T10] ( 9, 7.74) int -> r14
-; V05 loc3 [V05,T05] ( 6, 13.37) int -> r15
-; V06 loc4 [V06,T07] ( 9, 11.74) ref -> r13 class-hnd <System.__Canon>
-; V07 loc5 [V07,T08] ( 3, 10.79) ubyte -> r12
+; V03 loc1 [V03,T04] ( 5, 12.08) int -> rbp
+; V04 loc2 [V04,T09] ( 9, 7.74) int -> r14
+; V05 loc3 [V05,T08] ( 6, 8.79) int -> r15
+; V06 loc4 [V06,T05] ( 9, 11.74) ref -> r13 class-hnd <System.__Canon>
+; V07 loc5 [V07,T11] ( 3, 6.21) ubyte -> r12
; V08 loc6 [V08,T01] ( 11, 41.35) int -> [rsp+0x3C]
-; V09 loc7 [V09,T00] ( 10, 46.70) ref -> [rsp+0x28] class-hnd <System.__Canon>
+; V09 loc7 [V09,T00] ( 10, 42.12) ref -> [rsp+0x28] class-hnd <System.__Canon>
; V10 loc8 [V10,T19] ( 3, 0.37) int -> r12
; V11 loc9 [V11 ] ( 3, 0.55) ref -> [rsp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,15 +27,15 @@
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp5 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo>
-;* V18 tmp6 [V18,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
+;* V18 tmp6 [V18,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
; V19 tmp7 [V19,T18] ( 4, 0.47) int -> r12 "Inline return value spill temp"
; V20 tmp8 [V20,T13] ( 3, 0.91) int -> r12 "Inlining Arg"
; V21 tmp9 [V21,T20] ( 3, 0.37) int -> r12 "Inline return value spill temp"
-; V22 tmp10 [V22,T14] ( 3, 0.91) int -> rax "Inlining Arg"
+; V22 tmp10 [V22,T14] ( 3, 0.91) int -> r8 "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
; V25 tmp13 [V25,T17] ( 2, 0.74) long -> rcx "argument with side effect"
-; V26 cse0 [V26,T09] ( 6, 10.11) long -> rax multi-def "CSE - aggressive"
+; V26 cse0 [V26,T07] ( 6, 10.11) long -> rdx multi-def "CSE - aggressive"
; V27 rat0 [V27,T15] ( 3, 0.81) long -> rcx "Spilling to split statement for tree"
; V28 rat1 [V28,T16] ( 3, 0.74) long -> rcx "runtime lookup"
; V29 rat2 [V29,T12] ( 3, 1.03) long -> rax "fgMakeTemp is creating a new local variable"
@@ -60,64 +60,59 @@ G_M8298_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rdx
; gcrRegs +[rbx]
;; size=34 bbWeight=1 PerfScore 11.00
-G_M8298_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rsi+0x08]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M8298_IG10
- ;; size=9 bbWeight=1 PerfScore 3.25
+ je G_M8298_IG09
+ ;; size=13 bbWeight=1 PerfScore 3.25
G_M8298_IG03: ; bbWeight=0.86, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov ebp, dword ptr [rdi+0x08]
xor r14d, r14d
xor r15d, r15d
cmp dword ptr [rbx+0x08], 0
- jle G_M8298_IG23
+ jle G_M8298_IG17
;; size=19 bbWeight=0.86 PerfScore 5.59
G_M8298_IG04: ; bbWeight=0.86, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- mov edx, r15d
- mov r13, gword ptr [rbx+8*rdx+0x10]
+ mov ecx, r15d
+ mov r13, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[r13]
xor r12d, r12d
- xor edx, edx
+ xor ecx, ecx
test ebp, ebp
- jle G_M8298_IG18
+ jle G_M8298_IG12
;; size=21 bbWeight=0.86 PerfScore 3.44
-G_M8298_IG05: ; bbWeight=0.43, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG05: ; bbWeight=0.43, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
test rdi, rdi
- je G_M8298_IG15
+ je G_M8298_IG27
test r13, r13
- je G_M8298_IG15
- mov rax, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo
- cmp qword ptr [r13], rax
- jne SHORT G_M8298_IG15
+ je G_M8298_IG27
+ mov rdx, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo
+ cmp qword ptr [r13], rdx
+ jne G_M8298_IG27
cmp dword ptr [rdi+0x08], ebp
- jl SHORT G_M8298_IG15
- ;; size=39 bbWeight=0.43 PerfScore 4.62
-G_M8298_IG06: ; bbWeight=9.65, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
- mov ecx, edx
- mov r10, gword ptr [rdi+8*rcx+0x10]
- ; gcrRegs +[r10]
- test r10, r10
- je G_M8298_IG18
- ;; size=16 bbWeight=9.65 PerfScore 33.77
-G_M8298_IG07: ; bbWeight=8.98, gcrefRegs=24C8 {rbx rsi rdi r10 r13}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r10], rax
- jne SHORT G_M8298_IG13
- mov rcx, qword ptr [r10+0x50]
- cmp rcx, qword ptr [r13+0x50]
- je SHORT G_M8298_IG09
- ;; size=15 bbWeight=8.98 PerfScore 89.79
-G_M8298_IG08: ; bbWeight=9.83, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r10]
- jmp SHORT G_M8298_IG13
- ;; size=2 bbWeight=9.83 PerfScore 19.66
-G_M8298_IG09: ; bbWeight=4.49, gcrefRegs=24C8 {rbx rsi rdi r10 r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r10]
- mov dword ptr [rsp+0x3C], edx
- jmp SHORT G_M8298_IG12
+ jl G_M8298_IG27
+ ;; size=47 bbWeight=0.43 PerfScore 4.62
+G_M8298_IG06: ; bbWeight=9.65, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+ mov eax, ecx
+ mov rax, gword ptr [rdi+8*rax+0x10]
+ ; gcrRegs +[rax]
+ test rax, rax
+ je SHORT G_M8298_IG12
+ ;; size=12 bbWeight=9.65 PerfScore 33.77
+G_M8298_IG07: ; bbWeight=8.98, gcrefRegs=20C9 {rax rbx rsi rdi r13}, byrefRegs=0000 {}, byref
+ cmp qword ptr [rax], rdx
+ jne G_M8298_IG25
+ mov r8, qword ptr [rax+0x50]
+ cmp r8, qword ptr [r13+0x50]
+ jne G_M8298_IG25
+ ;; size=23 bbWeight=8.98 PerfScore 89.79
+G_M8298_IG08: ; bbWeight=4.49, gcrefRegs=20C9 {rax rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rsp+0x3C], ecx
+ jmp SHORT G_M8298_IG11
;; size=6 bbWeight=4.49 PerfScore 13.47
-G_M8298_IG10: ; bbWeight=0.14, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi r10 r13]
+G_M8298_IG09: ; bbWeight=0.14, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdi r13]
lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
mov rdx, rbx
@@ -127,7 +122,7 @@ G_M8298_IG10: ; bbWeight=0.14, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {
; byrRegs -[rcx]
nop
;; size=13 bbWeight=0.14 PerfScore 0.28
-G_M8298_IG11: ; bbWeight=0.14, epilog, nogc, extend
+G_M8298_IG10: ; bbWeight=0.14, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -139,74 +134,38 @@ G_M8298_IG11: ; bbWeight=0.14, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.14 PerfScore 0.74
-G_M8298_IG12: ; bbWeight=9.07, gcVars=0000000000000000 {}, gcrefRegs=24C8 {rbx rsi rdi r10 r13}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rdi r10 r13]
+G_M8298_IG11: ; bbWeight=4.49, gcVars=0000000000000000 {}, gcrefRegs=20C9 {rax rbx rsi rdi r13}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rax rbx rdi r13]
movsxd rdx, r15d
mov rcx, rbx
; gcrRegs +[rcx]
- mov r8, r10
+ mov r8, rax
; gcrRegs +[r8]
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx r8 r10]
+ ; gcrRegs -[rax rcx r8]
; gcr arg pop 0
mov r12d, 1
- mov edx, dword ptr [rsp+0x3C]
- jmp SHORT G_M8298_IG18
- ;; size=26 bbWeight=9.07 PerfScore 45.35
-G_M8298_IG13: ; bbWeight=9.83, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
- inc edx
- cmp edx, ebp
- jl SHORT G_M8298_IG06
- ;; size=6 bbWeight=9.83 PerfScore 14.75
-G_M8298_IG14: ; bbWeight=0.86, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M8298_IG18
- ;; size=2 bbWeight=0.86 PerfScore 1.72
-G_M8298_IG15: ; bbWeight=0.10, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
- cmp edx, dword ptr [rdi+0x08]
- jae G_M8298_IG35
- mov r10d, edx
- mov r10, gword ptr [rdi+8*r10+0x10]
- ; gcrRegs +[r10]
- test r10, r10
- je SHORT G_M8298_IG18
- ;; size=22 bbWeight=0.10 PerfScore 0.73
-G_M8298_IG16: ; bbWeight=0.09, gcrefRegs=24C8 {rbx rsi rdi r10 r13}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo
- cmp qword ptr [r13], rax
- jne G_M8298_IG36
- cmp qword ptr [r10], rax
- jne SHORT G_M8298_IG17
- mov rcx, qword ptr [r10+0x50]
- cmp rcx, qword ptr [r13+0x50]
- je G_M8298_IG25
- ;; size=39 bbWeight=0.09 PerfScore 1.29
-G_M8298_IG17: ; bbWeight=0.10, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r10]
- inc edx
- mov dword ptr [rsp+0x3C], edx
- cmp edx, ebp
- mov edx, dword ptr [rsp+0x3C]
- jl SHORT G_M8298_IG15
- ;; size=14 bbWeight=0.10 PerfScore 0.35
-G_M8298_IG18: ; bbWeight=0.86, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rsp+0x3C]
+ ;; size=24 bbWeight=4.49 PerfScore 13.47
+G_M8298_IG12: ; bbWeight=0.86, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
test r12d, r12d
- jne SHORT G_M8298_IG22
+ jne SHORT G_M8298_IG16
test r14d, r14d
- jne SHORT G_M8298_IG19
- mov r14d, edx
+ jne SHORT G_M8298_IG13
+ mov r14d, ecx
;; size=13 bbWeight=0.86 PerfScore 2.36
-G_M8298_IG19: ; bbWeight=0.86, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG13: ; bbWeight=0.86, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rdi+0x08], r14d
- jle SHORT G_M8298_IG26
+ jle SHORT G_M8298_IG19
;; size=6 bbWeight=0.86 PerfScore 3.44
-G_M8298_IG20: ; bbWeight=0.86, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
+G_M8298_IG14: ; bbWeight=0.86, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rdi+0x08]
jae G_M8298_IG35
mov r8d, r14d
cmp gword ptr [rdi+8*r8+0x10], 0
- jne G_M8298_IG37
+ jne G_M8298_IG34
;; size=25 bbWeight=0.86 PerfScore 7.09
-G_M8298_IG21: ; bbWeight=0.86, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
+G_M8298_IG15: ; bbWeight=0.86, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
mov r8, qword ptr [rsi]
mov r8, qword ptr [r8+0x38]
mov r8, qword ptr [r8]
@@ -227,12 +186,12 @@ G_M8298_IG21: ; bbWeight=0.86, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefReg
; byrRegs -[rax rcx]
inc r14d
;; size=39 bbWeight=0.86 PerfScore 11.39
-G_M8298_IG22: ; bbWeight=0.86, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M8298_IG16: ; bbWeight=0.86, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
inc r15d
...
+36 (+5.53%) : 76474.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.Canon]:MergeWithGlobalList(System.Canon[]):this (Tier1)
@@ -9,16 +9,16 @@
; 6 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T11] ( 8, 5.22) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
-; V01 arg1 [V01,T03] ( 8, 13.58) ref -> rbx class-hnd single-def <System.__Canon[]>
+; V00 this [V00,T10] ( 8, 5.22) ref -> rsi this class-hnd single-def <System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]>
+; V01 arg1 [V01,T06] ( 8, 9.18) ref -> rbx class-hnd single-def <System.__Canon[]>
; V02 loc0 [V02,T02] ( 17, 17.91) ref -> rdi class-hnd <System.__Canon[]>
-; V03 loc1 [V03,T06] ( 5, 11.65) int -> rbp
-; V04 loc2 [V04,T10] ( 9, 7.57) int -> r14
-; V05 loc3 [V05,T05] ( 6, 12.91) int -> r15
-; V06 loc4 [V06,T07] ( 9, 11.32) ref -> r13 class-hnd <System.__Canon>
-; V07 loc5 [V07,T08] ( 3, 10.39) ubyte -> r12
+; V03 loc1 [V03,T04] ( 5, 11.65) int -> rbp
+; V04 loc2 [V04,T09] ( 9, 7.57) int -> r14
+; V05 loc3 [V05,T08] ( 6, 8.52) int -> r15
+; V06 loc4 [V06,T05] ( 9, 11.32) ref -> r13 class-hnd <System.__Canon>
+; V07 loc5 [V07,T11] ( 3, 5.99) ubyte -> r12
; V08 loc6 [V08,T01] ( 11, 39.78) int -> [rsp+0x3C]
-; V09 loc7 [V09,T00] ( 10, 44.84) ref -> [rsp+0x28] class-hnd <System.__Canon>
+; V09 loc7 [V09,T00] ( 10, 40.44) ref -> [rsp+0x28] class-hnd <System.__Canon>
; V10 loc8 [V10,T19] ( 3, 0.38) int -> r12
; V11 loc9 [V11 ] ( 3, 0.57) ref -> [rsp+0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.__Canon[]>
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -27,15 +27,15 @@
;* V15 tmp3 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Reflection.RuntimeMethodInfo>
;* V16 tmp4 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V17 tmp5 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.Reflection.RuntimeMethodInfo>
-;* V18 tmp6 [V18,T04] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
+;* V18 tmp6 [V18,T03] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline stloc first use temp" <System.Reflection.RuntimeMethodInfo>
; V19 tmp7 [V19,T18] ( 4, 0.49) int -> r12 "Inline return value spill temp"
; V20 tmp8 [V20,T13] ( 3, 0.91) int -> r12 "Inlining Arg"
; V21 tmp9 [V21,T20] ( 3, 0.38) int -> r12 "Inline return value spill temp"
-; V22 tmp10 [V22,T14] ( 3, 0.91) int -> rax "Inlining Arg"
+; V22 tmp10 [V22,T14] ( 3, 0.91) int -> r8 "Inlining Arg"
;* V23 tmp11 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V24 tmp12 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.__Canon>
; V25 tmp13 [V25,T17] ( 2, 0.76) long -> rcx "argument with side effect"
-; V26 cse0 [V26,T09] ( 6, 9.72) long -> rax multi-def "CSE - aggressive"
+; V26 cse0 [V26,T07] ( 6, 9.72) long -> rdx multi-def "CSE - aggressive"
; V27 rat0 [V27,T15] ( 3, 0.83) long -> rcx "Spilling to split statement for tree"
; V28 rat1 [V28,T16] ( 3, 0.76) long -> rcx "runtime lookup"
; V29 rat2 [V29,T12] ( 3, 1.06) long -> rax "fgMakeTemp is creating a new local variable"
@@ -60,64 +60,59 @@ G_M8298_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov rbx, rdx
; gcrRegs +[rbx]
;; size=34 bbWeight=1 PerfScore 11.00
-G_M8298_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov rdi, gword ptr [rsi+0x08]
; gcrRegs +[rdi]
test rdi, rdi
- je SHORT G_M8298_IG10
- ;; size=9 bbWeight=1 PerfScore 3.25
+ je G_M8298_IG09
+ ;; size=13 bbWeight=1 PerfScore 3.25
G_M8298_IG03: ; bbWeight=0.84, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov ebp, dword ptr [rdi+0x08]
xor r14d, r14d
xor r15d, r15d
cmp dword ptr [rbx+0x08], 0
- jle G_M8298_IG23
+ jle G_M8298_IG17
;; size=19 bbWeight=0.84 PerfScore 5.47
G_M8298_IG04: ; bbWeight=0.84, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- mov edx, r15d
- mov r13, gword ptr [rbx+8*rdx+0x10]
+ mov ecx, r15d
+ mov r13, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[r13]
xor r12d, r12d
- xor edx, edx
+ xor ecx, ecx
test ebp, ebp
- jle G_M8298_IG18
+ jle G_M8298_IG12
;; size=21 bbWeight=0.84 PerfScore 3.37
-G_M8298_IG05: ; bbWeight=0.42, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG05: ; bbWeight=0.42, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
test rdi, rdi
- je G_M8298_IG15
+ je G_M8298_IG27
test r13, r13
- je G_M8298_IG15
- mov rax, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo
- cmp qword ptr [r13], rax
- jne SHORT G_M8298_IG15
+ je G_M8298_IG27
+ mov rdx, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo
+ cmp qword ptr [r13], rdx
+ jne G_M8298_IG27
cmp dword ptr [rdi+0x08], ebp
- jl SHORT G_M8298_IG15
- ;; size=39 bbWeight=0.42 PerfScore 4.52
-G_M8298_IG06: ; bbWeight=9.27, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
- mov ecx, edx
- mov r10, gword ptr [rdi+8*rcx+0x10]
- ; gcrRegs +[r10]
- test r10, r10
- je G_M8298_IG18
- ;; size=16 bbWeight=9.27 PerfScore 32.43
-G_M8298_IG07: ; bbWeight=8.62, gcrefRegs=24C8 {rbx rsi rdi r10 r13}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r10], rax
- jne SHORT G_M8298_IG13
- mov rcx, qword ptr [r10+0x50]
- cmp rcx, qword ptr [r13+0x50]
- je SHORT G_M8298_IG09
- ;; size=15 bbWeight=8.62 PerfScore 86.20
-G_M8298_IG08: ; bbWeight=9.45, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r10]
- jmp SHORT G_M8298_IG13
- ;; size=2 bbWeight=9.45 PerfScore 18.91
-G_M8298_IG09: ; bbWeight=4.31, gcrefRegs=24C8 {rbx rsi rdi r10 r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[r10]
- mov dword ptr [rsp+0x3C], edx
- jmp SHORT G_M8298_IG12
+ jl G_M8298_IG27
+ ;; size=47 bbWeight=0.42 PerfScore 4.52
+G_M8298_IG06: ; bbWeight=9.27, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+ mov eax, ecx
+ mov rax, gword ptr [rdi+8*rax+0x10]
+ ; gcrRegs +[rax]
+ test rax, rax
+ je SHORT G_M8298_IG12
+ ;; size=12 bbWeight=9.27 PerfScore 32.43
+G_M8298_IG07: ; bbWeight=8.62, gcrefRegs=20C9 {rax rbx rsi rdi r13}, byrefRegs=0000 {}, byref
+ cmp qword ptr [rax], rdx
+ jne G_M8298_IG25
+ mov r8, qword ptr [rax+0x50]
+ cmp r8, qword ptr [r13+0x50]
+ jne G_M8298_IG25
+ ;; size=23 bbWeight=8.62 PerfScore 86.20
+G_M8298_IG08: ; bbWeight=4.31, gcrefRegs=20C9 {rax rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+ mov dword ptr [rsp+0x3C], ecx
+ jmp SHORT G_M8298_IG11
;; size=6 bbWeight=4.31 PerfScore 12.93
-G_M8298_IG10: ; bbWeight=0.16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi r10 r13]
+G_M8298_IG09: ; bbWeight=0.16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax rdi r13]
lea rcx, bword ptr [rsi+0x08]
; byrRegs +[rcx]
mov rdx, rbx
@@ -127,7 +122,7 @@ G_M8298_IG10: ; bbWeight=0.16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {
; byrRegs -[rcx]
nop
;; size=13 bbWeight=0.16 PerfScore 0.32
-G_M8298_IG11: ; bbWeight=0.16, epilog, nogc, extend
+G_M8298_IG10: ; bbWeight=0.16, epilog, nogc, extend
add rsp, 72
pop rbx
pop rbp
@@ -139,74 +134,38 @@ G_M8298_IG11: ; bbWeight=0.16, epilog, nogc, extend
pop r15
ret
;; size=17 bbWeight=0.16 PerfScore 0.83
-G_M8298_IG12: ; bbWeight=8.71, gcVars=0000000000000000 {}, gcrefRegs=24C8 {rbx rsi rdi r10 r13}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rdi r10 r13]
+G_M8298_IG11: ; bbWeight=4.31, gcVars=0000000000000000 {}, gcrefRegs=20C9 {rax rbx rsi rdi r13}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs +[rax rbx rdi r13]
movsxd rdx, r15d
mov rcx, rbx
; gcrRegs +[rcx]
- mov r8, r10
+ mov r8, rax
; gcrRegs +[r8]
call CORINFO_HELP_ARRADDR_ST
- ; gcrRegs -[rcx r8 r10]
+ ; gcrRegs -[rax rcx r8]
; gcr arg pop 0
mov r12d, 1
- mov edx, dword ptr [rsp+0x3C]
- jmp SHORT G_M8298_IG18
- ;; size=26 bbWeight=8.71 PerfScore 43.54
-G_M8298_IG13: ; bbWeight=9.45, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
- inc edx
- cmp edx, ebp
- jl SHORT G_M8298_IG06
- ;; size=6 bbWeight=9.45 PerfScore 14.18
-G_M8298_IG14: ; bbWeight=0.84, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M8298_IG18
- ;; size=2 bbWeight=0.84 PerfScore 1.68
-G_M8298_IG15: ; bbWeight=0.09, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
- cmp edx, dword ptr [rdi+0x08]
- jae G_M8298_IG35
- mov r10d, edx
- mov r10, gword ptr [rdi+8*r10+0x10]
- ; gcrRegs +[r10]
- test r10, r10
- je SHORT G_M8298_IG18
- ;; size=22 bbWeight=0.09 PerfScore 0.70
-G_M8298_IG16: ; bbWeight=0.09, gcrefRegs=24C8 {rbx rsi rdi r10 r13}, byrefRegs=0000 {}, byref, isz
- mov rax, 0xD1FFAB1E ; System.Reflection.RuntimeMethodInfo
- cmp qword ptr [r13], rax
- jne G_M8298_IG36
- cmp qword ptr [r10], rax
- jne SHORT G_M8298_IG17
- mov rcx, qword ptr [r10+0x50]
- cmp rcx, qword ptr [r13+0x50]
- je G_M8298_IG25
- ;; size=39 bbWeight=0.09 PerfScore 1.24
-G_M8298_IG17: ; bbWeight=0.10, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r10]
- inc edx
- mov dword ptr [rsp+0x3C], edx
- cmp edx, ebp
- mov edx, dword ptr [rsp+0x3C]
- jl SHORT G_M8298_IG15
- ;; size=14 bbWeight=0.10 PerfScore 0.33
-G_M8298_IG18: ; bbWeight=0.84, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+ mov ecx, dword ptr [rsp+0x3C]
+ ;; size=24 bbWeight=4.31 PerfScore 12.93
+G_M8298_IG12: ; bbWeight=0.84, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
test r12d, r12d
- jne SHORT G_M8298_IG22
+ jne SHORT G_M8298_IG16
test r14d, r14d
- jne SHORT G_M8298_IG19
- mov r14d, edx
+ jne SHORT G_M8298_IG13
+ mov r14d, ecx
;; size=13 bbWeight=0.84 PerfScore 2.31
-G_M8298_IG19: ; bbWeight=0.84, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
+G_M8298_IG13: ; bbWeight=0.84, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rdi+0x08], r14d
- jle SHORT G_M8298_IG26
+ jle SHORT G_M8298_IG19
;; size=6 bbWeight=0.84 PerfScore 3.37
-G_M8298_IG20: ; bbWeight=0.84, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
+G_M8298_IG14: ; bbWeight=0.84, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rdi+0x08]
jae G_M8298_IG35
mov r8d, r14d
cmp gword ptr [rdi+8*r8+0x10], 0
- jne G_M8298_IG37
+ jne G_M8298_IG34
;; size=25 bbWeight=0.84 PerfScore 6.94
-G_M8298_IG21: ; bbWeight=0.84, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
+G_M8298_IG15: ; bbWeight=0.84, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefRegs=0000 {}, byref
mov r8, qword ptr [rsi]
mov r8, qword ptr [r8+0x38]
mov r8, qword ptr [r8]
@@ -227,12 +186,12 @@ G_M8298_IG21: ; bbWeight=0.84, gcrefRegs=20C8 {rbx rsi rdi r13}, byrefReg
; byrRegs -[rax rcx]
inc r14d
;; size=38 bbWeight=0.84 PerfScore 9.47
-G_M8298_IG22: ; bbWeight=0.84, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M8298_IG16: ; bbWeight=0.84, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
inc r15d
...
+11 (+5.82%) : 16824.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
@@ -11,7 +11,7 @@
; Final local variable assignments
;
;* V00 arg0 [V00 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <System.IO.Stream>
-; V01 loc0 [V01 ] ( 1, 1 ) int -> [rsp+0xD0] do-not-enreg[X] addr-exposed ld-addr-op tier0-frame
+; V01 loc0 [V01 ] ( 1, 1 ) int -> [rsp+0xE0] do-not-enreg[X] addr-exposed ld-addr-op tier0-frame
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <ubyte[]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <ubyte[]>
; V04 loc3 [V04,T02] ( 3,100 ) ref -> rdx class-hnd <ubyte[]>
@@ -25,7 +25,7 @@
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <ubyte[]>
;* V13 tmp3 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <ubyte[]>
;* V14 tmp4 [V14 ] ( 0, 0 ) int -> zero-ref
-; V15 tmp5 [V15,T03] ( 7, 0 ) ref -> rbx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V15 tmp5 [V15,T03] ( 7, 0.10) ref -> rbx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V16 tmp6 [V16 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V17 tmp7 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V18 tmp8 [V18 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -34,9 +34,9 @@
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V24 tmp14 [V24,T05] ( 3, 0 ) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V25 tmp15 [V25,T04] ( 4, 0 ) int -> rdx single-def "Inline stloc first use temp"
-; V26 tmp16 [V26,T06] ( 3, 0 ) ref -> r8 class-hnd single-def "Inlining Arg" <ubyte[]>
+; V24 tmp14 [V24,T05] ( 3, 0.02) ref -> rcx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V25 tmp15 [V25,T04] ( 4, 0.02) int -> rsi single-def "Inline stloc first use temp"
+; V26 tmp16 [V26,T06] ( 3, 0.02) ref -> r8 class-hnd single-def "Inlining Arg" <ubyte[]>
;* V27 tmp17 [V27 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V28 tmp18 [V28 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
@@ -45,48 +45,23 @@
;* V32 tmp22 [V32 ] ( 0, 0 ) ref -> zero-ref "arr expr"
; V33 cse0 [V33,T01] ( 5,101.01) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M51213_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- sub rsp, 40
- mov qword ptr [rsp+0x108], rbx
- mov rdx, gword ptr [rsp+0xB8]
+ sub rsp, 56
+ mov qword ptr [rsp+0x118], rsi
+ mov qword ptr [rsp+0x110], rbx
+ mov rdx, gword ptr [rsp+0xC8]
; gcrRegs +[rdx]
- mov ecx, dword ptr [rsp+0xB4]
- ;; size=27 bbWeight=0.01 PerfScore 0.05
+ mov ecx, dword ptr [rsp+0xC4]
+ ;; size=35 bbWeight=0.01 PerfScore 0.06
G_M51213_IG02: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
mov eax, dword ptr [rdx+0x08]
cmp eax, ecx
- jle SHORT G_M51213_IG07
+ jg SHORT G_M51213_IG05
;; size=7 bbWeight=0.01 PerfScore 0.03
-G_M51213_IG03: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test ecx, ecx
- jl SHORT G_M51213_IG05
- ;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M51213_IG04: ; bbWeight=98.99, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx
- mov byte ptr [rdx+r8+0x10], 255
- inc ecx
- cmp eax, ecx
- jle SHORT G_M51213_IG07
- jmp SHORT G_M51213_IG04
- ;; size=17 bbWeight=98.99 PerfScore 470.20
-G_M51213_IG05: ; bbWeight=1.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp ecx, eax
- jae SHORT G_M51213_IG06
- mov r8d, ecx
- mov byte ptr [rdx+r8+0x10], 255
- inc ecx
- cmp eax, ecx
- jle SHORT G_M51213_IG07
- jmp SHORT G_M51213_IG05
- ;; size=21 bbWeight=1.00 PerfScore 6.00
-G_M51213_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51213_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx]
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51213_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor ecx, ecx
mov dword ptr [(reloc)], ecx
mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
@@ -96,24 +71,64 @@ G_M51213_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov edx, 41
call CORINFO_HELP_CLASSINIT_SHARED_DYNAMICCLASS
; gcr arg pop 0
- mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov r8, gword ptr [rdx]
+ mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov r8, gword ptr [rcx]
; gcrRegs +[r8]
inc dword ptr [rbx+0x14]
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
- mov edx, dword ptr [rbx+0x10]
- cmp dword ptr [rcx+0x08], edx
- jbe SHORT G_M51213_IG08
- lea eax, [rdx+0x01]
- mov dword ptr [rbx+0x10], eax
- movsxd rdx, edx
+ mov esi, dword ptr [rbx+0x10]
+ cmp dword ptr [rcx+0x08], esi
+ jbe SHORT G_M51213_IG12
+ ;; size=69 bbWeight=0.01 PerfScore 0.18
+G_M51213_IG04: ; bbWeight=0, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M51213_IG11
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M51213_IG05: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rcx rbx r8] +[rdx]
+ test ecx, ecx
+ jl SHORT G_M51213_IG08
+ ;; size=4 bbWeight=0.01 PerfScore 0.01
+G_M51213_IG06: ; bbWeight=98.99, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ mov r8d, ecx
+ mov byte ptr [rdx+r8+0x10], 255
+ inc ecx
+ cmp eax, ecx
+ jg SHORT G_M51213_IG06
+ ;; size=15 bbWeight=98.99 PerfScore 272.22
+G_M51213_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ jmp SHORT G_M51213_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M51213_IG08: ; bbWeight=1.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdx]
+ cmp ecx, eax
+ jae SHORT G_M51213_IG10
+ mov r8d, ecx
+ mov byte ptr [rdx+r8+0x10], 255
+ inc ecx
+ cmp eax, ecx
+ jg SHORT G_M51213_IG08
+ ;; size=19 bbWeight=1.00 PerfScore 4.00
+G_M51213_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ jmp SHORT G_M51213_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M51213_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51213_IG11: ; bbWeight=0, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rcx rbx r8]
+ lea edx, [rsi+0x01]
+ mov dword ptr [rbx+0x10], edx
+ movsxd rdx, esi
call CORINFO_HELP_ARRADDR_ST
; gcrRegs -[rcx rbx r8]
; gcr arg pop 0
- jmp SHORT G_M51213_IG09
- ;; size=85 bbWeight=0 PerfScore 0.00
-G_M51213_IG08: ; bbWeight=0, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M51213_IG13
+ ;; size=16 bbWeight=0 PerfScore 0.00
+G_M51213_IG12: ; bbWeight=0, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {}, byref
; gcrRegs +[rbx r8]
mov rcx, rbx
; gcrRegs +[rcx]
@@ -123,17 +138,18 @@ G_M51213_IG08: ; bbWeight=0, gcrefRegs=0108 {rbx r8}, byrefRegs=0000 {},
; gcrRegs -[rcx rdx rbx r8]
; gcr arg pop 0
;; size=12 bbWeight=0 PerfScore 0.00
-G_M51213_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51213_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M51213_IG10: ; bbWeight=0, epilog, nogc, extend
- add rsp, 264
+G_M51213_IG14: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 272
pop rbx
+ pop rsi
pop rbp
ret
- ;; size=10 bbWeight=0 PerfScore 0.00
+ ;; size=11 bbWeight=0 PerfScore 0.00
-; Total bytes of code 189, prolog size 27, PerfScore 476.30, instruction count 51, allocated bytes for code 189 (MethodHash=998837f2) for method BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
+; Total bytes of code 200, prolog size 35, PerfScore 276.55, instruction count 54, allocated bytes for code 200 (MethodHash=998837f2) for method BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -141,14 +157,16 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x0C
- CountOfUnwindCodes: 6
+ SizeOfProlog : 0x14
+ CountOfUnwindCodes: 8
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
- Scaled Small Offset: 33 * 8 = 264 = 0x00108
- CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x14 UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 34 * 8 = 272 = 0x00110
+ CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rsi (6)
+ Scaled Small Offset: 35 * 8 = 280 = 0x00118
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
Size: 29 * 8 = 232 = 0x000E8
CodeOffset: 0x00 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
benchmarks.run_tiered.windows.x64.checked.mch
-10 (-1.25%) : 48316.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
@@ -8,33 +8,33 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T12] ( 16, 9.64) ref -> rcx class-hnd single-def <double[][]>
-; V01 arg1 [V01,T05] ( 12, 31.97) int -> rdx single-def
+; V00 arg0 [V00,T11] ( 16, 13.52) ref -> rcx class-hnd single-def <double[][]>
+; V01 arg1 [V01,T07] ( 12, 31.97) int -> rdx single-def
; V02 arg2 [V02,T13] ( 4, 6 ) ref -> r8 class-hnd single-def <int[]>
-; V03 arg3 [V03,T03] ( 19, 46.04) ref -> r9 class-hnd single-def <double[]>
-; V04 loc0 [V04,T01] ( 41, 85.66) int -> r10
-; V05 loc1 [V05,T00] ( 37, 88.07) int -> registers
+; V03 arg3 [V03,T03] ( 19, 49.92) ref -> r9 class-hnd single-def <double[]>
+; V04 loc0 [V04,T00] ( 41,101.18) int -> rax
+; V05 loc1 [V05,T01] ( 37, 88.07) int -> registers
; V06 loc2 [V06,T15] ( 3, 6 ) int -> rsi
; V07 loc3 [V07,T19] ( 3, 4.50) int -> r11
-; V08 loc4 [V08,T23] ( 17, 60 ) double -> mm0
+; V08 loc4 [V08,T23] ( 17, 63.88) double -> mm0
; V09 OutArgs [V09 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V10 tmp1 [V10,T25] ( 2, 8 ) double -> mm1 "Strict ordering of exceptions for Array store"
-; V11 tmp2 [V11,T24] ( 4, 16 ) double -> mm1 "Strict ordering of exceptions for Array store"
+; V11 tmp2 [V11,T24] ( 4, 31.52) double -> mm1 "Strict ordering of exceptions for Array store"
; V12 tmp3 [V12,T09] ( 5, 16.08) ref -> rsi "arr expr"
; V13 tmp4 [V13,T02] ( 8, 64.64) ref -> rbp "arr expr"
-; V14 tmp5 [V14,T07] ( 6, 24 ) ref -> r8 "arr expr"
-; V15 cse0 [V15,T21] ( 4, 0.25) ref -> r8 hoist multi-def "CSE - conservative"
-; V16 cse1 [V16,T06] ( 8, 26.74) ref -> r8 hoist multi-def "CSE - aggressive"
+; V14 tmp5 [V14,T04] ( 6, 47.28) ref -> rdi "arr expr"
+; V15 cse0 [V15,T21] ( 4, 0.25) ref -> rdi hoist multi-def "CSE - conservative"
+; V16 cse1 [V16,T06] ( 8, 34.50) ref -> rdi hoist multi-def "CSE - aggressive"
; V17 cse2 [V17,T18] ( 6, 5.54) ref -> rbx multi-def "CSE - aggressive"
; V18 cse3 [V18,T10] ( 13, 15.93) int -> registers hoist multi-def "CSE - aggressive"
-; V19 cse4 [V19,T14] ( 4, 6 ) int -> rax "CSE - aggressive"
-; V20 cse5 [V20,T20] ( 11, 3.17) int -> rsi hoist multi-def "CSE - aggressive"
-; V21 cse6 [V21,T08] ( 7, 20.80) long -> rdi "CSE - aggressive"
-; V22 cse7 [V22,T04] ( 3, 47.04) long -> r14 "CSE - aggressive"
-; V23 cse8 [V23,T11] ( 3, 11.88) long -> rdi "CSE - aggressive"
-; V24 cse9 [V24,T16] ( 3, 6 ) long -> rax "CSE - aggressive"
+; V19 cse4 [V19,T14] ( 4, 6 ) int -> r8 "CSE - aggressive"
+; V20 cse5 [V20,T20] ( 11, 3.17) int -> registers hoist multi-def "CSE - aggressive"
+; V21 cse6 [V21,T08] ( 7, 32.44) long -> rsi "CSE - aggressive"
+; V22 cse7 [V22,T05] ( 3, 47.04) long -> r14 "CSE - aggressive"
+; V23 cse8 [V23,T12] ( 3, 11.88) long -> rdi "CSE - aggressive"
+; V24 cse9 [V24,T16] ( 3, 6 ) long -> r10 "CSE - aggressive"
; V25 cse10 [V25,T17] ( 3, 6 ) long -> rsi "CSE - aggressive"
-; V26 cse11 [V26,T22] ( 6, 0.21) long -> rdi "CSE - conservative"
+; V26 cse11 [V26,T22] ( 6, 0.21) long -> rsi "CSE - conservative"
;
; Lcl frame size = 32
@@ -52,8 +52,8 @@ G_M64421_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs +[r8]
mov r9, gword ptr [rsp+0x108]
; gcrRegs +[r9]
- mov r10d, dword ptr [rsp+0xA4]
- mov eax, dword ptr [rsp+0xA0]
+ mov eax, dword ptr [rsp+0xA4]
+ mov r10d, dword ptr [rsp+0xA0]
mov r11d, dword ptr [rsp+0x98]
vmovsd xmm0, qword ptr [rsp+0x90]
;; size=102 bbWeight=0.01 PerfScore 0.23
@@ -65,16 +65,16 @@ G_M64421_IG03: ; bbWeight=1, gcrefRegs=0302 {rcx r8 r9}, byrefRegs=0000 {
jmp SHORT G_M64421_IG06
;; size=6 bbWeight=1 PerfScore 4.00
G_M64421_IG04: ; bbWeight=2, gcrefRegs=0302 {rcx r8 r9}, byrefRegs=0000 {}, byref, isz
- cmp r10d, dword ptr [r8+0x08]
- jae G_M64421_IG31
- mov eax, r10d
- mov esi, dword ptr [r8+4*rax+0x10]
+ cmp eax, dword ptr [r8+0x08]
+ jae G_M64421_IG30
+ mov r10d, eax
+ mov esi, dword ptr [r8+4*r10+0x10]
cmp esi, ebx
- jae G_M64421_IG31
+ jae G_M64421_IG30
vmovsd xmm0, qword ptr [r9+8*rsi+0x10]
- cmp r10d, ebx
- jae G_M64421_IG31
- vmovsd xmm1, qword ptr [r9+8*rax+0x10]
+ cmp eax, ebx
+ jae G_M64421_IG30
+ vmovsd xmm1, qword ptr [r9+8*r10+0x10]
vmovsd qword ptr [r9+8*rsi+0x10], xmm1
cmp r11d, -1
jne G_M64421_IG24
@@ -82,63 +82,63 @@ G_M64421_IG04: ; bbWeight=2, gcrefRegs=0302 {rcx r8 r9}, byrefRegs=0000 {
vucomisd xmm0, xmm1
jp SHORT G_M64421_IG05
je SHORT G_M64421_IG06
- ;; size=78 bbWeight=2 PerfScore 48.67
+ ;; size=77 bbWeight=2 PerfScore 48.67
G_M64421_IG05: ; bbWeight=2, gcrefRegs=0302 {rcx r8 r9}, byrefRegs=0000 {}, byref
- mov r11d, r10d
+ mov r11d, eax
;; size=3 bbWeight=2 PerfScore 0.50
G_M64421_IG06: ; bbWeight=8, gcrefRegs=0302 {rcx r8 r9}, byrefRegs=0000 {}, byref, isz
- cmp r10d, ebx
- jae G_M64421_IG31
- mov eax, r10d
- vmovsd qword ptr [r9+8*rax+0x10], xmm0
- inc r10d
- cmp r10d, edx
+ cmp eax, ebx
+ jae G_M64421_IG30
+ mov r10d, eax
+ vmovsd qword ptr [r9+8*r10+0x10], xmm0
+ inc eax
+ cmp eax, edx
jl SHORT G_M64421_IG04
- ;; size=27 bbWeight=8 PerfScore 40.00
+ ;; size=24 bbWeight=8 PerfScore 40.00
G_M64421_IG07: ; bbWeight=1, gcrefRegs=0202 {rcx r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
- lea eax, [rdx-0x01]
- mov r10d, eax
- test r10d, r10d
+ lea r8d, [rdx-0x01]
+ mov eax, r8d
+ test eax, eax
jl G_M64421_IG23
;; size=15 bbWeight=1 PerfScore 2.00
G_M64421_IG08: ; bbWeight=0.50, gcrefRegs=0202 {rcx r9}, byrefRegs=0000 {}, byref
test rcx, rcx
je G_M64421_IG18
- cmp ebx, r10d
+ cmp ebx, eax
jle G_M64421_IG18
- mov esi, dword ptr [rcx+0x08]
- cmp esi, r10d
+ mov r10d, dword ptr [rcx+0x08]
+ cmp r10d, eax
jle G_M64421_IG18
;; size=30 bbWeight=0.50 PerfScore 2.88
G_M64421_IG09: ; bbWeight=3.96, gcrefRegs=0202 {rcx r9}, byrefRegs=0000 {}, byref
- mov edi, r10d
- vmovsd xmm0, qword ptr [r9+8*rdi+0x10]
- cmp r10d, eax
+ mov esi, eax
+ vmovsd xmm0, qword ptr [r9+8*rsi+0x10]
+ cmp eax, r8d
je G_M64421_IG16
- ;; size=19 bbWeight=3.96 PerfScore 21.78
+ ;; size=18 bbWeight=3.96 PerfScore 21.78
G_M64421_IG10: ; bbWeight=1.98, gcrefRegs=0202 {rcx r9}, byrefRegs=0000 {}, byref
- lea r11d, [r10+0x01]
+ lea r11d, [rax+0x01]
cmp r11d, edx
jge G_M64421_IG16
;; size=13 bbWeight=1.98 PerfScore 3.46
G_M64421_IG11: ; bbWeight=0.99, gcrefRegs=0202 {rcx r9}, byrefRegs=0000 {}, byref, isz
- cmp esi, r10d
+ cmp r10d, eax
jbe SHORT G_M64421_IG14
- mov r8, gword ptr [rcx+8*rdi+0x10]
- ; gcrRegs +[r8]
- test r8, r8
+ mov rdi, gword ptr [rcx+8*rsi+0x10]
+ ; gcrRegs +[rdi]
+ test rdi, rdi
je SHORT G_M64421_IG14
mov ebp, r11d
or ebp, edx
jl SHORT G_M64421_IG14
- cmp dword ptr [r8+0x08], edx
+ cmp dword ptr [rdi+0x08], edx
jl SHORT G_M64421_IG14
cmp ebx, edx
jl SHORT G_M64421_IG14
- ;; size=32 bbWeight=0.99 PerfScore 11.14
-G_M64421_IG12: ; bbWeight=15.68, gcrefRegs=0302 {rcx r8 r9}, byrefRegs=0000 {}, byref, isz
- mov rbp, r8
+ ;; size=31 bbWeight=0.99 PerfScore 11.14
+G_M64421_IG12: ; bbWeight=15.68, gcrefRegs=0282 {rcx rdi r9}, byrefRegs=0000 {}, byref, isz
+ mov rbp, rdi
; gcrRegs +[rbp]
mov r14d, r11d
vmovsd xmm1, qword ptr [rbp+8*r14+0x10]
@@ -148,23 +148,23 @@ G_M64421_IG12: ; bbWeight=15.68, gcrefRegs=0302 {rcx r8 r9}, byrefRegs=00
cmp r11d, edx
jl SHORT G_M64421_IG12
;; size=32 bbWeight=15.68 PerfScore 235.22
-G_M64421_IG13: ; bbWeight=3.96, gcrefRegs=0202 {rcx r9}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbp r8]
+G_M64421_IG13: ; bbWeight=7.84, gcrefRegs=0202 {rcx r9}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rbp rdi]
jmp SHORT G_M64421_IG16
- ;; size=2 bbWeight=3.96 PerfScore 7.92
+ ;; size=2 bbWeight=7.84 PerfScore 15.68
G_M64421_IG14: ; bbWeight=0.01, gcrefRegs=0202 {rcx r9}, byrefRegs=0000 {}, byref
- mov r8, gword ptr [rcx+8*rdi+0x10]
- ; gcrRegs +[r8]
+ mov rdi, gword ptr [rcx+8*rsi+0x10]
+ ; gcrRegs +[rdi]
;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M64421_IG15: ; bbWeight=0.16, gcrefRegs=0302 {rcx r8 r9}, byrefRegs=0000 {}, byref, isz
- mov rbp, r8
+G_M64421_IG15: ; bbWeight=0.16, gcrefRegs=0282 {rcx rdi r9}, byrefRegs=0000 {}, byref, isz
+ mov rbp, rdi
; gcrRegs +[rbp]
cmp r11d, dword ptr [rbp+0x08]
- jae G_M64421_IG31
+ jae G_M64421_IG30
mov r14d, r11d
vmovsd xmm1, qword ptr [rbp+8*r14+0x10]
cmp r11d, ebx
- jae G_M64421_IG31
+ jae G_M64421_IG30
mov ebp, r11d
; gcrRegs -[rbp]
vmulsd xmm1, xmm1, qword ptr [r9+8*rbp+0x10]
@@ -173,74 +173,74 @@ G_M64421_IG15: ; bbWeight=0.16, gcrefRegs=0302 {rcx r8 r9}, byrefRegs=000
cmp r11d, edx
jl SHORT G_M64421_IG15
;; size=54 bbWeight=0.16 PerfScore 3.25
-G_M64421_IG16: ; bbWeight=3.96, gcrefRegs=0202 {rcx r9}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r8]
- mov r8, gword ptr [rcx+8*rdi+0x10]
- ; gcrRegs +[r8]
- cmp r10d, dword ptr [r8+0x08]
- jae G_M64421_IG31
- vdivsd xmm1, xmm0, qword ptr [r8+8*rdi+0x10]
- vmovsd qword ptr [r9+8*rdi+0x10], xmm1
- dec r10d
+G_M64421_IG16: ; bbWeight=7.84, gcrefRegs=0202 {rcx r9}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rdi]
+ mov rdi, gword ptr [rcx+8*rsi+0x10]
+ ; gcrRegs +[rdi]
+ cmp eax, dword ptr [rdi+0x08]
+ jae G_M64421_IG30
+ vdivsd xmm1, xmm0, qword ptr [rdi+8*rsi+0x10]
+ vmovsd qword ptr [r9+8*rsi+0x10], xmm1
+ dec eax
jns G_M64421_IG09
- ;; size=38 bbWeight=3.96 PerfScore 96.03
-G_M64421_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx r8-r9]
+ ;; size=35 bbWeight=7.84 PerfScore 190.14
+G_M64421_IG17: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rcx rdi r9]
jmp G_M64421_IG23
- ;; size=5 bbWeight=1 PerfScore 2.00
+ ;; size=5 bbWeight=1.98 PerfScore 3.96
G_M64421_IG18: ; bbWeight=0.04, gcrefRegs=0202 {rcx r9}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx r9]
- cmp r10d, ebx
- jae G_M64421_IG31
- mov edi, r10d
- vmovsd xmm0, qword ptr [r9+8*rdi+0x10]
...
-14 (-0.95%) : 36717.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
@@ -8,61 +8,60 @@
; 0 inlinees with PGO data; 24 single block inlinees; 17 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 64,25612.50) long -> rbx
-; V01 arg1 [V01,T19] ( 9, 8 ) int -> rsi
-; V02 arg2 [V02,T21] ( 4, 3 ) byref -> rdi single-def
-; V03 arg3 [V03,T22] ( 4, 3 ) byref -> rbp single-def
-; V04 loc0 [V04,T24] ( 3, 3 ) long -> rax
-; V05 loc1 [V05,T26] ( 4, 2 ) long -> r14
-; V06 loc2 [V06,T25] ( 5, 2.50) int -> rsi
-; V07 loc3 [V07,T04] ( 18, 5265 ) int -> r15
-; V08 loc4 [V08,T23] ( 4, 5 ) int -> r13
-; V09 loc5 [V09,T03] ( 12, 8933.50) long -> r12
-; V10 loc6 [V10,T12] ( 4, 72.50) long -> [rsp+0x40]
-; V11 loc7 [V11,T17] ( 13, 22 ) long -> r12
-; V12 loc8 [V12,T02] ( 27,12532 ) int -> [rsp+0x3C]
-; V13 loc9 [V13,T13] ( 2, 72 ) long -> rcx
-; V14 loc10 [V14,T15] ( 3, 24 ) long -> [rsp+0x30] spill-single-def
-;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V17 loc13 [V17,T09] ( 3, 136 ) int -> rdx
-;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
-;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
-; V20 loc16 [V20,T00] ( 20,47616 ) long -> registers
-; V21 loc17 [V21,T18] ( 7, 18 ) int -> rcx
-; V22 loc18 [V22,T20] ( 5, 10 ) int -> rdx
-; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V24 tmp1 [V24,T27] ( 2, 1 ) int -> rcx
-;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
-;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
-;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
-;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
-;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V48 tmp25 [V48,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V49 tmp26 [V49,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V53 cse0 [V53,T11] ( 15, 75 ) ref -> [rsp+0x20] multi-def "CSE - aggressive"
-; V54 cse1 [V54,T16] ( 3, 24 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
+; V00 arg0 [V00,T01] ( 64,3570.50) long -> rbx
+; V01 arg1 [V01,T16] ( 9, 8 ) int -> rsi
+; V02 arg2 [V02,T20] ( 4, 3 ) byref -> rdi single-def
+; V03 arg3 [V03,T21] ( 4, 3 ) byref -> rbp single-def
+; V04 loc0 [V04,T23] ( 3, 3 ) long -> rax
+; V05 loc1 [V05,T25] ( 4, 2 ) long -> r14
+; V06 loc2 [V06,T24] ( 5, 2.50) int -> rsi
+; V07 loc3 [V07,T04] ( 18, 945 ) int -> r15
+; V08 loc4 [V08,T22] ( 4, 5 ) int -> r13
+; V09 loc5 [V09,T03] ( 12,1133.50) long -> r12
+; V10 loc6 [V10,T15] ( 4, 10.50) long -> [rsp+0x40]
+; V11 loc7 [V11,T11] ( 13, 22 ) long -> r12
+; V12 loc8 [V12,T02] ( 27,1596 ) int -> [rsp+0x3C]
+; V13 loc9 [V13,T13] ( 2, 18 ) long -> rcx
+; V14 loc10 [V14,T18] ( 3, 6 ) long -> [rsp+0x30] spill-single-def
+;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+; V17 loc13 [V17,T07] ( 3, 34 ) int -> rdx
+;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
+;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
+; V20 loc16 [V20,T00] ( 20,6144 ) long -> registers
+; V21 loc17 [V21,T12] ( 7, 18 ) int -> rcx
+; V22 loc18 [V22,T17] ( 5, 10 ) int -> rdx
+; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V24 tmp1 [V24,T26] ( 2, 1 ) int -> rcx
+;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
+;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
+;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
+;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
+;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
+;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V48 tmp25 [V48,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V49 tmp26 [V49,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V53 cse0 [V53,T19] ( 3, 6 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
;
; Lcl frame size = 72
@@ -91,14 +90,12 @@ G_M60901_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi},
G_M60901_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=29 bbWeight=0.50 PerfScore 1.88
+ ;; size=26 bbWeight=0.50 PerfScore 1.75
G_M60901_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
test rbx, rbx
jne SHORT G_M60901_IG06
@@ -111,14 +108,12 @@ G_M60901_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rd
jne SHORT G_M60901_IG06
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=40 bbWeight=0.50 PerfScore 3.25
+ ;; size=37 bbWeight=0.50 PerfScore 3.12
G_M60901_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov edx, esi
mov rcx, rbx
@@ -155,54 +150,51 @@ G_M60901_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
xor r15d, r15d
xor r13d, r13d
cmp esi, 4
- jl G_M60901_IG46
+ jl G_M60901_IG45
mov ecx, esi
lea r12, [r14+rcx-0x04]
xor eax, eax
cmp r14, r12
- ja G_M60901_IG47
+ ja G_M60901_IG46
;; size=36 bbWeight=0.50 PerfScore 2.38
G_M60901_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov r8d, dword ptr [rbx]
mov dword ptr [rsp+0x3C], r8d
;; size=8 bbWeight=4 PerfScore 12.00
-G_M60901_IG12: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
cmp rax, rbx
jb SHORT G_M60901_IG14
- ;; size=5 bbWeight=32 PerfScore 40.00
-G_M60901_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M60901_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
- mov r10, rdx
- ; gcrRegs +[r10]
- mov rdx, r10
call [<unknown method>]
- ; gcrRegs -[rcx rdx r10]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=32 bbWeight=8 PerfScore 32.00
-G_M60901_IG14: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=26 bbWeight=2 PerfScore 7.00
+G_M60901_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rax, rbx
mov r8d, dword ptr [rsp+0x3C]
test r8d, 0xD1FFAB1E
jne G_M60901_IG21
- ;; size=21 bbWeight=32 PerfScore 80.00
-G_M60901_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=21 bbWeight=4 PerfScore 10.00
+G_M60901_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov qword ptr [rsp+0x40], rax
lea rbx, [rax+0x04]
mov r8, r12
sub r8, rbx
cmp r8, 16
- jl G_M60901_IG44
+ jl G_M60901_IG43
mov r8d, dword ptr [rbx]
test r8d, 0xD1FFAB1E
jne SHORT G_M60901_IG18
add rbx, 4
and rbx, -4
lea rcx, [r12-0x0C]
- ;; size=50 bbWeight=8 PerfScore 60.00
-G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=50 bbWeight=2 PerfScore 15.00
+G_M60901_IG16: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
vmovups xmm0, xmmword ptr [rbx]
vpmovmskb edx, xmm0
test edx, edx
@@ -210,94 +202,87 @@ G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}
add rbx, 16
cmp rbx, rcx
jbe SHORT G_M60901_IG16
- ;; size=21 bbWeight=64 PerfScore 560.00
+ ;; size=21 bbWeight=16 PerfScore 140.00
G_M60901_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
- jmp G_M60901_IG44
+ jmp G_M60901_IG43
;; size=5 bbWeight=4 PerfScore 8.00
-G_M60901_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov rax, qword ptr [rsp+0x40]
jmp SHORT G_M60901_IG21
- ;; size=7 bbWeight=4 PerfScore 12.00
-G_M60901_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M60901_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
xor ecx, ecx
tzcnt ecx, edx
mov r8d, ecx
mov qword ptr [rsp+0x30], r8
cmp r8, 16
jb SHORT G_M60901_IG20
- mov r10, 0xD1FFAB1E
- ; gcrRegs +[r10]
- mov rcx, r10
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, r10
...
-14 (-0.95%) : 18720.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
@@ -8,61 +8,60 @@
; 0 inlinees with PGO data; 24 single block inlinees; 17 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 64,25612.50) long -> rbx
-; V01 arg1 [V01,T19] ( 9, 8 ) int -> rsi
-; V02 arg2 [V02,T21] ( 4, 3 ) byref -> rdi single-def
-; V03 arg3 [V03,T22] ( 4, 3 ) byref -> rbp single-def
-; V04 loc0 [V04,T24] ( 3, 3 ) long -> rax
-; V05 loc1 [V05,T26] ( 4, 2 ) long -> r14
-; V06 loc2 [V06,T25] ( 5, 2.50) int -> rsi
-; V07 loc3 [V07,T04] ( 18, 5265 ) int -> r15
-; V08 loc4 [V08,T23] ( 4, 5 ) int -> r13
-; V09 loc5 [V09,T03] ( 12, 8933.50) long -> r12
-; V10 loc6 [V10,T12] ( 4, 72.50) long -> [rsp+0x40]
-; V11 loc7 [V11,T17] ( 13, 22 ) long -> r12
-; V12 loc8 [V12,T02] ( 27,12532 ) int -> [rsp+0x3C]
-; V13 loc9 [V13,T13] ( 2, 72 ) long -> rcx
-; V14 loc10 [V14,T15] ( 3, 24 ) long -> [rsp+0x30] spill-single-def
-;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V17 loc13 [V17,T09] ( 3, 136 ) int -> rdx
-;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
-;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
-; V20 loc16 [V20,T00] ( 20,47616 ) long -> registers
-; V21 loc17 [V21,T18] ( 7, 18 ) int -> rcx
-; V22 loc18 [V22,T20] ( 5, 10 ) int -> rdx
-; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V24 tmp1 [V24,T27] ( 2, 1 ) int -> rcx
-;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
-;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
-;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
-;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
-;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V48 tmp25 [V48,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V49 tmp26 [V49,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V53 cse0 [V53,T11] ( 15, 75 ) ref -> [rsp+0x20] multi-def "CSE - aggressive"
-; V54 cse1 [V54,T16] ( 3, 24 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
+; V00 arg0 [V00,T01] ( 64,3570.50) long -> rbx
+; V01 arg1 [V01,T16] ( 9, 8 ) int -> rsi
+; V02 arg2 [V02,T20] ( 4, 3 ) byref -> rdi single-def
+; V03 arg3 [V03,T21] ( 4, 3 ) byref -> rbp single-def
+; V04 loc0 [V04,T23] ( 3, 3 ) long -> rax
+; V05 loc1 [V05,T25] ( 4, 2 ) long -> r14
+; V06 loc2 [V06,T24] ( 5, 2.50) int -> rsi
+; V07 loc3 [V07,T04] ( 18, 945 ) int -> r15
+; V08 loc4 [V08,T22] ( 4, 5 ) int -> r13
+; V09 loc5 [V09,T03] ( 12,1133.50) long -> r12
+; V10 loc6 [V10,T15] ( 4, 10.50) long -> [rsp+0x40]
+; V11 loc7 [V11,T11] ( 13, 22 ) long -> r12
+; V12 loc8 [V12,T02] ( 27,1596 ) int -> [rsp+0x3C]
+; V13 loc9 [V13,T13] ( 2, 18 ) long -> rcx
+; V14 loc10 [V14,T18] ( 3, 6 ) long -> [rsp+0x30] spill-single-def
+;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+; V17 loc13 [V17,T07] ( 3, 34 ) int -> rdx
+;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
+;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
+; V20 loc16 [V20,T00] ( 20,6144 ) long -> registers
+; V21 loc17 [V21,T12] ( 7, 18 ) int -> rcx
+; V22 loc18 [V22,T17] ( 5, 10 ) int -> rdx
+; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V24 tmp1 [V24,T26] ( 2, 1 ) int -> rcx
+;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
+;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
+;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
+;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
+;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
+;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V48 tmp25 [V48,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V49 tmp26 [V49,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V53 cse0 [V53,T19] ( 3, 6 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
;
; Lcl frame size = 72
@@ -91,14 +90,12 @@ G_M60901_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi},
G_M60901_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=29 bbWeight=0.50 PerfScore 1.88
+ ;; size=26 bbWeight=0.50 PerfScore 1.75
G_M60901_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
test rbx, rbx
jne SHORT G_M60901_IG06
@@ -111,14 +108,12 @@ G_M60901_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rd
jne SHORT G_M60901_IG06
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=40 bbWeight=0.50 PerfScore 3.25
+ ;; size=37 bbWeight=0.50 PerfScore 3.12
G_M60901_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov edx, esi
mov rcx, rbx
@@ -155,54 +150,51 @@ G_M60901_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
xor r15d, r15d
xor r13d, r13d
cmp esi, 4
- jl G_M60901_IG46
+ jl G_M60901_IG45
mov ecx, esi
lea r12, [r14+rcx-0x04]
xor eax, eax
cmp r14, r12
- ja G_M60901_IG47
+ ja G_M60901_IG46
;; size=36 bbWeight=0.50 PerfScore 2.38
G_M60901_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov r8d, dword ptr [rbx]
mov dword ptr [rsp+0x3C], r8d
;; size=8 bbWeight=4 PerfScore 12.00
-G_M60901_IG12: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
cmp rax, rbx
jb SHORT G_M60901_IG14
- ;; size=5 bbWeight=32 PerfScore 40.00
-G_M60901_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M60901_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
- mov r10, rdx
- ; gcrRegs +[r10]
- mov rdx, r10
call [<unknown method>]
- ; gcrRegs -[rcx rdx r10]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=32 bbWeight=8 PerfScore 32.00
-G_M60901_IG14: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=26 bbWeight=2 PerfScore 7.00
+G_M60901_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rax, rbx
mov r8d, dword ptr [rsp+0x3C]
test r8d, 0xD1FFAB1E
jne G_M60901_IG21
- ;; size=21 bbWeight=32 PerfScore 80.00
-G_M60901_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=21 bbWeight=4 PerfScore 10.00
+G_M60901_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov qword ptr [rsp+0x40], rax
lea rbx, [rax+0x04]
mov r8, r12
sub r8, rbx
cmp r8, 16
- jl G_M60901_IG44
+ jl G_M60901_IG43
mov r8d, dword ptr [rbx]
test r8d, 0xD1FFAB1E
jne SHORT G_M60901_IG18
add rbx, 4
and rbx, -4
lea rcx, [r12-0x0C]
- ;; size=50 bbWeight=8 PerfScore 60.00
-G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=50 bbWeight=2 PerfScore 15.00
+G_M60901_IG16: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
vmovups xmm0, xmmword ptr [rbx]
vpmovmskb edx, xmm0
test edx, edx
@@ -210,94 +202,87 @@ G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}
add rbx, 16
cmp rbx, rcx
jbe SHORT G_M60901_IG16
- ;; size=21 bbWeight=64 PerfScore 560.00
+ ;; size=21 bbWeight=16 PerfScore 140.00
G_M60901_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
- jmp G_M60901_IG44
+ jmp G_M60901_IG43
;; size=5 bbWeight=4 PerfScore 8.00
-G_M60901_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov rax, qword ptr [rsp+0x40]
jmp SHORT G_M60901_IG21
- ;; size=7 bbWeight=4 PerfScore 12.00
-G_M60901_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M60901_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
xor ecx, ecx
tzcnt ecx, edx
mov r8d, ecx
mov qword ptr [rsp+0x30], r8
cmp r8, 16
jb SHORT G_M60901_IG20
- mov r10, 0xD1FFAB1E
- ; gcrRegs +[r10]
- mov rcx, r10
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, r10
...
+17 (+0.59%) : 48314.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
@@ -9,80 +9,80 @@
; Final local variable assignments
;
; V00 arg0 [V00,T08] ( 43,191.46) ref -> rcx class-hnd single-def <double[][]>
-; V01 arg1 [V01,T13] ( 30, 95.27) int -> rdx single-def
-; V02 arg2 [V02,T47] ( 7, 6.54) ref -> r8 class-hnd single-def <int[]>
-; V03 arg3 [V03,T53] ( 6, 6 ) byref -> [rsp+0x178] single-def tier0-frame
-; V04 loc0 [V04,T68] ( 15, 66 ) double -> mm0
-; V05 loc1 [V05,T66] ( 31,336.00) double -> mm2
-; V06 loc2 [V06,T67] ( 24, 94.00) double -> mm2
-; V07 loc3 [V07,T04] ( 94,378.83) int -> registers
-; V08 loc4 [V08,T01] ( 95,433.43) int -> rax
+; V01 arg1 [V01,T16] ( 30,103.03) int -> rdx single-def
+; V02 arg2 [V02,T52] ( 7, 6.54) ref -> [rsp+0x170] class-hnd single-def tier0-frame <int[]>
+; V03 arg3 [V03,T44] ( 6, 17.72) byref -> r9 single-def
+; V04 loc0 [V04,T68] ( 15, 85.25) double -> mm0
+; V05 loc1 [V05,T66] ( 31,382.10) double -> mm2
+; V06 loc2 [V06,T67] ( 24,136.46) double -> mm2
+; V07 loc3 [V07,T02] ( 94,463.43) int -> registers
+; V08 loc4 [V08,T01] ( 95,479.92) int -> rax
; V09 loc5 [V09,T00] ( 85,623.32) int -> registers
-; V10 loc6 [V10,T34] ( 23, 24.68) int -> r11
+; V10 loc6 [V10,T30] ( 23, 40.28) int -> r11
; V11 loc7 [V11,T73] ( 2, 2 ) double -> mm1
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T20] ( 8, 64.64) ref -> r13 class-hnd "Strict ordering of exceptions for Array store" <double[]>
+; V13 tmp1 [V13,T22] ( 8, 64.64) ref -> r13 class-hnd "Strict ordering of exceptions for Array store" <double[]>
; V14 tmp2 [V14,T69] ( 6, 64.00) double -> mm0 "Strict ordering of exceptions for Array store"
-; V15 tmp3 [V15,T14] ( 9, 96.00) ref -> registers class-hnd "Strict ordering of exceptions for Array store" <double[]>
+; V15 tmp3 [V15,T17] ( 9, 96.00) ref -> registers class-hnd "Strict ordering of exceptions for Array store" <double[]>
; V16 tmp4 [V16,T70] ( 6, 64.00) double -> mm3 "Strict ordering of exceptions for Array store"
-; V17 tmp5 [V17,T72] ( 4, 8 ) double -> mm4 "Strict ordering of exceptions for Array store"
-; V18 tmp6 [V18,T25] ( 5, 64.32) ref -> rsi "arr expr"
-;* V19 tmp7 [V19,T40] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V20 tmp8 [V20,T36] ( 3, 24 ) ref -> rax "arr expr"
-; V21 tmp9 [V21,T15] ( 9, 96.00) ref -> r15 "arr expr"
-; V22 tmp10 [V22,T06] ( 8,256 ) ref -> r15 "arr expr"
-; V23 tmp11 [V23,T02] ( 12,384 ) ref -> registers "arr expr"
-; V24 tmp12 [V24,T26] ( 6, 64.00) ref -> r14 "arr expr"
-; V25 tmp13 [V25,T16] ( 9, 96.00) ref -> r14 "arr expr"
-; V26 tmp14 [V26,T05] ( 9,257.28) ref -> registers "arr expr"
-; V27 tmp15 [V27,T03] ( 12,384 ) ref -> registers "arr expr"
-; V28 tmp16 [V28,T24] ( 7, 64.32) ref -> r12 "arr expr"
-; V29 tmp17 [V29,T17] ( 9, 96.00) ref -> r15 "arr expr"
-; V30 tmp18 [V30,T21] ( 8, 64.64) ref -> registers "arr expr"
-; V31 tmp19 [V31,T22] ( 8, 64.64) ref -> registers "arr expr"
-; V32 tmp20 [V32,T23] ( 8, 64.64) ref -> registers "arr expr"
-; V33 tmp21 [V33,T41] ( 6, 12 ) ref -> rdi "arr expr"
-; V34 tmp22 [V34,T48] ( 5, 8.04) ref -> r15 "arr expr"
-; V35 tmp23 [V35,T49] ( 5, 8.04) ref -> r12 "arr expr"
-; V36 tmp24 [V36,T50] ( 5, 8.04) ref -> rsi "arr expr"
-; V37 tmp25 [V37,T35] ( 6, 24 ) ref -> r14 "arr expr"
-; V38 tmp26 [V38,T51] ( 5, 8.04) ref -> r14 "arr expr"
-; V39 tmp27 [V39,T52] ( 5, 8.04) ref -> r13 "arr expr"
-; V40 tmp28 [V40,T18] ( 9, 96.00) ref -> r15 "arr expr"
-; V41 cse0 [V41,T38] ( 5, 17.00) ref -> r15 hoist multi-def "CSE - moderate"
+; V17 tmp5 [V17,T72] ( 4, 31.44) double -> mm4 "Strict ordering of exceptions for Array store"
+; V18 tmp6 [V18,T26] ( 5, 64.32) ref -> rsi "arr expr"
+;* V19 tmp7 [V19,T49] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V20 tmp8 [V20,T43] ( 3, 24 ) ref -> rax "arr expr"
+; V21 tmp9 [V21,T18] ( 9, 96.00) ref -> r15 "arr expr"
+; V22 tmp10 [V22,T07] ( 8,256 ) ref -> r15 "arr expr"
+; V23 tmp11 [V23,T03] ( 12,384 ) ref -> registers "arr expr"
+; V24 tmp12 [V24,T15] ( 6,125.47) ref -> r14 "arr expr"
+; V25 tmp13 [V25,T19] ( 9, 96.00) ref -> r14 "arr expr"
+; V26 tmp14 [V26,T06] ( 9,257.28) ref -> registers "arr expr"
+; V27 tmp15 [V27,T04] ( 12,384 ) ref -> registers "arr expr"
+; V28 tmp16 [V28,T14] ( 7,125.79) ref -> r12 "arr expr"
+; V29 tmp17 [V29,T09] ( 9,188.21) ref -> r15 "arr expr"
+; V30 tmp18 [V30,T23] ( 8, 64.64) ref -> registers "arr expr"
+; V31 tmp19 [V31,T24] ( 8, 64.64) ref -> registers "arr expr"
+; V32 tmp20 [V32,T25] ( 8, 64.64) ref -> registers "arr expr"
+; V33 tmp21 [V33,T27] ( 6, 47.16) ref -> rsi "arr expr"
+; V34 tmp22 [V34,T38] ( 5, 31.48) ref -> rdi "arr expr"
+; V35 tmp23 [V35,T39] ( 5, 31.48) ref -> r15 "arr expr"
+; V36 tmp24 [V36,T40] ( 5, 31.48) ref -> registers "arr expr"
+; V37 tmp25 [V37,T42] ( 6, 24 ) ref -> r14 "arr expr"
+; V38 tmp26 [V38,T53] ( 5, 8.04) ref -> r12 "arr expr"
+; V39 tmp27 [V39,T54] ( 5, 8.04) ref -> r13 "arr expr"
+; V40 tmp28 [V40,T20] ( 9, 96.00) ref -> r15 "arr expr"
+; V41 cse0 [V41,T48] ( 5, 17.00) ref -> [rsp+0x30] hoist multi-def "CSE - moderate"
; V42 cse1 [V42,T57] ( 4, 1.12) ref -> r14 "CSE - moderate"
; V43 cse2 [V43,T60] ( 4, 1.11) ref -> r14 "CSE - moderate"
; V44 cse3 [V44,T61] ( 4, 1.11) ref -> [rsp+0x28] spill-single-def "CSE - moderate"
; V45 cse4 [V45,T65] ( 2, 0.18) ref -> rbx hoist "CSE - conservative"
; V46 cse5 [V46,T64] ( 3, 0.48) ref -> r15 "CSE - conservative"
; V47 cse6 [V47,T74] ( 3, 0.40) double -> mm2 "CSE - conservative"
-; V48 cse7 [V48,T11] ( 6,113.69) ref -> r14 "CSE - aggressive"
-; V49 cse8 [V49,T12] ( 6,113.69) ref -> r12 "CSE - aggressive"
-; V50 cse9 [V50,T37] ( 7, 19.66) ref -> rdi multi-def "CSE - moderate"
-; V51 cse10 [V51,T29] ( 8, 34.66) ref -> r12 hoist multi-def "CSE - moderate"
-; V52 cse11 [V52,T33] ( 6, 21.88) ref -> rbx multi-def "CSE - moderate"
-; V53 cse12 [V53,T27] ( 3, 47.04) ref -> r15 "CSE - moderate"
+; V48 cse7 [V48,T12] ( 6,129.06) ref -> r14 "CSE - aggressive"
+; V49 cse8 [V49,T13] ( 6,129.06) ref -> r12 "CSE - aggressive"
+; V50 cse9 [V50,T45] ( 7, 19.66) ref -> rdi multi-def "CSE - moderate"
+; V51 cse10 [V51,T33] ( 8, 34.66) ref -> r12 hoist multi-def "CSE - moderate"
+; V52 cse11 [V52,T41] ( 6, 21.88) ref -> rbx multi-def "CSE - moderate"
+; V53 cse12 [V53,T28] ( 3, 47.04) ref -> r15 "CSE - moderate"
; V54 cse13 [V54,T71] ( 3, 39.60) double -> mm2 "CSE - moderate"
-; V55 cse14 [V55,T42] ( 4, 11.88) ref -> r13 "CSE - moderate"
+; V55 cse14 [V55,T50] ( 4, 11.88) ref -> r13 "CSE - moderate"
; V56 cse15 [V56,T58] ( 4, 1.12) ref -> r12 "CSE - moderate"
-; V57 cse16 [V57,T39] ( 4, 16.84) ref -> r13 hoist multi-def "CSE - moderate"
-; V58 cse17 [V58,T45] ( 5, 9.90) ref -> rsi "CSE - moderate"
-; V59 cse18 [V59,T32] ( 43, 31.76) int -> registers hoist multi-def "CSE - moderate"
-; V60 cse19 [V60,T44] ( 10, 11.22) long -> rbx "CSE - moderate"
-; V61 cse20 [V61,T30] ( 3, 31.99) int -> r13 "CSE - moderate"
-; V62 cse21 [V62,T31] ( 3, 31.99) int -> r15 "CSE - moderate"
-; V63 cse22 [V63,T28] ( 3, 47.04) int -> r12 "CSE - moderate"
-; V64 cse23 [V64,T46] ( 5, 9.90) int -> r14 "CSE - moderate"
+; V57 cse16 [V57,T34] ( 4, 32.21) ref -> r13 hoist multi-def "CSE - moderate"
+; V58 cse17 [V58,T31] ( 5, 39.20) ref -> r8 "CSE - moderate"
+; V59 cse18 [V59,T37] ( 43, 31.76) int -> registers hoist multi-def "CSE - moderate"
+; V60 cse19 [V60,T47] ( 10, 17.08) long -> rbx "CSE - moderate"
+; V61 cse20 [V61,T35] ( 3, 31.99) int -> r13 "CSE - moderate"
+; V62 cse21 [V62,T36] ( 3, 31.99) int -> r15 "CSE - moderate"
+; V63 cse22 [V63,T29] ( 3, 47.04) int -> r14 "CSE - moderate"
+; V64 cse23 [V64,T32] ( 5, 39.20) int -> r14 "CSE - moderate"
; V65 cse24 [V65,T55] ( 4, 4.29) int -> [rsp+0x44] hoist multi-def "CSE - moderate"
-; V66 cse25 [V66,T43] ( 4, 11.88) int -> rdi "CSE - moderate"
+; V66 cse25 [V66,T51] ( 4, 11.88) int -> rdi "CSE - moderate"
; V67 cse26 [V67,T59] ( 4, 1.12) int -> rsi "CSE - moderate"
; V68 cse27 [V68,T63] ( 3, 0.95) int -> [rsp+0x40] spill-single-def "CSE - moderate"
; V69 cse28 [V69,T62] ( 4, 1.11) int -> [rsp+0x3C] spill-single-def "CSE - moderate"
-; V70 cse29 [V70,T07] ( 34,249.52) long -> rbp hoist multi-def "CSE - aggressive"
-; V71 cse30 [V71,T09] ( 3,186.30) long -> r13 "CSE - aggressive"
-; V72 cse31 [V72,T10] ( 3,186.30) long -> rsi "CSE - aggressive"
-; V73 cse32 [V73,T19] ( 5, 78.41) long -> rsi "CSE - moderate"
-; V74 cse33 [V74,T54] ( 6, 5.96) long -> [rsp+0x30] hoist multi-def "CSE - moderate"
+; V70 cse29 [V70,T05] ( 34,291.98) long -> rbp hoist multi-def "CSE - aggressive"
+; V71 cse30 [V71,T10] ( 3,186.30) long -> r13 "CSE - aggressive"
+; V72 cse31 [V72,T11] ( 3,186.30) long -> rsi "CSE - aggressive"
+; V73 cse32 [V73,T21] ( 5, 78.41) long -> rsi "CSE - moderate"
+; V74 cse33 [V74,T46] ( 6, 17.68) long -> r13 hoist multi-def "CSE - moderate"
; V75 cse34 [V75,T56] ( 23, 2.88) long -> rbp hoist multi-def "CSE - moderate"
;
; Lcl frame size = 72
@@ -102,25 +102,26 @@ G_M50743_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
mov edx, dword ptr [rsp+0x168]
mov r8, gword ptr [rsp+0x170]
; gcrRegs +[r8]
+ mov r9, bword ptr [rsp+0x178]
+ ; byrRegs +[r9]
vmovsd xmm0, qword ptr [rsp+0x110]
mov r10d, dword ptr [rsp+0xFC]
mov eax, dword ptr [rsp+0xF8]
mov r11d, dword ptr [rsp+0xF0]
vmovsd xmm1, qword ptr [rsp+0xE8]
- ;; size=130 bbWeight=0.01 PerfScore 0.28
-G_M50743_IG02: ; bbWeight=0.01, gcVars=00000000000000000020000000000000 {V03}, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, gcvars, byref, isz
- ; GC ptr vars +{V03 V53}
+ ;; size=138 bbWeight=0.01 PerfScore 0.30
+G_M50743_IG02: ; bbWeight=0.01, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref, isz
jmp SHORT G_M50743_IG04
;; size=2 bbWeight=0.01 PerfScore 0.02
-G_M50743_IG03: ; bbWeight=2, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref
+G_M50743_IG03: ; bbWeight=2, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
vxorps xmm0, xmm0, xmm0
xor eax, eax
;; size=6 bbWeight=2 PerfScore 1.17
-G_M50743_IG04: ; bbWeight=8, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref
+G_M50743_IG04: ; bbWeight=8, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
cmp eax, edx
jge G_M50743_IG14
;; size=8 bbWeight=8 PerfScore 10.00
-G_M50743_IG05: ; bbWeight=2, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG05: ; bbWeight=2, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref, isz
test rcx, rcx
je SHORT G_M50743_IG10
mov ebx, dword ptr [rcx+0x08]
@@ -137,7 +138,7 @@ G_M50743_IG05: ; bbWeight=2, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {},
cmp dword ptr [rbx+0x08], edx
jl SHORT G_M50743_IG10
;; size=37 bbWeight=2 PerfScore 27.00
-G_M50743_IG06: ; bbWeight=15.84, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG06: ; bbWeight=15.84, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0200 {r9}, byref, isz
mov rsi, rbx
; gcrRegs +[rsi]
mov edi, eax
@@ -146,60 +147,60 @@ G_M50743_IG06: ; bbWeight=15.84, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0
vucomisd xmm3, xmm0
jbe SHORT G_M50743_IG08
;; size=25 bbWeight=15.84 PerfScore 150.48
-G_M50743_IG07: ; bbWeight=7.92, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref
+G_M50743_IG07: ; bbWeight=7.92, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0200 {r9}, byref
; gcrRegs -[rsi]
vandps xmm0, xmm2, xmmword ptr [reloc @RWD00]
;; size=8 bbWeight=7.92 PerfScore 15.84
-G_M50743_IG08: ; bbWeight=15.84, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG08: ; bbWeight=15.84, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0200 {r9}, byref, isz
inc eax
cmp eax, edx
jl SHORT G_M50743_IG06
;; size=6 bbWeight=15.84 PerfScore 23.76
-G_M50743_IG09: ; bbWeight=8, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG09: ; bbWeight=8, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref, isz
; gcrRegs -[rbx]
jmp SHORT G_M50743_IG14
;; size=2 bbWeight=8 PerfScore 16.00
-G_M50743_IG10: ; bbWeight=0.02, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref
+G_M50743_IG10: ; bbWeight=0.02, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
mov ebx, dword ptr [rcx+0x08]
cmp r10d, ebx
- jae G_M50743_IG104
+ jae G_M50743_IG105
mov esi, r10d
mov rbx, gword ptr [rcx+8*rsi+0x10]
; gcrRegs +[rbx]
;; size=20 bbWeight=0.02 PerfScore 0.11
-G_M50743_IG11: ; bbWeight=0.16, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG11: ; bbWeight=0.16, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0200 {r9}, byref, isz
mov rsi, rbx
; gcrRegs +[rsi]
cmp eax, dword ptr [rsi+0x08]
- jae G_M50743_IG104
+ jae G_M50743_IG105
mov edi, eax
vmovsd xmm2, qword ptr [rsi+8*rdi+0x10]
vandps xmm3, xmm2, xmmword ptr [reloc @RWD00]
vucomisd xmm3, xmm0
jbe SHORT G_M50743_IG13
;; size=34 bbWeight=0.16 PerfScore 2.16
-G_M50743_IG12: ; bbWeight=0.08, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref
+G_M50743_IG12: ; bbWeight=0.08, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0200 {r9}, byref
; gcrRegs -[rsi]
vandps xmm0, xmm2, xmmword ptr [reloc @RWD00]
;; size=8 bbWeight=0.08 PerfScore 0.16
-G_M50743_IG13: ; bbWeight=0.16, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG13: ; bbWeight=0.16, gcrefRegs=010A {rcx rbx r8}, byrefRegs=0200 {r9}, byref, isz
inc eax
cmp eax, edx
jl SHORT G_M50743_IG11
;; size=6 bbWeight=0.16 PerfScore 0.24
-G_M50743_IG14: ; bbWeight=8, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref, isz
+G_M50743_IG14: ; bbWeight=8, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref, isz
; gcrRegs -[rbx]
vxorps xmm2, xmm2, xmm2
vucomisd xmm0, xmm2
jp SHORT G_M50743_IG15
- je G_M50743_IG102
+ je G_M50743_IG103
;; size=16 bbWeight=8 PerfScore 34.67
-G_M50743_IG15: ; bbWeight=4, gcrefRegs=0102 {rcx r8}, byrefRegs=0000 {}, byref
+G_M50743_IG15: ; bbWeight=4, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
mov rbx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rbx]
; gcrRegs +[rax]
cmp r10d, dword ptr [rax+0x08]
- jae G_M50743_IG104
...
+23 (+0.75%) : 48350.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
@@ -8,81 +8,81 @@
; Final local variable assignments
;
; V00 arg0 [V00,T08] ( 48,189.10) ref -> rcx class-hnd single-def <double[][]>
-; V01 arg1 [V01,T18] ( 32, 85.76) int -> rdx single-def
-; V02 arg2 [V02,T47] ( 7, 6.54) ref -> r8 class-hnd single-def <int[]>
-; V03 arg3 [V03,T46] ( 7, 7 ) byref -> r9 single-def
-; V04 loc0 [V04,T65] ( 20, 64.00) double -> mm0
-; V05 loc1 [V05,T63] ( 31,336.00) double -> registers
-; V06 loc2 [V06,T64] ( 24, 94.00) double -> mm1
-; V07 loc3 [V07,T04] (105,379.26) int -> r11
-; V08 loc4 [V08,T01] (116,444.00) int -> rsi
+; V01 arg1 [V01,T16] ( 32, 95.00) int -> rdx single-def
+; V02 arg2 [V02,T51] ( 7, 6.54) ref -> [rsp+0x80] class-hnd single-def <int[]>
+; V03 arg3 [V03,T44] ( 7, 18.72) byref -> r9 single-def
+; V04 loc0 [V04,T65] ( 20, 87.13) double -> mm0
+; V05 loc1 [V05,T63] ( 31,382.10) double -> registers
+; V06 loc2 [V06,T64] ( 24,136.46) double -> mm1
+; V07 loc3 [V07,T02] (105,463.86) int -> r11
+; V08 loc4 [V08,T01] (116,507.34) int -> rsi
; V09 loc5 [V09,T00] ( 85,623.32) int -> r13
-; V10 loc6 [V10,T34] ( 24, 25.68) int -> r10
+; V10 loc6 [V10,T31] ( 24, 41.28) int -> r10
;* V11 loc7 [V11,T70] ( 0, 0 ) double -> zero-ref single-def
; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T20] ( 8, 64.64) ref -> r14 class-hnd "Strict ordering of exceptions for Array store" <double[]>
+; V13 tmp1 [V13,T22] ( 8, 64.64) ref -> r14 class-hnd "Strict ordering of exceptions for Array store" <double[]>
; V14 tmp2 [V14,T66] ( 6, 64.00) double -> mm0 "Strict ordering of exceptions for Array store"
-; V15 tmp3 [V15,T13] ( 9, 96.00) ref -> r15 class-hnd "Strict ordering of exceptions for Array store" <double[]>
+; V15 tmp3 [V15,T17] ( 9, 96.00) ref -> r15 class-hnd "Strict ordering of exceptions for Array store" <double[]>
; V16 tmp4 [V16,T67] ( 6, 64.00) double -> mm2 "Strict ordering of exceptions for Array store"
-; V17 tmp5 [V17,T69] ( 4, 8 ) double -> mm3 "Strict ordering of exceptions for Array store"
-; V18 tmp6 [V18,T21] ( 8, 64.64) ref -> rbp "arr expr"
-;* V19 tmp7 [V19,T40] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V20 tmp8 [V20,T35] ( 6, 24 ) ref -> rax "arr expr"
-; V21 tmp9 [V21,T14] ( 9, 96.00) ref -> rax "arr expr"
-; V22 tmp10 [V22,T05] ( 9,257.28) ref -> rax "arr expr"
-; V23 tmp11 [V23,T02] ( 12,384 ) ref -> registers "arr expr"
-; V24 tmp12 [V24,T25] ( 7, 64.32) ref -> r14 "arr expr"
-; V25 tmp13 [V25,T15] ( 9, 96.00) ref -> rax "arr expr"
-; V26 tmp14 [V26,T06] ( 9,257.28) ref -> rax "arr expr"
-; V27 tmp15 [V27,T03] ( 12,384 ) ref -> registers "arr expr"
-; V28 tmp16 [V28,T26] ( 7, 64.32) ref -> r12 "arr expr"
-; V29 tmp17 [V29,T16] ( 9, 96.00) ref -> rax "arr expr"
-; V30 tmp18 [V30,T22] ( 8, 64.64) ref -> r15 "arr expr"
-; V31 tmp19 [V31,T23] ( 8, 64.64) ref -> registers "arr expr"
-; V32 tmp20 [V32,T24] ( 8, 64.64) ref -> registers "arr expr"
-; V33 tmp21 [V33,T41] ( 6, 12 ) ref -> r11 "arr expr"
-; V34 tmp22 [V34,T48] ( 5, 8.04) ref -> r11 "arr expr"
-; V35 tmp23 [V35,T49] ( 5, 8.04) ref -> r11 "arr expr"
-; V36 tmp24 [V36,T50] ( 5, 8.04) ref -> rax "arr expr"
-; V37 tmp25 [V37,T36] ( 6, 24 ) ref -> r11 "arr expr"
-; V38 tmp26 [V38,T51] ( 5, 8.04) ref -> r11 "arr expr"
-; V39 tmp27 [V39,T52] ( 5, 8.04) ref -> rax "arr expr"
-; V40 tmp28 [V40,T17] ( 9, 96.00) ref -> rax "arr expr"
-; V41 cse0 [V41,T38] ( 5, 17.00) ref -> r12 hoist multi-def "CSE - moderate"
+; V17 tmp5 [V17,T69] ( 4, 31.44) double -> mm3 "Strict ordering of exceptions for Array store"
+; V18 tmp6 [V18,T23] ( 8, 64.64) ref -> rbp "arr expr"
+;* V19 tmp7 [V19,T48] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V20 tmp8 [V20,T42] ( 6, 24 ) ref -> rax "arr expr"
+; V21 tmp9 [V21,T18] ( 9, 96.00) ref -> rax "arr expr"
+; V22 tmp10 [V22,T06] ( 9,257.28) ref -> rax "arr expr"
+; V23 tmp11 [V23,T03] ( 12,384 ) ref -> registers "arr expr"
+; V24 tmp12 [V24,T14] ( 7,125.79) ref -> r14 "arr expr"
+; V25 tmp13 [V25,T19] ( 9, 96.00) ref -> rax "arr expr"
+; V26 tmp14 [V26,T07] ( 9,257.28) ref -> rax "arr expr"
+; V27 tmp15 [V27,T04] ( 12,384 ) ref -> registers "arr expr"
+; V28 tmp16 [V28,T15] ( 7,125.79) ref -> r12 "arr expr"
+; V29 tmp17 [V29,T09] ( 9,188.21) ref -> rax "arr expr"
+; V30 tmp18 [V30,T24] ( 8, 64.64) ref -> r15 "arr expr"
+; V31 tmp19 [V31,T25] ( 8, 64.64) ref -> registers "arr expr"
+; V32 tmp20 [V32,T26] ( 8, 64.64) ref -> registers "arr expr"
+; V33 tmp21 [V33,T28] ( 6, 47.16) ref -> registers "arr expr"
+; V34 tmp22 [V34,T38] ( 5, 31.48) ref -> registers "arr expr"
+; V35 tmp23 [V35,T39] ( 5, 31.48) ref -> registers "arr expr"
+; V36 tmp24 [V36,T40] ( 5, 31.48) ref -> rax "arr expr"
+; V37 tmp25 [V37,T43] ( 6, 24 ) ref -> rax "arr expr"
+; V38 tmp26 [V38,T52] ( 5, 8.04) ref -> rax "arr expr"
+; V39 tmp27 [V39,T53] ( 5, 8.04) ref -> r11 "arr expr"
+; V40 tmp28 [V40,T20] ( 9, 96.00) ref -> rax "arr expr"
+; V41 cse0 [V41,T47] ( 5, 17.00) ref -> r12 hoist multi-def "CSE - moderate"
; V42 cse1 [V42,T56] ( 4, 1.11) ref -> r14 "CSE - moderate"
; V43 cse2 [V43,T57] ( 4, 1.11) ref -> r12 "CSE - moderate"
; V44 cse3 [V44,T61] ( 2, 0.20) ref -> rax hoist "CSE - conservative"
; V45 cse4 [V45,T60] ( 3, 0.48) ref -> rax "CSE - conservative"
; V46 cse5 [V46,T71] ( 3, 0.40) double -> mm1 "CSE - conservative"
; V47 cse6 [V47,T72] ( 3, 0.40) double -> mm1 "CSE - conservative"
-; V48 cse7 [V48,T12] ( 6,113.69) ref -> r14 "CSE - aggressive"
-; V49 cse8 [V49,T11] ( 7,117.61) ref -> r12 "CSE - aggressive"
-; V50 cse9 [V50,T37] ( 7, 19.66) ref -> r11 multi-def "CSE - moderate"
-; V51 cse10 [V51,T30] ( 8, 34.66) ref -> rax hoist multi-def "CSE - moderate"
-; V52 cse11 [V52,T33] ( 6, 18.82) ref -> rax hoist multi-def "CSE - moderate"
-; V53 cse12 [V53,T28] ( 3, 47.04) ref -> rax "CSE - moderate"
+; V48 cse7 [V48,T13] ( 6,129.06) ref -> r14 "CSE - aggressive"
+; V49 cse8 [V49,T12] ( 7,132.98) ref -> r12 "CSE - aggressive"
+; V50 cse9 [V50,T45] ( 7, 19.66) ref -> r11 multi-def "CSE - moderate"
+; V51 cse10 [V51,T34] ( 8, 34.66) ref -> rax hoist multi-def "CSE - moderate"
+; V52 cse11 [V52,T41] ( 6, 18.82) ref -> rax hoist multi-def "CSE - moderate"
+; V53 cse12 [V53,T29] ( 3, 47.04) ref -> rax "CSE - moderate"
; V54 cse13 [V54,T68] ( 3, 39.20) double -> mm1 "CSE - moderate"
-; V55 cse14 [V55,T42] ( 4, 11.88) ref -> rax "CSE - moderate"
-; V56 cse15 [V56,T39] ( 4, 16.84) ref -> r15 hoist multi-def "CSE - moderate"
-; V57 cse16 [V57,T44] ( 5, 9.90) ref -> rax "CSE - moderate"
-; V58 cse17 [V58,T31] ( 47, 33.60) int -> rbx hoist multi-def "CSE - moderate"
-; V59 cse18 [V59,T32] ( 3, 31.99) int -> r15 "CSE - moderate"
-; V60 cse19 [V60,T27] ( 4, 47.67) int -> r14 "CSE - moderate"
-; V61 cse20 [V61,T29] ( 3, 47.04) int -> r15 "CSE - moderate"
-; V62 cse21 [V62,T45] ( 5, 9.90) int -> r13 "CSE - moderate"
-; V63 cse22 [V63,T55] ( 4, 4.29) int -> [rsp+0x34] hoist multi-def "CSE - moderate"
-; V64 cse23 [V64,T43] ( 4, 11.88) int -> r14 "CSE - moderate"
+; V55 cse14 [V55,T49] ( 4, 11.88) ref -> r11 "CSE - moderate"
+; V56 cse15 [V56,T36] ( 4, 32.21) ref -> r15 hoist multi-def "CSE - moderate"
+; V57 cse16 [V57,T32] ( 5, 39.20) ref -> rax "CSE - moderate"
+; V58 cse17 [V58,T35] ( 47, 33.60) int -> rbx hoist multi-def "CSE - moderate"
+; V59 cse18 [V59,T37] ( 3, 31.99) int -> r15 "CSE - moderate"
+; V60 cse19 [V60,T27] ( 4, 63.04) int -> r14 "CSE - moderate"
+; V61 cse20 [V61,T30] ( 3, 47.04) int -> r15 "CSE - moderate"
+; V62 cse21 [V62,T33] ( 5, 39.20) int -> r11 "CSE - moderate"
+; V63 cse22 [V63,T55] ( 4, 4.29) int -> [rsp+0x24] hoist multi-def "CSE - moderate"
+; V64 cse23 [V64,T50] ( 4, 11.88) int -> r13 "CSE - moderate"
; V65 cse24 [V65,T59] ( 3, 0.95) int -> r15 "CSE - moderate"
-; V66 cse25 [V66,T58] ( 4, 1.11) int -> [rsp+0x30] spill-single-def "CSE - moderate"
-; V67 cse26 [V67,T07] ( 34,249.52) long -> rbp hoist multi-def "CSE - aggressive"
-; V68 cse27 [V68,T09] ( 3,186.30) long -> r15 "CSE - aggressive"
-; V69 cse28 [V69,T10] ( 3,186.30) long -> rdi "CSE - aggressive"
-; V70 cse29 [V70,T19] ( 5, 78.41) long -> rdi "CSE - moderate"
-; V71 cse30 [V71,T53] ( 6, 5.96) long -> [rsp+0x28] hoist multi-def "CSE - moderate"
+; V66 cse25 [V66,T58] ( 4, 1.11) int -> [rsp+0x20] spill-single-def "CSE - moderate"
+; V67 cse26 [V67,T05] ( 34,291.98) long -> rbp hoist multi-def "CSE - aggressive"
+; V68 cse27 [V68,T10] ( 3,186.30) long -> r15 "CSE - aggressive"
+; V69 cse28 [V69,T11] ( 3,186.30) long -> rdi "CSE - aggressive"
+; V70 cse29 [V70,T21] ( 5, 78.41) long -> rdi "CSE - moderate"
+; V71 cse30 [V71,T46] ( 6, 17.68) long -> r14 hoist multi-def "CSE - moderate"
; V72 cse31 [V72,T54] ( 5, 5.96) long -> rdi hoist multi-def "CSE - moderate"
; V73 cse32 [V73,T62] ( 3, 0.12) long -> rdi hoist "CSE - conservative"
;
-; Lcl frame size = 56
+; Lcl frame size = 40
G_M50743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -93,7 +93,7 @@ G_M50743_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 56
+ sub rsp, 40
vzeroupper
;; size=19 bbWeight=1 PerfScore 9.25
G_M50743_IG02: ; bbWeight=1, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
@@ -145,10 +145,10 @@ G_M50743_IG08: ; bbWeight=15.68, gcrefRegs=0103 {rax rcx r8}, byrefRegs=0
cmp esi, edx
jl SHORT G_M50743_IG06
;; size=6 bbWeight=15.68 PerfScore 23.52
-G_M50743_IG09: ; bbWeight=3.96, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref, isz
+G_M50743_IG09: ; bbWeight=7.84, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref, isz
; gcrRegs -[rax]
jmp SHORT G_M50743_IG14
- ;; size=2 bbWeight=3.96 PerfScore 7.92
+ ;; size=2 bbWeight=7.84 PerfScore 15.68
G_M50743_IG10: ; bbWeight=0.01, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
mov edi, r11d
mov rax, gword ptr [rcx+8*rdi+0x10]
@@ -158,7 +158,7 @@ G_M50743_IG11: ; bbWeight=0.16, gcrefRegs=0103 {rax rcx r8}, byrefRegs=02
mov rbp, rax
; gcrRegs +[rbp]
cmp esi, dword ptr [rbp+0x08]
- jae G_M50743_IG112
+ jae G_M50743_IG113
mov r14d, esi
vmovsd xmm1, qword ptr [rbp+8*r14+0x10]
vandps xmm2, xmm1, xmmword ptr [reloc @RWD00]
@@ -174,19 +174,19 @@ G_M50743_IG13: ; bbWeight=0.16, gcrefRegs=0103 {rax rcx r8}, byrefRegs=02
cmp esi, edx
jl SHORT G_M50743_IG11
;; size=6 bbWeight=0.16 PerfScore 0.24
-G_M50743_IG14: ; bbWeight=3.96, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref, isz
+G_M50743_IG14: ; bbWeight=7.84, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref, isz
; gcrRegs -[rax]
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jp SHORT G_M50743_IG15
- je G_M50743_IG110
- ;; size=16 bbWeight=3.96 PerfScore 17.16
+ je G_M50743_IG111
+ ;; size=16 bbWeight=7.84 PerfScore 33.98
G_M50743_IG15: ; bbWeight=3.96, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
mov rax, gword ptr [rax]
; gcrRegs +[rax]
cmp r11d, dword ptr [rax+0x08]
- jae G_M50743_IG112
+ jae G_M50743_IG113
vmovsd xmm1, qword ptr [reloc @RWD16]
vdivsd xmm0, xmm1, xmm0
vmovsd qword ptr [rax+8*rdi+0x10], xmm0
@@ -194,17 +194,17 @@ G_M50743_IG15: ; bbWeight=3.96, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {
cmp r11d, edx
jl G_M50743_IG04
;; size=53 bbWeight=3.96 PerfScore 98.01
-G_M50743_IG16: ; bbWeight=0.50, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+G_M50743_IG16: ; bbWeight=1.98, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
; gcrRegs -[rax]
jmp G_M50743_IG23
- ;; size=5 bbWeight=0.50 PerfScore 1.00
+ ;; size=5 bbWeight=1.98 PerfScore 3.96
G_M50743_IG17: ; bbWeight=0.04, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
vxorps xmm0, xmm0, xmm0
xor esi, esi
mov ebx, dword ptr [rcx+0x08]
mov edi, r11d
cmp r11d, ebx
- jae G_M50743_IG112
+ jae G_M50743_IG113
mov rax, gword ptr [rcx+8*rdi+0x10]
; gcrRegs +[rax]
;; size=26 bbWeight=0.04 PerfScore 0.24
@@ -212,7 +212,7 @@ G_M50743_IG18: ; bbWeight=0.16, gcrefRegs=0103 {rax rcx r8}, byrefRegs=02
mov rbp, rax
; gcrRegs +[rbp]
cmp esi, dword ptr [rbp+0x08]
- jae G_M50743_IG112
+ jae G_M50743_IG113
mov ebx, esi
vmovsd xmm1, qword ptr [rbp+8*rbx+0x10]
vandps xmm2, xmm1, xmmword ptr [reloc @RWD00]
@@ -233,14 +233,14 @@ G_M50743_IG21: ; bbWeight=0.04, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {
vxorps xmm1, xmm1, xmm1
vucomisd xmm0, xmm1
jp SHORT G_M50743_IG22
- je G_M50743_IG110
+ je G_M50743_IG111
;; size=16 bbWeight=0.04 PerfScore 0.17
G_M50743_IG22: ; bbWeight=0.04, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
mov rax, 0xD1FFAB1E ; static handle
mov rax, gword ptr [rax]
; gcrRegs +[rax]
cmp r11d, dword ptr [rax+0x08]
- jae G_M50743_IG112
+ jae G_M50743_IG113
vmovsd xmm1, qword ptr [reloc @RWD16]
vdivsd xmm0, xmm1, xmm0
vmovsd qword ptr [rax+8*rdi+0x10], xmm0
@@ -248,40 +248,43 @@ G_M50743_IG22: ; bbWeight=0.04, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {
cmp r11d, edx
jl G_M50743_IG17
;; size=53 bbWeight=0.04 PerfScore 0.99
-G_M50743_IG23: ; bbWeight=0.50, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+G_M50743_IG23: ; bbWeight=1.98, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
; gcrRegs -[rax]
...
+10 (+3.21%) : 74014.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
@@ -9,33 +9,32 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T11] ( 5, 3.50) int -> rdi
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> rbp
-; V03 loc2 [V03,T12] ( 4, 3.50) ubyte -> r14
-; V04 loc3 [V04,T17] ( 3, 2.50) ubyte -> rax
+; V01 loc0 [V01,T10] ( 5, 3.50) int -> rdi
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> rbp
+; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> r14
+; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> rax
; V05 loc4 [V05,T05] ( 4, 12.50) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T18] ( 3, 2 ) int -> rax
-; V08 tmp2 [V08,T19] ( 3, 1.50) int -> rbp
+; V07 tmp1 [V07,T17] ( 3, 2 ) int -> rax
+; V08 tmp2 [V08,T18] ( 3, 1.50) int -> rbp
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rax "dup spill"
-;* V10 tmp4 [V10,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T13] ( 3, 3 ) ushort -> rcx "Inlining Arg"
-;* V12 tmp6 [V12,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
-;* V14 tmp8 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> rax "Inlining Arg"
+;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rcx "Inlining Arg"
-;* V16 tmp10 [V16,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rax "Inlining Arg"
-;* V18 tmp12 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T15] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T16] ( 3, 3 ) ushort -> rax "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T06] ( 6, 11 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> rax "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T06] ( 7, 15 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V26 tmp20 [V26 ] ( 6, 9 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V27 cse0 [V27,T08] ( 3, 8.50) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge G_M17180_IG23
+ jge G_M17180_IG24
mov ecx, ebp
movzx rcx, word ptr [rbx+2*rcx]
cmp ecx, 92
@@ -136,16 +135,16 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=6 bbWeight=4 PerfScore 6.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rbx]
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ebp, 1
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
test r14d, r14d
- je SHORT G_M17180_IG21
+ je SHORT G_M17180_IG22
mov ebp, 4
jmp SHORT G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.75
@@ -154,55 +153,59 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge SHORT G_M17180_IG23
+ jge SHORT G_M17180_IG20
mov eax, ebp
- movzx rcx, word ptr [rbx+2*rax]
- mov eax, ecx
+ movzx rax, word ptr [rbx+2*rax]
cmp eax, 92
- je SHORT G_M17180_IG19
+ je SHORT G_M17180_IG20
cmp eax, 47
jne SHORT G_M17180_IG17
- ;; size=22 bbWeight=4 PerfScore 25.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rbx]
- cmp ebp, 4
- jle SHORT G_M17180_IG23
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 92
- je SHORT G_M17180_IG22
- cmp ecx, 47
- jne SHORT G_M17180_IG23
- jmp SHORT G_M17180_IG22
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=20 bbWeight=4 PerfScore 24.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M17180_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ebp, esi
+ jge SHORT G_M17180_IG24
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+ cmp ebp, 4
+ jle SHORT G_M17180_IG24
+ mov eax, ebp
+ movzx rax, word ptr [rbx+2*rax]
+ cmp eax, 92
+ je SHORT G_M17180_IG23
+ cmp eax, 47
+ jne SHORT G_M17180_IG24
+ jmp SHORT G_M17180_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.00
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp esi, 2
- jl SHORT G_M17180_IG23
+ jl SHORT G_M17180_IG24
cmp word ptr [rbx+0x02], 58
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
movzx rax, word ptr [rbx]
or eax, 32
add eax, -97
cmp eax, 25
- ja SHORT G_M17180_IG23
+ ja SHORT G_M17180_IG24
mov ebp, 2
cmp esi, 2
- jle SHORT G_M17180_IG23
+ jle SHORT G_M17180_IG24
movzx rax, word ptr [rbx+0x04]
cmp eax, 92
- je SHORT G_M17180_IG22
+ je SHORT G_M17180_IG23
cmp eax, 47
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
;; size=50 bbWeight=0.50 PerfScore 7.50
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
inc ebp
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ebp
;; size=2 bbWeight=1 PerfScore 0.25
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -212,7 +215,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 312, prolog size 17, PerfScore 112.38, instruction count 114, allocated bytes for code 312 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
+; Total bytes of code 322, prolog size 17, PerfScore 114.12, instruction count 118, allocated bytes for code 322 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
; ============================================================
Unwind Info:
coreclr_tests.run.windows.x64.checked.mch
-6 (-5.31%) : 416484.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
@@ -11,97 +11,89 @@
;
; V00 arg0 [V00,T01] ( 8, 4.50) long -> rcx single-def
; V01 arg1 [V01,T00] ( 7, 4.99) ref -> rdx class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 2.99) long -> rbx
-; V03 loc1 [V03,T03] ( 10, 3.40) long -> rax
-; V04 loc2 [V04,T02] ( 10, 3.75) long -> r8
+; V02 loc0 [V02,T04] ( 4, 2.99) long -> rax
+; V03 loc1 [V03,T03] ( 10, 3.40) long -> r8
+; V04 loc2 [V04,T02] ( 10, 3.75) long -> r10
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;
; Lcl frame size = 0
G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rbx
- ;; size=1 bbWeight=1 PerfScore 1.00
+ ;; size=0 bbWeight=1 PerfScore 0.00
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rdx]
test rdx, rdx
- je SHORT G_M24157_IG07
+ je SHORT G_M24157_IG16
;; size=5 bbWeight=1 PerfScore 1.25
G_M24157_IG03: ; bbWeight=0.99, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov rbx, qword ptr [rdx]
- movzx rax, word ptr [rbx+0x0E]
- test rax, rax
+ mov rax, qword ptr [rdx]
+ movzx r8, word ptr [rax+0x0E]
+ test r8, r8
je SHORT G_M24157_IG13
- ;; size=12 bbWeight=0.99 PerfScore 5.20
+ ;; size=13 bbWeight=0.99 PerfScore 5.20
G_M24157_IG04: ; bbWeight=0.99, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov r8, qword ptr [rbx+0x40]
- cmp rax, 4
- jl SHORT G_M24157_IG15
+ mov r10, qword ptr [rax+0x40]
+ cmp r8, 4
+ jl SHORT G_M24157_IG11
;; size=10 bbWeight=0.99 PerfScore 3.22
G_M24157_IG05: ; bbWeight=1.11, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8], rcx
- je SHORT G_M24157_IG07
+ cmp qword ptr [r10], rcx
+ je SHORT G_M24157_IG16
;; size=5 bbWeight=1.11 PerfScore 4.42
G_M24157_IG06: ; bbWeight=1.11, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8+0x08], rcx
- jne SHORT G_M24157_IG09
+ cmp qword ptr [r10+0x08], rcx
+ je SHORT G_M24157_IG16
;; size=6 bbWeight=1.11 PerfScore 4.42
-G_M24157_IG07: ; bbWeight=0.98, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
- mov rax, rdx
- ; gcrRegs +[rax]
- ;; size=3 bbWeight=0.98 PerfScore 0.25
-G_M24157_IG08: ; bbWeight=0.98, epilog, nogc, extend
- pop rbx
- ret
- ;; size=2 bbWeight=0.98 PerfScore 1.48
-G_M24157_IG09: ; bbWeight=0.13, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[rax]
- cmp qword ptr [r8+0x10], rcx
- je SHORT G_M24157_IG07
+G_M24157_IG07: ; bbWeight=0.13, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [r10+0x10], rcx
+ je SHORT G_M24157_IG16
;; size=6 bbWeight=0.13 PerfScore 0.54
-G_M24157_IG10: ; bbWeight=0.13, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8+0x18], rcx
- je SHORT G_M24157_IG07
+G_M24157_IG08: ; bbWeight=0.13, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [r10+0x18], rcx
+ je SHORT G_M24157_IG16
;; size=6 bbWeight=0.13 PerfScore 0.53
-G_M24157_IG11: ; bbWeight=0.13, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- add r8, 32
- add rax, -4
- cmp rax, 4
+G_M24157_IG09: ; bbWeight=0.13, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ add r10, 32
+ add r8, -4
+ cmp r8, 4
jge SHORT G_M24157_IG05
;; size=14 bbWeight=0.13 PerfScore 0.23
-G_M24157_IG12: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test rax, rax
- jne SHORT G_M24157_IG15
+G_M24157_IG10: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ test r8, r8
+ je SHORT G_M24157_IG13
;; size=5 bbWeight=0.02 PerfScore 0.02
+G_M24157_IG11: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ cmp qword ptr [r10], rcx
+ je SHORT G_M24157_IG16
+ ;; size=5 bbWeight=0.01 PerfScore 0.02
+G_M24157_IG12: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ add r10, 8
+ dec r8
+ test r8, r8
+ jg SHORT G_M24157_IG11
+ ;; size=12 bbWeight=0.01 PerfScore 0.01
G_M24157_IG13: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test dword ptr [rbx], 0xD1FFAB1E
- je SHORT G_M24157_IG18
+ test dword ptr [rax], 0xD1FFAB1E
+ je SHORT G_M24157_IG15
;; size=8 bbWeight=0.02 PerfScore 0.07
G_M24157_IG14: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
- pop rbx
tail.jmp [<unknown method>]
; gcr arg pop 0
- ;; size=7 bbWeight=0.02 PerfScore 0.04
-G_M24157_IG15: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
- cmp qword ptr [r8], rcx
- je SHORT G_M24157_IG07
- ;; size=5 bbWeight=0.01 PerfScore 0.02
-G_M24157_IG16: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- add r8, 8
- dec rax
- test rax, rax
- jg SHORT G_M24157_IG15
- ;; size=12 bbWeight=0.01 PerfScore 0.01
-G_M24157_IG17: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M24157_IG13
- ;; size=2 bbWeight=0.00 PerfScore 0.01
-G_M24157_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=6 bbWeight=0.02 PerfScore 0.03
+G_M24157_IG15: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rdx]
xor rdx, rdx
; gcrRegs +[rdx]
- jmp SHORT G_M24157_IG07
- ;; size=4 bbWeight=0.00 PerfScore 0.00
+ ;; size=2 bbWeight=0.00 PerfScore 0.00
+G_M24157_IG16: ; bbWeight=0.98, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
+ mov rax, rdx
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.98 PerfScore 0.25
+G_M24157_IG17: ; bbWeight=0.98, epilog, nogc, extend
+ ret
+ ;; size=1 bbWeight=0.98 PerfScore 0.98
-; Total bytes of code 113, prolog size 1, PerfScore 22.71, instruction count 40, allocated bytes for code 113 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 107, prolog size 0, PerfScore 21.20, instruction count 35, allocated bytes for code 107 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================
Unwind Info:
@@ -109,9 +101,8 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x01
- CountOfUnwindCodes: 1
+ SizeOfProlog : 0x00
+ CountOfUnwindCodes: 0
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
-25 (-4.74%) : 481494.dasm - TestSet:.ctor(int,int):this (Tier1-OSR)
@@ -11,11 +11,11 @@
; Final local variable assignments
;
; V00 this [V00,T03] ( 20,201.98) ref -> rbx this class-hnd single-def <TestSet>
-; V01 arg1 [V01,T06] ( 6, 2 ) int -> rdi single-def
+; V01 arg1 [V01,T06] ( 6, 2.02) int -> rdi single-def
; V02 arg2 [V02,T04] ( 8,102 ) int -> rsi single-def
; V03 loc0 [V03,T01] ( 6,499.96) int -> rbp
-; V04 loc1 [V04,T07] ( 12, 0 ) int -> rbp
-; V05 loc2 [V05,T09] ( 7, 0 ) int -> r14
+; V04 loc1 [V04,T07] ( 12, 0 ) int -> rsi
+; V05 loc2 [V05,T09] ( 7, 0 ) int -> rbp
; V06 loc3 [V06,T10] ( 6, 0 ) int -> rax
; V07 loc4 [V07,T08] ( 8, 0 ) int -> rsi
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -55,7 +55,7 @@ G_M47393_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
;; size=81 bbWeight=0.01 PerfScore 0.14
G_M47393_IG02: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp ebp, esi
- jge SHORT G_M47393_IG07
+ jge SHORT G_M47393_IG05
;; size=4 bbWeight=0.01 PerfScore 0.01
G_M47393_IG03: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r14, 0xD1FFAB1E ; Node
@@ -87,44 +87,35 @@ G_M47393_IG04: ; bbWeight=99.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {},
; gcr arg pop 0
inc ebp
cmp ebp, esi
- jge SHORT G_M47393_IG07
+ jl SHORT G_M47393_IG04
;; size=52 bbWeight=99.99 PerfScore 1149.88
-G_M47393_IG05: ; bbWeight=99.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M47393_IG04
- ;; size=2 bbWeight=99.98 PerfScore 199.96
-G_M47393_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_M47393_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs +[rbx]
+G_M47393_IG05: ; bbWeight=0.01, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp edi, 3
- ja SHORT G_M47393_IG11
- mov ecx, edi
- lea rdx, [reloc @RWD00]
- mov edx, dword ptr [rdx+4*rcx]
+ ja SHORT G_M47393_IG09
+ mov edx, edi
+ lea rcx, [reloc @RWD00]
+ mov ecx, dword ptr [rcx+4*rdx]
lea rax, G_M47393_IG02
- add rdx, rax
- jmp rdx
- ;; size=29 bbWeight=0 PerfScore 0.00
-G_M47393_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov ecx, esi
- shr ecx, 31
- add ecx, esi
- sar ecx, 1
- mov dword ptr [rbx+0x40], ecx
- jmp SHORT G_M47393_IG11
+ add rcx, rax
+ jmp rcx
+ ;; size=29 bbWeight=0.01 PerfScore 0.07
+G_M47393_IG06: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov edx, esi
+ shr edx, 31
+ add edx, esi
+ sar edx, 1
+ mov dword ptr [rbx+0x40], edx
+ jmp SHORT G_M47393_IG09
;; size=14 bbWeight=0 PerfScore 0.00
-G_M47393_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea ecx, [rsi-0x01]
- mov dword ptr [rbx+0x40], ecx
- jmp SHORT G_M47393_IG11
+G_M47393_IG07: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ lea edx, [rsi-0x01]
+ mov dword ptr [rbx+0x40], edx
+ jmp SHORT G_M47393_IG09
;; size=8 bbWeight=0 PerfScore 0.00
-G_M47393_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M47393_IG08: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov dword ptr [rbx+0x40], esi
;; size=3 bbWeight=0 PerfScore 0.00
-G_M47393_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M47393_IG09: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
movsxd rdx, dword ptr [rbx+0x40]
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWARR_1_VC
@@ -137,38 +128,38 @@ G_M47393_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- xor ebp, ebp
- jmp SHORT G_M47393_IG18
+ xor esi, esi
+ jmp SHORT G_M47393_IG16
;; size=35 bbWeight=0 PerfScore 0.00
-G_M47393_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r14d, -1
+G_M47393_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ebp, -1
mov eax, -1
cmp edi, 3
- ja SHORT G_M47393_IG17
+ ja SHORT G_M47393_IG15
mov ecx, edi
lea rdx, [reloc @RWD16]
mov edx, dword ptr [rdx+4*rcx]
lea rax, G_M47393_IG02
add rdx, rax
jmp rdx
- ;; size=40 bbWeight=0 PerfScore 0.00
+ ;; size=39 bbWeight=0 PerfScore 0.00
+G_M47393_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ lea ebp, [rsi+rsi]
+ lea eax, [2*rsi+0x01]
+ jmp SHORT G_M47393_IG15
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M47393_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ mov ebp, esi
+ lea eax, [rbp+0x01]
+ jmp SHORT G_M47393_IG15
+ ;; size=7 bbWeight=0 PerfScore 0.00
G_M47393_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea r14d, [rbp+rbp]
- lea eax, [2*rbp+0x01]
- jmp SHORT G_M47393_IG17
- ;; size=14 bbWeight=0 PerfScore 0.00
-G_M47393_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- mov r14d, ebp
- lea eax, [r14+0x01]
- jmp SHORT G_M47393_IG17
- ;; size=9 bbWeight=0 PerfScore 0.00
-G_M47393_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
- lea r14d, [rbp+0x01]
- mov eax, ebp
- jmp SHORT G_M47393_IG17
- ;; size=8 bbWeight=0 PerfScore 0.00
-G_M47393_IG16: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov r14d, ebp
+ lea ebp, [rsi+0x01]
+ mov eax, esi
+ jmp SHORT G_M47393_IG15
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M47393_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ mov ebp, esi
mov rcx, gword ptr [rbx+0x30]
; gcrRegs +[rcx]
mov edx, dword ptr [rbx+0x40]
@@ -177,24 +168,24 @@ G_M47393_IG16: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
call [rax+0x28]<unknown method>
; gcrRegs -[rcx]
; gcr arg pop 0
- ;; size=20 bbWeight=0 PerfScore 0.00
-G_M47393_IG17: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ ;; size=19 bbWeight=0 PerfScore 0.00
+G_M47393_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x28]
; gcrRegs +[rcx]
- cmp ebp, dword ptr [rcx+0x08]
- jae G_M47393_IG06
- mov edx, ebp
+ cmp esi, dword ptr [rcx+0x08]
+ jae G_M47393_IG20
+ mov edx, esi
lea rcx, bword ptr [rcx+8*rdx+0x10]
; gcrRegs -[rcx]
; byrRegs +[rcx]
- mov dword ptr [rcx], r14d
+ mov dword ptr [rcx], ebp
mov dword ptr [rcx+0x04], eax
- inc ebp
- ;; size=28 bbWeight=0 PerfScore 0.00
-G_M47393_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ inc esi
+ ;; size=27 bbWeight=0 PerfScore 0.00
+G_M47393_IG16: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rcx]
- cmp ebp, dword ptr [rbx+0x40]
- jl SHORT G_M47393_IG12
+ cmp esi, dword ptr [rbx+0x40]
+ jl SHORT G_M47393_IG10
mov rcx, 0xD1FFAB1E ; <unknown class>
call CORINFO_HELP_NEWSFAST
; gcrRegs +[rax]
@@ -214,9 +205,9 @@ G_M47393_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
; gcrRegs -[rdx rdi]
; byrRegs -[rcx]
xor esi, esi
- jmp SHORT G_M47393_IG20
+ jmp SHORT G_M47393_IG18
;; size=48 bbWeight=0 PerfScore 0.00
-G_M47393_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M47393_IG17: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x20]
; gcrRegs +[rcx]
mov rdx, gword ptr [rbx+0x08]
@@ -224,36 +215,36 @@ G_M47393_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
mov r8, gword ptr [rbx+0x28]
; gcrRegs +[r8]
cmp esi, dword ptr [r8+0x08]
- jae G_M47393_IG06
+ jae SHORT G_M47393_IG20
mov eax, esi
mov r8d, dword ptr [r8+8*rax+0x10]
; gcrRegs -[r8]
cmp r8d, dword ptr [rdx+0x08]
- jae G_M47393_IG06
+ jae SHORT G_M47393_IG20
mov rdx, gword ptr [rdx+8*r8+0x10]
mov r8, gword ptr [rbx+0x08]
; gcrRegs +[r8]
mov rax, gword ptr [rbx+0x28]
; gcrRegs +[rax]
cmp esi, dword ptr [rax+0x08]
- jae G_M47393_IG06
+ jae SHORT G_M47393_IG20
mov r10d, esi
mov eax, dword ptr [rax+8*r10+0x14]
; gcrRegs -[rax]
cmp eax, dword ptr [r8+0x08]
- jae G_M47393_IG06
+ jae SHORT G_M47393_IG20
mov r8, gword ptr [r8+8*rax+0x10]
cmp dword ptr [rcx], ecx
call [<unknown method>]
; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
inc esi
- ;; size=94 bbWeight=0 PerfScore 0.00
-G_M47393_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=78 bbWeight=0 PerfScore 0.00
+G_M47393_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp esi, dword ptr [rbx+0x40]
- jl SHORT G_M47393_IG19
+ jl SHORT G_M47393_IG17
;; size=5 bbWeight=0 PerfScore 0.00
-G_M47393_IG21: ; bbWeight=0, epilog, nogc, extend
+G_M47393_IG19: ; bbWeight=0, epilog, nogc, extend
add rsp, 240
pop rbx
pop rsi
@@ -264,17 +255,23 @@ G_M47393_IG21: ; bbWeight=0, epilog, nogc, extend
pop rbp
ret
;; size=18 bbWeight=0 PerfScore 0.00
-RWD00 dd G_M47393_IG08 - G_M47393_IG02
...
-27 (-4.35%) : 489665.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
@@ -10,7 +10,7 @@
; Final local variable assignments
;
; V00 arg0 [V00,T03] ( 16, 11.95) long -> rbx single-def
-; V01 loc0 [V01,T01] ( 43, 19.62) long -> rsi
+; V01 loc0 [V01,T01] ( 43, 19.79) long -> rsi
; V02 loc1 [V02,T02] ( 23, 15.48) long -> rdi
;* V03 loc2 [V03 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ushort]>
; V04 loc3 [V04,T07] ( 3, 1.01) int -> rbp
@@ -36,7 +36,7 @@
;* V24 tmp2 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V25 tmp3 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp4 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V27 tmp5 [V27,T05] ( 10, 4 ) int -> rax "Single return block return value"
+; V27 tmp5 [V27,T05] ( 10, 4.33) int -> rax "Single return block return value"
; V28 cse0 [V28,T00] ( 6, 82.41) ref -> rdx multi-def "CSE - aggressive"
; V29 cse1 [V29,T06] ( 3, 3.80) mask -> k1 "CSE - aggressive"
; V30 rat0 [V30,T04] ( 3, 6 ) int -> rcx "ReplaceWithLclVar is creating a new local variable"
@@ -67,32 +67,46 @@ G_M54480_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov edi, ecx
and rdi, 7
;; size=31 bbWeight=1 PerfScore 4.25
-G_M54480_IG03: ; bbWeight=1.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG03: ; bbWeight=1.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rdi, 4
- jge G_M54480_IG21
- ;; size=10 bbWeight=1.33 PerfScore 1.67
-G_M54480_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- test rdi, rdi
- jle SHORT G_M54480_IG06
- ;; size=5 bbWeight=1 PerfScore 1.25
-G_M54480_IG05: ; bbWeight=1.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M54480_IG05
+ ;; size=6 bbWeight=1.33 PerfScore 1.67
+G_M54480_IG04: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp word ptr [rbx+2*rsi], 0
- je G_M54480_IG20
+ je G_M54480_IG21
+ cmp word ptr [rbx+2*rsi+0x02], 0
+ je G_M54480_IG31
+ cmp word ptr [rbx+2*rsi+0x04], 0
+ je G_M54480_IG30
+ cmp word ptr [rbx+2*rsi+0x06], 0
+ je G_M54480_IG29
+ add rsi, 4
+ add rdi, -4
+ cmp rdi, 4
+ jge SHORT G_M54480_IG04
+ ;; size=61 bbWeight=0.53 PerfScore 9.42
+G_M54480_IG05: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ test rdi, rdi
+ jle SHORT G_M54480_IG07
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M54480_IG06: ; bbWeight=1.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp word ptr [rbx+2*rsi], 0
+ je G_M54480_IG21
inc rsi
dec rdi
test rdi, rdi
- jg SHORT G_M54480_IG05
+ jg SHORT G_M54480_IG06
;; size=22 bbWeight=1.51 PerfScore 8.68
-G_M54480_IG06: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG07: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rsi, 0xD1FFAB1E
- jge G_M54480_IG29
+ jge G_M54480_IG28
mov rcx, rsi
neg rcx
add rcx, 0xD1FFAB1E
cmp rcx, 8
- jge SHORT G_M54480_IG08
+ jge SHORT G_M54480_IG09
;; size=32 bbWeight=0.99 PerfScore 3.22
-G_M54480_IG07: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG08: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -101,38 +115,38 @@ G_M54480_IG07: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=3.96 PerfScore 13.86
-G_M54480_IG08: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG09: ; bbWeight=0.99, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rcx, [rbx+2*rsi]
test cl, 31
- je SHORT G_M54480_IG11
+ je SHORT G_M54480_IG12
;; size=9 bbWeight=0.99 PerfScore 1.73
-G_M54480_IG09: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG10: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vxorps xmm0, xmm0, xmm0
vpcmpeqw xmm0, xmm0, xmmword ptr [rbx+2*rsi]
vpmovmskb ebp, xmm0
test ebp, ebp
- jne G_M54480_IG26
+ jne G_M54480_IG25
;; size=21 bbWeight=0.49 PerfScore 3.22
-G_M54480_IG10: ; bbWeight=0.46, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG11: ; bbWeight=0.46, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add rsi, 8
;; size=4 bbWeight=0.46 PerfScore 0.11
-G_M54480_IG11: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG12: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rcx, [rbx+2*rsi]
test cl, 63
- jne G_M54480_IG23
- ;; size=13 bbWeight=0.96 PerfScore 1.68
-G_M54480_IG12: ; bbWeight=0.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jne SHORT G_M54480_IG22
+ ;; size=9 bbWeight=0.96 PerfScore 1.68
+G_M54480_IG13: ; bbWeight=0.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdi, rsi
neg rdi
add rdi, 0xD1FFAB1E
and rdi, -32
- jle G_M54480_IG33
+ jle G_M54480_IG32
;; size=23 bbWeight=0.86 PerfScore 1.71
-G_M54480_IG13: ; bbWeight=1.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG14: ; bbWeight=1.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rdi, 32
- jge SHORT G_M54480_IG15
+ jge SHORT G_M54480_IG16
;; size=6 bbWeight=1.47 PerfScore 1.84
-G_M54480_IG14: ; bbWeight=23.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG15: ; bbWeight=23.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -141,19 +155,19 @@ G_M54480_IG14: ; bbWeight=23.51, gcrefRegs=0000 {}, byrefRegs=0000 {}, by
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=23.51 PerfScore 82.29
-G_M54480_IG15: ; bbWeight=1.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG16: ; bbWeight=1.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vmovups zmm0, zmmword ptr [rbx+2*rsi]
vptestnmw k1, zmm0, zmm0
kortestd k1, k1
- je SHORT G_M54480_IG18
+ je SHORT G_M54480_IG19
;; size=20 bbWeight=1.47 PerfScore 13.22
-G_M54480_IG16: ; bbWeight=0.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG17: ; bbWeight=0.86, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
kmovd eax, k1
tzcnt rax, rax
mov eax, eax
add eax, esi
;; size=13 bbWeight=0.86 PerfScore 3.86
-G_M54480_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M54480_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
vzeroupper
add rsp, 32
pop rbx
@@ -163,97 +177,80 @@ G_M54480_IG17: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r14
ret
;; size=14 bbWeight=1 PerfScore 4.75
-G_M54480_IG18: ; bbWeight=0.61, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M54480_IG19: ; bbWeight=0.61, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
add rsi, 32
add rdi, -32
test rdi, rdi
- jle G_M54480_IG33
- ;; size=17 bbWeight=0.61 PerfScore 1.07
-G_M54480_IG19: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M54480_IG13
+ jle SHORT G_M54480_IG32
+ ;; size=13 bbWeight=0.61 PerfScore 1.07
+G_M54480_IG20: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M54480_IG14
;; size=2 bbWeight=0.31 PerfScore 0.61
-G_M54480_IG20: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG21: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, esi
- jmp SHORT G_M54480_IG17
- ;; size=4 bbWeight=0.01 PerfScore 0.02
-G_M54480_IG21: ; bbWeight=0.53, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp word ptr [rbx+2*rsi], 0
- je SHORT G_M54480_IG20
- cmp word ptr [rbx+2*rsi+0x02], 0
- je G_M54480_IG32
- cmp word ptr [rbx+2*rsi+0x04], 0
- je G_M54480_IG31
- cmp word ptr [rbx+2*rsi+0x06], 0
- je SHORT G_M54480_IG30
- add rsi, 4
- add rdi, -4
- cmp rdi, 4
- jge SHORT G_M54480_IG21
- ;; size=53 bbWeight=0.53 PerfScore 9.42
-G_M54480_IG22: ; bbWeight=0.35, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- jmp G_M54480_IG04
- ;; size=5 bbWeight=0.35 PerfScore 0.69
-G_M54480_IG23: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M54480_IG18
+ ;; size=4 bbWeight=0.18 PerfScore 0.40
+G_M54480_IG22: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vxorps ymm0, ymm0, ymm0
vpcmpeqw ymm0, ymm0, ymmword ptr [rbx+2*rsi]
vpmovmskb r14d, ymm0
test r14d, r14d
- jne SHORT G_M54480_IG25
+ jne SHORT G_M54480_IG24
;; size=18 bbWeight=0.41 PerfScore 3.10
-G_M54480_IG24: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG23: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add rsi, 16
- jmp G_M54480_IG12
+ jmp G_M54480_IG13
;; size=9 bbWeight=0.31 PerfScore 0.69
-G_M54480_IG25: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG24: ; bbWeight=0.10, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor eax, eax
tzcnt eax, r14d
shr eax, 1
add eax, esi
- jmp G_M54480_IG17
- ;; size=16 bbWeight=0.10 PerfScore 0.51
-G_M54480_IG26: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M54480_IG18
+ ;; size=13 bbWeight=0.10 PerfScore 0.51
+G_M54480_IG25: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor eax, eax
tzcnt eax, ebp
shr eax, 1
add eax, esi
- jmp G_M54480_IG17
- ;; size=15 bbWeight=0.03 PerfScore 0.15
-G_M54480_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M54480_IG18
+ ;; size=12 bbWeight=0.03 PerfScore 0.15
+G_M54480_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
xor eax, eax
tzcnt eax, ebp
shr eax, 1
add eax, esi
- jmp G_M54480_IG17
- ;; size=15 bbWeight=0 PerfScore 0.00
-G_M54480_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M54480_IG18
+ ;; size=12 bbWeight=0 PerfScore 0.00
+G_M54480_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
tzcnt eax, eax
shr eax, 1
add eax, esi
- jmp G_M54480_IG17
- ;; size=13 bbWeight=0 PerfScore 0.00
-G_M54480_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...
+8 (+4.71%) : 166736.dasm - Helper:NewOUTER3(int,float,System.String,System.String):OUTER3 (FullOpts)
@@ -7,26 +7,27 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T05] ( 4, 4 ) byref -> rbx single-def
-; V01 arg0 [V01,T04] ( 3, 5.96) int -> rdi single-def
+; V00 RetBuf [V00,T03] ( 4, 5.96) byref -> rbx single-def
+; V01 arg0 [V01,T05] ( 3, 5.96) int -> rdi single-def
; V02 arg1 [V02,T08] ( 3, 5.96) float -> mm6 single-def
-; V03 arg2 [V03,T03] ( 3, 5.96) ref -> rsi class-hnd single-def <System.String>
-; V04 arg3 [V04,T07] ( 1, 1 ) ref -> [rsp+0xA0] class-hnd single-def <System.String>
-; V05 loc0 [V05 ] ( 6, 14.88) struct (32) [rsp+0x20] do-not-enreg[SB] must-init ld-addr-op <OUTER3>
-; V06 loc1 [V06,T00] ( 5, 16.84) int -> rbp
+; V03 arg2 [V03,T04] ( 3, 5.96) ref -> rsi class-hnd single-def <System.String>
+; V04 arg3 [V04,T07] ( 1, 1.98) ref -> rbp class-hnd single-def <System.String>
+; V05 loc0 [V05 ] ( 6, 16.84) struct (32) [rsp+0x20] do-not-enreg[SB] must-init ld-addr-op <OUTER3>
+; V06 loc1 [V06,T00] ( 5, 16.84) int -> r14
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T02] ( 5, 13.88) ref -> [rsp+0x20] do-not-enreg[] single-def "field V05.arr (fldOffset=0x0)" P-DEP
-; V09 tmp2 [V09,T06] ( 2, 2 ) ref -> [rsp+0x38] do-not-enreg[] single-def "field V05.f4 (fldOffset=0x18)" P-DEP
+; V08 tmp1 [V08,T02] ( 5, 14.86) ref -> [rsp+0x20] do-not-enreg[] single-def "field V05.arr (fldOffset=0x0)" P-DEP
+; V09 tmp2 [V09,T06] ( 2, 3.96) ref -> [rsp+0x38] do-not-enreg[] single-def "field V05.f4 (fldOffset=0x18)" P-DEP
; V10 cse0 [V10,T01] ( 4, 15.84) long -> rdx "CSE - aggressive"
;
-; Lcl frame size = 88
+; Lcl frame size = 80
G_M64110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 88
+ sub rsp, 80
vzeroupper
vmovaps xmmword ptr [rsp+0x40], xmm6
vxorps xmm4, xmm4, xmm4
@@ -37,21 +38,23 @@ G_M64110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov edi, edx
mov rsi, r9
; gcrRegs +[rsi]
- ;; size=39 bbWeight=1 PerfScore 10.58
-G_M64110_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov rbp, gword ptr [rsp+0xA0]
+ ; gcrRegs +[rbp]
+ ;; size=49 bbWeight=1 PerfScore 12.58
+G_M64110_IG02: ; bbWeight=1, gcrefRegs=0060 {rbp rsi}, byrefRegs=0008 {rbx}, byref
mov rcx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
; gcr arg pop 0
mov gword ptr [rsp+0x20], rax
- xor ebp, ebp
- ;; size=27 bbWeight=1 PerfScore 2.75
-G_M64110_IG03: ; bbWeight=3.96, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ xor r14d, r14d
+ ;; size=28 bbWeight=1 PerfScore 2.75
+G_M64110_IG03: ; bbWeight=3.96, gcrefRegs=0060 {rbp rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rax]
mov rcx, gword ptr [rsp+0x20]
; gcrRegs +[rcx]
- mov edx, ebp
+ mov edx, r14d
shl rdx, 4
mov dword ptr [rcx+rdx+0x18], edi
mov rcx, gword ptr [rsp+0x20]
@@ -65,38 +68,37 @@ G_M64110_IG03: ; bbWeight=3.96, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- inc ebp
- cmp ebp, 2
+ inc r14d
+ cmp r14d, 2
jl SHORT G_M64110_IG03
- ;; size=51 bbWeight=3.96 PerfScore 41.58
-G_M64110_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=54 bbWeight=3.96 PerfScore 41.58
+G_M64110_IG04: ; bbWeight=1.98, gcrefRegs=0020 {rbp}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rsi]
- mov rsi, gword ptr [rsp+0xA0]
- ; gcrRegs +[rsi]
- mov gword ptr [rsp+0x38], rsi
+ mov gword ptr [rsp+0x38], rbp
mov rdi, rbx
; byrRegs +[rdi]
lea rsi, bword ptr [rsp+0x20]
- ; gcrRegs -[rsi]
; byrRegs +[rsi]
call CORINFO_HELP_ASSIGN_BYREF
+ ; gcrRegs -[rbp]
movsq
movsq
call CORINFO_HELP_ASSIGN_BYREF
mov rax, rbx
; byrRegs +[rax]
- ;; size=38 bbWeight=1 PerfScore 7.00
-G_M64110_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=30 bbWeight=1.98 PerfScore 11.88
+G_M64110_IG05: ; bbWeight=1.98, epilog, nogc, extend
vmovaps xmm6, xmmword ptr [rsp+0x40]
- add rsp, 88
+ add rsp, 80
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=15 bbWeight=1 PerfScore 7.25
+ ;; size=17 bbWeight=1.98 PerfScore 15.35
-; Total bytes of code 170, prolog size 39, PerfScore 69.16, instruction count 47, allocated bytes for code 170 (MethodHash=4d410591) for method Helper:NewOUTER3(int,float,System.String,System.String):OUTER3 (FullOpts)
+; Total bytes of code 178, prolog size 49, PerfScore 84.14, instruction count 49, allocated bytes for code 178 (MethodHash=4d410591) for method Helper:NewOUTER3(int,float,System.String,System.String):OUTER3 (FullOpts)
; ============================================================
Unwind Info:
@@ -104,15 +106,16 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x11
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x13
+ CountOfUnwindCodes: 8
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x11 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
Scaled Small Offset: 4 * 16 = 64 = 0x00040
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
- 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: 9 * 8 + 8 = 80 = 0x50
+ 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)
+8 (+4.71%) : 169692.dasm - Helper:NewOUTER3(int,float,System.String,System.String):OUTER3 (FullOpts)
@@ -7,26 +7,27 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 RetBuf [V00,T05] ( 4, 4 ) byref -> rbx single-def
-; V01 arg0 [V01,T04] ( 3, 5.96) int -> rdi single-def
+; V00 RetBuf [V00,T03] ( 4, 5.96) byref -> rbx single-def
+; V01 arg0 [V01,T05] ( 3, 5.96) int -> rdi single-def
; V02 arg1 [V02,T08] ( 3, 5.96) float -> mm6 single-def
-; V03 arg2 [V03,T03] ( 3, 5.96) ref -> rsi class-hnd single-def <System.String>
-; V04 arg3 [V04,T07] ( 1, 1 ) ref -> [rsp+0xA0] class-hnd single-def <System.String>
-; V05 loc0 [V05 ] ( 6, 14.88) struct (32) [rsp+0x20] do-not-enreg[SB] must-init ld-addr-op <OUTER3>
-; V06 loc1 [V06,T00] ( 5, 16.84) int -> rbp
+; V03 arg2 [V03,T04] ( 3, 5.96) ref -> rsi class-hnd single-def <System.String>
+; V04 arg3 [V04,T07] ( 1, 1.98) ref -> rbp class-hnd single-def <System.String>
+; V05 loc0 [V05 ] ( 6, 16.84) struct (32) [rsp+0x20] do-not-enreg[SB] must-init ld-addr-op <OUTER3>
+; V06 loc1 [V06,T00] ( 5, 16.84) int -> r14
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T02] ( 5, 13.88) ref -> [rsp+0x20] do-not-enreg[] single-def "field V05.arr (fldOffset=0x0)" P-DEP
-; V09 tmp2 [V09,T06] ( 2, 2 ) ref -> [rsp+0x38] do-not-enreg[] single-def "field V05.f4 (fldOffset=0x18)" P-DEP
+; V08 tmp1 [V08,T02] ( 5, 14.86) ref -> [rsp+0x20] do-not-enreg[] single-def "field V05.arr (fldOffset=0x0)" P-DEP
+; V09 tmp2 [V09,T06] ( 2, 3.96) ref -> [rsp+0x38] do-not-enreg[] single-def "field V05.f4 (fldOffset=0x18)" P-DEP
; V10 cse0 [V10,T01] ( 4, 15.84) long -> rdx "CSE - aggressive"
;
-; Lcl frame size = 88
+; Lcl frame size = 80
G_M64110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push r14
push rdi
push rsi
push rbp
push rbx
- sub rsp, 88
+ sub rsp, 80
vzeroupper
vmovaps xmmword ptr [rsp+0x40], xmm6
vxorps xmm4, xmm4, xmm4
@@ -37,21 +38,23 @@ G_M64110_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov edi, edx
mov rsi, r9
; gcrRegs +[rsi]
- ;; size=39 bbWeight=1 PerfScore 10.58
-G_M64110_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref
+ mov rbp, gword ptr [rsp+0xA0]
+ ; gcrRegs +[rbp]
+ ;; size=49 bbWeight=1 PerfScore 12.58
+G_M64110_IG02: ; bbWeight=1, gcrefRegs=0060 {rbp rsi}, byrefRegs=0008 {rbx}, byref
mov rcx, 0xD1FFAB1E ; <unknown class>
mov edx, 2
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
; gcr arg pop 0
mov gword ptr [rsp+0x20], rax
- xor ebp, ebp
- ;; size=27 bbWeight=1 PerfScore 2.75
-G_M64110_IG03: ; bbWeight=3.96, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx}, byref, isz
+ xor r14d, r14d
+ ;; size=28 bbWeight=1 PerfScore 2.75
+G_M64110_IG03: ; bbWeight=3.96, gcrefRegs=0060 {rbp rsi}, byrefRegs=0008 {rbx}, byref, isz
; gcrRegs -[rax]
mov rcx, gword ptr [rsp+0x20]
; gcrRegs +[rcx]
- mov edx, ebp
+ mov edx, r14d
shl rdx, 4
mov dword ptr [rcx+rdx+0x18], edi
mov rcx, gword ptr [rsp+0x20]
@@ -65,38 +68,37 @@ G_M64110_IG03: ; bbWeight=3.96, gcrefRegs=0040 {rsi}, byrefRegs=0008 {rbx
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rdx]
; byrRegs -[rcx]
- inc ebp
- cmp ebp, 2
+ inc r14d
+ cmp r14d, 2
jl SHORT G_M64110_IG03
- ;; size=51 bbWeight=3.96 PerfScore 41.58
-G_M64110_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ ;; size=54 bbWeight=3.96 PerfScore 41.58
+G_M64110_IG04: ; bbWeight=1.98, gcrefRegs=0020 {rbp}, byrefRegs=0008 {rbx}, byref
; gcrRegs -[rsi]
- mov rsi, gword ptr [rsp+0xA0]
- ; gcrRegs +[rsi]
- mov gword ptr [rsp+0x38], rsi
+ mov gword ptr [rsp+0x38], rbp
mov rdi, rbx
; byrRegs +[rdi]
lea rsi, bword ptr [rsp+0x20]
- ; gcrRegs -[rsi]
; byrRegs +[rsi]
call CORINFO_HELP_ASSIGN_BYREF
+ ; gcrRegs -[rbp]
movsq
movsq
call CORINFO_HELP_ASSIGN_BYREF
mov rax, rbx
; byrRegs +[rax]
- ;; size=38 bbWeight=1 PerfScore 7.00
-G_M64110_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=30 bbWeight=1.98 PerfScore 11.88
+G_M64110_IG05: ; bbWeight=1.98, epilog, nogc, extend
vmovaps xmm6, xmmword ptr [rsp+0x40]
- add rsp, 88
+ add rsp, 80
pop rbx
pop rbp
pop rsi
pop rdi
+ pop r14
ret
- ;; size=15 bbWeight=1 PerfScore 7.25
+ ;; size=17 bbWeight=1.98 PerfScore 15.35
-; Total bytes of code 170, prolog size 39, PerfScore 69.16, instruction count 47, allocated bytes for code 170 (MethodHash=4d410591) for method Helper:NewOUTER3(int,float,System.String,System.String):OUTER3 (FullOpts)
+; Total bytes of code 178, prolog size 49, PerfScore 84.14, instruction count 49, allocated bytes for code 178 (MethodHash=4d410591) for method Helper:NewOUTER3(int,float,System.String,System.String):OUTER3 (FullOpts)
; ============================================================
Unwind Info:
@@ -104,15 +106,16 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x11
- CountOfUnwindCodes: 7
+ SizeOfProlog : 0x13
+ CountOfUnwindCodes: 8
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x11 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
Scaled Small Offset: 4 * 16 = 64 = 0x00040
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
- 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: 9 * 8 + 8 = 80 = 0x50
+ 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)
+9 (+5.39%) : 425090.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
@@ -14,8 +14,8 @@
; V01 loc0 [V01 ] ( 1, 1 ) int -> [rsp+0xD0] do-not-enreg[X] addr-exposed ld-addr-op tier0-frame
;* V02 loc1 [V02 ] ( 0, 0 ) ref -> zero-ref class-hnd <ubyte[]>
;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <ubyte[]>
-; V04 loc3 [V04,T02] ( 3,100 ) ref -> rcx class-hnd <ubyte[]>
-; V05 loc4 [V05,T00] ( 11,400.98) int -> rdx
+; V04 loc3 [V04,T02] ( 3,100 ) ref -> rdx class-hnd <ubyte[]>
+; V05 loc4 [V05,T00] ( 11,400.98) int -> rcx
;* V06 loc5 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc6 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <ubyte[]>
;* V08 loc7 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd <ubyte[]>
@@ -25,7 +25,7 @@
;* V12 tmp2 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <ubyte[]>
;* V13 tmp3 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "dup spill" <ubyte[]>
;* V14 tmp4 [V14 ] ( 0, 0 ) int -> zero-ref
-; V15 tmp5 [V15,T03] ( 7, 0 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V15 tmp5 [V15,T03] ( 7, 0.10) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V16 tmp6 [V16 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V17 tmp7 [V17 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V18 tmp8 [V18 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
@@ -34,79 +34,95 @@
;* V21 tmp11 [V21 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V22 tmp12 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V23 tmp13 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
-; V24 tmp14 [V24,T05] ( 3, 0 ) ref -> r8 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V25 tmp15 [V25,T04] ( 4, 0 ) int -> rdx single-def "Inline stloc first use temp"
+; V24 tmp14 [V24,T05] ( 3, 0.02) ref -> rax class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V25 tmp15 [V25,T04] ( 4, 0.02) int -> rbx single-def "Inline stloc first use temp"
;* V26 tmp16 [V26 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V27 tmp17 [V27 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V28 tmp18 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <<unknown class>>
;* V29 tmp19 [V29 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
;* V30 tmp20 [V30 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V31 tmp21 [V31 ] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V32 cse0 [V32,T01] ( 5,101.01) int -> r8 "CSE - aggressive"
+; V32 cse0 [V32,T01] ( 5,101.01) int -> rax "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M51213_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
sub rsp, 40
- mov rcx, gword ptr [rsp+0xB8]
+ mov qword ptr [rsp+0x108], rbx
+ mov rdx, gword ptr [rsp+0xB8]
+ ; gcrRegs +[rdx]
+ mov ecx, dword ptr [rsp+0xB4]
+ ;; size=27 bbWeight=0.01 PerfScore 0.05
+G_M51213_IG02: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ mov eax, dword ptr [rdx+0x08]
+ cmp eax, ecx
+ jg SHORT G_M51213_IG05
+ ;; size=7 bbWeight=0.01 PerfScore 0.03
+G_M51213_IG03: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ xor ecx, ecx
+ mov dword ptr [(reloc)], ecx
+ mov rcx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
+ mov rcx, gword ptr [rcx]
; gcrRegs +[rcx]
- mov edx, dword ptr [rsp+0xB4]
- ;; size=19 bbWeight=0.01 PerfScore 0.04
-G_M51213_IG02: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov r8d, dword ptr [rcx+0x08]
- cmp r8d, edx
- jle SHORT G_M51213_IG07
- ;; size=9 bbWeight=0.01 PerfScore 0.03
-G_M51213_IG03: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- test edx, edx
- jl SHORT G_M51213_IG05
+ inc dword ptr [rcx+0x14]
+ mov rax, gword ptr [rcx+0x08]
+ ; gcrRegs +[rax]
+ mov ebx, dword ptr [rcx+0x10]
+ cmp dword ptr [rax+0x08], ebx
+ jbe SHORT G_M51213_IG12
+ ;; size=36 bbWeight=0.01 PerfScore 0.14
+G_M51213_IG04: ; bbWeight=0, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M51213_IG11
+ ;; size=2 bbWeight=0 PerfScore 0.00
+G_M51213_IG05: ; bbWeight=0.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rcx] +[rdx]
+ test ecx, ecx
+ jl SHORT G_M51213_IG08
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M51213_IG04: ; bbWeight=98.99, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- mov eax, edx
- mov byte ptr [rcx+rax+0x10], 255
- inc edx
- cmp r8d, edx
- jle SHORT G_M51213_IG07
- jmp SHORT G_M51213_IG04
- ;; size=16 bbWeight=98.99 PerfScore 470.20
-G_M51213_IG05: ; bbWeight=1.00, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
- cmp edx, r8d
- jae SHORT G_M51213_IG06
- mov eax, edx
- mov byte ptr [rcx+rax+0x10], 255
- inc edx
- cmp r8d, edx
- jle SHORT G_M51213_IG07
- jmp SHORT G_M51213_IG05
- ;; size=21 bbWeight=1.00 PerfScore 6.00
-G_M51213_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rcx]
+G_M51213_IG06: ; bbWeight=98.99, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ mov r8d, ecx
+ mov byte ptr [rdx+r8+0x10], 255
+ inc ecx
+ cmp eax, ecx
+ jg SHORT G_M51213_IG06
+ ;; size=15 bbWeight=98.99 PerfScore 272.22
+G_M51213_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ jmp SHORT G_M51213_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M51213_IG08: ; bbWeight=1.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rdx]
+ cmp ecx, eax
+ jae SHORT G_M51213_IG10
+ mov r8d, ecx
+ mov byte ptr [rdx+r8+0x10], 255
+ inc ecx
+ cmp eax, ecx
+ jg SHORT G_M51213_IG08
+ ;; size=19 bbWeight=1.00 PerfScore 4.00
+G_M51213_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rdx]
+ jmp SHORT G_M51213_IG03
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M51213_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M51213_IG07: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- xor edx, edx
- mov dword ptr [(reloc)], edx
- mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field>
- mov rcx, gword ptr [rdx]
- ; gcrRegs +[rcx]
- inc dword ptr [rcx+0x14]
- mov r8, gword ptr [rcx+0x08]
- ; gcrRegs +[r8]
- mov edx, dword ptr [rcx+0x10]
- cmp dword ptr [r8+0x08], edx
- jbe SHORT G_M51213_IG08
- lea eax, [rdx+0x01]
- mov dword ptr [rcx+0x10], eax
- movsxd rdx, edx
- mov rcx, r8
+G_M51213_IG11: ; bbWeight=0, gcrefRegs=0003 {rax rcx}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs +[rax rcx]
+ lea edx, [rbx+0x01]
+ mov dword ptr [rcx+0x10], edx
+ movsxd rdx, ebx
+ mov rcx, rax
mov r8, 0xD1FFAB1E
+ ; gcrRegs +[r8]
call [CORINFO_HELP_ARRADDR_ST]
- ; gcrRegs -[rcx r8]
+ ; gcrRegs -[rax rcx r8]
; gcr arg pop 0
- jmp SHORT G_M51213_IG09
- ;; size=67 bbWeight=0 PerfScore 0.00
-G_M51213_IG08: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M51213_IG13
+ ;; size=30 bbWeight=0 PerfScore 0.00
+G_M51213_IG12: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -114,16 +130,17 @@ G_M51213_IG08: ; bbWeight=0, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=16 bbWeight=0 PerfScore 0.00
-G_M51213_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M51213_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
nop
;; size=1 bbWeight=0 PerfScore 0.00
-G_M51213_IG10: ; bbWeight=0, epilog, nogc, extend
- add rsp, 272
+G_M51213_IG14: ; bbWeight=0, epilog, nogc, extend
+ add rsp, 264
+ pop rbx
pop rbp
ret
- ;; size=9 bbWeight=0 PerfScore 0.00
+ ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 167, prolog size 19, PerfScore 476.29, instruction count 45, allocated bytes for code 167 (MethodHash=998837f2) for method BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
+; Total bytes of code 176, prolog size 27, PerfScore 276.50, instruction count 48, allocated bytes for code 176 (MethodHash=998837f2) for method BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
; ============================================================
Unwind Info:
@@ -131,11 +148,13 @@ Unwind Info:
>> End offset : 0xd1ffab1e (not in unwind data)
Version : 1
Flags : 0x00
- SizeOfProlog : 0x04
- CountOfUnwindCodes: 4
+ SizeOfProlog : 0x0C
+ CountOfUnwindCodes: 6
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
+ CodeOffset: 0x0C UnwindOp: UWOP_SAVE_NONVOL (4) OpInfo: rbx (3)
+ Scaled Small Offset: 33 * 8 = 264 = 0x00108
CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
CodeOffset: 0x00 UnwindOp: UWOP_ALLOC_LARGE (1) OpInfo: 0 - Scaled small
Size: 29 * 8 = 232 = 0x000E8
libraries.crossgen2.windows.x64.checked.mch
-26 (-3.03%) : 9768.dasm - System.RuntimeType:ForwardCallToInvokeMember(System.String,int,System.Object,System.Object[],ubyte[],int[],System.Type[],System.Type):System.Object:this (FullOpts)
@@ -9,43 +9,43 @@
; 0 inlinees with PGO data; 4 single block inlinees; 1 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T14] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.RuntimeType>
-; V01 arg1 [V01,T15] ( 3, 3 ) ref -> r14 class-hnd single-def <System.String>
-; V02 arg2 [V02,T17] ( 3, 3 ) int -> r13 single-def
-; V03 arg3 [V03,T16] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Object>
-; V04 arg4 [V04,T08] ( 9, 8.50) ref -> rbx class-hnd single-def <System.Object[]>
-; V05 arg5 [V05,T13] ( 5, 5.54) ref -> rsi class-hnd single-def <ubyte[]>
-; V06 arg6 [V06,T22] ( 4, 2 ) ref -> [rbp+0x40] class-hnd single-def <int[]>
-; V07 arg7 [V07,T20] ( 6, 3.52) ref -> r12 class-hnd single-def <System.Type[]>
+; V00 this [V00,T16] ( 3, 3 ) ref -> rdi this class-hnd single-def <System.RuntimeType>
+; V01 arg1 [V01,T17] ( 3, 3 ) ref -> r14 class-hnd single-def <System.String>
+; V02 arg2 [V02,T19] ( 3, 3 ) int -> r13 single-def
+; V03 arg3 [V03,T18] ( 3, 3 ) ref -> r15 class-hnd single-def <System.Object>
+; V04 arg4 [V04,T09] ( 9, 8.50) ref -> rbx class-hnd single-def <System.Object[]>
+; V05 arg5 [V05,T14] ( 5, 5.54) ref -> rsi class-hnd single-def <ubyte[]>
+; V06 arg6 [V06,T22] ( 4, 3.48) ref -> [rbp+0x40] class-hnd single-def <int[]>
+; V07 arg7 [V07,T21] ( 6, 3.52) ref -> r12 class-hnd single-def <System.Type[]>
; V08 arg8 [V08,T25] ( 2, 1 ) ref -> [rbp+0x50] class-hnd single-def <System.Type>
; V09 loc0 [V09,T05] ( 10, 12.50) int -> [rbp-0x3C] spill-single-def
-; V10 loc1 [V10,T07] ( 7, 10.50) ref -> [rbp-0x60] class-hnd <<unknown class>>
-; V11 loc2 [V11,T18] ( 6, 4.50) ref -> rsi class-hnd <System.Object>
-; V12 loc3 [V12 ] ( 6, 9 ) struct ( 8) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.ParameterModifier>
+; V10 loc1 [V10,T06] ( 7, 11.98) ref -> registers class-hnd <<unknown class>>
+; V11 loc2 [V11,T15] ( 6, 5.48) ref -> rdi class-hnd <System.Object>
+; V12 loc3 [V12 ] ( 6, 10.48) struct ( 8) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Reflection.ParameterModifier>
; V13 loc4 [V13,T02] ( 13, 20.58) int -> rcx
-; V14 loc5 [V14,T01] ( 17, 23.08) int -> rdi
-; V15 loc6 [V15,T11] ( 6, 6 ) ref -> r13 class-hnd <System.Type>
+; V14 loc5 [V14,T01] ( 17, 23.08) int -> r14
+; V15 loc6 [V15,T12] ( 6, 6 ) ref -> r13 class-hnd <System.Type>
; V16 OutArgs [V16 ] ( 1, 1 ) struct (72) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V17 tmp1 [V17,T23] ( 2, 1 ) int -> rcx
-; V18 tmp2 [V18,T21] ( 3, 3 ) ref -> rsi class-hnd exact single-def "dup spill" <<unknown class>>
+; V18 tmp2 [V18,T07] ( 3, 11.88) ref -> rsi class-hnd exact single-def "dup spill" <<unknown class>>
; V19 tmp3 [V19,T27] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V20 tmp4 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp5 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; V22 tmp6 [V22,T03] ( 4, 16 ) ubyte -> r8 "Inlining Arg"
;* V23 tmp7 [V23 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-; V24 tmp8 [V24 ] ( 6, 9 ) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V12._byRef (fldOffset=0x0)" P-DEP
+; V24 tmp8 [V24 ] ( 6, 10.48) ref -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V12._byRef (fldOffset=0x0)" P-DEP
; V25 tmp9 [V25,T00] ( 6, 24 ) ref -> r13 "arr expr"
-; V26 tmp10 [V26,T09] ( 4, 8 ) ref -> rax "argument with side effect"
-; V27 tmp11 [V27,T10] ( 4, 8 ) ref -> rax "argument with side effect"
+; V26 tmp10 [V26,T10] ( 4, 8 ) ref -> rax "argument with side effect"
+; V27 tmp11 [V27,T11] ( 4, 8 ) ref -> rax "argument with side effect"
; V28 tmp12 [V28,T24] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
; V29 tmp13 [V29,T28] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V30 cse0 [V30,T26] ( 3, 0.06) ref -> rcx "CSE - conservative"
-; V31 cse1 [V31,T12] ( 3, 5.94) ref -> rcx "CSE - aggressive"
-; V32 cse2 [V32,T19] ( 5, 4 ) int -> [rbp-0x4C] spill-single-def "CSE - aggressive"
+; V31 cse1 [V31,T13] ( 3, 5.94) ref -> rcx "CSE - aggressive"
+; V32 cse2 [V32,T20] ( 5, 4 ) int -> [rbp-0x4C] spill-single-def "CSE - aggressive"
; V33 cse3 [V33,T04] ( 5, 13.86) long -> [rbp-0x58] spill-single-def "CSE - aggressive"
-; V34 cse4 [V34,T06] ( 3, 11.88) long -> rdx "CSE - aggressive"
+; V34 cse4 [V34,T08] ( 3, 11.88) long -> rdx "CSE - aggressive"
;
-; Lcl frame size = 120
+; Lcl frame size = 104
G_M53049_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push rbp
@@ -56,8 +56,8 @@ G_M53049_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rdi
push rsi
push rbx
- sub rsp, 120
- lea rbp, [rsp+0xB0]
+ sub rsp, 104
+ lea rbp, [rsp+0xA0]
xor eax, eax
mov qword ptr [rbp-0x48], rax
mov rdi, rcx
@@ -147,16 +147,18 @@ G_M53049_IG07: ; bbWeight=3.96, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15},
cmp ecx, eax
jl SHORT G_M53049_IG07
;; size=37 bbWeight=3.96 PerfScore 42.57
-G_M53049_IG08: ; bbWeight=0.50, gcrefRegs=D088 {rbx rdi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M53049_IG08: ; bbWeight=1.98, gcrefRegs=D088 {rbx rdi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rsi r10]
jmp SHORT G_M53049_IG14
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M53049_IG09: ; bbWeight=0.50, gcrefRegs=D488 {rbx rdi r10 r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[r10]
- jmp SHORT G_M53049_IG15
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ mov rsi, r10
+ ; gcrRegs +[rsi]
+ jmp SHORT G_M53049_IG16
+ ;; size=5 bbWeight=0.50 PerfScore 1.12
G_M53049_IG10: ; bbWeight=0.25, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[r10] +[rsi]
+ ; gcrRegs -[r10]
mov eax, dword ptr [rbp-0x4C]
mov r8, gword ptr [rbp+0x40]
; gcrRegs +[r8]
@@ -185,7 +187,7 @@ G_M53049_IG13: ; bbWeight=0.04, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15},
cmp ecx, eax
jl G_M53049_IG23
;; size=53 bbWeight=0.04 PerfScore 0.60
-G_M53049_IG14: ; bbWeight=0.50, gcrefRegs=D088 {rbx rdi r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M53049_IG14: ; bbWeight=1.98, gcrefRegs=D088 {rbx rdi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rdx rsi]
mov ecx, 1
call [CORINFO_HELP_READYTORUN_NEWARR_1]
@@ -203,7 +205,9 @@ G_M53049_IG14: ; bbWeight=0.50, gcrefRegs=D088 {rbx rdi r12 r14 r15}, byr
mov rax, gword ptr [rbp+0x40]
; gcrRegs +[rax]
test rax, rax
- je G_M53049_IG22
+ je SHORT G_M53049_IG16
+ ;; size=37 bbWeight=1.98 PerfScore 20.30
+G_M53049_IG15: ; bbWeight=0.50, gcrefRegs=D0C9 {rax rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, rax
@@ -211,26 +215,21 @@ G_M53049_IG14: ; bbWeight=0.50, gcrefRegs=D088 {rbx rdi r12 r14 r15}, byr
call [<unknown method>]
; gcrRegs -[rax rcx rdx]
; gcr arg pop 0
- mov r10, rsi
- ; gcrRegs +[r10]
- ;; size=56 bbWeight=0.50 PerfScore 7.00
-G_M53049_IG15: ; bbWeight=1, gcrefRegs=D488 {rbx rdi r10 r12 r14 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi]
+ ;; size=12 bbWeight=0.50 PerfScore 1.75
+G_M53049_IG16: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
mov gword ptr [rsp+0x20], r15
; gcr arg write
mov gword ptr [rsp+0x28], rbx
; gcr arg write
- mov gword ptr [rbp-0x60], r10
- ; GC ptr vars +{V10}
- mov gword ptr [rsp+0x30], r10
+ mov gword ptr [rsp+0x30], rsi
; gcr arg write
xor r8, r8
; gcrRegs +[r8]
mov gword ptr [rsp+0x38], r8
; gcr arg write
- ;; size=27 bbWeight=1 PerfScore 5.25
-G_M53049_IG16: ; bbWeight=1, gcVars=0000000000000080 {V10}, gcrefRegs=5088 {rbx rdi r12 r14}, byrefRegs=0000 {}, gcvars, byref
- ; gcrRegs -[r8 r10 r15]
+ ;; size=23 bbWeight=1 PerfScore 4.25
+G_M53049_IG17: ; bbWeight=1, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r8 r15]
mov gword ptr [rsp+0x40], r8
; gcr arg write
mov r8d, r13d
@@ -245,48 +244,45 @@ G_M53049_IG16: ; bbWeight=1, gcVars=0000000000000080 {V10}, gcrefRegs=508
call [<unknown method>]
; gcrRegs -[rcx rdx rdi r9 r14] +[rax]
; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- xor edi, edi
- mov r14d, dword ptr [rbp-0x3C]
- test r14d, r14d
+ mov rdi, rax
+ ; gcrRegs +[rdi]
+ xor r14d, r14d
+ mov r15d, dword ptr [rbp-0x3C]
+ test r15d, r15d
jle G_M53049_IG27
- ;; size=50 bbWeight=1 PerfScore 11.00
-G_M53049_IG17: ; bbWeight=0.50, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref
+ ;; size=51 bbWeight=1 PerfScore 11.00
+G_M53049_IG18: ; bbWeight=0.50, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test r12, r12
je G_M53049_IG24
- cmp dword ptr [r12+0x08], r14d
+ cmp dword ptr [r12+0x08], r15d
jl G_M53049_IG24
;; size=20 bbWeight=0.50 PerfScore 2.62
-G_M53049_IG18: ; bbWeight=3.96, gcrefRegs=1048 {rbx rsi r12}, byrefRegs=0000 {}, byref, isz
- mov r15, gword ptr [rbp-0x60]
- ; gcrRegs +[r15]
- cmp dword ptr [r15+0x08], 0
+G_M53049_IG19: ; bbWeight=3.96, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rsi+0x08], 0
jbe G_M53049_IG31
- mov r13, gword ptr [r15+0x10]
+ mov r13, gword ptr [rsi+0x10]
; gcrRegs +[r13]
- cmp edi, dword ptr [r13+0x08]
+ cmp r14d, dword ptr [r13+0x08]
jae G_M53049_IG31
- mov eax, edi
+ mov eax, r14d
mov qword ptr [rbp-0x58], rax
cmp byte ptr [r13+rax+0x10], 0
- je SHORT G_M53049_IG20
- ;; size=43 bbWeight=3.96 PerfScore 64.35
-G_M53049_IG19: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=9048 {rbx rsi r12 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ je SHORT G_M53049_IG21
+ ;; size=39 bbWeight=3.96 PerfScore 60.39
+G_M53049_IG20: ; bbWeight=1.98, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r13]
- ; GC ptr vars -{V10}
mov rcx, gword ptr [rbx+8*rax+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- je SHORT G_M53049_IG20
+ je SHORT G_M53049_IG21
mov r13, gword ptr [r12+8*rax+0x10]
; gcrRegs +[r13]
call [<unknown method>]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
cmp rax, r13
- je SHORT G_M53049_IG20
+ je SHORT G_M53049_IG21
call [System.RuntimeType:get_ForwardCallBinder():System.OleAutBinder]
; gcr arg pop 0
mov rcx, rax
@@ -304,62 +300,49 @@ G_M53049_IG19: ; bbWeight=1.98, gcVars=0000000000000000 {}, gcrefRegs=904
; gcr arg pop 0
mov r8, rax
; gcrRegs +[r8]
- movsxd rdx, edi
+ movsxd rdx, r14d
mov rcx, rbx
; gcrRegs +[rcx]
call [CORINFO_HELP_ARRADDR_ST]
; gcrRegs -[rax rcx r8]
; gcr arg pop 0
;; size=73 bbWeight=1.98 PerfScore 51.48
-G_M53049_IG20: ; bbWeight=3.96, gcrefRegs=9048 {rbx rsi r12 r15}, byrefRegs=0000 {}, byref, isz
- inc edi
- cmp edi, r14d
- mov gword ptr [rbp-0x60], r15
- ; GC ptr vars +{V10}
- jl SHORT G_M53049_IG18
- ;; size=11 bbWeight=3.96 PerfScore 9.90
-G_M53049_IG21: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx r12 r15]
- ; GC ptr vars -{V10}
+G_M53049_IG21: ; bbWeight=3.96, gcrefRegs=10C8 {rbx rsi rdi r12}, byrefRegs=0000 {}, byref, isz
+ inc r14d
+ cmp r14d, r15d
+ jl SHORT G_M53049_IG19
+ ;; size=8 bbWeight=3.96 PerfScore 5.94
+G_M53049_IG22: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi r12]
jmp G_M53049_IG27
...
-8 (-2.26%) : 25408.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
@@ -85,24 +85,24 @@ G_M48063_IG04: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs -[rcx]
jmp G_M48063_IG15
;; size=57 bbWeight=0.50 PerfScore 9.62
-G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
mov rcx, gword ptr [rbx+0x10]
; gcrRegs +[rcx]
test rcx, rcx
- je G_M48063_IG14
- ;; size=13 bbWeight=0.50 PerfScore 1.62
+ je SHORT G_M48063_IG14
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
G_M48063_IG06: ; bbWeight=0.25, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp dword ptr [rcx+0x08], 5
jne SHORT G_M48063_IG14
;; size=6 bbWeight=0.25 PerfScore 1.00
G_M48063_IG07: ; bbWeight=0.12, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8, 0xD1FFAB1E
- xor r8, qword ptr [rcx+0x0C]
+ mov rax, 0xD1FFAB1E
+ xor rax, qword ptr [rcx+0x0C]
mov ecx, dword ptr [rcx+0x12]
; gcrRegs -[rcx]
xor ecx, 0xD1FFAB1E
- or rcx, r8
+ or rcx, rax
jne SHORT G_M48063_IG14
;; size=28 bbWeight=0.12 PerfScore 0.84
G_M48063_IG08: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
@@ -115,26 +115,26 @@ G_M48063_IG09: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
jg SHORT G_M48063_IG12
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M48063_IG10: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov eax, ecx
+ cmp word ptr [rsi+2*rax+0x10], 4
je SHORT G_M48063_IG14
inc ecx
cmp ecx, edi
jl SHORT G_M48063_IG10
- ;; size=18 bbWeight=3.96 PerfScore 22.77
-G_M48063_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=3.96 PerfScore 22.77
+G_M48063_IG11: ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M48063_IG13
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M48063_IG12: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp ecx, 23
jae SHORT G_M48063_IG17
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov eax, ecx
+ cmp word ptr [rsi+2*rax+0x10], 4
je SHORT G_M48063_IG14
inc ecx
cmp ecx, edi
jl SHORT G_M48063_IG12
- ;; size=23 bbWeight=0.04 PerfScore 0.28
+ ;; size=21 bbWeight=0.04 PerfScore 0.28
G_M48063_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc edi
mov dword ptr [rsp+0x20], 21
@@ -191,7 +191,7 @@ G_M48063_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 354, prolog size 11, PerfScore 73.33, instruction count 91, allocated bytes for code 354 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
+; Total bytes of code 346, prolog size 11, PerfScore 76.29, instruction count 91, allocated bytes for code 346 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
; ============================================================
Unwind Info:
-11 (-1.38%) : 250971.dasm - System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this (FullOpts)
@@ -9,32 +9,32 @@
; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 10, 24 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.DirectoryServices.Protocols.SortRequestControl>
-; V01 loc0 [V01,T07] ( 6, 26.42) ref -> rsi class-hnd exact single-def <<unknown class>>
-; V02 loc1 [V02 ] ( 5, 5 ) long -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op
-; V03 loc2 [V03,T15] ( 2, 8.92) int -> rbx single-def
+; V00 this [V00,T06] ( 10, 26.96) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.DirectoryServices.Protocols.SortRequestControl>
+; V01 loc0 [V01,T08] ( 6, 26.42) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V02 loc1 [V02 ] ( 5, 7.96) long -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V03 loc2 [V03,T16] ( 2, 8.92) int -> rbx single-def
; V04 loc3 [V04,T12] ( 6, 18.92) int -> [rbp-0x34] EH-live spill-single-def
-; V05 loc4 [V05,T13] ( 6, 12 ) long -> [rbp-0x40] EH-live spill-single-def
+; V05 loc4 [V05,T14] ( 6, 14.96) long -> [rbp-0x40] EH-live spill-single-def
; V06 loc5 [V06,T01] ( 7, 49 ) int -> rdi
-; V07 loc6 [V07,T14] ( 3, 9.92) long -> rdi single-def
+; V07 loc6 [V07,T15] ( 3, 12.88) long -> rdi single-def
; V08 loc7 [V08,T11] ( 3, 23.76) long -> r15
-; V09 loc8 [V09,T03] ( 7, 41.60) int -> r14
-; V10 loc9 [V10,T23] ( 2, 2 ) ubyte -> rbx single-def
-; V11 loc10 [V11,T22] ( 6, 2 ) int -> rbx single-def
+; V09 loc8 [V09,T03] ( 7, 44.56) int -> r14
+; V10 loc9 [V10,T19] ( 2, 7.92) ubyte -> rsi single-def
+; V11 loc10 [V11,T18] ( 6, 7.92) int -> rsi single-def
;* V12 loc11 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def <System.DirectoryServices.Protocols.LdapControl>
-; V13 loc12 [V13,T17] ( 4, 4 ) ref -> rbx class-hnd exact single-def <<unknown class>>
-; V14 loc13 [V14,T27] ( 2, 0 ) ref -> rsi class-hnd single-def <<unknown class>>
+; V13 loc12 [V13,T20] ( 4, 4 ) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V14 loc13 [V14,T27] ( 2, 0 ) ref -> rdi class-hnd single-def <<unknown class>>
; V15 loc14 [V15,T04] ( 5, 33 ) int -> rbx
-; V16 loc15 [V16,T06] ( 5, 28 ) long -> rsi
+; V16 loc15 [V16,T07] ( 5, 28 ) long -> rsi
; V17 loc16 [V17,T09] ( 6, 24 ) long -> rax
; V18 OutArgs [V18 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
; V19 tmp1 [V19 ] ( 5, 80 ) struct (24) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.DirectoryServices.Protocols.SortKeyInterop>
-; V20 tmp2 [V20,T16] ( 4, 8 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapControl>
-; V21 tmp3 [V21,T25] ( 3, 0 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V22 tmp4 [V22,T26] ( 3, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V20 tmp2 [V20,T17] ( 4, 8 ) ref -> rsi class-hnd exact single-def "NewObj constructor temp" <System.DirectoryServices.Protocols.LdapControl>
+; V21 tmp3 [V21,T25] ( 3, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V22 tmp4 [V22,T26] ( 3, 0 ) ref -> r14 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V23 tmp5 [V23 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.DirectoryServices.Protocols.ConnectionHandle>
;* V24 tmp6 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp7 [V25,T19] ( 2, 4 ) long -> rcx "Inlining Arg"
+; V25 tmp7 [V25,T21] ( 2, 4 ) long -> rcx "Inlining Arg"
; V26 tmp8 [V26 ] ( 3, 40 ) ref -> [rbp-0x58] do-not-enreg[X] addr-exposed "field V19.<AttributeName>k__BackingField (fldOffset=0x0)" P-DEP
; V27 tmp9 [V27 ] ( 3, 40 ) ref -> [rbp-0x50] do-not-enreg[X] addr-exposed "field V19.<MatchingRule>k__BackingField (fldOffset=0x8)" P-DEP
; V28 tmp10 [V28 ] ( 3, 40 ) ubyte -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V19.<ReverseOrder>k__BackingField (fldOffset=0x10)" P-DEP
@@ -42,10 +42,10 @@
; V30 tmp12 [V30,T05] ( 2, 32 ) ref -> rdx "argument with side effect"
; V31 tmp13 [V31,T00] ( 4, 64 ) byref -> rbx "BlockOp address local"
; V32 tmp14 [V32 ] ( 2, 31.68) struct (24) [rbp-0x70] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.DirectoryServices.Protocols.SortKeyInterop>
-; V33 tmp15 [V33,T18] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
+; V33 tmp15 [V33,T13] ( 2, 15.84) ref -> rcx single-def "argument with side effect"
; V34 PSPSym [V34,T24] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym"
-; V35 cse0 [V35,T20] ( 3, 3 ) ref -> rbx "CSE - moderate"
-; V36 cse1 [V36,T21] ( 3, 3 ) int -> rsi "CSE - moderate"
+; V35 cse0 [V35,T22] ( 3, 3 ) ref -> rbx "CSE - moderate"
+; V36 cse1 [V36,T23] ( 3, 3 ) int -> rdi "CSE - moderate"
; V37 cse2 [V37,T10] ( 3, 24 ) long -> rbx "CSE - aggressive"
;
; Lcl frame size = 120
@@ -70,7 +70,7 @@ G_M6630_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov gword ptr [rbp+0x10], rcx
; GC ptr vars +{V00}
;; size=53 bbWeight=1 PerfScore 18.33
-G_M6630_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M6630_IG02: ; bbWeight=1, gcVars=0000000000000040 {V00}, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rcx]
mov rbx, gword ptr [rcx+0x20]
; gcrRegs +[rbx]
@@ -95,7 +95,7 @@ G_M6630_IG03: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byre
mov rdx, gword ptr [rcx+0x20]
; gcrRegs +[rdx]
cmp edi, dword ptr [rdx+0x08]
- jae G_M6630_IG17
+ jae G_M6630_IG18
mov ebx, edi
mov rdx, gword ptr [rdx+8*rbx+0x10]
lea rcx, [rbp-0x58]
@@ -104,7 +104,7 @@ G_M6630_IG03: ; bbWeight=8, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byre
; gcrRegs -[rdx]
; gcr arg pop 0
cmp edi, dword ptr [rsi+0x08]
- jae G_M6630_IG17
+ jae G_M6630_IG18
lea rcx, [rbx+2*rbx]
lea rbx, bword ptr [rsi+8*rcx+0x10]
; byrRegs +[rbx]
@@ -189,22 +189,21 @@ G_M6630_IG09: ; bbWeight=7.92, isz, extend
cmp r14d, dword ptr [rbp-0x34]
jl SHORT G_M6630_IG07
;; size=32 bbWeight=7.92 PerfScore 67.32
-G_M6630_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M6630_IG10: ; bbWeight=3.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi]
movsxd rax, r14d
xor edx, edx
mov qword ptr [rdi+8*rax], rdx
- mov rax, gword ptr [rbp+0x10]
- ; gcrRegs +[rax]
- movzx rbx, byte ptr [rax+0x18]
+ mov rbx, gword ptr [rbp+0x10]
+ ; gcrRegs +[rbx]
+ movzx rsi, byte ptr [rbx+0x18]
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE]
- ; gcrRegs -[rax]
; byrRegs +[rax]
; gcr arg pop 0
mov rcx, gword ptr [rax+0x18]
; gcrRegs +[rcx]
xor r8d, r8d
- test ebx, ebx
+ test esi, esi
setne r8b
lea r9, [rbp-0x30]
mov rdx, qword ptr [rbp-0x40]
@@ -212,115 +211,112 @@ G_M6630_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
; gcrRegs -[rcx]
; byrRegs -[rax]
; gcr arg pop 0
- mov ebx, eax
- test ebx, ebx
- jne G_M6630_IG12
+ mov esi, eax
+ test esi, esi
+ jne G_M6630_IG13
+ ;; size=61 bbWeight=3.96 PerfScore 67.32
+G_M6630_IG11: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rbx, rax
- ; gcrRegs +[rbx]
+ mov rsi, rax
+ ; gcrRegs +[rsi]
xor ecx, ecx
- mov qword ptr [rbx+0x10], rcx
+ mov qword ptr [rsi+0x10], rcx
mov rcx, qword ptr [(reloc)] ; <unknown method>
mov rdx, qword ptr [rbp-0x30]
- mov r8, rbx
+ mov r8, rsi
; gcrRegs +[r8]
call [<unknown method>]
; gcrRegs -[rax r8]
; gcr arg pop 0
- mov rbx, gword ptr [rbx+0x08]
+ mov rsi, gword ptr [rsi+0x08]
xor rcx, rcx
; gcrRegs +[rcx]
- mov rax, gword ptr [rbp+0x10]
- ; gcrRegs +[rax]
- mov gword ptr [rax+0x08], rcx
- test rbx, rbx
- je G_M6630_IG13
- mov esi, dword ptr [rbx+0x08]
- movsxd rcx, esi
+ mov gword ptr [rbx+0x08], rcx
+ test rsi, rsi
+ je G_M6630_IG14
+ mov edi, dword ptr [rsi+0x08]
+ movsxd rcx, edi
; gcrRegs -[rcx]
call [CORINFO_HELP_READYTORUN_NEWARR_1]
+ ; gcrRegs +[rax]
; gcr arg pop 0
- mov r8, gword ptr [rbp+0x10]
- ; gcrRegs +[r8]
- lea rcx, bword ptr [r8+0x08]
+ lea rcx, bword ptr [rbx+0x08]
; byrRegs +[rcx]
mov rdx, rax
; gcrRegs +[rdx]
call [CORINFO_HELP_ASSIGN_REF]
- ; gcrRegs -[rax rdx r8]
+ ; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rcx, qword ptr [rbx+0x10]
- mov r8, gword ptr [rbp+0x10]
- ; gcrRegs +[r8]
- mov rdx, gword ptr [r8+0x08]
+ mov rcx, qword ptr [rsi+0x10]
+ mov rdx, gword ptr [rbx+0x08]
; gcrRegs +[rdx]
- mov r9d, esi
+ mov r9d, edi
xor r8d, r8d
- ; gcrRegs -[r8]
call [<unknown method>]
- ; gcrRegs -[rdx rbx]
+ ; gcrRegs -[rdx rsi]
; gcr arg pop 0
- jmp SHORT G_M6630_IG13
- ;; size=173 bbWeight=1 PerfScore 53.75
-G_M6630_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jmp SHORT G_M6630_IG14
+ ;; size=101 bbWeight=1 PerfScore 33.75
+G_M6630_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- mov rcx, rsi
- ; gcrRegs +[rcx]
- mov edx, ebx
- call [<unknown method>]
- ; gcrRegs -[rax rcx]
- ; gcr arg pop 0
- mov rcx, rsi
- ; gcrRegs +[rcx]
- call [CORINFO_HELP_THROW]
- ; gcrRegs -[rcx rsi]
- ; gcr arg pop 0
- ;; size=29 bbWeight=0 PerfScore 0.00
-G_M6630_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- mov ecx, ebx
- call [System.DirectoryServices.Protocols.LdapErrorMappings:IsLdapError(int):ubyte]
- ; gcr arg pop 0
- test eax, eax
- je SHORT G_M6630_IG11
- mov ecx, ebx
- call [<unknown method>]
- ; gcrRegs +[rax]
- ; gcr arg pop 0
- mov rsi, rax
- ; gcrRegs +[rsi]
- call [CORINFO_HELP_READYTORUN_NEW]
- ; gcr arg pop 0
mov rdi, rax
; gcrRegs +[rdi]
mov rcx, rdi
; gcrRegs +[rcx]
- mov edx, ebx
- mov r8, rsi
- ; gcrRegs +[r8]
+ mov edx, esi
call [<unknown method>]
- ; gcrRegs -[rax rcx rsi r8]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0
mov rcx, rdi
; gcrRegs +[rcx]
call [CORINFO_HELP_THROW]
; gcrRegs -[rcx rdi]
+ ; gcr arg pop 0
+ ;; size=29 bbWeight=0 PerfScore 0.00
+G_M6630_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
...
+10 (+4.20%) : 182249.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
@@ -8,9 +8,9 @@
; No matching PGO data
; Final local variable assignments
;
-; V00 this [V00,T02] ( 7, 9 ) byref -> rbx this single-def
+; V00 this [V00,T02] ( 7, 9.98) byref -> rbx this single-def
; V01 loc0 [V01,T03] ( 6, 8 ) int -> rsi single-def
-; V02 loc1 [V02,T04] ( 6, 7.04) ref -> rdi class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
+; V02 loc1 [V02,T04] ( 6, 6.54) ref -> rdi class-hnd exact single-def <Internal.TypeSystem.TypeDesc[]>
; V03 loc2 [V03 ] ( 2, 2 ) struct ( 8) [rsp+0x20] do-not-enreg[XS] addr-exposed ld-addr-op <System.Reflection.Metadata.SignatureHeader>
; V04 loc3 [V04,T00] ( 10, 17.04) int -> rbp
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -45,7 +45,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
call [<unknown method>]
; gcr arg pop 0
cmp eax, 10
- jne G_M22286_IG09
+ jne G_M22286_IG12
mov rcx, rsi
; byrRegs +[rcx]
call [<unknown method>]
@@ -53,7 +53,7 @@ G_M22286_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
; gcr arg pop 0
mov esi, eax
test esi, esi
- jle G_M22286_IG10
+ jle G_M22286_IG13
movsxd rcx, esi
call [CORINFO_HELP_READYTORUN_NEWARR_1]
; gcrRegs +[rax]
@@ -84,9 +84,9 @@ G_M22286_IG03: ; bbWeight=3.96, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx
cmp ebp, esi
jl SHORT G_M22286_IG03
;; size=31 bbWeight=3.96 PerfScore 36.63
-G_M22286_IG04: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
+G_M22286_IG04: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
jmp SHORT G_M22286_IG06
- ;; size=2 bbWeight=1 PerfScore 2.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M22286_IG05: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
mov rcx, rbx
; byrRegs +[rcx]
@@ -95,7 +95,7 @@ G_M22286_IG05: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx
; byrRegs -[rcx]
; gcr arg pop 0
cmp ebp, dword ptr [rdi+0x08]
- jae SHORT G_M22286_IG08
+ jae SHORT G_M22286_IG11
mov ecx, ebp
lea rcx, bword ptr [rdi+8*rcx+0x10]
; byrRegs +[rcx]
@@ -108,27 +108,42 @@ G_M22286_IG05: ; bbWeight=0.04, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx
cmp ebp, esi
jl SHORT G_M22286_IG05
;; size=36 bbWeight=0.04 PerfScore 0.53
-G_M22286_IG06: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref
- xor rax, rax
- ; gcrRegs +[rax]
+G_M22286_IG06: ; bbWeight=1.98, gcrefRegs=0080 {rdi}, byrefRegs=0008 {rbx}, byref, isz
cmp gword ptr [rbx+0x18], 0
- cmove rax, rdi
- ;; size=11 bbWeight=1 PerfScore 3.50
-G_M22286_IG07: ; bbWeight=1, epilog, nogc, extend
+ jne SHORT G_M22286_IG09
+ ;; size=7 bbWeight=1.98 PerfScore 7.92
+G_M22286_IG07: ; bbWeight=0.50, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rbx]
+ mov rax, rdi
+ ; gcrRegs +[rax]
+ ;; size=3 bbWeight=0.50 PerfScore 0.12
+G_M22286_IG08: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40
pop rbx
pop rbp
pop rsi
pop rdi
ret
- ;; size=9 bbWeight=1 PerfScore 3.25
-G_M22286_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M22286_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rdi]
- ; byrRegs -[rbx]
+ xor rax, rax
+ ; gcrRegs +[rax]
+ ;; size=2 bbWeight=0.50 PerfScore 0.12
+G_M22286_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ add rsp, 40
+ pop rbx
+ pop rbp
+ pop rsi
+ pop rdi
+ ret
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M22286_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ; gcrRegs -[rax]
call [CORINFO_HELP_RNGCHKFAIL]
; gcr arg pop 0
;; size=6 bbWeight=0 PerfScore 0.00
-G_M22286_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -145,7 +160,7 @@ G_M22286_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx rbx]
; gcr arg pop 0
;; size=27 bbWeight=0 PerfScore 0.00
-G_M22286_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M22286_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [CORINFO_HELP_READYTORUN_NEW]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -164,7 +179,7 @@ G_M22286_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
int3
;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 238, prolog size 8, PerfScore 75.41, instruction count 70, allocated bytes for code 238 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
+; Total bytes of code 248, prolog size 8, PerfScore 82.04, instruction count 77, allocated bytes for code 248 (MethodHash=a84da8f1) for method Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
; ============================================================
Unwind Info:
+7 (+4.86%) : 157434.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -11,8 +11,8 @@
;
; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 5, 7 ) ref -> rdx class-hnd single-def <System.String>
-; V02 loc0 [V02,T05] ( 4, 3.50) int -> r8 single-def
-; V03 loc1 [V03,T06] ( 4, 3.50) int -> r9 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> r8 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> r9 single-def
; V04 loc2 [V04,T04] ( 7, 7.50) int -> r11 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> rbx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -52,61 +52,72 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000
mov eax, ebx
movzx r10, word ptr [rcx+2*rax+0x0C]
cmp r10w, word ptr [rdx+2*rax+0x0C]
- jne SHORT G_M50530_IG09
+ jne SHORT G_M50530_IG10
inc ebx
cmp ebx, r11d
jl SHORT G_M50530_IG04
;; size=23 bbWeight=3.96 PerfScore 30.69
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rdx]
jmp SHORT G_M50530_IG07
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
cmp ebx, eax
- jae SHORT G_M50530_IG11
+ jae SHORT G_M50530_IG14
mov esi, ebx
movzx rsi, word ptr [rcx+2*rsi+0x0C]
cmp ebx, r10d
- jae SHORT G_M50530_IG11
+ jae SHORT G_M50530_IG14
mov edi, ebx
cmp si, word ptr [rdx+2*rdi+0x0C]
- jne SHORT G_M50530_IG09
+ jne SHORT G_M50530_IG10
inc ebx
cmp ebx, r11d
jl SHORT G_M50530_IG06
;; size=32 bbWeight=0.04 PerfScore 0.42
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rdx]
- mov eax, -1
- inc r11d
cmp r8d, r9d
- cmovne eax, r11d
- ;; size=15 bbWeight=0.50 PerfScore 0.50
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ je SHORT G_M50530_IG12
+ ;; size=5 bbWeight=1.98 PerfScore 2.48
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea eax, [r11+0x01]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; 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_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ebx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; 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_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, -1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M50530_IG13: ; 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_M50530_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 144, prolog size 7, PerfScore 46.73, instruction count 55, allocated bytes for code 144 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 151, prolog size 7, PerfScore 53.42, instruction count 60, allocated bytes for code 151 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
+7 (+4.86%) : 192088.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -11,8 +11,8 @@
;
; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 5, 7 ) ref -> rdx class-hnd single-def <System.String>
-; V02 loc0 [V02,T05] ( 4, 3.50) int -> r8 single-def
-; V03 loc1 [V03,T06] ( 4, 3.50) int -> r9 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> r8 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> r9 single-def
; V04 loc2 [V04,T04] ( 7, 7.50) int -> r11 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> rbx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -52,61 +52,72 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000
mov eax, ebx
movzx r10, word ptr [rcx+2*rax+0x0C]
cmp r10w, word ptr [rdx+2*rax+0x0C]
- jne SHORT G_M50530_IG09
+ jne SHORT G_M50530_IG10
inc ebx
cmp ebx, r11d
jl SHORT G_M50530_IG04
;; size=23 bbWeight=3.96 PerfScore 30.69
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rdx]
jmp SHORT G_M50530_IG07
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
cmp ebx, eax
- jae SHORT G_M50530_IG11
+ jae SHORT G_M50530_IG14
mov esi, ebx
movzx rsi, word ptr [rcx+2*rsi+0x0C]
cmp ebx, r10d
- jae SHORT G_M50530_IG11
+ jae SHORT G_M50530_IG14
mov edi, ebx
cmp si, word ptr [rdx+2*rdi+0x0C]
- jne SHORT G_M50530_IG09
+ jne SHORT G_M50530_IG10
inc ebx
cmp ebx, r11d
jl SHORT G_M50530_IG06
;; size=32 bbWeight=0.04 PerfScore 0.42
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rdx]
- mov eax, -1
- inc r11d
cmp r8d, r9d
- cmovne eax, r11d
- ;; size=15 bbWeight=0.50 PerfScore 0.50
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ je SHORT G_M50530_IG12
+ ;; size=5 bbWeight=1.98 PerfScore 2.48
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea eax, [r11+0x01]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; 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_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ebx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; 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_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, -1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M50530_IG13: ; 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_M50530_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 144, prolog size 7, PerfScore 46.73, instruction count 55, allocated bytes for code 144 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 151, prolog size 7, PerfScore 53.42, instruction count 60, allocated bytes for code 151 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
libraries.pmi.windows.x64.checked.mch
-7 (-12.96%) : 25678.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,26 +10,26 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> rcx single-def
; V01 arg1 [V01,T04] ( 4, 6.19) int -> rdx ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.19) int -> r8 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> r8 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r9 single-def
-; V04 loc0 [V04,T00] ( 7, 19.81) int -> rax
+; V04 loc0 [V04,T00] ( 7, 18.73) int -> rax
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> r10
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.39) int -> r9 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.39) int -> r10 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> r10 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
G_M34838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs +[rcx]
lea eax, [r9-0x01]
test eax, eax
- jl SHORT G_M34838_IG08
+ jl SHORT G_M34838_IG06
;; size=8 bbWeight=1 PerfScore 1.75
G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
movsxd r10, eax
@@ -43,38 +43,26 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
;; size=18 bbWeight=4 PerfScore 17.00
G_M34838_IG04: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp edx, r9d
- jg SHORT G_M34838_IG06
+ jg SHORT G_M34838_IG08
;; size=5 bbWeight=0.19 PerfScore 0.24
G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp r8d, r10d
- jge SHORT G_M34838_IG10
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M34838_IG06: ; bbWeight=1.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1.81 PerfScore 1.81
-G_M34838_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
+ jl SHORT G_M34838_IG08
dec eax
jns SHORT G_M34838_IG03
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M34838_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=9 bbWeight=4 PerfScore 10.00
+G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M34838_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG10: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
- cmp r8d, r10d
- jle SHORT G_M34838_IG07
- ;; size=5 bbWeight=0.19 PerfScore 0.24
-G_M34838_IG11: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
- jmp SHORT G_M34838_IG07
- ;; size=2 bbWeight=0.04 PerfScore 0.08
+G_M34838_IG08: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=0.73 PerfScore 0.73
-; Total bytes of code 54, prolog size 0, PerfScore 31.74, instruction count 21, allocated bytes for code 54 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 47, prolog size 0, PerfScore 30.35, instruction count 18, allocated bytes for code 47 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-7 (-12.96%) : 120524.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,26 +10,26 @@
;
; V00 arg0 [V00,T06] ( 3, 6 ) byref -> rcx single-def
; V01 arg1 [V01,T04] ( 4, 6.19) int -> rdx ld-addr-op single-def
-; V02 arg2 [V02,T05] ( 4, 6.19) int -> r8 ld-addr-op single-def
+; V02 arg2 [V02,T05] ( 3, 6 ) int -> r8 ld-addr-op single-def
; V03 arg3 [V03,T08] ( 3, 3 ) int -> r9 single-def
-; V04 loc0 [V04,T00] ( 7, 19.81) int -> rax
+; V04 loc0 [V04,T00] ( 7, 18.73) int -> rax
; V05 loc1 [V05,T07] ( 2, 8 ) byref -> r10
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.39) int -> r9 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.39) int -> r10 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> r10 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M34838_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M34838_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
G_M34838_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs +[rcx]
lea eax, [r9-0x01]
test eax, eax
- jl SHORT G_M34838_IG08
+ jl SHORT G_M34838_IG06
;; size=8 bbWeight=1 PerfScore 1.75
G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
movsxd r10, eax
@@ -43,38 +43,26 @@ G_M34838_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
;; size=18 bbWeight=4 PerfScore 17.00
G_M34838_IG04: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp edx, r9d
- jg SHORT G_M34838_IG06
+ jg SHORT G_M34838_IG08
;; size=5 bbWeight=0.19 PerfScore 0.24
G_M34838_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp r8d, r10d
- jge SHORT G_M34838_IG10
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M34838_IG06: ; bbWeight=1.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1.81 PerfScore 1.81
-G_M34838_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
+ jl SHORT G_M34838_IG08
dec eax
jns SHORT G_M34838_IG03
- ;; size=4 bbWeight=4 PerfScore 5.00
-G_M34838_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=9 bbWeight=4 PerfScore 10.00
+G_M34838_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M34838_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M34838_IG07: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M34838_IG10: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
- cmp r8d, r10d
- jle SHORT G_M34838_IG07
- ;; size=5 bbWeight=0.19 PerfScore 0.24
-G_M34838_IG11: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
- jmp SHORT G_M34838_IG07
- ;; size=2 bbWeight=0.04 PerfScore 0.08
+G_M34838_IG08: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=0.73 PerfScore 0.73
-; Total bytes of code 54, prolog size 0, PerfScore 31.74, instruction count 21, allocated bytes for code 54 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 47, prolog size 0, PerfScore 30.35, instruction count 18, allocated bytes for code 47 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
-7 (-12.50%) : 25666.dasm - System.SpanHelpers:IndexOfAnyExceptInRangeint:int (FullOpts)
@@ -10,26 +10,26 @@
;
; V00 arg0 [V00,T07] ( 3, 6 ) byref -> rcx single-def
; V01 arg1 [V01,T05] ( 4, 6.19) int -> rdx ld-addr-op single-def
-; V02 arg2 [V02,T06] ( 4, 6.19) int -> r8 ld-addr-op single-def
+; V02 arg2 [V02,T06] ( 3, 6 ) int -> r8 ld-addr-op single-def
; V03 arg3 [V03,T04] ( 4, 7 ) int -> r9 single-def
-; V04 loc0 [V04,T00] ( 6, 18.81) int -> rax
+; V04 loc0 [V04,T00] ( 6, 17.73) int -> rax
; V05 loc1 [V05,T08] ( 2, 8 ) byref -> r10
;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07,T09] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
; V08 tmp2 [V08,T01] ( 3, 16.39) int -> r11 "Inlining Arg"
;* V09 tmp3 [V09,T10] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
-; V10 tmp4 [V10,T02] ( 3, 16.39) int -> r10 "Inlining Arg"
+; V10 tmp4 [V10,T02] ( 2, 16 ) int -> r10 "Inlining Arg"
; V11 cse0 [V11,T03] ( 3, 12 ) int -> r10 "CSE - aggressive"
;
; Lcl frame size = 0
-G_M35228_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M35228_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
;; size=0 bbWeight=1 PerfScore 0.00
G_M35228_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
; byrRegs +[rcx]
xor eax, eax
test r9d, r9d
- jle SHORT G_M35228_IG08
+ jle SHORT G_M35228_IG06
;; size=7 bbWeight=1 PerfScore 1.50
G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
movsxd r10, eax
@@ -43,39 +43,27 @@ G_M35228_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr
;; size=18 bbWeight=4 PerfScore 17.00
G_M35228_IG04: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp edx, r11d
- jg SHORT G_M35228_IG06
+ jg SHORT G_M35228_IG08
;; size=5 bbWeight=0.19 PerfScore 0.24
G_M35228_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
cmp r8d, r10d
- jge SHORT G_M35228_IG10
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M35228_IG06: ; bbWeight=1.81, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rcx]
- ret
- ;; size=1 bbWeight=1.81 PerfScore 1.81
-G_M35228_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
+ jl SHORT G_M35228_IG08
inc eax
cmp eax, r9d
jl SHORT G_M35228_IG03
- ;; size=7 bbWeight=4 PerfScore 6.00
-G_M35228_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=12 bbWeight=4 PerfScore 11.00
+G_M35228_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
mov eax, -1
;; size=5 bbWeight=0.50 PerfScore 0.12
-G_M35228_IG09: ; bbWeight=0.50, epilog, nogc, extend
+G_M35228_IG07: ; bbWeight=0.50, epilog, nogc, extend
ret
;; size=1 bbWeight=0.50 PerfScore 0.50
-G_M35228_IG10: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, gcvars, byref, isz
- ; byrRegs +[rcx]
- cmp r8d, r10d
- jle SHORT G_M35228_IG07
- ;; size=5 bbWeight=0.19 PerfScore 0.24
-G_M35228_IG11: ; bbWeight=0.04, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref, isz
- jmp SHORT G_M35228_IG07
- ;; size=2 bbWeight=0.04 PerfScore 0.08
+G_M35228_IG08: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ret
+ ;; size=1 bbWeight=0.73 PerfScore 0.73
-; Total bytes of code 56, prolog size 0, PerfScore 32.49, instruction count 22, allocated bytes for code 56 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
+; Total bytes of code 49, prolog size 0, PerfScore 31.10, instruction count 19, allocated bytes for code 49 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================
Unwind Info:
+7 (+4.90%) : 170560.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
@@ -10,8 +10,8 @@
;
; V00 arg0 [V00,T02] ( 5, 7 ) ref -> rcx class-hnd single-def <System.String>
; V01 arg1 [V01,T03] ( 5, 7 ) ref -> rdx class-hnd single-def <System.String>
-; V02 loc0 [V02,T05] ( 4, 3.50) int -> r8 single-def
-; V03 loc1 [V03,T06] ( 4, 3.50) int -> r9 single-def
+; V02 loc0 [V02,T05] ( 4, 4.98) int -> r8 single-def
+; V03 loc1 [V03,T06] ( 4, 4.98) int -> r9 single-def
; V04 loc2 [V04,T04] ( 7, 7.50) int -> r11 single-def
; V05 loc3 [V05,T00] ( 13, 17.62) int -> rbx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -51,61 +51,72 @@ G_M50530_IG04: ; bbWeight=3.96, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000
mov eax, ebx
movzx r10, word ptr [rcx+2*rax+0x0C]
cmp r10w, word ptr [rdx+2*rax+0x0C]
- jne SHORT G_M50530_IG09
+ jne SHORT G_M50530_IG10
inc ebx
cmp ebx, r11d
jl SHORT G_M50530_IG04
;; size=23 bbWeight=3.96 PerfScore 30.69
-G_M50530_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M50530_IG05: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rdx]
jmp SHORT G_M50530_IG07
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M50530_IG06: ; bbWeight=0.04, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rcx rdx]
cmp ebx, eax
- jae SHORT G_M50530_IG11
+ jae SHORT G_M50530_IG14
mov esi, ebx
movzx rsi, word ptr [rcx+2*rsi+0x0C]
cmp ebx, r10d
- jae SHORT G_M50530_IG11
+ jae SHORT G_M50530_IG14
mov edi, ebx
cmp si, word ptr [rdx+2*rdi+0x0C]
- jne SHORT G_M50530_IG09
+ jne SHORT G_M50530_IG10
inc ebx
cmp ebx, r11d
jl SHORT G_M50530_IG06
;; size=32 bbWeight=0.04 PerfScore 0.42
-G_M50530_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M50530_IG07: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rcx rdx]
- mov eax, -1
- inc r11d
cmp r8d, r9d
- cmovne eax, r11d
- ;; size=15 bbWeight=0.50 PerfScore 0.50
-G_M50530_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ je SHORT G_M50530_IG12
+ ;; size=5 bbWeight=1.98 PerfScore 2.48
+G_M50530_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ lea eax, [r11+0x01]
+ ;; size=4 bbWeight=0.50 PerfScore 0.25
+G_M50530_IG09: ; 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_M50530_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ebx
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M50530_IG10: ; bbWeight=0.50, epilog, nogc, extend
+G_M50530_IG11: ; 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_M50530_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M50530_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ mov eax, -1
+ ;; size=5 bbWeight=0.50 PerfScore 0.12
+G_M50530_IG13: ; 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_M50530_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 143, prolog size 7, PerfScore 46.73, instruction count 55, allocated bytes for code 143 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
+; Total bytes of code 150, prolog size 7, PerfScore 53.42, instruction count 60, allocated bytes for code 150 (MethodHash=88f83a9d) for method Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
; ============================================================
Unwind Info:
+32 (+6.04%) : 203682.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
@@ -78,7 +78,7 @@ G_M51982_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
;; size=8 bbWeight=1 PerfScore 3.00
G_M51982_IG03: ; bbWeight=1, gcVars=0000000000800000 {V03}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x38], 0
- jne SHORT G_M51982_IG12
+ jne G_M51982_IG18
lea rdx, [rbp-0x38]
call <unknown method>
; gcrRegs -[rcx]
@@ -86,7 +86,7 @@ G_M51982_IG03: ; bbWeight=1, gcVars=0000000000800000 {V03}, gcrefRegs=00C
movzx rcx, byte ptr [rbp-0x38]
test ecx, ecx
jne SHORT G_M51982_IG05
- ;; size=23 bbWeight=1 PerfScore 6.75
+ ;; size=27 bbWeight=1 PerfScore 6.75
G_M51982_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -96,111 +96,70 @@ G_M51982_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M51982_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M51982_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
xor r14d, r14d
cmp dword ptr [rbx+0x18], 0
- jle G_M51982_IG19
- ;; size=13 bbWeight=1 PerfScore 4.25
+ jle SHORT G_M51982_IG13
+ ;; size=9 bbWeight=1 PerfScore 4.25
G_M51982_IG06: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r8, gword ptr [rbx+0x08]
; gcrRegs +[r8]
cmp r14d, dword ptr [r8+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG17
mov edx, r14d
shl rdx, 4
mov r15, gword ptr [r8+rdx+0x10]
; gcrRegs +[r15]
cmp r15, rsi
- je SHORT G_M51982_IG18
- ;; size=27 bbWeight=4 PerfScore 40.00
-G_M51982_IG07: ; bbWeight=1.73, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M51982_IG12
+ ;; size=31 bbWeight=4 PerfScore 40.00
+G_M51982_IG07: ; bbWeight=1.73, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
test r15, r15
- je SHORT G_M51982_IG16
- ;; size=5 bbWeight=1.73 PerfScore 2.16
-G_M51982_IG08: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ je G_M51982_IG21
+ ;; size=9 bbWeight=1.73 PerfScore 2.16
+G_M51982_IG08: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
test rsi, rsi
- je SHORT G_M51982_IG16
- ;; size=5 bbWeight=1.72 PerfScore 2.15
-G_M51982_IG09: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ je G_M51982_IG21
+ ;; size=9 bbWeight=1.72 PerfScore 2.15
+G_M51982_IG09: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r15+0x08]
cmp r8d, dword ptr [rsi+0x08]
- jne SHORT G_M51982_IG16
- ;; size=10 bbWeight=1.72 PerfScore 10.31
-G_M51982_IG10: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M51982_IG21
+ ;; size=14 bbWeight=1.72 PerfScore 10.31
+G_M51982_IG10: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r15+0x08]
cmp r8d, dword ptr [rsi+0x08]
- je SHORT G_M51982_IG15
- ;; size=10 bbWeight=1.10 PerfScore 6.57
-G_M51982_IG11: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M51982_IG14
- ;; size=2 bbWeight=1.10 PerfScore 2.19
-G_M51982_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi rdi r15]
- call [System.Threading.Monitor:ThrowLockTakenException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M51982_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51982_IG14: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx rsi rdi r15]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- mov rcx, rdx
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- ;; size=19 bbWeight=1.10 PerfScore 3.83
-G_M51982_IG15: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- lea rcx, bword ptr [r15+0x0C]
- ; byrRegs +[rcx]
- mov r8d, dword ptr [r15+0x08]
- add r8d, r8d
- lea rdx, bword ptr [rsi+0x0C]
- ; byrRegs +[rdx]
- call [<unknown method>]
+ je G_M51982_IG20
+ ;; size=14 bbWeight=1.10 PerfScore 6.57
+G_M51982_IG11: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ jmp G_M51982_IG19
+ ;; size=5 bbWeight=1.10 PerfScore 2.19
+G_M51982_IG12: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
- ; byrRegs -[rcx rdx]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M51982_IG18
- ;; size=25 bbWeight=2 PerfScore 15.00
-G_M51982_IG16: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- inc r14d
- cmp r14d, dword ptr [rbx+0x18]
- jl SHORT G_M51982_IG06
- ;; size=9 bbWeight=4 PerfScore 17.00
-G_M51982_IG17: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M51982_IG19
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M51982_IG18: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- jne SHORT G_M51982_IG19
+ jne SHORT G_M51982_IG13
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
cmp r14d, dword ptr [rcx+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG17
mov edx, r14d
shl rdx, 4
mov rdi, gword ptr [rcx+rdx+0x18]
- ;; size=27 bbWeight=0.50 PerfScore 5.00
-G_M51982_IG19: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=31 bbWeight=0.50 PerfScore 5.00
+G_M51982_IG13: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
test rdi, rdi
je G_M51982_IG23
;; size=9 bbWeight=1 PerfScore 1.25
-G_M51982_IG20: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG14: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, 9
cmp r14d, 9
cmovg r14d, ecx
test r14d, r14d
- jle SHORT G_M51982_IG22
+ jle SHORT G_M51982_IG16
;; size=18 bbWeight=0.50 PerfScore 1.00
-G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG15: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rdx, rcx
@@ -208,7 +167,7 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
lea r15d, [r14-0x01]
mov eax, dword ptr [rcx+0x08]
cmp r15d, eax
- jae G_M51982_IG13
+ jae G_M51982_IG17
mov r8d, r15d
shl r8, 4
lea rcx, bword ptr [rcx+r8+0x10]
@@ -219,7 +178,7 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov r13, gword ptr [rcx+0x08]
; gcrRegs +[r13]
cmp r14d, eax
- jae G_M51982_IG13
+ jae SHORT G_M51982_IG17
mov ecx, r14d
; byrRegs -[rcx]
shl rcx, 4
@@ -240,16 +199,16 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; byrRegs -[rcx r14]
mov r14d, r15d
test r14d, r14d
- jg SHORT G_M51982_IG21
- ;; size=94 bbWeight=4 PerfScore 78.00
-G_M51982_IG22: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ jg SHORT G_M51982_IG15
+ ;; size=90 bbWeight=4 PerfScore 78.00
+G_M51982_IG16: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r14, gword ptr [rbx+0x08]
; gcrRegs +[r14]
mov rdx, rsi
; gcrRegs +[rdx]
mov rsi, rdi
cmp dword ptr [r14+0x08], 0
- jbe G_M51982_IG13
+ jbe SHORT G_M51982_IG17
add r14, 16
; gcrRegs -[r14]
; byrRegs +[r14]
@@ -271,9 +230,52 @@ G_M51982_IG22: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
cmp ecx, 10
cmovl eax, ecx
mov dword ptr [rbx+0x18], eax
- ;; size=64 bbWeight=0.50 PerfScore 6.88
+ jmp SHORT G_M51982_IG23
+ ;; size=62 bbWeight=0.50 PerfScore 7.88
+G_M51982_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rdi]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51982_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call [System.Threading.Monitor:ThrowLockTakenException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M51982_IG19: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rsi rdi r15]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ mov rcx, rdx
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=1.10 PerfScore 3.83
+G_M51982_IG20: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ lea rcx, bword ptr [r15+0x0C]
+ ; byrRegs +[rcx]
+ mov r8d, dword ptr [r15+0x08]
+ add r8d, r8d
+ lea rdx, bword ptr [rsi+0x0C]
+ ; byrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[r15]
+ ; byrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ test eax, eax
+ jne G_M51982_IG12
+ ;; size=29 bbWeight=2 PerfScore 15.00
+G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ inc r14d
+ cmp r14d, dword ptr [rbx+0x18]
+ jl G_M51982_IG06
+ ;; size=13 bbWeight=4 PerfScore 17.00
+G_M51982_IG22: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ jmp G_M51982_IG13
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M51982_IG23: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rbx rsi]
...
+32 (+6.04%) : 169068.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
@@ -78,7 +78,7 @@ G_M51982_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
;; size=8 bbWeight=1 PerfScore 3.00
G_M51982_IG03: ; bbWeight=1, gcVars=0000000000800000 {V03}, gcrefRegs=00CA {rcx rbx rsi rdi}, byrefRegs=0000 {}, gcvars, byref, isz
cmp byte ptr [rbp-0x38], 0
- jne SHORT G_M51982_IG12
+ jne G_M51982_IG18
lea rdx, [rbp-0x38]
call <unknown method>
; gcrRegs -[rcx]
@@ -86,7 +86,7 @@ G_M51982_IG03: ; bbWeight=1, gcVars=0000000000800000 {V03}, gcrefRegs=00C
movzx rcx, byte ptr [rbp-0x38]
test ecx, ecx
jne SHORT G_M51982_IG05
- ;; size=23 bbWeight=1 PerfScore 6.75
+ ;; size=27 bbWeight=1 PerfScore 6.75
G_M51982_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
@@ -96,111 +96,70 @@ G_M51982_IG04: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M51982_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+G_M51982_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
xor r14d, r14d
cmp dword ptr [rbx+0x18], 0
- jle G_M51982_IG19
- ;; size=13 bbWeight=1 PerfScore 4.25
+ jle SHORT G_M51982_IG13
+ ;; size=9 bbWeight=1 PerfScore 4.25
G_M51982_IG06: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r8, gword ptr [rbx+0x08]
; gcrRegs +[r8]
cmp r14d, dword ptr [r8+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG17
mov edx, r14d
shl rdx, 4
mov r15, gword ptr [r8+rdx+0x10]
; gcrRegs +[r15]
cmp r15, rsi
- je SHORT G_M51982_IG18
- ;; size=27 bbWeight=4 PerfScore 40.00
-G_M51982_IG07: ; bbWeight=1.73, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M51982_IG12
+ ;; size=31 bbWeight=4 PerfScore 40.00
+G_M51982_IG07: ; bbWeight=1.73, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[r8]
test r15, r15
- je SHORT G_M51982_IG16
- ;; size=5 bbWeight=1.73 PerfScore 2.16
-G_M51982_IG08: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ je G_M51982_IG21
+ ;; size=9 bbWeight=1.73 PerfScore 2.16
+G_M51982_IG08: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
test rsi, rsi
- je SHORT G_M51982_IG16
- ;; size=5 bbWeight=1.72 PerfScore 2.15
-G_M51982_IG09: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ je G_M51982_IG21
+ ;; size=9 bbWeight=1.72 PerfScore 2.15
+G_M51982_IG09: ; bbWeight=1.72, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r15+0x08]
cmp r8d, dword ptr [rsi+0x08]
- jne SHORT G_M51982_IG16
- ;; size=10 bbWeight=1.72 PerfScore 10.31
-G_M51982_IG10: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ jne G_M51982_IG21
+ ;; size=14 bbWeight=1.72 PerfScore 10.31
+G_M51982_IG10: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r15+0x08]
cmp r8d, dword ptr [rsi+0x08]
- je SHORT G_M51982_IG15
- ;; size=10 bbWeight=1.10 PerfScore 6.57
-G_M51982_IG11: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M51982_IG14
- ;; size=2 bbWeight=1.10 PerfScore 2.19
-G_M51982_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi rdi r15]
- call [System.Threading.Monitor:ThrowLockTakenException()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M51982_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- call CORINFO_HELP_RNGCHKFAIL
- ; gcr arg pop 0
- ;; size=5 bbWeight=0 PerfScore 0.00
-G_M51982_IG14: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
- ; gcrRegs +[rbx rsi rdi r15]
- mov rdx, 0xD1FFAB1E
- ; gcrRegs +[rdx]
- mov rcx, rdx
- ; gcrRegs +[rcx]
- call [<unknown method>]
- ; gcrRegs -[rcx rdx]
- ; gcr arg pop 0
- ;; size=19 bbWeight=1.10 PerfScore 3.83
-G_M51982_IG15: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
- lea rcx, bword ptr [r15+0x0C]
- ; byrRegs +[rcx]
- mov r8d, dword ptr [r15+0x08]
- add r8d, r8d
- lea rdx, bword ptr [rsi+0x0C]
- ; byrRegs +[rdx]
- call [<unknown method>]
+ je G_M51982_IG20
+ ;; size=14 bbWeight=1.10 PerfScore 6.57
+G_M51982_IG11: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ jmp G_M51982_IG19
+ ;; size=5 bbWeight=1.10 PerfScore 2.19
+G_M51982_IG12: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[r15]
- ; byrRegs -[rcx rdx]
- ; gcr arg pop 0
- test eax, eax
- jne SHORT G_M51982_IG18
- ;; size=25 bbWeight=2 PerfScore 15.00
-G_M51982_IG16: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- inc r14d
- cmp r14d, dword ptr [rbx+0x18]
- jl SHORT G_M51982_IG06
- ;; size=9 bbWeight=4 PerfScore 17.00
-G_M51982_IG17: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M51982_IG19
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M51982_IG18: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- jne SHORT G_M51982_IG19
+ jne SHORT G_M51982_IG13
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
cmp r14d, dword ptr [rcx+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG17
mov edx, r14d
shl rdx, 4
mov rdi, gword ptr [rcx+rdx+0x18]
- ;; size=27 bbWeight=0.50 PerfScore 5.00
-G_M51982_IG19: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ;; size=31 bbWeight=0.50 PerfScore 5.00
+G_M51982_IG13: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
test rdi, rdi
je G_M51982_IG23
;; size=9 bbWeight=1 PerfScore 1.25
-G_M51982_IG20: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG14: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov ecx, 9
cmp r14d, 9
cmovg r14d, ecx
test r14d, r14d
- jle SHORT G_M51982_IG22
+ jle SHORT G_M51982_IG16
;; size=18 bbWeight=0.50 PerfScore 1.00
-G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG15: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x08]
; gcrRegs +[rcx]
mov rdx, rcx
@@ -208,7 +167,7 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
lea r15d, [r14-0x01]
mov eax, dword ptr [rcx+0x08]
cmp r15d, eax
- jae G_M51982_IG13
+ jae G_M51982_IG17
mov r8d, r15d
shl r8, 4
lea rcx, bword ptr [rcx+r8+0x10]
@@ -219,7 +178,7 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
mov r13, gword ptr [rcx+0x08]
; gcrRegs +[r13]
cmp r14d, eax
- jae G_M51982_IG13
+ jae SHORT G_M51982_IG17
mov ecx, r14d
; byrRegs -[rcx]
shl rcx, 4
@@ -240,16 +199,16 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000
; byrRegs -[rcx r14]
mov r14d, r15d
test r14d, r14d
- jg SHORT G_M51982_IG21
- ;; size=94 bbWeight=4 PerfScore 78.00
-G_M51982_IG22: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ jg SHORT G_M51982_IG15
+ ;; size=90 bbWeight=4 PerfScore 78.00
+G_M51982_IG16: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov r14, gword ptr [rbx+0x08]
; gcrRegs +[r14]
mov rdx, rsi
; gcrRegs +[rdx]
mov rsi, rdi
cmp dword ptr [r14+0x08], 0
- jbe G_M51982_IG13
+ jbe SHORT G_M51982_IG17
add r14, 16
; gcrRegs -[r14]
; byrRegs +[r14]
@@ -271,9 +230,52 @@ G_M51982_IG22: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
cmp ecx, 10
cmovl eax, ecx
mov dword ptr [rbx+0x18], eax
- ;; size=64 bbWeight=0.50 PerfScore 6.88
+ jmp SHORT G_M51982_IG23
+ ;; size=62 bbWeight=0.50 PerfScore 7.88
+G_M51982_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rdi]
+ call CORINFO_HELP_RNGCHKFAIL
+ ; gcr arg pop 0
+ ;; size=5 bbWeight=0 PerfScore 0.00
+G_M51982_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ call [System.Threading.Monitor:ThrowLockTakenException()]
+ ; gcr arg pop 0
+ int3
+ ;; size=7 bbWeight=0 PerfScore 0.00
+G_M51982_IG19: ; bbWeight=1.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rsi rdi r15]
+ mov rdx, 0xD1FFAB1E
+ ; gcrRegs +[rdx]
+ mov rcx, rdx
+ ; gcrRegs +[rcx]
+ call [<unknown method>]
+ ; gcrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ ;; size=19 bbWeight=1.10 PerfScore 3.83
+G_M51982_IG20: ; bbWeight=2, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ lea rcx, bword ptr [r15+0x0C]
+ ; byrRegs +[rcx]
+ mov r8d, dword ptr [r15+0x08]
+ add r8d, r8d
+ lea rdx, bword ptr [rsi+0x0C]
+ ; byrRegs +[rdx]
+ call [<unknown method>]
+ ; gcrRegs -[r15]
+ ; byrRegs -[rcx rdx]
+ ; gcr arg pop 0
+ test eax, eax
+ jne G_M51982_IG12
+ ;; size=29 bbWeight=2 PerfScore 15.00
+G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ inc r14d
+ cmp r14d, dword ptr [rbx+0x18]
+ jl G_M51982_IG06
+ ;; size=13 bbWeight=4 PerfScore 17.00
+G_M51982_IG22: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ jmp G_M51982_IG13
+ ;; size=5 bbWeight=1 PerfScore 2.00
G_M51982_IG23: ; bbWeight=1, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx]
+ ; gcrRegs -[rbx rsi]
...
libraries_tests.run.windows.x64.Release.mch
-23 (-4.80%) : 63196.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
@@ -87,11 +87,11 @@ G_M54480_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=12 bbWeight=1 PerfScore 4.25
G_M54480_IG07: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
cmp word ptr [rbx+2*rsi+0x02], 0
- je G_M54480_IG30
- cmp word ptr [rbx+2*rsi+0x04], 0
- je G_M54480_IG29
- cmp word ptr [rbx+2*rsi+0x06], 0
je G_M54480_IG28
+ cmp word ptr [rbx+2*rsi+0x04], 0
+ je G_M54480_IG27
+ cmp word ptr [rbx+2*rsi+0x06], 0
+ je G_M54480_IG26
;; size=36 bbWeight=0.03 PerfScore 0.36
G_M54480_IG08: ; bbWeight=1.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add rsi, 4
@@ -99,20 +99,28 @@ G_M54480_IG08: ; bbWeight=1.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
cmp rdi, 4
jge SHORT G_M54480_IG04
;; size=14 bbWeight=1.03 PerfScore 1.80
-G_M54480_IG09: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG09: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
test rdi, rdi
- jg G_M54480_IG21
- ;; size=9 bbWeight=0.64 PerfScore 0.80
-G_M54480_IG10: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M54480_IG11
+ ;; size=5 bbWeight=0.64 PerfScore 0.80
+G_M54480_IG10: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ cmp word ptr [rbx+2*rsi], 0
+ je SHORT G_M54480_IG05
+ inc rsi
+ dec rdi
+ test rdi, rdi
+ jg SHORT G_M54480_IG10
+ ;; size=18 bbWeight=0.03 PerfScore 0.17
+G_M54480_IG11: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rsi, 0xD1FFAB1E
- jge G_M54480_IG27
+ jge G_M54480_IG25
mov rcx, rsi
neg rcx
add rcx, 0xD1FFAB1E
cmp rcx, 8
- jge SHORT G_M54480_IG12
+ jge SHORT G_M54480_IG13
;; size=32 bbWeight=0.64 PerfScore 2.07
-G_M54480_IG11: ; bbWeight=2.55, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG12: ; bbWeight=2.55, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -121,23 +129,23 @@ G_M54480_IG11: ; bbWeight=2.55, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=2.55 PerfScore 8.91
-G_M54480_IG12: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG13: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
lea rcx, [rbx+2*rsi]
test cl, 31
- jne SHORT G_M54480_IG18
+ jne SHORT G_M54480_IG19
;; size=9 bbWeight=0.64 PerfScore 1.11
-G_M54480_IG13: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG14: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, rsi
neg rdi
add rdi, 0xD1FFAB1E
and rdi, -16
- jle G_M54480_IG23
- ;; size=23 bbWeight=0.64 PerfScore 1.27
-G_M54480_IG14: ; bbWeight=0.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jle SHORT G_M54480_IG21
+ ;; size=19 bbWeight=0.64 PerfScore 1.27
+G_M54480_IG15: ; bbWeight=0.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rdi, 16
- jge SHORT G_M54480_IG16
+ jge SHORT G_M54480_IG17
;; size=6 bbWeight=0.82 PerfScore 1.02
-G_M54480_IG15: ; bbWeight=13.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG16: ; bbWeight=13.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -146,54 +154,40 @@ G_M54480_IG15: ; bbWeight=13.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, by
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=19 bbWeight=13.09 PerfScore 45.82
-G_M54480_IG16: ; bbWeight=0.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG17: ; bbWeight=0.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vxorps ymm0, ymm0, ymm0
vpcmpeqw ymm0, ymm0, ymmword ptr [rbx+2*rsi]
vpmovmskb eax, ymm0
test eax, eax
- je SHORT G_M54480_IG19
+ je SHORT G_M54480_IG20
;; size=17 bbWeight=0.82 PerfScore 6.20
-G_M54480_IG17: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG18: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
tzcnt eax, eax
shr eax, 1
add eax, esi
jmp G_M54480_IG06
;; size=13 bbWeight=0.64 PerfScore 3.02
-G_M54480_IG18: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG19: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vxorps xmm0, xmm0, xmm0
vpcmpeqw xmm0, xmm0, xmmword ptr [rbx+2*rsi]
vpmovmskb ebp, xmm0
test ebp, ebp
- jne G_M54480_IG25
+ jne SHORT G_M54480_IG23
add rsi, 8
- jmp SHORT G_M54480_IG13
- ;; size=27 bbWeight=0.29 PerfScore 2.54
-G_M54480_IG19: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jmp SHORT G_M54480_IG14
+ ;; size=23 bbWeight=0.29 PerfScore 2.54
+G_M54480_IG20: ; bbWeight=0.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add rsi, 16
add rdi, -16
test rdi, rdi
- jle SHORT G_M54480_IG23
+ jg SHORT G_M54480_IG15
;; size=13 bbWeight=0.18 PerfScore 0.32
-G_M54480_IG20: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M54480_IG14
- ;; size=2 bbWeight=0.09 PerfScore 0.18
-G_M54480_IG21: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp word ptr [rbx+2*rsi], 0
- je G_M54480_IG05
- inc rsi
- dec rdi
- test rdi, rdi
- jg SHORT G_M54480_IG21
- ;; size=22 bbWeight=0.03 PerfScore 0.17
-G_M54480_IG22: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- jmp G_M54480_IG10
- ;; size=5 bbWeight=0.03 PerfScore 0.06
-G_M54480_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rdi, rsi
neg rdi
add rdi, 0xD1FFAB1E
and rdi, -8
- jle SHORT G_M54480_IG24
+ jle SHORT G_M54480_IG22
xor ecx, ecx
cmp rdi, 8
setge cl
@@ -203,49 +197,49 @@ G_M54480_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
vpcmpeqw xmm0, xmm0, xmmword ptr [rbx+2*rsi]
vpmovmskb eax, xmm0
test eax, eax
- jne SHORT G_M54480_IG26
+ jne SHORT G_M54480_IG24
add rsi, 8
;; size=55 bbWeight=0 PerfScore 0.00
-G_M54480_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M54480_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp rsi, 0xD1FFAB1E
- jge SHORT G_M54480_IG27
+ jge SHORT G_M54480_IG25
mov rdi, rsi
neg rdi
add rdi, 0xD1FFAB1E
jmp G_M54480_IG03
;; size=27 bbWeight=0 PerfScore 0.00
-G_M54480_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG23: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax
tzcnt eax, ebp
shr eax, 1
add eax, esi
jmp G_M54480_IG06
;; size=15 bbWeight=0 PerfScore 0.00
-G_M54480_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
tzcnt eax, eax
shr eax, 1
add eax, esi
jmp G_M54480_IG06
;; size=13 bbWeight=0 PerfScore 0.00
-G_M54480_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [System.SpanHelpers:ThrowMustBeNullTerminatedString()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-G_M54480_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea eax, [rsi+0x03]
jmp G_M54480_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M54480_IG29: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea eax, [rsi+0x02]
jmp G_M54480_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-G_M54480_IG30: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M54480_IG28: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea eax, [rsi+0x01]
jmp G_M54480_IG06
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 479, prolog size 14, PerfScore 93.00, instruction count 132, allocated bytes for code 479 (MethodHash=e0692b2f) for method System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
+; Total bytes of code 456, prolog size 14, PerfScore 92.76, instruction count 130, allocated bytes for code 456 (MethodHash=e0692b2f) for method System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
; ============================================================
Unwind Info:
-18 (-4.58%) : 1449.dasm - System.SpanHelpers:NonPackedContainsValueTypeshort:ubyte (Tier1)
@@ -9,19 +9,19 @@
; 0 inlinees with PGO data; 15 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 10, 3.33) byref -> rsi single-def
-; V01 arg1 [V01,T02] ( 7, 3.08) short -> rdi single-def
-; V02 arg2 [V02,T00] ( 19, 8.08) int -> rbx
+; V00 arg0 [V00,T02] ( 10, 3.33) byref -> rsi single-def
+; V01 arg1 [V01,T03] ( 7, 3.08) short -> rdi single-def
+; V02 arg2 [V02,T00] ( 19, 16.33) int -> rbx
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
-; V04 loc1 [V04,T07] ( 10, 0.83) long -> rax
+; V04 loc1 [V04,T01] ( 10, 9.08) long -> rax
;* V05 loc2 [V05 ] ( 0, 0 ) simd64 -> zero-ref <System.Runtime.Intrinsics.Vector512`1[short]>
; V06 loc3 [V06,T12] ( 3, 0.67) simd64 -> mm0 <System.Runtime.Intrinsics.Vector512`1[short]>
-; V07 loc4 [V07,T06] ( 6, 1.67) byref -> rsi
+; V07 loc4 [V07,T07] ( 6, 1.67) byref -> rdx
; V08 loc5 [V08,T08] ( 3, 0.67) byref -> rax single-def
;* V09 loc6 [V09 ] ( 0, 0 ) simd32 -> zero-ref <System.Runtime.Intrinsics.Vector256`1[short]>
; V10 loc7 [V10,T11] ( 3, 1.92) simd32 -> mm0 <System.Runtime.Intrinsics.Vector256`1[short]>
-; V11 loc8 [V11,T03] ( 6, 4.50) byref -> rax
-; V12 loc9 [V12,T05] ( 3, 1.92) byref -> rcx single-def
+; V11 loc8 [V11,T04] ( 6, 4.50) byref -> rsi
+; V12 loc9 [V12,T06] ( 3, 1.92) byref -> rax single-def
;* V13 loc10 [V13 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[short]>
; V14 loc11 [V14,T15] ( 3, 0 ) simd16 -> mm0 <System.Runtime.Intrinsics.Vector128`1[short]>
; V15 loc12 [V15,T13] ( 6, 0 ) byref -> rax
@@ -42,7 +42,7 @@
;* V30 tmp13 [V30 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V31 tmp14 [V31 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V32 tmp15 [V32 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
-; V33 cse0 [V33,T04] ( 13, 2.42) int -> rdx multi-def "CSE - aggressive"
+; V33 cse0 [V33,T05] ( 13, 2.42) int -> rdx multi-def "CSE - aggressive"
; V34 rat0 [V34,T09] ( 3, 4.50) simd32 -> mm1 "ReplaceWithLclVar is creating a new local variable"
; V35 rat1 [V35,T10] ( 3, 2.50) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; V36 rat2 [V36,T16] ( 3, 0 ) simd16 -> mm1 "ReplaceWithLclVar is creating a new local variable"
@@ -72,124 +72,59 @@ G_M55022_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=30 bbWeight=1 PerfScore 4.75
-G_M55022_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M55022_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
cmp ebx, 8
- jl G_M55022_IG13
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M55022_IG04: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ jl SHORT G_M55022_IG06
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M55022_IG04: ; bbWeight=0.92, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebx, 32
- jge SHORT G_M55022_IG10
- ;; size=5 bbWeight=0.92 PerfScore 1.15
-G_M55022_IG05: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
- cmp ebx, 16
- jl G_M55022_IG18
- movsx rdx, di
- vpbroadcastw ymm0, edx
- mov rax, rsi
- ; byrRegs +[rax]
- lea edx, [rbx-0x10]
- mov ecx, edx
- lea rcx, bword ptr [rax+2*rcx]
- ; byrRegs +[rcx]
- ;; size=31 bbWeight=0.75 PerfScore 3.75
-G_M55022_IG06: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, isz
- ; byrRegs -[rsi]
- vpcmpeqw ymm1, ymm0, ymmword ptr [rax]
- vptest ymm1, ymm1
- jne G_M55022_IG16
- add rax, 32
- cmp rax, rcx
- jbe SHORT G_M55022_IG06
- mov eax, ebx
- ; byrRegs -[rax]
- test al, 15
- je SHORT G_M55022_IG08
- ;; size=30 bbWeight=0.75 PerfScore 9.00
-G_M55022_IG07: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byref
- vpcmpeqw ymm0, ymm0, ymmword ptr [rcx]
- vptest ymm0, ymm0
- jne G_M55022_IG16
- ;; size=15 bbWeight=0.42 PerfScore 3.75
-G_M55022_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rcx]
- xor eax, eax
- ;; size=2 bbWeight=1 PerfScore 0.25
-G_M55022_IG09: ; bbWeight=1, epilog, nogc, extend
- vzeroupper
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
- ret
- ;; size=11 bbWeight=1 PerfScore 3.75
-G_M55022_IG10: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref
- ; byrRegs +[rsi]
- movsx rdx, di
- vpbroadcastw zmm0, edx
- lea edx, [rbx-0x20]
- mov eax, edx
- lea rax, bword ptr [rsi+2*rax]
- ; byrRegs +[rax]
- ;; size=19 bbWeight=0.17 PerfScore 0.58
-G_M55022_IG11: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0041 {rax rsi}, byref, isz
- vpcmpeqw k1, zmm0, zmmword ptr [rsi]
- kortestd k1, k1
- jne G_M55022_IG16
- add rsi, 64
- cmp rsi, rax
- jbe SHORT G_M55022_IG11
- ;; size=26 bbWeight=0.33 PerfScore 2.17
-G_M55022_IG12: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- ; byrRegs -[rsi]
- mov ecx, ebx
- test cl, 31
- je SHORT G_M55022_IG08
- vpcmpeqw k1, zmm0, zmmword ptr [rax]
- kortestd k1, k1
- jne SHORT G_M55022_IG16
- jmp SHORT G_M55022_IG08
- ;; size=22 bbWeight=0.17 PerfScore 1.42
-G_M55022_IG13: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
- ; byrRegs -[rax] +[rsi]
+ jl G_M55022_IG17
+ ;; size=9 bbWeight=0.92 PerfScore 1.15
+G_M55022_IG05: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ jmp SHORT G_M55022_IG12
+ ;; size=2 bbWeight=0.17 PerfScore 0.33
+G_M55022_IG06: ; bbWeight=8.33, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
xor eax, eax
cmp ebx, 4
- jl SHORT G_M55022_IG14
+ jl SHORT G_M55022_IG08
+ ;; size=7 bbWeight=8.33 PerfScore 12.50
+G_M55022_IG07: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
add ebx, -4
movsx rcx, word ptr [rsi+2*rax]
movsx rdx, di
cmp ecx, edx
- je SHORT G_M55022_IG16
+ je SHORT G_M55022_IG10
movsx rcx, word ptr [rsi+2*rax+0x02]
cmp ecx, edx
- je SHORT G_M55022_IG16
+ je SHORT G_M55022_IG10
movsx rcx, word ptr [rsi+2*rax+0x04]
cmp ecx, edx
- je SHORT G_M55022_IG16
+ je SHORT G_M55022_IG10
movsx rcx, word ptr [rsi+2*rax+0x06]
cmp ecx, edx
- je SHORT G_M55022_IG16
+ je SHORT G_M55022_IG10
add rax, 4
- ;; size=57 bbWeight=0.08 PerfScore 1.94
-G_M55022_IG14: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ ;; size=50 bbWeight=0.08 PerfScore 1.81
+G_M55022_IG08: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
test ebx, ebx
- jle G_M55022_IG08
- ;; size=8 bbWeight=0.08 PerfScore 0.10
-G_M55022_IG15: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ jle SHORT G_M55022_IG15
+ ;; size=4 bbWeight=0.08 PerfScore 0.10
+G_M55022_IG09: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
dec ebx
movsx rcx, word ptr [rsi+2*rax]
movsx rdx, di
cmp ecx, edx
- je SHORT G_M55022_IG16
+ je SHORT G_M55022_IG10
inc rax
test ebx, ebx
- jg SHORT G_M55022_IG15
- jmp G_M55022_IG08
- ;; size=27 bbWeight=0.08 PerfScore 0.77
-G_M55022_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jg SHORT G_M55022_IG09
+ jmp SHORT G_M55022_IG15
+ ;; size=24 bbWeight=0.08 PerfScore 0.77
+G_M55022_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
mov eax, 1
;; size=5 bbWeight=0 PerfScore 0.00
-G_M55022_IG17: ; bbWeight=0, epilog, nogc, extend
+G_M55022_IG11: ; bbWeight=0, epilog, nogc, extend
vzeroupper
add rsp, 32
pop rbx
@@ -197,7 +132,78 @@ G_M55022_IG17: ; bbWeight=0, epilog, nogc, extend
pop rdi
ret
;; size=11 bbWeight=0 PerfScore 0.00
-G_M55022_IG18: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref
+G_M55022_IG12: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref
+ ; byrRegs +[rsi]
+ movsx rdx, di
+ vpbroadcastw zmm0, edx
+ mov rdx, rsi
+ ; byrRegs +[rdx]
+ lea eax, [rbx-0x20]
+ lea rax, bword ptr [rdx+2*rax]
+ ; byrRegs +[rax]
+ ;; size=20 bbWeight=0.17 PerfScore 0.58
+G_M55022_IG13: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0005 {rax rdx}, byref, isz
+ ; byrRegs -[rsi]
+ vpcmpeqw k1, zmm0, zmmword ptr [rdx]
+ kortestd k1, k1
+ jne SHORT G_M55022_IG10
+ add rdx, 64
+ cmp rdx, rax
+ jbe SHORT G_M55022_IG13
+ ;; size=22 bbWeight=0.33 PerfScore 2.17
+G_M55022_IG14: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ ; byrRegs -[rdx]
+ mov ecx, ebx
+ test cl, 31
+ je SHORT G_M55022_IG15
+ vpcmpeqw k1, zmm0, zmmword ptr [rax]
+ kortestd k1, k1
+ jne SHORT G_M55022_IG10
+ ;; size=20 bbWeight=0.17 PerfScore 1.08
+G_M55022_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rax]
+ xor eax, eax
+ ;; size=2 bbWeight=1 PerfScore 0.25
+G_M55022_IG16: ; bbWeight=1, epilog, nogc, extend
+ vzeroupper
+ add rsp, 32
+ pop rbx
+ pop rsi
+ pop rdi
+ ret
+ ;; size=11 bbWeight=1 PerfScore 3.75
+G_M55022_IG17: ; bbWeight=0.75, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+ ; byrRegs +[rsi]
+ cmp ebx, 16
+ jl SHORT G_M55022_IG21
+ movsx rdx, di
+ vpbroadcastw ymm0, edx
+ lea eax, [rbx-0x10]
+ lea rax, bword ptr [rsi+2*rax]
+ ; byrRegs +[rax]
+ ;; size=22 bbWeight=0.75 PerfScore 3.38
+G_M55022_IG18: ; bbWeight=0.75, gcrefRegs=0000 {}, byrefRegs=0041 {rax rsi}, byref, isz
+ vpcmpeqw ymm1, ymm0, ymmword ptr [rsi]
+ vptest ymm1, ymm1
+ jne SHORT G_M55022_IG10
+ add rsi, 32
+ cmp rsi, rax
...
-18 (-4.58%) : 27566.dasm - System.SpanHelpers:NonPackedContainsValueTypeshort:ubyte (Tier1)
@@ -9,19 +9,19 @@
; 0 inlinees with PGO data; 15 single block inlinees; 2 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 10, 3.29) byref -> rsi single-def
-; V01 arg1 [V01,T02] ( 7, 3.07) short -> rdi single-def
-; V02 arg2 [V02,T00] ( 19, 7.93) int -> rbx
+; V00 arg0 [V00,T02] ( 10, 3.29) byref -> rsi single-def
+; V01 arg1 [V01,T03] ( 7, 3.07) short -> rdi single-def
+; V02 arg2 [V02,T00] ( 19, 15.00) int -> rbx
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
-; V04 loc1 [V04,T08] ( 10, 0.71) long -> rax
+; V04 loc1 [V04,T01] ( 10, 7.79) long -> rax
;* V05 loc2 [V05 ] ( 0, 0 ) simd64 -> zero-ref <System.Runtime.Intrinsics.Vector512`1[short]>
; V06 loc3 [V06,T12] ( 3, 1.14) simd64 -> mm0 <System.Runtime.Intrinsics.Vector512`1[short]>
-; V07 loc4 [V07,T04] ( 6, 2.86) byref -> rsi
-; V08 loc5 [V08,T07] ( 3, 1.14) byref -> rax single-def
+; V07 loc4 [V07,T05] ( 6, 2.86) byref -> rdx
+; V08 loc5 [V08,T08] ( 3, 1.14) byref -> rax single-def
;* V09 loc6 [V09 ] ( 0, 0 ) simd32 -> zero-ref <System.Runtime.Intrinsics.Vector256`1[short]>
; V10 loc7 [V10,T11] ( 3, 1.93) simd32 -> mm0 <System.Runtime.Intrinsics.Vector256`1[short]>
-; V11 loc8 [V11,T03] ( 6, 3.86) byref -> rax
-; V12 loc9 [V12,T06] ( 3, 1.93) byref -> rcx single-def
+; V11 loc8 [V11,T04] ( 6, 3.86) byref -> rsi
+; V12 loc9 [V12,T07] ( 3, 1.93) byref -> rax single-def
;* V13 loc10 [V13 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[short]>
; V14 loc11 [V14,T15] ( 3, 0 ) simd16 -> mm0 <System.Runtime.Intrinsics.Vector128`1[short]>
; V15 loc12 [V15,T13] ( 6, 0 ) byref -> rax
@@ -42,7 +42,7 @@
;* V30 tmp13 [V30 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V31 tmp14 [V31 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V32 tmp15 [V32 ] ( 0, 0 ) short -> zero-ref "Inlining Arg"
-; V33 cse0 [V33,T05] ( 13, 2.36) int -> rdx multi-def "CSE - aggressive"
+; V33 cse0 [V33,T06] ( 13, 2.36) int -> rdx multi-def "CSE - aggressive"
; V34 rat0 [V34,T09] ( 3, 3.86) simd32 -> mm1 "ReplaceWithLclVar is creating a new local variable"
; V35 rat1 [V35,T10] ( 3, 3.86) simd32 -> mm0 "ReplaceWithLclVar is creating a new local variable"
; V36 rat2 [V36,T16] ( 3, 0 ) simd16 -> mm1 "ReplaceWithLclVar is creating a new local variable"
@@ -72,122 +72,59 @@ G_M55022_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=30 bbWeight=1 PerfScore 4.75
-G_M55022_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M55022_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
cmp ebx, 8
- jl G_M55022_IG12
- ;; size=9 bbWeight=1 PerfScore 1.25
-G_M55022_IG04: ; bbWeight=0.93, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ jl SHORT G_M55022_IG06
+ ;; size=5 bbWeight=1 PerfScore 1.25
+G_M55022_IG04: ; bbWeight=0.93, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
cmp ebx, 32
- jge SHORT G_M55022_IG09
- ;; size=5 bbWeight=0.93 PerfScore 1.16
-G_M55022_IG05: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
- cmp ebx, 16
jl G_M55022_IG17
- movsx rdx, di
- vpbroadcastw ymm0, edx
- mov rax, rsi
- ; byrRegs +[rax]
- lea edx, [rbx-0x10]
- mov ecx, edx
- lea rcx, bword ptr [rax+2*rcx]
- ; byrRegs +[rcx]
- ;; size=31 bbWeight=0.64 PerfScore 3.21
-G_M55022_IG06: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0003 {rax rcx}, byref, isz
- ; byrRegs -[rsi]
- vpcmpeqw ymm1, ymm0, ymmword ptr [rax]
- vptest ymm1, ymm1
- jne G_M55022_IG15
- add rax, 32
- cmp rax, rcx
- jbe SHORT G_M55022_IG06
- mov eax, ebx
- ; byrRegs -[rax]
- test al, 15
- je SHORT G_M55022_IG07
- vpcmpeqw ymm0, ymm0, ymmword ptr [rcx]
- vptest ymm0, ymm0
- jne G_M55022_IG15
- ;; size=45 bbWeight=0.64 PerfScore 13.50
-G_M55022_IG07: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rcx]
- xor eax, eax
- ;; size=2 bbWeight=1.00 PerfScore 0.25
-G_M55022_IG08: ; bbWeight=1.00, epilog, nogc, extend
- vzeroupper
- add rsp, 32
- pop rbx
- pop rsi
- pop rdi
- ret
- ;; size=11 bbWeight=1.00 PerfScore 3.75
-G_M55022_IG09: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref
- ; byrRegs +[rsi]
- movsx rdx, di
- vpbroadcastw zmm0, edx
- lea edx, [rbx-0x20]
- mov eax, edx
- lea rax, bword ptr [rsi+2*rax]
- ; byrRegs +[rax]
- ;; size=19 bbWeight=0.29 PerfScore 1.00
-G_M55022_IG10: ; bbWeight=0.57, gcrefRegs=0000 {}, byrefRegs=0041 {rax rsi}, byref, isz
- vpcmpeqw k1, zmm0, zmmword ptr [rsi]
- kortestd k1, k1
- jne G_M55022_IG15
- add rsi, 64
- cmp rsi, rax
- jbe SHORT G_M55022_IG10
- ;; size=26 bbWeight=0.57 PerfScore 3.71
-G_M55022_IG11: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
- ; byrRegs -[rsi]
- mov ecx, ebx
- test cl, 31
- je SHORT G_M55022_IG07
- vpcmpeqw k1, zmm0, zmmword ptr [rax]
- kortestd k1, k1
- jne SHORT G_M55022_IG15
- jmp SHORT G_M55022_IG07
- ;; size=22 bbWeight=0.29 PerfScore 2.43
-G_M55022_IG12: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
- ; byrRegs -[rax] +[rsi]
+ ;; size=9 bbWeight=0.93 PerfScore 1.16
+G_M55022_IG05: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ jmp SHORT G_M55022_IG12
+ ;; size=2 bbWeight=0.29 PerfScore 0.57
+G_M55022_IG06: ; bbWeight=7.14, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
xor eax, eax
cmp ebx, 4
- jl SHORT G_M55022_IG13
+ jl SHORT G_M55022_IG08
+ ;; size=7 bbWeight=7.14 PerfScore 10.71
+G_M55022_IG07: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
add ebx, -4
movsx rcx, word ptr [rsi+2*rax]
movsx rdx, di
cmp ecx, edx
- je SHORT G_M55022_IG15
+ je SHORT G_M55022_IG10
movsx rcx, word ptr [rsi+2*rax+0x02]
cmp ecx, edx
- je SHORT G_M55022_IG15
+ je SHORT G_M55022_IG10
movsx rcx, word ptr [rsi+2*rax+0x04]
cmp ecx, edx
- je SHORT G_M55022_IG15
+ je SHORT G_M55022_IG10
movsx rcx, word ptr [rsi+2*rax+0x06]
cmp ecx, edx
- je SHORT G_M55022_IG15
+ je SHORT G_M55022_IG10
add rax, 4
- ;; size=57 bbWeight=0.07 PerfScore 1.66
-G_M55022_IG13: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ ;; size=50 bbWeight=0.07 PerfScore 1.55
+G_M55022_IG08: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
test ebx, ebx
- jle G_M55022_IG07
- ;; size=8 bbWeight=0.07 PerfScore 0.09
-G_M55022_IG14: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+ jle SHORT G_M55022_IG15
+ ;; size=4 bbWeight=0.07 PerfScore 0.09
+G_M55022_IG09: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
dec ebx
movsx rcx, word ptr [rsi+2*rax]
movsx rdx, di
cmp ecx, edx
- je SHORT G_M55022_IG15
+ je SHORT G_M55022_IG10
inc rax
test ebx, ebx
- jg SHORT G_M55022_IG14
- jmp G_M55022_IG07
- ;; size=27 bbWeight=0.07 PerfScore 0.66
-G_M55022_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jg SHORT G_M55022_IG09
+ jmp SHORT G_M55022_IG15
+ ;; size=24 bbWeight=0.07 PerfScore 0.66
+G_M55022_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rsi]
mov eax, 1
;; size=5 bbWeight=0 PerfScore 0.00
-G_M55022_IG16: ; bbWeight=0, epilog, nogc, extend
+G_M55022_IG11: ; bbWeight=0, epilog, nogc, extend
vzeroupper
add rsp, 32
pop rbx
@@ -195,7 +132,75 @@ G_M55022_IG16: ; bbWeight=0, epilog, nogc, extend
pop rdi
ret
;; size=11 bbWeight=0 PerfScore 0.00
-G_M55022_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref
+G_M55022_IG12: ; bbWeight=0.29, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref
+ ; byrRegs +[rsi]
+ movsx rdx, di
+ vpbroadcastw zmm0, edx
+ mov rdx, rsi
+ ; byrRegs +[rdx]
+ lea eax, [rbx-0x20]
+ lea rax, bword ptr [rdx+2*rax]
+ ; byrRegs +[rax]
+ ;; size=20 bbWeight=0.29 PerfScore 1.00
+G_M55022_IG13: ; bbWeight=0.57, gcrefRegs=0000 {}, byrefRegs=0005 {rax rdx}, byref, isz
+ ; byrRegs -[rsi]
+ vpcmpeqw k1, zmm0, zmmword ptr [rdx]
+ kortestd k1, k1
+ jne SHORT G_M55022_IG10
+ add rdx, 64
+ cmp rdx, rax
+ jbe SHORT G_M55022_IG13
+ ;; size=22 bbWeight=0.57 PerfScore 3.71
+G_M55022_IG14: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+ ; byrRegs -[rdx]
+ mov ecx, ebx
+ test cl, 31
+ je SHORT G_M55022_IG15
+ vpcmpeqw k1, zmm0, zmmword ptr [rax]
+ kortestd k1, k1
+ jne SHORT G_M55022_IG10
+ ;; size=20 bbWeight=0.29 PerfScore 1.86
+G_M55022_IG15: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; byrRegs -[rax]
+ xor eax, eax
+ ;; size=2 bbWeight=1.00 PerfScore 0.25
+G_M55022_IG16: ; bbWeight=1.00, epilog, nogc, extend
+ vzeroupper
+ add rsp, 32
+ pop rbx
+ pop rsi
+ pop rdi
+ ret
+ ;; size=11 bbWeight=1.00 PerfScore 3.75
+G_M55022_IG17: ; bbWeight=0.64, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+ ; byrRegs +[rsi]
+ cmp ebx, 16
+ jl SHORT G_M55022_IG20
+ movsx rdx, di
+ vpbroadcastw ymm0, edx
+ lea eax, [rbx-0x10]
+ lea rax, bword ptr [rsi+2*rax]
+ ; byrRegs +[rax]
+ ;; size=22 bbWeight=0.64 PerfScore 2.89
+G_M55022_IG18: ; bbWeight=0.64, gcrefRegs=0000 {}, byrefRegs=0041 {rax rsi}, byref, isz
+ vpcmpeqw ymm1, ymm0, ymmword ptr [rsi]
+ vptest ymm1, ymm1
+ jne SHORT G_M55022_IG10
+ add rsi, 32
+ cmp rsi, rax
+ jbe SHORT G_M55022_IG18
+ mov edx, ebx
...
+13 (+3.27%) : 49536.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Canon]:FindValue(System.__Canon):byref:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 475
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 475
; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
@@ -65,9 +65,9 @@ G_M63194_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=27 bbWeight=1 PerfScore 9.75
G_M63194_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je G_M63194_IG20
+ je G_M63194_IG19
cmp gword ptr [rbx+0x08], 0
- je G_M63194_IG11
+ je G_M63194_IG15
;; size=20 bbWeight=1 PerfScore 5.25
G_M63194_IG03: ; bbWeight=0.95, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x10], 0
@@ -93,24 +93,15 @@ G_M63194_IG04: ; bbWeight=0.95, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=28 bbWeight=0.95 PerfScore 6.39
-G_M63194_IG05: ; bbWeight=0.95, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG05: ; bbWeight=0.95, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbx]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
mov r11, qword ptr [rdx+0x48]
test r11, r11
- je SHORT G_M63194_IG07
- ;; size=19 bbWeight=0.95 PerfScore 8.76
-G_M63194_IG06: ; bbWeight=0.76, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M63194_IG08
- ;; size=2 bbWeight=0.76 PerfScore 1.52
-G_M63194_IG07: ; bbWeight=0.19, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r11, rax
- ;; size=18 bbWeight=0.19 PerfScore 0.28
-G_M63194_IG08: ; bbWeight=0.95, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M63194_IG13
+ ;; size=23 bbWeight=0.95 PerfScore 8.76
+G_M63194_IG06: ; bbWeight=0.95, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, rsi
@@ -134,7 +125,7 @@ G_M63194_IG08: ; bbWeight=0.95, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
xor edx, edx
div edx:eax, ecx
cmp edx, r15d
- je SHORT G_M63194_IG09
+ je SHORT G_M63194_IG07
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -143,9 +134,9 @@ G_M63194_IG08: ; bbWeight=0.95, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=78 bbWeight=0.95 PerfScore 43.34
-G_M63194_IG09: ; bbWeight=0.95, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M63194_IG07: ; bbWeight=0.95, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
cmp r15d, dword ptr [r14+0x08]
- jae G_M63194_IG19
+ jae G_M63194_IG18
mov ecx, r15d
mov r14d, dword ptr [r14+4*rcx+0x10]
; gcrRegs -[r14]
@@ -154,17 +145,51 @@ G_M63194_IG09: ; bbWeight=0.95, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
xor r13d, r13d
dec r14d
;; size=28 bbWeight=0.95 PerfScore 8.29
-G_M63194_IG10: ; bbWeight=1.49, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG08: ; bbWeight=1.49, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
mov r12d, dword ptr [r15+0x08]
cmp r12d, r14d
- ja SHORT G_M63194_IG13
+ jbe SHORT G_M63194_IG15
;; size=9 bbWeight=1.49 PerfScore 4.83
-G_M63194_IG11: ; bbWeight=0.90, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi r15]
- xor rax, rax
+G_M63194_IG09: ; bbWeight=0.64, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ mov ecx, r14d
+ lea rcx, [rcx+2*rcx]
+ lea r14, bword ptr [r15+8*rcx+0x10]
+ ; byrRegs +[r14]
+ cmp dword ptr [r14+0x10], ebp
+ je SHORT G_M63194_IG11
+ ;; size=18 bbWeight=0.64 PerfScore 3.68
+G_M63194_IG10: ; bbWeight=0.54, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ mov r14d, dword ptr [r14+0x14]
+ ; byrRegs -[r14]
+ inc r13d
+ cmp r12d, r13d
+ jb G_M63194_IG20
+ jmp SHORT G_M63194_IG08
+ ;; size=18 bbWeight=0.54 PerfScore 2.96
+G_M63194_IG11: ; bbWeight=0.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ ; byrRegs +[r14]
+ mov rcx, qword ptr [rbx]
+ mov rdx, qword ptr [rcx+0x38]
+ mov rdx, qword ptr [rdx]
+ mov r11, qword ptr [rdx+0x50]
+ test r11, r11
+ je SHORT G_M63194_IG16
+ ;; size=19 bbWeight=0.10 PerfScore 0.93
+G_M63194_IG12: ; bbWeight=0.08, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ jmp SHORT G_M63194_IG17
+ ;; size=2 bbWeight=0.08 PerfScore 0.16
+G_M63194_IG13: ; bbWeight=0.19, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ ; byrRegs -[r14]
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r11, rax
+ jmp G_M63194_IG06
+ ;; size=23 bbWeight=0.19 PerfScore 0.66
+G_M63194_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, epilog, nogc
+ ; gcrRegs -[rsi rdi]
; byrRegs +[rax]
- ;; size=2 bbWeight=0.90 PerfScore 0.22
-G_M63194_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, epilog, nogc
add rsp, 40
pop rbx
pop rbp
@@ -176,43 +201,21 @@ G_M63194_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax},
pop r15
ret
;; size=17 bbWeight=1 PerfScore 5.25
-G_M63194_IG13: ; bbWeight=0.64, gcVars=0000000000000000 {}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rsi rdi r15]
+G_M63194_IG15: ; bbWeight=0.90, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rax]
- mov ecx, r14d
- lea rcx, [rcx+2*rcx]
- lea r14, bword ptr [r15+8*rcx+0x10]
- ; byrRegs +[r14]
- cmp dword ptr [r14+0x10], ebp
- je SHORT G_M63194_IG15
- ;; size=18 bbWeight=0.64 PerfScore 3.68
-G_M63194_IG14: ; bbWeight=0.54, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
- mov r14d, dword ptr [r14+0x14]
- ; byrRegs -[r14]
- inc r13d
- cmp r12d, r13d
- jb SHORT G_M63194_IG21
- jmp SHORT G_M63194_IG10
- ;; size=14 bbWeight=0.54 PerfScore 2.96
-G_M63194_IG15: ; bbWeight=0.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
- ; byrRegs +[r14]
- mov rcx, qword ptr [rbx]
- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx]
- mov r11, qword ptr [rdx+0x50]
- test r11, r11
- je SHORT G_M63194_IG17
- ;; size=19 bbWeight=0.10 PerfScore 0.93
-G_M63194_IG16: ; bbWeight=0.08, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
- jmp SHORT G_M63194_IG18
- ;; size=2 bbWeight=0.08 PerfScore 0.16
-G_M63194_IG17: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref
+ xor rax, rax
+ ; byrRegs +[rax]
+ jmp SHORT G_M63194_IG14
+ ;; size=4 bbWeight=0.90 PerfScore 2.02
+G_M63194_IG16: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref
+ ; gcrRegs +[rsi rdi r15]
+ ; byrRegs -[rax] +[r14]
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r11, rax
;; size=18 bbWeight=0.02 PerfScore 0.03
-G_M63194_IG18: ; bbWeight=0.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+G_M63194_IG17: ; bbWeight=0.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
mov rdx, gword ptr [r14]
; gcrRegs +[rdx]
mov rcx, rdi
@@ -223,30 +226,30 @@ G_M63194_IG18: ; bbWeight=0.10, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M63194_IG14
+ je SHORT G_M63194_IG10
lea rax, bword ptr [r14+0x08]
; byrRegs +[rax]
- jmp SHORT G_M63194_IG12
+ jmp SHORT G_M63194_IG14
;; size=22 bbWeight=0.10 PerfScore 0.93
-G_M63194_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63194_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi rdi r15]
; byrRegs -[rax r14]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M63194_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63194_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov ecx, 4
call [System.ThrowHelper:ThrowArgumentNullException(int)]
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M63194_IG21: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63194_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 398, prolog size 27, PerfScore 109.71, instruction count 114, allocated bytes for code 398 (MethodHash=29f10925) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
+; Total bytes of code 411, prolog size 27, PerfScore 110.37, instruction count 115, allocated bytes for code 411 (MethodHash=29f10925) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
; ============================================================
Unwind Info:
+13 (+3.27%) : 97024.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Canon]:FindValue(System.__Canon):byref:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 203
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 203
; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
@@ -65,9 +65,9 @@ G_M63194_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=27 bbWeight=1 PerfScore 9.75
G_M63194_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je G_M63194_IG20
+ je G_M63194_IG19
cmp gword ptr [rbx+0x08], 0
- je G_M63194_IG11
+ je G_M63194_IG15
;; size=20 bbWeight=1 PerfScore 5.25
G_M63194_IG03: ; bbWeight=0.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x10], 0
@@ -93,24 +93,15 @@ G_M63194_IG04: ; bbWeight=0.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=28 bbWeight=0.98 PerfScore 6.62
-G_M63194_IG05: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG05: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbx]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
mov r11, qword ptr [rdx+0x48]
test r11, r11
- je SHORT G_M63194_IG07
- ;; size=19 bbWeight=0.98 PerfScore 9.07
-G_M63194_IG06: ; bbWeight=0.78, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M63194_IG08
- ;; size=2 bbWeight=0.78 PerfScore 1.57
-G_M63194_IG07: ; bbWeight=0.20, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r11, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.29
-G_M63194_IG08: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M63194_IG13
+ ;; size=23 bbWeight=0.98 PerfScore 9.07
+G_M63194_IG06: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, rsi
@@ -134,7 +125,7 @@ G_M63194_IG08: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
xor edx, edx
div edx:eax, ecx
cmp edx, r15d
- je SHORT G_M63194_IG09
+ je SHORT G_M63194_IG07
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -143,9 +134,9 @@ G_M63194_IG08: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=78 bbWeight=0.98 PerfScore 44.85
-G_M63194_IG09: ; bbWeight=0.98, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M63194_IG07: ; bbWeight=0.98, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
cmp r15d, dword ptr [r14+0x08]
- jae G_M63194_IG19
+ jae G_M63194_IG18
mov ecx, r15d
mov r14d, dword ptr [r14+4*rcx+0x10]
; gcrRegs -[r14]
@@ -154,17 +145,51 @@ G_M63194_IG09: ; bbWeight=0.98, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
xor r13d, r13d
dec r14d
;; size=28 bbWeight=0.98 PerfScore 8.58
-G_M63194_IG10: ; bbWeight=1.56, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG08: ; bbWeight=1.56, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
mov r12d, dword ptr [r15+0x08]
cmp r12d, r14d
- ja SHORT G_M63194_IG13
+ jbe SHORT G_M63194_IG15
;; size=9 bbWeight=1.56 PerfScore 5.08
-G_M63194_IG11: ; bbWeight=0.99, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi r15]
- xor rax, rax
+G_M63194_IG09: ; bbWeight=0.60, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ mov ecx, r14d
+ lea rcx, [rcx+2*rcx]
+ lea r14, bword ptr [r15+8*rcx+0x10]
+ ; byrRegs +[r14]
+ cmp dword ptr [r14+0x10], ebp
+ je SHORT G_M63194_IG11
+ ;; size=18 bbWeight=0.60 PerfScore 3.43
+G_M63194_IG10: ; bbWeight=0.58, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ mov r14d, dword ptr [r14+0x14]
+ ; byrRegs -[r14]
+ inc r13d
+ cmp r12d, r13d
+ jb G_M63194_IG20
+ jmp SHORT G_M63194_IG08
+ ;; size=18 bbWeight=0.58 PerfScore 3.20
+G_M63194_IG11: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ ; byrRegs +[r14]
+ mov rcx, qword ptr [rbx]
+ mov rdx, qword ptr [rcx+0x38]
+ mov rdx, qword ptr [rdx]
+ mov r11, qword ptr [rdx+0x50]
+ test r11, r11
+ je SHORT G_M63194_IG16
+ ;; size=19 bbWeight=0.01 PerfScore 0.14
+G_M63194_IG12: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ jmp SHORT G_M63194_IG17
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M63194_IG13: ; bbWeight=0.20, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ ; byrRegs -[r14]
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r11, rax
+ jmp G_M63194_IG06
+ ;; size=23 bbWeight=0.20 PerfScore 0.69
+G_M63194_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, epilog, nogc
+ ; gcrRegs -[rsi rdi]
; byrRegs +[rax]
- ;; size=2 bbWeight=0.99 PerfScore 0.25
-G_M63194_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, epilog, nogc
add rsp, 40
pop rbx
pop rbp
@@ -176,43 +201,21 @@ G_M63194_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax},
pop r15
ret
;; size=17 bbWeight=1 PerfScore 5.25
-G_M63194_IG13: ; bbWeight=0.60, gcVars=0000000000000000 {}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rsi rdi r15]
+G_M63194_IG15: ; bbWeight=0.99, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rax]
- mov ecx, r14d
- lea rcx, [rcx+2*rcx]
- lea r14, bword ptr [r15+8*rcx+0x10]
- ; byrRegs +[r14]
- cmp dword ptr [r14+0x10], ebp
- je SHORT G_M63194_IG15
- ;; size=18 bbWeight=0.60 PerfScore 3.43
-G_M63194_IG14: ; bbWeight=0.58, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
- mov r14d, dword ptr [r14+0x14]
- ; byrRegs -[r14]
- inc r13d
- cmp r12d, r13d
- jb SHORT G_M63194_IG21
- jmp SHORT G_M63194_IG10
- ;; size=14 bbWeight=0.58 PerfScore 3.20
-G_M63194_IG15: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
- ; byrRegs +[r14]
- mov rcx, qword ptr [rbx]
- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx]
- mov r11, qword ptr [rdx+0x50]
- test r11, r11
- je SHORT G_M63194_IG17
- ;; size=19 bbWeight=0.01 PerfScore 0.14
-G_M63194_IG16: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
- jmp SHORT G_M63194_IG18
- ;; size=2 bbWeight=0.01 PerfScore 0.02
-G_M63194_IG17: ; bbWeight=0.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref
+ xor rax, rax
+ ; byrRegs +[rax]
+ jmp SHORT G_M63194_IG14
+ ;; size=4 bbWeight=0.99 PerfScore 2.22
+G_M63194_IG16: ; bbWeight=0.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref
+ ; gcrRegs +[rsi rdi r15]
+ ; byrRegs -[rax] +[r14]
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r11, rax
;; size=18 bbWeight=0.00 PerfScore 0.00
-G_M63194_IG18: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+G_M63194_IG17: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
mov rdx, gword ptr [r14]
; gcrRegs +[rdx]
mov rcx, rdi
@@ -223,30 +226,30 @@ G_M63194_IG18: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M63194_IG14
+ je SHORT G_M63194_IG10
lea rax, bword ptr [r14+0x08]
; byrRegs +[rax]
- jmp SHORT G_M63194_IG12
+ jmp SHORT G_M63194_IG14
;; size=22 bbWeight=0.01 PerfScore 0.14
-G_M63194_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63194_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi rdi r15]
; byrRegs -[rax r14]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M63194_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63194_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov ecx, 4
call [System.ThrowHelper:ThrowArgumentNullException(int)]
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M63194_IG21: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63194_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 398, prolog size 27, PerfScore 110.82, instruction count 114, allocated bytes for code 398 (MethodHash=29f10925) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
+; Total bytes of code 411, prolog size 27, PerfScore 111.62, instruction count 115, allocated bytes for code 411 (MethodHash=29f10925) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
; ============================================================
Unwind Info:
+13 (+3.27%) : 108184.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Canon]:FindValue(System.__Canon):byref:this (Tier1)
@@ -5,7 +5,7 @@
; optimized using Dynamic PGO
; rsp based frame
; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 196
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 196
; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data
; Final local variable assignments
;
@@ -65,9 +65,9 @@ G_M63194_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
;; size=27 bbWeight=1 PerfScore 9.75
G_M63194_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
test rsi, rsi
- je G_M63194_IG20
+ je G_M63194_IG19
cmp gword ptr [rbx+0x08], 0
- je G_M63194_IG11
+ je G_M63194_IG15
;; size=20 bbWeight=1 PerfScore 5.25
G_M63194_IG03: ; bbWeight=0.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [rbx+0x10], 0
@@ -93,24 +93,15 @@ G_M63194_IG04: ; bbWeight=0.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=28 bbWeight=0.98 PerfScore 6.65
-G_M63194_IG05: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG05: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
mov rcx, qword ptr [rbx]
mov rdx, qword ptr [rcx+0x38]
mov rdx, qword ptr [rdx]
mov r11, qword ptr [rdx+0x48]
test r11, r11
- je SHORT G_M63194_IG07
- ;; size=19 bbWeight=0.98 PerfScore 9.11
-G_M63194_IG06: ; bbWeight=0.79, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M63194_IG08
- ;; size=2 bbWeight=0.79 PerfScore 1.58
-G_M63194_IG07: ; bbWeight=0.20, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- mov rdx, 0xD1FFAB1E ; global ptr
- call CORINFO_HELP_RUNTIMEHANDLE_CLASS
- ; gcr arg pop 0
- mov r11, rax
- ;; size=18 bbWeight=0.20 PerfScore 0.30
-G_M63194_IG08: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+ je G_M63194_IG13
+ ;; size=23 bbWeight=0.98 PerfScore 9.11
+G_M63194_IG06: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, rdi
; gcrRegs +[rcx]
mov rdx, rsi
@@ -134,7 +125,7 @@ G_M63194_IG08: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
xor edx, edx
div edx:eax, ecx
cmp edx, r15d
- je SHORT G_M63194_IG09
+ je SHORT G_M63194_IG07
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
mov rcx, rdx
@@ -143,9 +134,9 @@ G_M63194_IG08: ; bbWeight=0.98, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0
; gcrRegs -[rcx rdx]
; gcr arg pop 0
;; size=78 bbWeight=0.98 PerfScore 45.05
-G_M63194_IG09: ; bbWeight=0.98, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M63194_IG07: ; bbWeight=0.98, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref
cmp r15d, dword ptr [r14+0x08]
- jae G_M63194_IG19
+ jae G_M63194_IG18
mov ecx, r15d
mov r14d, dword ptr [r14+4*rcx+0x10]
; gcrRegs -[r14]
@@ -154,17 +145,51 @@ G_M63194_IG09: ; bbWeight=0.98, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRe
xor r13d, r13d
dec r14d
;; size=28 bbWeight=0.98 PerfScore 8.62
-G_M63194_IG10: ; bbWeight=1.55, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG08: ; bbWeight=1.55, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
mov r12d, dword ptr [r15+0x08]
cmp r12d, r14d
- ja SHORT G_M63194_IG13
+ jbe SHORT G_M63194_IG15
;; size=9 bbWeight=1.55 PerfScore 5.02
-G_M63194_IG11: ; bbWeight=0.98, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rsi rdi r15]
- xor rax, rax
+G_M63194_IG09: ; bbWeight=0.58, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ mov ecx, r14d
+ lea rcx, [rcx+2*rcx]
+ lea r14, bword ptr [r15+8*rcx+0x10]
+ ; byrRegs +[r14]
+ cmp dword ptr [r14+0x10], ebp
+ je SHORT G_M63194_IG11
+ ;; size=18 bbWeight=0.58 PerfScore 3.32
+G_M63194_IG10: ; bbWeight=0.56, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ mov r14d, dword ptr [r14+0x14]
+ ; byrRegs -[r14]
+ inc r13d
+ cmp r12d, r13d
+ jb G_M63194_IG20
+ jmp SHORT G_M63194_IG08
+ ;; size=18 bbWeight=0.56 PerfScore 3.09
+G_M63194_IG11: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ ; byrRegs +[r14]
+ mov rcx, qword ptr [rbx]
+ mov rdx, qword ptr [rcx+0x38]
+ mov rdx, qword ptr [rdx]
+ mov r11, qword ptr [rdx+0x50]
+ test r11, r11
+ je SHORT G_M63194_IG16
+ ;; size=19 bbWeight=0.02 PerfScore 0.14
+G_M63194_IG12: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+ jmp SHORT G_M63194_IG17
+ ;; size=2 bbWeight=0.01 PerfScore 0.02
+G_M63194_IG13: ; bbWeight=0.20, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[r15]
+ ; byrRegs -[r14]
+ mov rdx, 0xD1FFAB1E ; global ptr
+ call CORINFO_HELP_RUNTIMEHANDLE_CLASS
+ ; gcr arg pop 0
+ mov r11, rax
+ jmp G_M63194_IG06
+ ;; size=23 bbWeight=0.20 PerfScore 0.69
+G_M63194_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, epilog, nogc
+ ; gcrRegs -[rsi rdi]
; byrRegs +[rax]
- ;; size=2 bbWeight=0.98 PerfScore 0.25
-G_M63194_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax}, byref, epilog, nogc
add rsp, 40
pop rbx
pop rbp
@@ -176,43 +201,21 @@ G_M63194_IG12: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0001 {rax},
pop r15
ret
;; size=17 bbWeight=1 PerfScore 5.25
-G_M63194_IG13: ; bbWeight=0.58, gcVars=0000000000000000 {}, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rsi rdi r15]
+G_M63194_IG15: ; bbWeight=0.98, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; byrRegs -[rax]
- mov ecx, r14d
- lea rcx, [rcx+2*rcx]
- lea r14, bword ptr [r15+8*rcx+0x10]
- ; byrRegs +[r14]
- cmp dword ptr [r14+0x10], ebp
- je SHORT G_M63194_IG15
- ;; size=18 bbWeight=0.58 PerfScore 3.32
-G_M63194_IG14: ; bbWeight=0.56, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
- mov r14d, dword ptr [r14+0x14]
- ; byrRegs -[r14]
- inc r13d
- cmp r12d, r13d
- jb SHORT G_M63194_IG21
- jmp SHORT G_M63194_IG10
- ;; size=14 bbWeight=0.56 PerfScore 3.09
-G_M63194_IG15: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
- ; byrRegs +[r14]
- mov rcx, qword ptr [rbx]
- mov rdx, qword ptr [rcx+0x38]
- mov rdx, qword ptr [rdx]
- mov r11, qword ptr [rdx+0x50]
- test r11, r11
- je SHORT G_M63194_IG17
- ;; size=19 bbWeight=0.02 PerfScore 0.14
-G_M63194_IG16: ; bbWeight=0.01, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
- jmp SHORT G_M63194_IG18
- ;; size=2 bbWeight=0.01 PerfScore 0.02
-G_M63194_IG17: ; bbWeight=0.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref
+ xor rax, rax
+ ; byrRegs +[rax]
+ jmp SHORT G_M63194_IG14
+ ;; size=4 bbWeight=0.98 PerfScore 2.22
+G_M63194_IG16: ; bbWeight=0.00, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref
+ ; gcrRegs +[rsi rdi r15]
+ ; byrRegs -[rax] +[r14]
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_CLASS
; gcr arg pop 0
mov r11, rax
;; size=18 bbWeight=0.00 PerfScore 0.00
-G_M63194_IG18: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
+G_M63194_IG17: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=4000 {r14}, byref, isz
mov rdx, gword ptr [r14]
; gcrRegs +[rdx]
mov rcx, rdi
@@ -223,30 +226,30 @@ G_M63194_IG18: ; bbWeight=0.02, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRe
; gcrRegs -[rcx rdx r8]
; gcr arg pop 0
test eax, eax
- je SHORT G_M63194_IG14
+ je SHORT G_M63194_IG10
lea rax, bword ptr [r14+0x08]
; byrRegs +[rax]
- jmp SHORT G_M63194_IG12
+ jmp SHORT G_M63194_IG14
;; size=22 bbWeight=0.02 PerfScore 0.14
-G_M63194_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63194_IG18: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi rdi r15]
; byrRegs -[rax r14]
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M63194_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63194_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov ecx, 4
call [System.ThrowHelper:ThrowArgumentNullException(int)]
; gcr arg pop 0
int3
;; size=12 bbWeight=0 PerfScore 0.00
-G_M63194_IG21: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M63194_IG20: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
call [System.ThrowHelper:ThrowInvalidOperationException_ConcurrentOperationsNotSupported()]
; gcr arg pop 0
int3
;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 398, prolog size 27, PerfScore 110.91, instruction count 114, allocated bytes for code 398 (MethodHash=29f10925) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
+; Total bytes of code 411, prolog size 27, PerfScore 111.70, instruction count 115, allocated bytes for code 411 (MethodHash=29f10925) for method System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
; ============================================================
Unwind Info:
librariestestsnotieredcompilation.run.windows.x64.Release.mch
-39 (-3.17%) : 321767.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4863_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,21 +8,21 @@
; 7 inlinees with PGO data; 26 single block inlinees; 16 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 36, 46.04) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T35] ( 4, 8 ) byref -> rdx single-def
+; V00 arg0 [V00,T00] ( 36, 46.04) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V01 arg1 [V01,T29] ( 4, 8 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T25] ( 16, 10 ) int -> rbp single-def
-; V04 loc2 [V04,T26] ( 21, 11.50) int -> registers
+; V03 loc1 [V03,T12] ( 16, 10 ) int -> rbp single-def
+; V04 loc2 [V04,T17] ( 21, 11.50) int -> registers
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
;* V07 loc5 [V07,T85] ( 0, 0 ) int -> zero-ref single-def
-; V08 loc6 [V08,T53] ( 3, 5.50) int -> r13 single-def
-; V09 loc7 [V09,T55] ( 4, 5 ) int -> rax
+; V08 loc6 [V08,T45] ( 3, 5.50) int -> r13 single-def
+; V09 loc7 [V09,T47] ( 4, 5 ) int -> rax
;* V10 loc8 [V10,T86] ( 0, 0 ) int -> zero-ref single-def
-;* V11 loc9 [V11,T89] ( 0, 0 ) int -> zero-ref
-; V12 loc10 [V12,T18] ( 5, 16.50) int -> r8
-; V13 loc11 [V13,T05] ( 2, 36 ) int -> rdx
-; V14 loc12 [V14,T00] ( 7,112 ) int -> rcx
+;* V11 loc9 [V11,T90] ( 0, 0 ) int -> zero-ref
+; V12 loc10 [V12,T13] ( 5, 13 ) int -> r8
+; V13 loc11 [V13,T48] ( 2, 4.50) int -> rdx
+; V14 loc12 [V14,T01] ( 7, 24.50) int -> rcx
;* V15 loc13 [V15 ] ( 0, 0 ) ushort -> zero-ref
;* V16 loc14 [V16 ] ( 0, 0 ) ushort -> zero-ref
; V17 OutArgs [V17 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -31,8 +31,8 @@
;* V20 tmp3 [V20 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
;* V21 tmp4 [V21,T88] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* V22 tmp5 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V23 tmp6 [V23,T37] ( 4, 8 ) int -> r15 "Inlining Arg"
-; V24 tmp7 [V24,T64] ( 3, 3 ) byref -> r14 single-def "Inlining Arg"
+; V23 tmp6 [V23,T32] ( 4, 8 ) int -> r15 "Inlining Arg"
+; V24 tmp7 [V24,T56] ( 3, 3 ) byref -> r14 single-def "Inlining Arg"
;* V25 tmp8 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp9 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V27 tmp10 [V27 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
@@ -41,72 +41,72 @@
;* V30 tmp13 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V31 tmp14 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V32 tmp15 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V33 tmp16 [V33,T68] ( 3, 3 ) int -> r12 "Inlining Arg"
-; V34 tmp17 [V34,T75] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V33 tmp16 [V33,T62] ( 3, 3 ) int -> r12 "Inlining Arg"
+; V34 tmp17 [V34,T71] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
;* V35 tmp18 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp19 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp20 [V37,T56] ( 4, 4 ) int -> [rsp+0x34] "Inlining Arg"
-; V38 tmp21 [V38,T57] ( 4, 4 ) int -> [rsp+0x30] "Inlining Arg"
+; V37 tmp20 [V37,T49] ( 4, 4 ) int -> [rsp+0x34] "Inlining Arg"
+; V38 tmp21 [V38,T50] ( 4, 4 ) int -> [rsp+0x30] "Inlining Arg"
;* V39 tmp22 [V39 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V40 tmp23 [V40,T71] ( 4, 2 ) int -> r8 single-def "Inline stloc first use temp"
-; V41 tmp24 [V41,T65] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
+; V40 tmp23 [V40,T66] ( 4, 2 ) int -> r8 single-def "Inline stloc first use temp"
+; V41 tmp24 [V41,T57] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>>
;* V42 tmp25 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V43 tmp26 [V43,T69] ( 3, 3 ) int -> r12 "Inlining Arg"
-; V44 tmp27 [V44,T76] ( 2, 2 ) byref -> r15 "Inlining Arg"
+; V43 tmp26 [V43,T63] ( 3, 3 ) int -> r12 "Inlining Arg"
+; V44 tmp27 [V44,T72] ( 2, 2 ) byref -> r15 "Inlining Arg"
;* V45 tmp28 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V46 tmp29 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V47 tmp30 [V47,T33] ( 3, 12 ) int -> rdx "Inline stloc first use temp"
-; V48 tmp31 [V48,T23] ( 4, 16 ) int -> rax "Inline stloc first use temp"
-; V49 tmp32 [V49,T08] ( 3, 24 ) ref -> rdx class-hnd "impAppendStmt" <<unknown class>>
+; V47 tmp30 [V47,T24] ( 3, 12 ) int -> rdx "Inline stloc first use temp"
+; V48 tmp31 [V48,T10] ( 4, 16 ) int -> rax "Inline stloc first use temp"
+; V49 tmp32 [V49,T02] ( 3, 24 ) ref -> rdx class-hnd "impAppendStmt" <<unknown class>>
;* V50 tmp33 [V50 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V51 tmp34 [V51,T09] ( 3, 24 ) byref -> rdx "dup spill"
+; V51 tmp34 [V51,T03] ( 3, 24 ) byref -> rdx "dup spill"
;* V52 tmp35 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V53 tmp36 [V53,T78] ( 2, 2 ) int -> r12 "Inlining Arg"
-; V54 tmp37 [V54,T74] ( 3, 2 ) byref -> r15 "Inlining Arg"
+; V53 tmp36 [V53,T74] ( 2, 2 ) int -> r12 "Inlining Arg"
+; V54 tmp37 [V54,T70] ( 3, 2 ) byref -> r15 "Inlining Arg"
;* V55 tmp38 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V56 tmp39 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V57 tmp40 [V57 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V58 tmp41 [V58,T70] ( 3, 3 ) int -> r12 "Inlining Arg"
-; V59 tmp42 [V59,T77] ( 2, 2 ) byref -> r15 "Inlining Arg"
+; V58 tmp41 [V58,T64] ( 3, 3 ) int -> r12 "Inlining Arg"
+; V59 tmp42 [V59,T73] ( 2, 2 ) byref -> r15 "Inlining Arg"
;* V60 tmp43 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V61 tmp44 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V62 tmp45 [V62,T58] ( 4, 4 ) int -> [rsp+0x2C] "Inlining Arg"
-; V63 tmp46 [V63,T59] ( 4, 4 ) int -> [rsp+0x28] "Inlining Arg"
+; V62 tmp45 [V62,T51] ( 4, 4 ) int -> [rsp+0x2C] "Inlining Arg"
+; V63 tmp46 [V63,T52] ( 4, 4 ) int -> [rsp+0x28] "Inlining Arg"
;* V64 tmp47 [V64 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V65 tmp48 [V65,T72] ( 4, 2 ) int -> r8 "Inline stloc first use temp"
-; V66 tmp49 [V66,T66] ( 3, 3 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
-;* V67 tmp50 [V67,T63] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V68 tmp51 [V68,T10] ( 3, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V69 tmp52 [V69,T29] ( 3, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>>
-; V70 tmp53 [V70,T39] ( 3, 8 ) int -> r8 "Inline return value spill temp"
-;* V71 tmp54 [V71,T43] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V72 tmp55 [V72,T61] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V73 tmp56 [V73,T27] ( 4, 12 ) int -> r8 "Inline stloc first use temp"
-; V74 tmp57 [V74,T40] ( 3, 8 ) int -> rdx "Inline return value spill temp"
-;* V75 tmp58 [V75,T44] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V76 tmp59 [V76,T62] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V77 tmp60 [V77,T28] ( 4, 12 ) int -> rdx "Inline stloc first use temp"
+; V65 tmp48 [V65,T67] ( 4, 2 ) int -> r8 "Inline stloc first use temp"
+; V66 tmp49 [V66,T58] ( 3, 3 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
+;* V67 tmp50 [V67,T55] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V68 tmp51 [V68,T04] ( 3, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+; V69 tmp52 [V69,T19] ( 3, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>>
+; V70 tmp53 [V70,T34] ( 3, 8 ) int -> r8 "Inline return value spill temp"
+;* V71 tmp54 [V71,T36] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V72 tmp55 [V72,T54] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V73 tmp56 [V73,T18] ( 4, 12 ) int -> r8 "Inline stloc first use temp"
+; V74 tmp57 [V74,T75] ( 3, 1.50) int -> rdx "Inline return value spill temp"
+;* V75 tmp58 [V75,T83] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V76 tmp59 [V76,T89] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V77 tmp60 [V77,T68] ( 4, 2 ) int -> rdx "Inline stloc first use temp"
;* V78 tmp61 [V78 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V79 tmp62 [V79 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V80 tmp63 [V80 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V81 tmp64 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V82 tmp65 [V82 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V83 tmp66 [V83,T60] ( 4, 4 ) int -> r13 "Inlining Arg"
-; V84 tmp67 [V84,T54] ( 5, 5 ) int -> rsi "Inlining Arg"
+; V83 tmp66 [V83,T53] ( 4, 4 ) int -> r13 "Inlining Arg"
+; V84 tmp67 [V84,T46] ( 5, 5 ) int -> rsi "Inlining Arg"
;* V85 tmp68 [V85 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V86 tmp69 [V86,T73] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp"
-; V87 tmp70 [V87,T67] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V88 tmp71 [V88,T50] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
-; V89 tmp72 [V89,T38] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
-; V90 tmp73 [V90,T30] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
+; V86 tmp69 [V86,T69] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp"
+; V87 tmp70 [V87,T59] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V88 tmp71 [V88,T43] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
+; V89 tmp72 [V89,T33] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V90 tmp73 [V90,T20] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
;* V91 tmp74 [V91 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V92 tmp75 [V92,T31] ( 3, 12 ) byref -> rcx "dup spill"
+; V92 tmp75 [V92,T21] ( 3, 12 ) byref -> rcx "dup spill"
;* V93 tmp76 [V93 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
;* V94 tmp77 [V94 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
-; V95 tmp78 [V95,T06] ( 6, 35.50) byref -> rsi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V96 tmp79 [V96,T03] ( 11, 38.50) int -> rdi single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V97 tmp80 [V97,T07] ( 5, 34 ) byref -> r15 "field V05._reference (fldOffset=0x0)" P-INDEP
-; V98 tmp81 [V98,T04] ( 6, 38 ) int -> r12 "field V05._length (fldOffset=0x8)" P-INDEP
+; V95 tmp78 [V95,T40] ( 6, 7.50) byref -> rsi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp79 [V96,T27] ( 11, 10.50) int -> rdi single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V97 tmp80 [V97,T42] ( 5, 6 ) byref -> r15 "field V05._reference (fldOffset=0x0)" P-INDEP
+; V98 tmp81 [V98,T28] ( 6, 10 ) int -> r12 "field V05._length (fldOffset=0x8)" P-INDEP
;* V99 tmp82 [V99 ] ( 0, 0 ) byref -> zero-ref single-def "field V18._reference (fldOffset=0x0)" P-INDEP
;* V100 tmp83 [V100 ] ( 0, 0 ) int -> zero-ref single-def "field V18._length (fldOffset=0x8)" P-INDEP
;* V101 tmp84 [V101 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP
@@ -115,42 +115,43 @@
;* V104 tmp87 [V104 ] ( 0, 0 ) int -> zero-ref single-def "field V22._length (fldOffset=0x8)" P-INDEP
;* V105 tmp88 [V105 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP
;* V106 tmp89 [V106 ] ( 0, 0 ) int -> zero-ref single-def "field V27._length (fldOffset=0x8)" P-INDEP
-; V107 tmp90 [V107,T79] ( 2, 1 ) byref -> r15 single-def "field V32._reference (fldOffset=0x0)" P-INDEP
-; V108 tmp91 [V108,T82] ( 2, 1 ) int -> r12 single-def "field V32._length (fldOffset=0x8)" P-INDEP
-; V109 tmp92 [V109,T80] ( 2, 1 ) byref -> r15 "field V42._reference (fldOffset=0x0)" P-INDEP
-; V110 tmp93 [V110,T83] ( 2, 1 ) int -> r12 "field V42._length (fldOffset=0x8)" P-INDEP
+; V107 tmp90 [V107,T77] ( 2, 1 ) byref -> r15 single-def "field V32._reference (fldOffset=0x0)" P-INDEP
+; V108 tmp91 [V108,T80] ( 2, 1 ) int -> r12 single-def "field V32._length (fldOffset=0x8)" P-INDEP
+; V109 tmp92 [V109,T78] ( 2, 1 ) byref -> r15 "field V42._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp93 [V110,T81] ( 2, 1 ) int -> r12 "field V42._length (fldOffset=0x8)" P-INDEP
;* V111 tmp94 [V111 ] ( 0, 0 ) byref -> zero-ref "field V52._reference (fldOffset=0x0)" P-INDEP
;* V112 tmp95 [V112 ] ( 0, 0 ) int -> zero-ref "field V52._length (fldOffset=0x8)" P-INDEP
-; V113 tmp96 [V113,T81] ( 2, 1 ) byref -> r15 "field V57._reference (fldOffset=0x0)" P-INDEP
-; V114 tmp97 [V114,T84] ( 2, 1 ) int -> r12 "field V57._length (fldOffset=0x8)" P-INDEP
+; V113 tmp96 [V113,T79] ( 2, 1 ) byref -> r15 "field V57._reference (fldOffset=0x0)" P-INDEP
+; V114 tmp97 [V114,T82] ( 2, 1 ) int -> r12 "field V57._length (fldOffset=0x8)" P-INDEP
;* V115 tmp98 [V115 ] ( 0, 0 ) byref -> zero-ref "field V78._reference (fldOffset=0x0)" P-INDEP
;* V116 tmp99 [V116 ] ( 0, 0 ) int -> zero-ref "field V78._length (fldOffset=0x8)" P-INDEP
;* V117 tmp100 [V117 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V118 tmp101 [V118,T11] ( 3, 24 ) ref -> r8 "arr expr"
-; V119 tmp102 [V119,T14] ( 3, 24 ) int -> r10 "index expr"
-; V120 tmp103 [V120,T12] ( 3, 24 ) ref -> rcx "arr expr"
-;* V121 tmp104 [V121,T45] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V122 tmp105 [V122,T48] ( 0, 0 ) int -> zero-ref "index expr"
-;* V123 tmp106 [V123,T46] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V124 tmp107 [V124,T41] ( 2, 8 ) ref -> r10 "arr expr"
-; V125 tmp108 [V125,T24] ( 2, 16 ) ref -> r10 "arr expr"
-; V126 tmp109 [V126,T15] ( 3, 24 ) int -> rdx "index expr"
-;* V127 tmp110 [V127,T47] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V128 tmp111 [V128,T42] ( 2, 8 ) ref -> rcx "arr expr"
-; V129 tmp112 [V129,T13] ( 3, 24 ) ref -> rax "arr expr"
-; V130 tmp113 [V130,T32] ( 3, 12 ) ref -> rdx "arr expr"
-; V131 cse0 [V131,T34] ( 3, 12 ) int -> r8 "CSE - conservative"
-; V132 cse1 [V132,T17] ( 4, 16 ) int -> rdx "CSE - moderate"
-; V133 cse2 [V133,T16] ( 5, 16 ) ref -> rcx "CSE - moderate"
-; V134 cse3 [V134,T36] ( 4, 9 ) ref -> rcx "CSE - conservative"
-; V135 cse4 [V135,T20] ( 2, 8 ) ref -> rcx "CSE - moderate"
-; V136 cse5 [V136,T21] ( 2, 8 ) ref -> rcx "CSE - moderate"
-; V137 cse6 [V137,T22] ( 2, 8 ) ref -> rdx "CSE - moderate"
-; V138 cse7 [V138,T49] ( 3, 6.54) ref -> rax hoist "CSE - conservative"
-; V139 cse8 [V139,T51] ( 3, 6 ) int -> r8 "CSE - conservative"
-; V140 cse9 [V140,T52] ( 3, 6 ) int -> rdx "CSE - conservative"
-; V141 cse10 [V141,T01] ( 3, 96 ) int -> r10 "CSE - aggressive"
-; V142 cse11 [V142,T19] ( 5, 16 ) int -> r9 "CSE - moderate"
+; V118 tmp101 [V118,T05] ( 3, 24 ) ref -> r8 "arr expr"
+; V119 tmp102 [V119,T08] ( 3, 24 ) int -> r10 "index expr"
+; V120 tmp103 [V120,T06] ( 3, 24 ) ref -> rcx "arr expr"
+;* V121 tmp104 [V121,T37] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V122 tmp105 [V122,T39] ( 0, 0 ) int -> zero-ref "index expr"
+;* V123 tmp106 [V123,T38] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V124 tmp107 [V124,T22] ( 3, 12 ) ref -> r10 "arr expr"
+; V125 tmp108 [V125,T60] ( 3, 3 ) ref -> r10 "arr expr"
+; V126 tmp109 [V126,T65] ( 3, 3 ) int -> rdx "index expr"
+;* V127 tmp110 [V127,T84] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V128 tmp111 [V128,T61] ( 3, 3 ) ref -> rcx "arr expr"
+; V129 tmp112 [V129,T07] ( 3, 24 ) ref -> rax "arr expr"
+; V130 tmp113 [V130,T23] ( 3, 12 ) ref -> rdx "arr expr"
+; V131 cse0 [V131,T25] ( 3, 12 ) int -> r8 "CSE - moderate"
+; V132 cse1 [V132,T09] ( 4, 12.50) int -> rdx "CSE - moderate"
+; V133 cse2 [V133,T11] ( 5, 11 ) ref -> rcx "CSE - moderate"
+; V134 cse3 [V134,T76] ( 3, 1.50) int -> rdx "CSE - conservative"
+; V135 cse4 [V135,T31] ( 4, 9 ) ref -> rcx "CSE - moderate"
+; V136 cse5 [V136,T41] ( 3, 6.54) ref -> rax hoist "CSE - moderate"
+; V137 cse6 [V137,T14] ( 2, 8 ) ref -> rcx "CSE - moderate"
+; V138 cse7 [V138,T15] ( 2, 8 ) ref -> rcx "CSE - moderate"
+; V139 cse8 [V139,T16] ( 2, 8 ) ref -> rdx "CSE - moderate"
+; V140 cse9 [V140,T44] ( 3, 6 ) int -> r8 "CSE - moderate"
+; V141 cse10 [V141,T35] ( 2, 8 ) int -> r8 "CSE - moderate"
+; V142 cse11 [V142,T26] ( 3, 12 ) int -> r10 "CSE - moderate"
+; V143 cse12 [V143,T30] ( 18, 9 ) ref -> rdx multi-def "CSE - moderate"
;
; Lcl frame size = 56
@@ -174,7 +175,7 @@ G_M49982_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx},
mov edi, dword ptr [rdx+0x08]
mov ebp, dword ptr [rbx+0x4C]
cmp ebp, edi
- ja G_M49982_IG40
+ ja G_M49982_IG39
mov ecx, ebp
lea r14, bword ptr [rsi+2*rcx]
; byrRegs +[r14]
@@ -184,15 +185,15 @@ G_M49982_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx},
;; size=31 bbWeight=1 PerfScore 9.50
G_M49982_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=4040 {rsi r14}, byref
; byrRegs -[rdx]
- mov rcx, 0xD1FFAB1E
- ; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
...
-37 (-2.62%) : 321649.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4554_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,58 +8,58 @@
; 8 inlinees with PGO data; 45 single block inlinees; 17 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T00] ( 41,196.25) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T43] ( 4, 8 ) byref -> rdx single-def
+; V00 arg0 [V00,T00] ( 41,156.25) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V01 arg1 [V01,T35] ( 4, 8 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T62] ( 6, 5 ) int -> [rsp+0x74] spill-single-def
-; V04 loc2 [V04,T05] ( 28, 65.50) int -> [rsp+0x70]
+; V03 loc1 [V03,T54] ( 6, 5 ) int -> r14 single-def
+; V04 loc2 [V04,T06] ( 28, 58.50) int -> [rsp+0x54]
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
; V06 loc4 [V06,T04] ( 18, 89 ) int -> r15
-; V07 loc5 [V07,T22] ( 7, 27 ) int -> [rsp+0x6C]
-; V08 loc6 [V08,T32] ( 4, 18 ) int -> rbp
-; V09 loc7 [V09,T07] ( 11, 50 ) int -> [rsp+0x68]
-; V10 loc8 [V10,T31] ( 5, 20 ) int -> r12
-; V11 loc9 [V11,T44] ( 5, 9.50) int -> [rsp+0x64]
-; V12 loc10 [V12,T16] ( 2, 32.50) int -> r10
+; V07 loc5 [V07,T15] ( 7, 27 ) int -> [rsp+0x50]
+; V08 loc6 [V08,T22] ( 4, 18 ) int -> rbp
+; V09 loc7 [V09,T09] ( 11, 36 ) int -> [rsp+0x4C]
+; V10 loc8 [V10,T50] ( 5, 6 ) int -> r12
+; V11 loc9 [V11,T70] ( 5, 2.50) int -> [rsp+0x48]
+; V12 loc10 [V12,T56] ( 2, 4.50) int -> r10
;* V13 loc11 [V13 ] ( 0, 0 ) int -> zero-ref
; V14 OutArgs [V14 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T08] ( 3, 48 ) ref -> rdx class-hnd "impAppendStmt" <<unknown class>>
-; V16 tmp2 [V16,T20] ( 2, 32 ) int -> r8 "Strict ordering of exceptions for Array store"
+; V15 tmp1 [V15,T07] ( 3, 48 ) ref -> rdx class-hnd "impAppendStmt" <<unknown class>>
+; V16 tmp2 [V16,T13] ( 2, 32 ) int -> r8 "Strict ordering of exceptions for Array store"
;* V17 tmp3 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V18 tmp4 [V18,T60] ( 3, 6 ) int -> r12 "Inlining Arg"
-; V19 tmp5 [V19,T65] ( 2, 4 ) byref -> r13 single-def "Inlining Arg"
+; V18 tmp4 [V18,T51] ( 3, 6 ) int -> r12 "Inlining Arg"
+; V19 tmp5 [V19,T58] ( 2, 4 ) byref -> r13 single-def "Inlining Arg"
;* V20 tmp6 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V21 tmp7 [V21 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V22 tmp8 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V23 tmp9 [V23,T26] ( 3, 24 ) int -> [rsp+0x60] spill-single-def "Inlining Arg"
-; V24 tmp10 [V24,T35] ( 2, 16 ) byref -> r13 "Inlining Arg"
+; V23 tmp9 [V23,T18] ( 3, 24 ) int -> [rsp+0x44] spill-single-def "Inlining Arg"
+; V24 tmp10 [V24,T26] ( 2, 16 ) byref -> r13 "Inlining Arg"
;* V25 tmp11 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V26 tmp12 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V27 tmp13 [V27,T21] ( 4, 28 ) int -> [rsp+0x5C] "Inlining Arg"
-; V28 tmp14 [V28,T13] ( 5, 36 ) int -> [rsp+0x58] "Inlining Arg"
+; V27 tmp13 [V27,T14] ( 4, 28 ) int -> [rsp+0x40] "Inlining Arg"
+; V28 tmp14 [V28,T10] ( 5, 36 ) int -> [rsp+0x3C] "Inlining Arg"
;* V29 tmp15 [V29 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V30 tmp16 [V30,T34] ( 4, 16 ) int -> r10 "Inline stloc first use temp"
-; V31 tmp17 [V31,T24] ( 3, 24 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
+; V30 tmp16 [V30,T25] ( 4, 16 ) int -> r10 "Inline stloc first use temp"
+; V31 tmp17 [V31,T16] ( 3, 24 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
;* V32 tmp18 [V32 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V33 tmp19 [V33,T42] ( 3, 12 ) int -> rbp "Inlining Arg"
-; V34 tmp20 [V34,T49] ( 2, 8 ) byref -> r13 "Inlining Arg"
+; V33 tmp19 [V33,T34] ( 3, 12 ) int -> rbp "Inlining Arg"
+; V34 tmp20 [V34,T39] ( 2, 8 ) byref -> r13 "Inlining Arg"
;* V35 tmp21 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V36 tmp22 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V37 tmp23 [V37,T11] ( 3, 48 ) int -> rdx "Inline stloc first use temp"
-; V38 tmp24 [V38,T06] ( 4, 64 ) int -> rcx "Inline stloc first use temp"
+; V37 tmp23 [V37,T08] ( 3, 48 ) int -> rdx "Inline stloc first use temp"
+; V38 tmp24 [V38,T05] ( 4, 64 ) int -> rcx "Inline stloc first use temp"
; V39 tmp25 [V39,T01] ( 3, 96 ) ref -> rdx class-hnd "impAppendStmt" <<unknown class>>
;* V40 tmp26 [V40 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
; V41 tmp27 [V41,T02] ( 3, 96 ) byref -> rdx "dup spill"
;* V42 tmp28 [V42 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V43 tmp29 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
-;* V44 tmp30 [V44,T55] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
-;* V45 tmp31 [V45,T56] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V44 tmp30 [V44,T44] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
+;* V45 tmp31 [V45,T45] ( 0, 0 ) ushort -> zero-ref ld-addr-op "Inlining Arg"
;* V46 tmp32 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V47 tmp33 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V48 tmp34 [V48,T57] ( 0, 0 ) short -> zero-ref "Inlining Arg"
-;* V49 tmp35 [V49,T58] ( 0, 0 ) short -> zero-ref "Inlining Arg"
+;* V48 tmp34 [V48,T46] ( 0, 0 ) short -> zero-ref "Inlining Arg"
+;* V49 tmp35 [V49,T47] ( 0, 0 ) short -> zero-ref "Inlining Arg"
;* V50 tmp36 [V50 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V51 tmp37 [V51,T52] ( 2, 8 ) int -> r10 "Inline return value spill temp"
+; V51 tmp37 [V51,T42] ( 2, 8 ) int -> r10 "Inline return value spill temp"
;* V52 tmp38 [V52 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
;* V53 tmp39 [V53 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
;* V54 tmp40 [V54 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
@@ -68,83 +68,83 @@
;* V57 tmp43 [V57 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
;* V58 tmp44 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]>
;* V59 tmp45 [V59 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V60 tmp46 [V60,T27] ( 3, 24 ) int -> rbp "Inlining Arg"
-; V61 tmp47 [V61,T36] ( 2, 16 ) byref -> r13 "Inlining Arg"
+; V60 tmp46 [V60,T66] ( 3, 3 ) int -> rbp "Inlining Arg"
+; V61 tmp47 [V61,T72] ( 2, 2 ) byref -> r13 "Inlining Arg"
;* V62 tmp48 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V63 tmp49 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V64 tmp50 [V64,T28] ( 3, 24 ) int -> r8 "Inline stloc first use temp"
-; V65 tmp51 [V65,T17] ( 4, 32 ) int -> r13 "Inline stloc first use temp"
-; V66 tmp52 [V66,T09] ( 3, 48 ) ref -> r8 class-hnd "impAppendStmt" <<unknown class>>
+; V64 tmp50 [V64,T52] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
+; V65 tmp51 [V65,T37] ( 4, 8 ) int -> r8 "Inline stloc first use temp"
+; V66 tmp52 [V66,T27] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
;* V67 tmp53 [V67 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V68 tmp54 [V68,T10] ( 3, 48 ) byref -> r8 "dup spill"
+; V68 tmp54 [V68,T28] ( 3, 12 ) byref -> rcx "dup spill"
;* V69 tmp55 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V70 tmp56 [V70,T72] ( 3, 3 ) int -> [rsp+0x54] spill-single-def "Inlining Arg"
-; V71 tmp57 [V71,T75] ( 2, 2 ) byref -> r13 "Inlining Arg"
+; V70 tmp56 [V70,T67] ( 3, 3 ) int -> [rsp+0x38] spill-single-def "Inlining Arg"
+; V71 tmp57 [V71,T73] ( 2, 2 ) byref -> [rsp+0x28] spill-single-def "Inlining Arg"
;* V72 tmp58 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V73 tmp59 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V74 tmp60 [V74,T82] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V75 tmp61 [V75,T68] ( 3, 3 ) ref -> [rsp+0x40] class-hnd spill-single-def "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V76 tmp62 [V76,T78] ( 3, 1.50) ref -> [rsp+0x38] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V75 tmp61 [V75,T61] ( 3, 3 ) ref -> r11 class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+; V76 tmp62 [V76,T76] ( 3, 1.50) ref -> [rsp+0x20] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
;* V77 tmp63 [V77 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V78 tmp64 [V78 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V79 tmp65 [V79 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V80 tmp66 [V80 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V81 tmp67 [V81 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V82 tmp68 [V82,T64] ( 4, 4 ) int -> rdi "Inlining Arg"
-; V83 tmp69 [V83,T63] ( 5, 5 ) int -> rsi "Inlining Arg"
+; V82 tmp68 [V82,T57] ( 4, 4 ) int -> rdi "Inlining Arg"
+; V83 tmp69 [V83,T55] ( 5, 5 ) int -> rsi "Inlining Arg"
;* V84 tmp70 [V84 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V85 tmp71 [V85,T74] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp"
-; V86 tmp72 [V86,T69] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V87 tmp73 [V87,T61] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
-; V88 tmp74 [V88,T48] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
-; V89 tmp75 [V89,T37] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
+; V85 tmp71 [V85,T71] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp"
+; V86 tmp72 [V86,T62] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V87 tmp73 [V87,T53] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
+; V88 tmp74 [V88,T38] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V89 tmp75 [V89,T29] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
;* V90 tmp76 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V91 tmp77 [V91,T38] ( 3, 12 ) byref -> rcx "dup spill"
+; V91 tmp77 [V91,T30] ( 3, 12 ) byref -> rcx "dup spill"
;* V92 tmp78 [V92 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
;* V93 tmp79 [V93 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
-; V94 tmp80 [V94,T47] ( 5, 8.50) byref -> [rsp+0x30] spill-single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V95 tmp81 [V95,T33] ( 11, 17 ) int -> rdi single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V96 tmp82 [V96,T23] ( 9, 24 ) byref -> r13 "field V05._reference (fldOffset=0x0)" P-INDEP
-; V97 tmp83 [V97,T15] ( 11, 34 ) int -> [rsp+0x50] "field V05._length (fldOffset=0x8)" P-INDEP
-; V98 tmp84 [V98,T76] ( 2, 2 ) byref -> r13 single-def "field V17._reference (fldOffset=0x0)" P-INDEP
-; V99 tmp85 [V99,T77] ( 2, 2 ) int -> r12 single-def "field V17._length (fldOffset=0x8)" P-INDEP
-; V100 tmp86 [V100,T50] ( 2, 8 ) byref -> r13 "field V22._reference (fldOffset=0x0)" P-INDEP
-; V101 tmp87 [V101,T53] ( 2, 8 ) int -> r8 "field V22._length (fldOffset=0x8)" P-INDEP
-; V102 tmp88 [V102,T66] ( 2, 4 ) byref -> r13 "field V32._reference (fldOffset=0x0)" P-INDEP
-; V103 tmp89 [V103,T67] ( 2, 4 ) int -> rdx "field V32._length (fldOffset=0x8)" P-INDEP
+; V94 tmp80 [V94,T36] ( 5, 8.50) byref -> rsi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V95 tmp81 [V95,T23] ( 11, 17 ) int -> rdi single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V96 tmp82 [V96,T24] ( 9, 17 ) byref -> registers "field V05._reference (fldOffset=0x0)" P-INDEP
+; V97 tmp83 [V97,T20] ( 11, 23.50) int -> [rsp+0x34] "field V05._length (fldOffset=0x8)" P-INDEP
+; V98 tmp84 [V98,T74] ( 2, 2 ) byref -> r13 single-def "field V17._reference (fldOffset=0x0)" P-INDEP
+; V99 tmp85 [V99,T75] ( 2, 2 ) int -> r12 single-def "field V17._length (fldOffset=0x8)" P-INDEP
+; V100 tmp86 [V100,T40] ( 2, 8 ) byref -> r13 "field V22._reference (fldOffset=0x0)" P-INDEP
+; V101 tmp87 [V101,T43] ( 2, 8 ) int -> r8 "field V22._length (fldOffset=0x8)" P-INDEP
+; V102 tmp88 [V102,T59] ( 2, 4 ) byref -> r13 "field V32._reference (fldOffset=0x0)" P-INDEP
+; V103 tmp89 [V103,T60] ( 2, 4 ) int -> rdx "field V32._length (fldOffset=0x8)" P-INDEP
;* V104 tmp90 [V104 ] ( 0, 0 ) byref -> zero-ref "field V43._reference (fldOffset=0x0)" P-INDEP
;* V105 tmp91 [V105 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP
;* V106 tmp92 [V106 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP
;* V107 tmp93 [V107 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
;* V108 tmp94 [V108 ] ( 0, 0 ) byref -> zero-ref "field V58._reference (fldOffset=0x0)" P-INDEP
;* V109 tmp95 [V109 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
-; V110 tmp96 [V110,T51] ( 2, 8 ) byref -> r13 "field V59._reference (fldOffset=0x0)" P-INDEP
-; V111 tmp97 [V111,T54] ( 2, 8 ) int -> rbp "field V59._length (fldOffset=0x8)" P-INDEP
-; V112 tmp98 [V112,T80] ( 2, 1 ) byref -> r13 "field V69._reference (fldOffset=0x0)" P-INDEP
-; V113 tmp99 [V113,T81] ( 2, 1 ) int -> r8 "field V69._length (fldOffset=0x8)" P-INDEP
+; V110 tmp96 [V110,T78] ( 2, 1 ) byref -> r13 "field V59._reference (fldOffset=0x0)" P-INDEP
+; V111 tmp97 [V111,T80] ( 2, 1 ) int -> rbp "field V59._length (fldOffset=0x8)" P-INDEP
+; V112 tmp98 [V112,T79] ( 2, 1 ) byref -> r8 "field V69._reference (fldOffset=0x0)" P-INDEP
+; V113 tmp99 [V113,T81] ( 2, 1 ) int -> r10 "field V69._length (fldOffset=0x8)" P-INDEP
;* V114 tmp100 [V114 ] ( 0, 0 ) byref -> zero-ref "field V77._reference (fldOffset=0x0)" P-INDEP
;* V115 tmp101 [V115 ] ( 0, 0 ) int -> zero-ref "field V77._length (fldOffset=0x8)" P-INDEP
;* V116 tmp102 [V116 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V117 tmp103 [V117,T18] ( 2, 32 ) ref -> rcx "arr expr"
-; V118 tmp104 [V118,T70] ( 3, 3 ) ref -> [rsp+0x28] spill-single-def "arr expr"
-; V119 tmp105 [V119,T73] ( 3, 3 ) int -> r14 "index expr"
-; V120 tmp106 [V120,T71] ( 3, 3 ) ref -> r14 "arr expr"
-; V121 tmp107 [V121,T19] ( 2, 32 ) ref -> rsi "arr expr"
-; V122 tmp108 [V122,T39] ( 3, 12 ) ref -> rdx "arr expr"
-; V123 tmp109 [V123,T40] ( 3, 12 ) ref -> rcx "arr expr"
-; V124 tmp110 [V124,T41] ( 3, 12 ) ref -> r8 "arr expr"
+; V117 tmp103 [V117,T12] ( 2, 32 ) ref -> rcx "arr expr"
+; V118 tmp104 [V118,T63] ( 3, 3 ) ref -> r11 "arr expr"
+; V119 tmp105 [V119,T68] ( 3, 3 ) int -> rcx "index expr"
+; V120 tmp106 [V120,T64] ( 3, 3 ) ref -> r11 "arr expr"
+; V121 tmp107 [V121,T41] ( 2, 8 ) ref -> r8 "arr expr"
+; V122 tmp108 [V122,T31] ( 3, 12 ) ref -> rdx "arr expr"
+; V123 tmp109 [V123,T32] ( 3, 12 ) ref -> rcx "arr expr"
+; V124 tmp110 [V124,T33] ( 3, 12 ) ref -> r8 "arr expr"
; V125 tmp111 [V125,T03] ( 3, 96 ) ref -> rcx "arr expr"
-; V126 cse0 [V126,T79] ( 3, 1.50) int -> [rsp+0x4C] spill-single-def "CSE - conservative"
-; V127 cse1 [V127,T12] ( 4, 41 ) ref -> rdx "CSE - moderate"
-; V128 cse2 [V128,T14] ( 4, 36 ) ref -> r8 "CSE - moderate"
-; V129 cse3 [V129,T45] ( 3, 9 ) ref -> r9 "CSE - conservative"
-; V130 cse4 [V130,T25] ( 3, 24 ) ref -> rcx "CSE - moderate"
-; V131 cse5 [V131,T59] ( 3, 6.25) ref -> rax hoist "CSE - conservative"
-; V132 cse6 [V132,T46] ( 3, 9 ) int -> r11 "CSE - conservative"
-; V133 cse7 [V133,T29] ( 3, 24 ) int -> r10 "CSE - moderate"
-; V134 cse8 [V134,T30] ( 18, 22.50) ref -> rdx multi-def "CSE - moderate"
+; V126 cse0 [V126,T77] ( 3, 1.50) int -> rcx "CSE - conservative"
+; V127 cse1 [V127,T11] ( 4, 36 ) ref -> r8 "CSE - aggressive"
+; V128 cse2 [V128,T17] ( 3, 24 ) ref -> rcx "CSE - moderate"
+; V129 cse3 [V129,T48] ( 4, 7 ) ref -> rdx "CSE - conservative"
+; V130 cse4 [V130,T49] ( 3, 6.25) ref -> rax hoist "CSE - conservative"
+; V131 cse5 [V131,T65] ( 3, 3 ) ref -> r9 "CSE - conservative"
+; V132 cse6 [V132,T19] ( 3, 24 ) int -> r10 "CSE - moderate"
+; V133 cse7 [V133,T21] ( 18, 18 ) ref -> rdx multi-def "CSE - moderate"
+; V134 cse8 [V134,T69] ( 3, 3 ) int -> [rsp+0x30] spill-single-def "CSE - conservative"
;
-; Lcl frame size = 120
+; Lcl frame size = 88
G_M19031_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -155,7 +155,7 @@ G_M19031_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 120
+ sub rsp, 88
mov rbx, rcx
; gcrRegs +[rbx]
;; size=19 bbWeight=1 PerfScore 8.50
@@ -163,23 +163,20 @@ G_M19031_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0004 {rdx},
; byrRegs +[rdx]
mov rsi, bword ptr [rdx]
; byrRegs +[rsi]
- mov bword ptr [rsp+0x30], rsi
- ; GC ptr vars +{V94}
mov edi, dword ptr [rdx+0x08]
mov ebp, dword ptr [rbx+0x4C]
mov r14d, ebp
- mov dword ptr [rsp+0x74], r14d
xor r15d, r15d
cmp r14d, edi
- ja G_M19031_IG41
+ ja G_M19031_IG40
mov ecx, r14d
lea r13, bword ptr [rsi+2*rcx]
; byrRegs +[r13]
mov r12d, edi
sub r12d, r14d
...
-36 (-2.56%) : 321772.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4869_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
@@ -8,153 +8,155 @@
; 5 inlinees with PGO data; 25 single block inlinees; 16 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T02] ( 38, 66.67) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
-; V01 arg1 [V01,T39] ( 4, 8 ) byref -> rdx single-def
+; V00 arg0 [V00,T00] ( 38, 66.67) ref -> rbx class-hnd single-def <System.Text.RegularExpressions.RegexRunner>
+; V01 arg1 [V01,T36] ( 4, 8 ) byref -> rdx single-def
;* V02 loc0 [V02 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V03 loc1 [V03,T23] ( 13, 17 ) int -> rbp single-def
-; V04 loc2 [V04,T20] ( 21, 20 ) int -> registers
+; V03 loc1 [V03,T13] ( 13, 17 ) int -> rbp single-def
+; V04 loc2 [V04,T12] ( 21, 20 ) int -> registers
;* V05 loc3 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ushort]>
;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref
-;* V07 loc5 [V07,T108] ( 0, 0 ) int -> zero-ref single-def
-;* V08 loc6 [V08,T109] ( 0, 0 ) int -> zero-ref single-def
-; V09 loc7 [V09,T58] ( 3, 5.50) int -> r13 single-def
-; V10 loc8 [V10,T61] ( 4, 5 ) int -> [rsp+0x34]
-; V11 loc9 [V11,T19] ( 10, 22.50) int -> registers
-; V12 loc10 [V12,T03] ( 5, 44.50) int -> registers
-; V13 loc11 [V13,T00] ( 15,140.50) int -> registers
+;* V07 loc5 [V07,T109] ( 0, 0 ) int -> zero-ref single-def
+;* V08 loc6 [V08,T110] ( 0, 0 ) int -> zero-ref single-def
+; V09 loc7 [V09,T52] ( 3, 5.50) int -> r13 single-def
+; V10 loc8 [V10,T55] ( 4, 5 ) int -> [rsp+0x34]
+; V11 loc9 [V11,T14] ( 10, 19 ) int -> registers
+; V12 loc10 [V12,T38] ( 4, 9 ) int -> registers
+; V13 loc11 [V13,T01] ( 14, 49 ) int -> registers
;* V14 loc12 [V14 ] ( 0, 0 ) ushort -> zero-ref
;* V15 loc13 [V15 ] ( 0, 0 ) ushort -> zero-ref
-; V16 loc14 [V16,T57] ( 4, 5.50) int -> [rsp+0x30] spill-single-def
+; V16 loc14 [V16,T51] ( 4, 5.50) int -> [rsp+0x30] spill-single-def
;* V17 loc15 [V17 ] ( 0, 0 ) ushort -> zero-ref
;* V18 loc16 [V18 ] ( 0, 0 ) ushort -> zero-ref
; V19 OutArgs [V19 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V20 tmp1 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V21 tmp2 [V21,T41] ( 3, 6 ) int -> r15 "Inlining Arg"
-; V22 tmp3 [V22,T64] ( 2, 4 ) byref -> r14 single-def "Inlining Arg"
+; V21 tmp2 [V21,T39] ( 3, 6 ) int -> r15 "Inlining Arg"
+; V22 tmp3 [V22,T58] ( 2, 4 ) byref -> r14 single-def "Inlining Arg"
;* V23 tmp4 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V24 tmp5 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V25 tmp6 [V25,T95] ( 3, 1.50) int -> rax "Inline return value spill temp"
-; V26 tmp7 [V26,T68] ( 3, 3 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V27 tmp8 [V27,T91] ( 3, 1.50) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V28 tmp9 [V28,T80] ( 4, 2 ) int -> rax single-def "Inline stloc first use temp"
-; V29 tmp10 [V29,T96] ( 3, 1.50) int -> r8 "Inline return value spill temp"
-;* V30 tmp11 [V30,T106] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V31 tmp12 [V31,T111] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V32 tmp13 [V32,T81] ( 4, 2 ) int -> r8 single-def "Inline stloc first use temp"
+; V25 tmp6 [V25,T92] ( 3, 1.50) int -> rax "Inline return value spill temp"
+; V26 tmp7 [V26,T61] ( 3, 3 ) ref -> rcx class-hnd single-def "Inlining Arg" <System.Text.RegularExpressions.Match>
+; V27 tmp8 [V27,T88] ( 3, 1.50) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V28 tmp9 [V28,T76] ( 4, 2 ) int -> rax single-def "Inline stloc first use temp"
+; V29 tmp10 [V29,T93] ( 3, 1.50) int -> r8 "Inline return value spill temp"
+;* V30 tmp11 [V30,T105] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V31 tmp12 [V31,T112] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inline stloc first use temp" <<unknown class>>
+; V32 tmp13 [V32,T77] ( 4, 2 ) int -> r8 single-def "Inline stloc first use temp"
;* V33 tmp14 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V34 tmp15 [V34,T73] ( 3, 3 ) int -> r15 "Inlining Arg"
-; V35 tmp16 [V35,T84] ( 2, 2 ) byref -> r14 single-def "Inlining Arg"
+; V34 tmp15 [V34,T68] ( 3, 3 ) int -> r15 "Inlining Arg"
+; V35 tmp16 [V35,T81] ( 2, 2 ) byref -> r14 single-def "Inlining Arg"
;* V36 tmp17 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V37 tmp18 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V38 tmp19 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V39 tmp20 [V39,T74] ( 3, 3 ) int -> r15 "Inlining Arg"
-; V40 tmp21 [V40,T85] ( 2, 2 ) byref -> r14 "Inlining Arg"
+; V39 tmp20 [V39,T69] ( 3, 3 ) int -> r15 "Inlining Arg"
+; V40 tmp21 [V40,T82] ( 2, 2 ) byref -> r14 "Inlining Arg"
;* V41 tmp22 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V42 tmp23 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V43 tmp24 [V43,T37] ( 3, 12 ) int -> rdx "Inline stloc first use temp"
-; V44 tmp25 [V44,T28] ( 4, 16 ) int -> rax "Inline stloc first use temp"
-; V45 tmp26 [V45,T10] ( 3, 24 ) ref -> rdx class-hnd "impAppendStmt" <<unknown class>>
+; V43 tmp24 [V43,T30] ( 3, 12 ) int -> rdx "Inline stloc first use temp"
+; V44 tmp25 [V44,T16] ( 4, 16 ) int -> rax "Inline stloc first use temp"
+; V45 tmp26 [V45,T04] ( 3, 24 ) ref -> rdx class-hnd "impAppendStmt" <<unknown class>>
;* V46 tmp27 [V46 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V47 tmp28 [V47,T11] ( 3, 24 ) byref -> rdx "dup spill"
+; V47 tmp28 [V47,T05] ( 3, 24 ) byref -> rdx "dup spill"
;* V48 tmp29 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V49 tmp30 [V49,T75] ( 3, 3 ) int -> [rsp+0x2C] spill-single-def "Inlining Arg"
-; V50 tmp31 [V50,T86] ( 2, 2 ) byref -> r14 "Inlining Arg"
+; V49 tmp30 [V49,T70] ( 3, 3 ) int -> [rsp+0x2C] spill-single-def "Inlining Arg"
+; V50 tmp31 [V50,T83] ( 2, 2 ) byref -> r14 "Inlining Arg"
;* V51 tmp32 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V52 tmp33 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V53 tmp34 [V53,T08] ( 4, 28 ) int -> [rsp+0x28] "Inlining Arg"
-; V54 tmp35 [V54,T09] ( 4, 28 ) int -> [rsp+0x24] "Inlining Arg"
+; V53 tmp34 [V53,T02] ( 4, 28 ) int -> [rsp+0x28] "Inlining Arg"
+; V54 tmp35 [V54,T03] ( 4, 28 ) int -> [rsp+0x24] "Inlining Arg"
;* V55 tmp36 [V55 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V56 tmp37 [V56,T29] ( 4, 16 ) int -> r8 "Inline stloc first use temp"
-; V57 tmp38 [V57,T12] ( 3, 24 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
-;* V58 tmp39 [V58,T67] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V59 tmp40 [V59,T13] ( 3, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V60 tmp41 [V60,T33] ( 3, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>>
-; V61 tmp42 [V61,T43] ( 3, 8 ) int -> r10 "Inline return value spill temp"
-;* V62 tmp43 [V62,T47] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V63 tmp44 [V63,T65] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V64 tmp45 [V64,T31] ( 4, 12 ) int -> r10 "Inline stloc first use temp"
-; V65 tmp46 [V65,T44] ( 3, 8 ) int -> rdx "Inline return value spill temp"
-;* V66 tmp47 [V66,T48] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-;* V67 tmp48 [V67,T66] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
-; V68 tmp49 [V68,T32] ( 4, 12 ) int -> rdx "Inline stloc first use temp"
+; V56 tmp37 [V56,T17] ( 4, 16 ) int -> r8 "Inline stloc first use temp"
+; V57 tmp38 [V57,T06] ( 3, 24 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
+;* V58 tmp39 [V58,T60] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V59 tmp40 [V59,T07] ( 3, 24 ) ref -> rcx class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+; V60 tmp41 [V60,T25] ( 3, 12 ) ref -> rdx class-hnd "Inline stloc first use temp" <<unknown class>>
+; V61 tmp42 [V61,T41] ( 3, 8 ) int -> r10 "Inline return value spill temp"
+;* V62 tmp43 [V62,T43] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V63 tmp44 [V63,T59] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V64 tmp45 [V64,T24] ( 4, 12 ) int -> r10 "Inline stloc first use temp"
+; V65 tmp46 [V65,T94] ( 3, 1.50) int -> rdx "Inline return value spill temp"
+;* V66 tmp47 [V66,T106] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
+;* V67 tmp48 [V67,T113] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>>
+; V68 tmp49 [V68,T78] ( 4, 2 ) int -> rdx "Inline stloc first use temp"
;* V69 tmp50 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
;* V70 tmp51 [V70 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
;* V71 tmp52 [V71 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
;* V72 tmp53 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V73 tmp54 [V73 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V74 tmp55 [V74,T62] ( 4, 4 ) int -> r13 "Inlining Arg"
-; V75 tmp56 [V75,T59] ( 5, 5 ) int -> rsi "Inlining Arg"
+; V74 tmp55 [V74,T56] ( 4, 4 ) int -> r13 "Inlining Arg"
+; V75 tmp56 [V75,T53] ( 5, 5 ) int -> rsi "Inlining Arg"
;* V76 tmp57 [V76 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V77 tmp58 [V77,T82] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp"
-; V78 tmp59 [V78,T69] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V79 tmp60 [V79,T63] ( 4, 4 ) int -> rdi "Inlining Arg"
-; V80 tmp61 [V80,T60] ( 5, 5 ) int -> rsi "Inlining Arg"
+; V77 tmp58 [V77,T79] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp"
+; V78 tmp59 [V78,T62] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V79 tmp60 [V79,T57] ( 4, 4 ) int -> rdi "Inlining Arg"
+; V80 tmp61 [V80,T54] ( 5, 5 ) int -> rsi "Inlining Arg"
;* V81 tmp62 [V81 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V82 tmp63 [V82,T83] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp"
-; V83 tmp64 [V83,T70] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
-; V84 tmp65 [V84,T54] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
-; V85 tmp66 [V85,T42] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
-; V86 tmp67 [V86,T34] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
+; V82 tmp63 [V82,T80] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp"
+; V83 tmp64 [V83,T63] ( 3, 3 ) ref -> r9 class-hnd single-def "impAppendStmt" <<unknown class>>
+; V84 tmp65 [V84,T49] ( 3, 6 ) int -> rcx "Inline stloc first use temp"
+; V85 tmp66 [V85,T40] ( 4, 8 ) int -> rdx "Inline stloc first use temp"
+; V86 tmp67 [V86,T26] ( 3, 12 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>>
;* V87 tmp68 [V87 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Text.RegularExpressions.Match>
-; V88 tmp69 [V88,T35] ( 3, 12 ) byref -> rcx "dup spill"
+; V88 tmp69 [V88,T27] ( 3, 12 ) byref -> rcx "dup spill"
;* V89 tmp70 [V89 ] ( 0, 0 ) byref -> zero-ref "field V01._reference (fldOffset=0x0)" P-INDEP
;* V90 tmp71 [V90 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0x8)" P-INDEP
-; V91 tmp72 [V91,T06] ( 7, 39.50) byref -> rsi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V92 tmp73 [V92,T05] ( 12, 42.50) int -> rdi single-def "field V02._length (fldOffset=0x8)" P-INDEP
-; V93 tmp74 [V93,T07] ( 7, 39 ) byref -> r14 "field V05._reference (fldOffset=0x0)" P-INDEP
-; V94 tmp75 [V94,T04] ( 9, 43.50) int -> registers "field V05._length (fldOffset=0x8)" P-INDEP
-; V95 tmp76 [V95,T87] ( 2, 2 ) byref -> r14 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
-;* V96 tmp77 [V96,T110] ( 0, 0 ) int -> zero-ref single-def "field V20._length (fldOffset=0x8)" P-INDEP
-; V97 tmp78 [V97,T100] ( 2, 1 ) byref -> r14 single-def "field V33._reference (fldOffset=0x0)" P-INDEP
-; V98 tmp79 [V98,T103] ( 2, 1 ) int -> r15 single-def "field V33._length (fldOffset=0x8)" P-INDEP
-; V99 tmp80 [V99,T101] ( 2, 1 ) byref -> r14 "field V38._reference (fldOffset=0x0)" P-INDEP
-; V100 tmp81 [V100,T104] ( 2, 1 ) int -> r15 "field V38._length (fldOffset=0x8)" P-INDEP
-; V101 tmp82 [V101,T102] ( 2, 1 ) byref -> r14 "field V48._reference (fldOffset=0x0)" P-INDEP
-; V102 tmp83 [V102,T105] ( 2, 1 ) int -> rax "field V48._length (fldOffset=0x8)" P-INDEP
+; V91 tmp72 [V91,T34] ( 7, 11.50) byref -> rsi single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V92 tmp73 [V92,T20] ( 12, 14.50) int -> rdi single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V93 tmp74 [V93,T35] ( 7, 11 ) byref -> r14 "field V05._reference (fldOffset=0x0)" P-INDEP
+; V94 tmp75 [V94,T18] ( 9, 15.50) int -> registers "field V05._length (fldOffset=0x8)" P-INDEP
+; V95 tmp76 [V95,T84] ( 2, 2 ) byref -> r14 single-def "field V20._reference (fldOffset=0x0)" P-INDEP
+;* V96 tmp77 [V96,T111] ( 0, 0 ) int -> zero-ref single-def "field V20._length (fldOffset=0x8)" P-INDEP
+; V97 tmp78 [V97,T99] ( 2, 1 ) byref -> r14 single-def "field V33._reference (fldOffset=0x0)" P-INDEP
+; V98 tmp79 [V98,T102] ( 2, 1 ) int -> r15 single-def "field V33._length (fldOffset=0x8)" P-INDEP
+; V99 tmp80 [V99,T100] ( 2, 1 ) byref -> r14 "field V38._reference (fldOffset=0x0)" P-INDEP
+; V100 tmp81 [V100,T103] ( 2, 1 ) int -> r15 "field V38._length (fldOffset=0x8)" P-INDEP
+; V101 tmp82 [V101,T101] ( 2, 1 ) byref -> r14 "field V48._reference (fldOffset=0x0)" P-INDEP
+; V102 tmp83 [V102,T104] ( 2, 1 ) int -> rax "field V48._length (fldOffset=0x8)" P-INDEP
;* V103 tmp84 [V103 ] ( 0, 0 ) byref -> zero-ref "field V69._reference (fldOffset=0x0)" P-INDEP
;* V104 tmp85 [V104 ] ( 0, 0 ) int -> zero-ref "field V69._length (fldOffset=0x8)" P-INDEP
;* V105 tmp86 [V105 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V106 tmp87 [V106,T71] ( 3, 3 ) ref -> rax single-def "arr expr"
-; V107 tmp88 [V107,T76] ( 3, 3 ) int -> r8 "index expr"
-; V108 tmp89 [V108,T72] ( 3, 3 ) ref -> rcx single-def "arr expr"
-; V109 tmp90 [V109,T88] ( 2, 2 ) ref -> r8 single-def "arr expr"
-; V110 tmp91 [V110,T89] ( 2, 2 ) ref -> r8 single-def "arr expr"
-; V111 tmp92 [V111,T77] ( 3, 3 ) int -> rcx "index expr"
+; V106 tmp87 [V106,T64] ( 3, 3 ) ref -> rax single-def "arr expr"
+; V107 tmp88 [V107,T71] ( 3, 3 ) int -> r8 "index expr"
+; V108 tmp89 [V108,T65] ( 3, 3 ) ref -> rcx single-def "arr expr"
+; V109 tmp90 [V109,T85] ( 2, 2 ) ref -> r8 single-def "arr expr"
+; V110 tmp91 [V110,T86] ( 2, 2 ) ref -> r8 single-def "arr expr"
+; V111 tmp92 [V111,T72] ( 3, 3 ) int -> rcx "index expr"
;* V112 tmp93 [V112,T107] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
-; V113 tmp94 [V113,T90] ( 2, 2 ) ref -> rdx single-def "arr expr"
-; V114 tmp95 [V114,T14] ( 3, 24 ) ref -> r10 "arr expr"
-; V115 tmp96 [V115,T17] ( 3, 24 ) int -> r9 "index expr"
-; V116 tmp97 [V116,T15] ( 3, 24 ) ref -> rcx "arr expr"
-;* V117 tmp98 [V117,T49] ( 0, 0 ) ref -> zero-ref "arr expr"
-;* V118 tmp99 [V118,T52] ( 0, 0 ) int -> zero-ref "index expr"
-;* V119 tmp100 [V119,T50] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V120 tmp101 [V120,T45] ( 2, 8 ) ref -> r9 "arr expr"
-; V121 tmp102 [V121,T30] ( 2, 16 ) ref -> r9 "arr expr"
-; V122 tmp103 [V122,T18] ( 3, 24 ) int -> rdx "index expr"
-;* V123 tmp104 [V123,T51] ( 0, 0 ) ref -> zero-ref "arr expr"
-; V124 tmp105 [V124,T46] ( 2, 8 ) ref -> rcx "arr expr"
-; V125 tmp106 [V125,T16] ( 3, 24 ) ref -> rax "arr expr"
-; V126 tmp107 [V126,T36] ( 3, 12 ) ref -> rdx "arr expr"
-; V127 cse0 [V127,T78] ( 5, 2.50) ref -> rdx "CSE - conservative"
-; V128 cse1 [V128,T38] ( 3, 12 ) int -> r10 "CSE - conservative"
-; V129 cse2 [V129,T22] ( 4, 16 ) int -> rdx "CSE - moderate"
-; V130 cse3 [V130,T21] ( 5, 16 ) ref -> rcx "CSE - moderate"
-; V131 cse4 [V131,T97] ( 3, 1.50) int -> rcx "CSE - conservative"
-; V132 cse5 [V132,T98] ( 3, 1.50) int -> rax "CSE - conservative"
-; V133 cse6 [V133,T99] ( 3, 1.50) int -> r8 "CSE - conservative"
-; V134 cse7 [V134,T40] ( 4, 9 ) ref -> rcx "CSE - conservative"
-; V135 cse8 [V135,T25] ( 2, 8 ) ref -> rcx "CSE - moderate"
-; V136 cse9 [V136,T26] ( 2, 8 ) ref -> rcx "CSE - moderate"
-; V137 cse10 [V137,T27] ( 2, 8 ) ref -> rdx "CSE - moderate"
-; V138 cse11 [V138,T53] ( 3, 6.67) ref -> rax hoist "CSE - conservative"
-; V139 cse12 [V139,T55] ( 3, 6 ) int -> r10 "CSE - conservative"
-; V140 cse13 [V140,T56] ( 3, 6 ) int -> rdx "CSE - conservative"
-; V141 cse14 [V141,T92] ( 2, 1 ) ref -> rcx "CSE - conservative"
-; V142 cse15 [V142,T93] ( 2, 1 ) ref -> rdx "CSE - conservative"
-; V143 cse16 [V143,T94] ( 2, 1 ) ref -> rcx "CSE - conservative"
-; V144 cse17 [V144,T01] ( 3, 96 ) int -> r9 "CSE - aggressive"
-; V145 cse18 [V145,T24] ( 5, 16 ) int -> r11 "CSE - moderate"
-; V146 cse19 [V146,T79] ( 5, 2.50) int -> r10 "CSE - conservative"
+; V113 tmp94 [V113,T87] ( 2, 2 ) ref -> rdx single-def "arr expr"
+; V114 tmp95 [V114,T08] ( 3, 24 ) ref -> r10 "arr expr"
+; V115 tmp96 [V115,T11] ( 3, 24 ) int -> r9 "index expr"
+; V116 tmp97 [V116,T09] ( 3, 24 ) ref -> rcx "arr expr"
+;* V117 tmp98 [V117,T44] ( 0, 0 ) ref -> zero-ref "arr expr"
+;* V118 tmp99 [V118,T46] ( 0, 0 ) int -> zero-ref "index expr"
+;* V119 tmp100 [V119,T45] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V120 tmp101 [V120,T28] ( 3, 12 ) ref -> r9 "arr expr"
+; V121 tmp102 [V121,T66] ( 3, 3 ) ref -> r9 "arr expr"
+; V122 tmp103 [V122,T73] ( 3, 3 ) int -> rdx "index expr"
+;* V123 tmp104 [V123,T108] ( 0, 0 ) ref -> zero-ref "arr expr"
+; V124 tmp105 [V124,T67] ( 3, 3 ) ref -> rcx "arr expr"
+; V125 tmp106 [V125,T10] ( 3, 24 ) ref -> rax "arr expr"
+; V126 tmp107 [V126,T29] ( 3, 12 ) ref -> rdx "arr expr"
+; V127 cse0 [V127,T74] ( 5, 2.50) ref -> rdx "CSE - conservative"
+; V128 cse1 [V128,T31] ( 3, 12 ) int -> r10 "CSE - moderate"
+; V129 cse2 [V129,T15] ( 4, 12.50) int -> rdx "CSE - moderate"
+; V130 cse3 [V130,T19] ( 5, 11 ) ref -> rcx "CSE - moderate"
+; V131 cse4 [V131,T95] ( 3, 1.50) int -> rcx "CSE - conservative"
+; V132 cse5 [V132,T96] ( 3, 1.50) int -> rax "CSE - conservative"
+; V133 cse6 [V133,T97] ( 3, 1.50) int -> r8 "CSE - conservative"
+; V134 cse7 [V134,T98] ( 3, 1.50) int -> rdx "CSE - conservative"
...
+41 (+3.97%) : 4167.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
@@ -8,90 +8,91 @@
; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 39,506 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
-; V01 TypeCtx [V01,T42] ( 7, 5.56) long -> r12 single-def
-; V02 arg1 [V02,T31] ( 4, 14 ) byref -> r14 single-def
-; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> rsi single-def
-; V04 arg3 [V04,T48] ( 1, 1 ) ref -> [rsp+0x100] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
-; V05 arg4 [V05,T29] ( 4, 24 ) ref -> rdi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V06 arg5 [V06,T30] ( 4, 24 ) ref -> rbp class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
-; V07 arg6 [V07,T34] ( 1, 16 ) ubyte -> r15 single-def
-; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> r13
-; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [rsp+0x128] single-def
+; V00 this [V00,T00] ( 39,432 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
+; V01 TypeCtx [V01,T43] ( 7, 5.56) long -> r12 single-def
+; V02 arg1 [V02,T30] ( 4, 14 ) byref -> rbp single-def
+; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> r14 single-def
+; V04 arg3 [V04,T49] ( 1, 1 ) ref -> [rsp+0x110] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
+; V05 arg4 [V05,T29] ( 4, 20 ) ref -> rdi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V06 arg5 [V06,T27] ( 4, 24 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
+; V07 arg6 [V07,T42] ( 1, 8 ) ubyte -> r13 single-def
+; V08 arg7 [V08,T37] ( 2, 10 ) ubyte -> r15
+; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [rsp+0x138] single-def
;* V10 loc0 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+<>c__DisplayClass418_0`1[System.__Canon]>
-; V11 loc1 [V11 ] ( 7, 42 ) struct ( 8) [rsp+0x88] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V12 loc2 [V12,T17] ( 3, 52 ) int -> [rsp+0x84] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 8) [rsp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
+; V12 loc2 [V12,T16] ( 3, 34 ) int -> [rsp+0x94] ld-addr-op
; V13 OutArgs [V13 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T46] ( 3, 4 ) long -> rdx "spilling helperCall"
+; V14 tmp1 [V14,T47] ( 3, 4 ) long -> rdx "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V17 tmp4 [V17,T47] ( 3, 4 ) long -> rdx "spilling helperCall"
+; V17 tmp4 [V17,T48] ( 3, 4 ) long -> rdx "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V19 tmp6 [V19 ] ( 0, 0 ) byref -> zero-ref
-; V20 tmp7 [V20,T26] ( 2, 32 ) byref -> [rsp+0x78] spill-single-def
-; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> rax
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [rsp+0x80] spill-single-def
+; V21 tmp8 [V21,T28] ( 3, 24 ) ref -> rax
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V23 tmp10 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
;* V25 tmp12 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V27 tmp14 [V27,T41] ( 2, 8 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> rax
-; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> [rsp+0x70] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V27 tmp14 [V27,T40] ( 2, 8 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V28 tmp15 [V28,T39] ( 4, 8 ) ref -> rax
+; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> [rsp+0x78] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V31 tmp18 [V31,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V31 tmp18 [V31,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> rax
-; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> [rsp+0x68] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V34 tmp21 [V34,T33] ( 4, 14 ) ref -> rdx
+; V35 tmp22 [V35,T36] ( 3, 12 ) ref -> [rsp+0x70] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V38 tmp25 [V38,T07] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V39 tmp26 [V39,T12] ( 4, 56 ) ref -> rdx
-; V40 tmp27 [V40,T19] ( 3, 48 ) ref -> [rsp+0x60] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> r8
+; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> [rsp+0x68] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp29 [V42,T33] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T41] ( 2, 8 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V44 tmp31 [V44,T08] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp32 [V45,T13] ( 4, 56 ) ref -> rdx
-; V46 tmp33 [V46,T20] ( 3, 48 ) ref -> [rsp+0x58] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V44 tmp31 [V44,T21] ( 2, 32 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V45 tmp32 [V45,T17] ( 4, 32 ) ref -> rdx
+; V46 tmp33 [V46,T09] ( 3, 48 ) ref -> [rsp+0x60] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V48 tmp35 [V48,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp35 [V48,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V50 tmp37 [V50,T09] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V51 tmp38 [V51,T14] ( 4, 56 ) ref -> rdx
-; V52 tmp39 [V52,T21] ( 3, 48 ) ref -> [rsp+0x50] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> r8
+; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> [rsp+0x58] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r8
-; V57 tmp44 [V57,T04] ( 3,192 ) ref -> [rsp+0x48] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r10 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r10
+; V57 tmp44 [V57,T03] ( 3,192 ) ref -> [rsp+0x50] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V60 tmp47 [V60,T10] ( 2, 64 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> r8
-; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> [rsp+0x40] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> r10 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> r10
+; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> [rsp+0x48] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V65 tmp52 [V65,T11] ( 2, 64 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> rax
-; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> [rsp+0x38] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> rax
+; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> [rsp+0x40] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V69 tmp56 [V69,T27] ( 2, 32 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
-;* V70 tmp57 [V70,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V71 tmp58 [V71,T06] ( 3, 80 ) int -> rcx "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
+;* V70 tmp57 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V71 tmp58 [V71,T13] ( 3, 48 ) int -> rcx "Inline stloc first use temp"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V10.<>4__this (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T03] ( 7,193 ) ref -> [rsp+0x30] spill-single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
-;* V74 tmp61 [V74,T50] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
-; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [rsp+0x80] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [rsp+0x88] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> [rsp+0x38] spill-single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
+;* V74 tmp61 [V74,T51] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
+; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [rsp+0x90] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [rsp+0x98] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "field V16._builder (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "field V24._builder (fldOffset=0x0)" P-INDEP
-; V79 rat0 [V79,T43] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-; V80 rat1 [V80,T44] ( 3, 5.60) long -> rcx "spilling expr"
-; V81 rat2 [V81,T45] ( 3, 4.48) long -> rdx "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [rsp+0x8C] multi-def "CSE - moderate"
+; V80 rat0 [V80,T44] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
+; V81 rat1 [V81,T45] ( 3, 5.60) long -> rcx "spilling expr"
+; V82 rat2 [V82,T46] ( 3, 4.48) long -> rdx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 152
+; Lcl frame size = 168
G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -102,61 +103,61 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 152
+ sub rsp, 168
xor eax, eax
- mov qword ptr [rsp+0x88], rax
- mov qword ptr [rsp+0x90], rdx
+ mov qword ptr [rsp+0x98], rax
+ mov qword ptr [rsp+0xA0], rdx
mov rbx, rcx
; gcrRegs +[rbx]
mov r12, rdx
- mov r14, r8
- ; byrRegs +[r14]
- mov esi, r9d
- mov rdi, gword ptr [rsp+0x108]
+ mov rbp, r8
+ ; byrRegs +[rbp]
+ mov r14d, r9d
+ mov rdi, gword ptr [rsp+0x118]
; gcrRegs +[rdi]
- mov rbp, gword ptr [rsp+0x110]
- ; gcrRegs +[rbp]
- mov r15d, dword ptr [rsp+0x118]
- mov r13d, dword ptr [rsp+0x120]
+ mov rsi, gword ptr [rsp+0x120]
+ ; gcrRegs +[rsi]
+ mov r13d, dword ptr [rsp+0x128]
+ mov r15d, dword ptr [rsp+0x130]
;; size=81 bbWeight=1 PerfScore 15.50
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref, isz
- movzx rax, byte ptr [rsp+0x128]
- mov byte ptr [rsp+0x80], al
- mov r8, gword ptr [rsp+0x100]
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref, isz
+ movzx rax, byte ptr [rsp+0x138]
+ mov byte ptr [rsp+0x90], al
+ mov r8, gword ptr [rsp+0x110]
; gcrRegs +[r8]
- mov gword ptr [rsp+0x30], r8
+ mov gword ptr [rsp+0x38], r8
; GC ptr vars +{V73}
mov rcx, qword ptr [r12+0x38]
mov rdx, qword ptr [rcx+0x10]
test rdx, rdx
je SHORT G_M39451_IG04
;; size=42 bbWeight=1 PerfScore 9.25
-G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000008 {V73}, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000010 {V73}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs -[r8]
jmp SHORT G_M39451_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
mov rcx, r12
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
; gcr arg pop 0
mov rdx, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
mov rcx, gword ptr [rbx+0x108]
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
call [Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:AllocateSeparated[System.__Canon]():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x88], rax
+ mov gword ptr [rsp+0x98], rax
;; size=23 bbWeight=1 PerfScore 9.00
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rax]
- test r13b, r13b
+ test r15b, r15b
jne G_M39451_IG16
;; size=9 bbWeight=8 PerfScore 10.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref, isz
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
test rax, rax
@@ -166,7 +167,7 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov gword ptr [rsp+0x70], rax
+ mov gword ptr [rsp+0x78], rax
; GC ptr vars +{V29}
lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
@@ -175,57 +176,25 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rax, gword ptr [rsp+0x70]
+ mov rax, gword ptr [rsp+0x78]
; gcrRegs +[rax]
;; size=40 bbWeight=2 PerfScore 20.50
-G_M39451_IG08: ; bbWeight=2, gcVars=0000000000000008 {V73}, gcrefRegs=00A9 {rax rbx rbp rdi}, byrefRegs=4000 {r14}, gcvars, byref
+G_M39451_IG08: ; bbWeight=2, gcVars=0000000000000010 {V73}, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0020 {rbp}, gcvars, byref
...
+15 (+5.40%) : 212574.dasm - System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
@@ -9,10 +9,10 @@
; Final local variable assignments
;
; V00 arg0 [V00,T19] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T12] ( 6, 43 ) ref -> rbx class-hnd single-def <System.String[]>
-; V02 loc0 [V02,T04] ( 6, 67.36) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MethodInfo]>
-; V03 loc1 [V03,T15] ( 3, 22 ) ubyte -> rbp
-; V04 loc2 [V04,T10] ( 6, 73 ) int -> rdi
+; V01 arg1 [V01,T12] ( 6, 19 ) ref -> rbx class-hnd single-def <System.String[]>
+; V02 loc0 [V02,T04] ( 7, 67.36) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MethodInfo]>
+; V03 loc1 [V03,T15] ( 3, 10 ) ubyte -> rbp
+; V04 loc2 [V04,T10] ( 6, 25 ) int -> rdi
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.MethodInfo]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MethodInfo>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -29,19 +29,19 @@
;* V18 tmp11 [V18,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Reflection.MethodInfo]>
;* V20 tmp13 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V21 tmp14 [V21,T14] ( 2, 64 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
+; V21 tmp14 [V21,T14] ( 2, 16 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
;* V22 tmp15 [V22,T20] ( 0, 0 ) ref -> zero-ref "field V05._list (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T06] ( 3, 29.36) ref -> rcx "field V05._current (fldOffset=0x8)" P-INDEP
; V24 tmp17 [V24,T02] ( 6, 73.43) int -> r15 "field V05._index (fldOffset=0x10)" P-INDEP
-; V25 tmp18 [V25,T07] ( 2, 36 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
+; V25 tmp18 [V25,T07] ( 3, 36 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
; V26 tmp19 [V26,T16] ( 2, 8 ) ref -> rcx "field V09._list (fldOffset=0x0)" P-INDEP
;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V09._current (fldOffset=0x8)" P-INDEP
;* V28 tmp21 [V28,T21] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP
; V29 tmp22 [V29,T17] ( 2, 8 ) int -> r14 "field V09._version (fldOffset=0x14)" P-INDEP
;* V30 tmp23 [V30,T22] ( 0, 0 ) ubyte -> zero-ref "field V20.hasValue (fldOffset=0x0)" P-INDEP
-; V31 tmp24 [V31,T18] ( 2, 32 ) ubyte -> rbp "field V20.value (fldOffset=0x1)" P-INDEP
+; V31 tmp24 [V31,T18] ( 2, 8 ) ubyte -> rbp "field V20.value (fldOffset=0x1)" P-INDEP
; V32 tmp25 [V32,T03] ( 3, 80.15) ref -> rcx "arr expr"
-; V33 tmp26 [V33,T11] ( 3, 96 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V33 tmp26 [V33,T11] ( 3, 24 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
; V34 cse0 [V34,T05] ( 2, 32.00) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -66,10 +66,10 @@ G_M38308_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
mov rsi, rax
; gcrRegs +[rsi]
test rsi, rsi
- je G_M38308_IG16
+ je G_M38308_IG15
xor edi, edi
cmp dword ptr [rbx+0x08], 0
- jle G_M38308_IG12
+ jle G_M38308_IG13
;; size=30 bbWeight=1 PerfScore 8.75
G_M38308_IG03: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
@@ -80,7 +80,7 @@ G_M38308_IG03: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
xor r15d, r15d
jmp SHORT G_M38308_IG08
;; size=14 bbWeight=4 PerfScore 19.00
-G_M38308_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
+G_M38308_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
mov eax, edi
mov r13, gword ptr [rbx+8*rax+0x10]
; gcrRegs +[r13]
@@ -93,18 +93,18 @@ G_M38308_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
; gcrRegs +[rdx]
cmp byte ptr [r13], r13b
cmp r13, rdx
- je G_M38308_IG13
- ;; size=33 bbWeight=8 PerfScore 110.00
-G_M38308_IG05: ; bbWeight=5.29, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M38308_IG11
+ ;; size=29 bbWeight=8 PerfScore 110.00
+G_M38308_IG05: ; bbWeight=5.29, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test rdx, rdx
- je SHORT G_M38308_IG08
- ;; size=5 bbWeight=5.29 PerfScore 6.61
-G_M38308_IG06: ; bbWeight=42.32, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
+ je G_M38308_IG16
+ ;; size=9 bbWeight=5.29 PerfScore 6.61
+G_M38308_IG06: ; bbWeight=42.32, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r13+0x08]
cmp r8d, dword ptr [rdx+0x08]
- jne SHORT G_M38308_IG08
- ;; size=10 bbWeight=42.32 PerfScore 253.91
+ jne G_M38308_IG16
+ ;; size=14 bbWeight=42.32 PerfScore 253.91
G_M38308_IG07: ; bbWeight=8, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [r13+0x0C]
; byrRegs +[rcx]
@@ -118,29 +118,32 @@ G_M38308_IG07: ; bbWeight=8, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M38308_IG13
+ jne SHORT G_M38308_IG11
;; size=25 bbWeight=8 PerfScore 58.00
-G_M38308_IG08: ; bbWeight=32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M38308_IG08: ; bbWeight=32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rsi+0x14]
- jne SHORT G_M38308_IG14
- ;; size=6 bbWeight=32 PerfScore 128.00
+ jne G_M38308_IG17
+ ;; size=10 bbWeight=32 PerfScore 128.00
G_M38308_IG09: ; bbWeight=16.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rsi+0x10]
cmp r15d, ecx
- jae SHORT G_M38308_IG11
+ jae SHORT G_M38308_IG12
;; size=8 bbWeight=16.00 PerfScore 52.00
G_M38308_IG10: ; bbWeight=13.36, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rsi+0x08]
; gcrRegs +[rcx]
cmp r15d, dword ptr [rcx+0x08]
- jae SHORT G_M38308_IG15
+ jae SHORT G_M38308_IG14
mov eax, r15d
mov rcx, gword ptr [rcx+8*rax+0x10]
inc r15d
jmp SHORT G_M38308_IG04
;; size=23 bbWeight=13.36 PerfScore 140.27
-G_M38308_IG11: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M38308_IG11: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
+ mov ebp, 1
+ ;; size=5 bbWeight=2 PerfScore 0.50
+G_M38308_IG12: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov edx, edi
mov rdx, gword ptr [rbx+8*rdx+0x10]
; gcrRegs +[rdx]
@@ -160,8 +163,8 @@ G_M38308_IG11: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}
inc edi
cmp dword ptr [rbx+0x08], edi
jg G_M38308_IG03
- ;; size=58 bbWeight=16 PerfScore 256.00
-G_M38308_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=58 bbWeight=4 PerfScore 64.00
+G_M38308_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi]
add rsp, 48
pop rbx
@@ -173,22 +176,11 @@ G_M38308_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r15
ret
;; size=15 bbWeight=1 PerfScore 4.75
-G_M38308_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rsi]
- mov ebp, 1
- jmp SHORT G_M38308_IG11
- ;; size=7 bbWeight=2 PerfScore 4.50
-G_M38308_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M38308_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38308_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M38308_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M38308_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -196,11 +188,21 @@ G_M38308_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
call CORINFO_HELP_THROW
; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M38308_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rsi]
+ cmp r14d, dword ptr [rsi+0x14]
+ je G_M38308_IG09
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M38308_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi]
+ call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
; gcr arg pop 0
int3
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 278, prolog size 14, PerfScore 1049.29, instruction count 84, allocated bytes for code 278 (MethodHash=51c76a5b) for method System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
+; Total bytes of code 293, prolog size 14, PerfScore 853.29, instruction count 84, allocated bytes for code 293 (MethodHash=51c76a5b) for method System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
; ============================================================
Unwind Info:
+15 (+5.40%) : 212774.dasm - System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
@@ -9,10 +9,10 @@
; Final local variable assignments
;
; V00 arg0 [V00,T19] ( 3, 3 ) ref -> rcx class-hnd single-def <System.Type>
-; V01 arg1 [V01,T12] ( 6, 43 ) ref -> rbx class-hnd single-def <System.String[]>
-; V02 loc0 [V02,T04] ( 6, 67.36) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MemberInfo]>
-; V03 loc1 [V03,T15] ( 3, 22 ) ubyte -> rbp
-; V04 loc2 [V04,T10] ( 6, 73 ) int -> rdi
+; V01 arg1 [V01,T12] ( 6, 19 ) ref -> rbx class-hnd single-def <System.String[]>
+; V02 loc0 [V02,T04] ( 7, 67.36) ref -> rsi class-hnd single-def <System.Collections.Generic.List`1[System.Reflection.MemberInfo]>
+; V03 loc1 [V03,T15] ( 3, 10 ) ubyte -> rbp
+; V04 loc2 [V04,T10] ( 6, 25 ) int -> rdi
;* V05 loc3 [V05 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <System.Collections.Generic.List`1+Enumerator[System.Reflection.MemberInfo]>
;* V06 loc4 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Reflection.MemberInfo>
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
@@ -29,19 +29,19 @@
;* V18 tmp11 [V18,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V19 tmp12 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Collections.Generic.List`1[System.Reflection.MemberInfo]>
;* V20 tmp13 [V20 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[ubyte]>
-; V21 tmp14 [V21,T14] ( 2, 64 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
+; V21 tmp14 [V21,T14] ( 2, 16 ) ref -> rdx class-hnd exact "Inlining Arg" <System.String>
;* V22 tmp15 [V22,T20] ( 0, 0 ) ref -> zero-ref "field V05._list (fldOffset=0x0)" P-INDEP
; V23 tmp16 [V23,T06] ( 3, 29.36) ref -> rcx "field V05._current (fldOffset=0x8)" P-INDEP
; V24 tmp17 [V24,T02] ( 6, 73.43) int -> r15 "field V05._index (fldOffset=0x10)" P-INDEP
-; V25 tmp18 [V25,T07] ( 2, 36 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
+; V25 tmp18 [V25,T07] ( 3, 36 ) int -> r14 "field V05._version (fldOffset=0x14)" P-INDEP
; V26 tmp19 [V26,T16] ( 2, 8 ) ref -> rcx "field V09._list (fldOffset=0x0)" P-INDEP
;* V27 tmp20 [V27 ] ( 0, 0 ) ref -> zero-ref "field V09._current (fldOffset=0x8)" P-INDEP
;* V28 tmp21 [V28,T21] ( 0, 0 ) int -> zero-ref "field V09._index (fldOffset=0x10)" P-INDEP
; V29 tmp22 [V29,T17] ( 2, 8 ) int -> r14 "field V09._version (fldOffset=0x14)" P-INDEP
;* V30 tmp23 [V30,T22] ( 0, 0 ) ubyte -> zero-ref "field V20.hasValue (fldOffset=0x0)" P-INDEP
-; V31 tmp24 [V31,T18] ( 2, 32 ) ubyte -> rbp "field V20.value (fldOffset=0x1)" P-INDEP
+; V31 tmp24 [V31,T18] ( 2, 8 ) ubyte -> rbp "field V20.value (fldOffset=0x1)" P-INDEP
; V32 tmp25 [V32,T03] ( 3, 80.15) ref -> rcx "arr expr"
-; V33 tmp26 [V33,T11] ( 3, 96 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
+; V33 tmp26 [V33,T11] ( 3, 24 ) struct ( 8) [rsp+0x28] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[ubyte]>
; V34 cse0 [V34,T05] ( 2, 32.00) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -66,10 +66,10 @@ G_M52580_IG02: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {},
mov rsi, rax
; gcrRegs +[rsi]
test rsi, rsi
- je G_M52580_IG16
+ je G_M52580_IG15
xor edi, edi
cmp dword ptr [rbx+0x08], 0
- jle G_M52580_IG12
+ jle G_M52580_IG13
;; size=30 bbWeight=1 PerfScore 8.75
G_M52580_IG03: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
@@ -80,7 +80,7 @@ G_M52580_IG03: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {},
xor r15d, r15d
jmp SHORT G_M52580_IG08
;; size=14 bbWeight=4 PerfScore 19.00
-G_M52580_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref
+G_M52580_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
mov eax, edi
mov r13, gword ptr [rbx+8*rax+0x10]
; gcrRegs +[r13]
@@ -93,18 +93,18 @@ G_M52580_IG04: ; bbWeight=8, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000
; gcrRegs +[rdx]
cmp byte ptr [r13], r13b
cmp r13, rdx
- je G_M52580_IG13
- ;; size=33 bbWeight=8 PerfScore 110.00
-G_M52580_IG05: ; bbWeight=5.29, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
+ je SHORT G_M52580_IG11
+ ;; size=29 bbWeight=8 PerfScore 110.00
+G_M52580_IG05: ; bbWeight=5.29, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref
; gcrRegs -[rax]
test rdx, rdx
- je SHORT G_M52580_IG08
- ;; size=5 bbWeight=5.29 PerfScore 6.61
-G_M52580_IG06: ; bbWeight=42.32, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
+ je G_M52580_IG16
+ ;; size=9 bbWeight=5.29 PerfScore 6.61
+G_M52580_IG06: ; bbWeight=42.32, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref
mov r8d, dword ptr [r13+0x08]
cmp r8d, dword ptr [rdx+0x08]
- jne SHORT G_M52580_IG08
- ;; size=10 bbWeight=42.32 PerfScore 253.91
+ jne G_M52580_IG16
+ ;; size=14 bbWeight=42.32 PerfScore 253.91
G_M52580_IG07: ; bbWeight=8, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=0000 {}, byref, isz
lea rcx, bword ptr [r13+0x0C]
; byrRegs +[rcx]
@@ -118,29 +118,32 @@ G_M52580_IG07: ; bbWeight=8, gcrefRegs=204C {rdx rbx rsi r13}, byrefRegs=
; byrRegs -[rcx rdx]
; gcr arg pop 0
test eax, eax
- jne SHORT G_M52580_IG13
+ jne SHORT G_M52580_IG11
;; size=25 bbWeight=8 PerfScore 58.00
-G_M52580_IG08: ; bbWeight=32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+G_M52580_IG08: ; bbWeight=32, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
cmp r14d, dword ptr [rsi+0x14]
- jne SHORT G_M52580_IG14
- ;; size=6 bbWeight=32 PerfScore 128.00
+ jne G_M52580_IG17
+ ;; size=10 bbWeight=32 PerfScore 128.00
G_M52580_IG09: ; bbWeight=16.00, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rsi+0x10]
cmp r15d, ecx
- jae SHORT G_M52580_IG11
+ jae SHORT G_M52580_IG12
;; size=8 bbWeight=16.00 PerfScore 52.00
G_M52580_IG10: ; bbWeight=13.36, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rsi+0x08]
; gcrRegs +[rcx]
cmp r15d, dword ptr [rcx+0x08]
- jae SHORT G_M52580_IG15
+ jae SHORT G_M52580_IG14
mov eax, r15d
mov rcx, gword ptr [rcx+8*rax+0x10]
inc r15d
jmp SHORT G_M52580_IG04
;; size=23 bbWeight=13.36 PerfScore 140.27
-G_M52580_IG11: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M52580_IG11: ; bbWeight=2, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
+ mov ebp, 1
+ ;; size=5 bbWeight=2 PerfScore 0.50
+G_M52580_IG12: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
mov edx, edi
mov rdx, gword ptr [rbx+8*rdx+0x10]
; gcrRegs +[rdx]
@@ -160,8 +163,8 @@ G_M52580_IG11: ; bbWeight=16, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}
inc edi
cmp dword ptr [rbx+0x08], edi
jg G_M52580_IG03
- ;; size=58 bbWeight=16 PerfScore 256.00
-G_M52580_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=58 bbWeight=4 PerfScore 64.00
+G_M52580_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx rsi]
add rsp, 48
pop rbx
@@ -173,22 +176,11 @@ G_M52580_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
pop r15
ret
;; size=15 bbWeight=1 PerfScore 4.75
-G_M52580_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rsi]
- mov ebp, 1
- jmp SHORT G_M52580_IG11
- ;; size=7 bbWeight=2 PerfScore 4.50
-G_M52580_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rbx rsi]
- call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
- ; gcr arg pop 0
- int3
- ;; size=7 bbWeight=0 PerfScore 0.00
-G_M52580_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52580_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL
; gcr arg pop 0
;; size=5 bbWeight=0 PerfScore 0.00
-G_M52580_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M52580_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
call [<unknown method>]
; gcrRegs +[rax]
; gcr arg pop 0
@@ -196,11 +188,21 @@ G_M52580_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs +[rcx]
call CORINFO_HELP_THROW
; gcrRegs -[rax rcx]
+ ; gcr arg pop 0
+ ;; size=14 bbWeight=0 PerfScore 0.00
+G_M52580_IG16: ; bbWeight=0, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+ ; gcrRegs +[rbx rsi]
+ cmp r14d, dword ptr [rsi+0x14]
+ je G_M52580_IG09
+ ;; size=10 bbWeight=0 PerfScore 0.00
+G_M52580_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rbx rsi]
+ call [System.ThrowHelper:ThrowInvalidOperationException_InvalidOperation_EnumFailedVersion()]
; gcr arg pop 0
int3
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 278, prolog size 14, PerfScore 1049.29, instruction count 84, allocated bytes for code 278 (MethodHash=d452329b) for method System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
+; Total bytes of code 293, prolog size 14, PerfScore 853.29, instruction count 84, allocated bytes for code 293 (MethodHash=d452329b) for method System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
; ============================================================
Unwind Info:
realworld.run.windows.x64.checked.mch
-14 (-0.95%) : 2162.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
@@ -8,61 +8,60 @@
; 0 inlinees with PGO data; 24 single block inlinees; 17 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 64,25612.50) long -> rbx
-; V01 arg1 [V01,T19] ( 9, 8 ) int -> rsi
-; V02 arg2 [V02,T21] ( 4, 3 ) byref -> rdi single-def
-; V03 arg3 [V03,T22] ( 4, 3 ) byref -> rbp single-def
-; V04 loc0 [V04,T24] ( 3, 3 ) long -> rax
-; V05 loc1 [V05,T26] ( 4, 2 ) long -> r14
-; V06 loc2 [V06,T25] ( 5, 2.50) int -> rsi
-; V07 loc3 [V07,T04] ( 18, 5265 ) int -> r15
-; V08 loc4 [V08,T23] ( 4, 5 ) int -> r13
-; V09 loc5 [V09,T03] ( 12, 8933.50) long -> r12
-; V10 loc6 [V10,T12] ( 4, 72.50) long -> [rsp+0x40]
-; V11 loc7 [V11,T17] ( 13, 22 ) long -> r12
-; V12 loc8 [V12,T02] ( 27,12532 ) int -> [rsp+0x3C]
-; V13 loc9 [V13,T13] ( 2, 72 ) long -> rcx
-; V14 loc10 [V14,T15] ( 3, 24 ) long -> [rsp+0x30] spill-single-def
-;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V17 loc13 [V17,T09] ( 3, 136 ) int -> rdx
-;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
-;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
-; V20 loc16 [V20,T00] ( 20,47616 ) long -> registers
-; V21 loc17 [V21,T18] ( 7, 18 ) int -> rcx
-; V22 loc18 [V22,T20] ( 5, 10 ) int -> rdx
-; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V24 tmp1 [V24,T27] ( 2, 1 ) int -> rcx
-;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
-;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
-;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
-;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
-;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V48 tmp25 [V48,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V49 tmp26 [V49,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V53 cse0 [V53,T11] ( 15, 75 ) ref -> [rsp+0x20] multi-def "CSE - aggressive"
-; V54 cse1 [V54,T16] ( 3, 24 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
+; V00 arg0 [V00,T01] ( 64,3570.50) long -> rbx
+; V01 arg1 [V01,T16] ( 9, 8 ) int -> rsi
+; V02 arg2 [V02,T20] ( 4, 3 ) byref -> rdi single-def
+; V03 arg3 [V03,T21] ( 4, 3 ) byref -> rbp single-def
+; V04 loc0 [V04,T23] ( 3, 3 ) long -> rax
+; V05 loc1 [V05,T25] ( 4, 2 ) long -> r14
+; V06 loc2 [V06,T24] ( 5, 2.50) int -> rsi
+; V07 loc3 [V07,T04] ( 18, 945 ) int -> r15
+; V08 loc4 [V08,T22] ( 4, 5 ) int -> r13
+; V09 loc5 [V09,T03] ( 12,1133.50) long -> r12
+; V10 loc6 [V10,T15] ( 4, 10.50) long -> [rsp+0x40]
+; V11 loc7 [V11,T11] ( 13, 22 ) long -> r12
+; V12 loc8 [V12,T02] ( 27,1596 ) int -> [rsp+0x3C]
+; V13 loc9 [V13,T13] ( 2, 18 ) long -> rcx
+; V14 loc10 [V14,T18] ( 3, 6 ) long -> [rsp+0x30] spill-single-def
+;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+; V17 loc13 [V17,T07] ( 3, 34 ) int -> rdx
+;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
+;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
+; V20 loc16 [V20,T00] ( 20,6144 ) long -> registers
+; V21 loc17 [V21,T12] ( 7, 18 ) int -> rcx
+; V22 loc18 [V22,T17] ( 5, 10 ) int -> rdx
+; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V24 tmp1 [V24,T26] ( 2, 1 ) int -> rcx
+;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
+;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
+;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
+;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
+;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
+;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V48 tmp25 [V48,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V49 tmp26 [V49,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V53 cse0 [V53,T19] ( 3, 6 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
;
; Lcl frame size = 72
@@ -91,14 +90,12 @@ G_M60901_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi},
G_M60901_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=29 bbWeight=0.50 PerfScore 1.88
+ ;; size=26 bbWeight=0.50 PerfScore 1.75
G_M60901_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
test rbx, rbx
jne SHORT G_M60901_IG06
@@ -111,14 +108,12 @@ G_M60901_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rd
jne SHORT G_M60901_IG06
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=40 bbWeight=0.50 PerfScore 3.25
+ ;; size=37 bbWeight=0.50 PerfScore 3.12
G_M60901_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov edx, esi
mov rcx, rbx
@@ -155,54 +150,51 @@ G_M60901_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
xor r15d, r15d
xor r13d, r13d
cmp esi, 4
- jl G_M60901_IG46
+ jl G_M60901_IG45
mov ecx, esi
lea r12, [r14+rcx-0x04]
xor eax, eax
cmp r14, r12
- ja G_M60901_IG47
+ ja G_M60901_IG46
;; size=36 bbWeight=0.50 PerfScore 2.38
G_M60901_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov r8d, dword ptr [rbx]
mov dword ptr [rsp+0x3C], r8d
;; size=8 bbWeight=4 PerfScore 12.00
-G_M60901_IG12: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
cmp rax, rbx
jb SHORT G_M60901_IG14
- ;; size=5 bbWeight=32 PerfScore 40.00
-G_M60901_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M60901_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
- mov r10, rdx
- ; gcrRegs +[r10]
- mov rdx, r10
call [<unknown method>]
- ; gcrRegs -[rcx rdx r10]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=32 bbWeight=8 PerfScore 32.00
-G_M60901_IG14: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=26 bbWeight=2 PerfScore 7.00
+G_M60901_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rax, rbx
mov r8d, dword ptr [rsp+0x3C]
test r8d, 0xD1FFAB1E
jne G_M60901_IG21
- ;; size=21 bbWeight=32 PerfScore 80.00
-G_M60901_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=21 bbWeight=4 PerfScore 10.00
+G_M60901_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov qword ptr [rsp+0x40], rax
lea rbx, [rax+0x04]
mov r8, r12
sub r8, rbx
cmp r8, 16
- jl G_M60901_IG44
+ jl G_M60901_IG43
mov r8d, dword ptr [rbx]
test r8d, 0xD1FFAB1E
jne SHORT G_M60901_IG18
add rbx, 4
and rbx, -4
lea rcx, [r12-0x0C]
- ;; size=50 bbWeight=8 PerfScore 60.00
-G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=50 bbWeight=2 PerfScore 15.00
+G_M60901_IG16: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
vmovups xmm0, xmmword ptr [rbx]
vpmovmskb edx, xmm0
test edx, edx
@@ -210,94 +202,87 @@ G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}
add rbx, 16
cmp rbx, rcx
jbe SHORT G_M60901_IG16
- ;; size=21 bbWeight=64 PerfScore 560.00
+ ;; size=21 bbWeight=16 PerfScore 140.00
G_M60901_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
- jmp G_M60901_IG44
+ jmp G_M60901_IG43
;; size=5 bbWeight=4 PerfScore 8.00
-G_M60901_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov rax, qword ptr [rsp+0x40]
jmp SHORT G_M60901_IG21
- ;; size=7 bbWeight=4 PerfScore 12.00
-G_M60901_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M60901_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
xor ecx, ecx
tzcnt ecx, edx
mov r8d, ecx
mov qword ptr [rsp+0x30], r8
cmp r8, 16
jb SHORT G_M60901_IG20
- mov r10, 0xD1FFAB1E
- ; gcrRegs +[r10]
- mov rcx, r10
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, r10
...
-14 (-0.95%) : 559.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
@@ -8,61 +8,60 @@
; 0 inlinees with PGO data; 24 single block inlinees; 17 inlinees without PGO data
; Final local variable assignments
;
-; V00 arg0 [V00,T01] ( 64,25612.50) long -> rbx
-; V01 arg1 [V01,T19] ( 9, 8 ) int -> rsi
-; V02 arg2 [V02,T21] ( 4, 3 ) byref -> rdi single-def
-; V03 arg3 [V03,T22] ( 4, 3 ) byref -> rbp single-def
-; V04 loc0 [V04,T24] ( 3, 3 ) long -> rax
-; V05 loc1 [V05,T26] ( 4, 2 ) long -> r14
-; V06 loc2 [V06,T25] ( 5, 2.50) int -> rsi
-; V07 loc3 [V07,T04] ( 18, 5265 ) int -> r15
-; V08 loc4 [V08,T23] ( 4, 5 ) int -> r13
-; V09 loc5 [V09,T03] ( 12, 8933.50) long -> r12
-; V10 loc6 [V10,T12] ( 4, 72.50) long -> [rsp+0x40]
-; V11 loc7 [V11,T17] ( 13, 22 ) long -> r12
-; V12 loc8 [V12,T02] ( 27,12532 ) int -> [rsp+0x3C]
-; V13 loc9 [V13,T13] ( 2, 72 ) long -> rcx
-; V14 loc10 [V14,T15] ( 3, 24 ) long -> [rsp+0x30] spill-single-def
-;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V17 loc13 [V17,T09] ( 3, 136 ) int -> rdx
-;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
-;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
-; V20 loc16 [V20,T00] ( 20,47616 ) long -> registers
-; V21 loc17 [V21,T18] ( 7, 18 ) int -> rcx
-; V22 loc18 [V22,T20] ( 5, 10 ) int -> rdx
-; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V24 tmp1 [V24,T27] ( 2, 1 ) int -> rcx
-;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
-;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
-;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
-;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
-;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
-;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V48 tmp25 [V48,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V49 tmp26 [V49,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
-;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V53 cse0 [V53,T11] ( 15, 75 ) ref -> [rsp+0x20] multi-def "CSE - aggressive"
-; V54 cse1 [V54,T16] ( 3, 24 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
+; V00 arg0 [V00,T01] ( 64,3570.50) long -> rbx
+; V01 arg1 [V01,T16] ( 9, 8 ) int -> rsi
+; V02 arg2 [V02,T20] ( 4, 3 ) byref -> rdi single-def
+; V03 arg3 [V03,T21] ( 4, 3 ) byref -> rbp single-def
+; V04 loc0 [V04,T23] ( 3, 3 ) long -> rax
+; V05 loc1 [V05,T25] ( 4, 2 ) long -> r14
+; V06 loc2 [V06,T24] ( 5, 2.50) int -> rsi
+; V07 loc3 [V07,T04] ( 18, 945 ) int -> r15
+; V08 loc4 [V08,T22] ( 4, 5 ) int -> r13
+; V09 loc5 [V09,T03] ( 12,1133.50) long -> r12
+; V10 loc6 [V10,T15] ( 4, 10.50) long -> [rsp+0x40]
+; V11 loc7 [V11,T11] ( 13, 22 ) long -> r12
+; V12 loc8 [V12,T02] ( 27,1596 ) int -> [rsp+0x3C]
+; V13 loc9 [V13,T13] ( 2, 18 ) long -> rcx
+; V14 loc10 [V14,T18] ( 3, 6 ) long -> [rsp+0x30] spill-single-def
+;* V15 loc11 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+;* V16 loc12 [V16 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
+; V17 loc13 [V17,T07] ( 3, 34 ) int -> rdx
+;* V18 loc14 [V18 ] ( 0, 0 ) int -> zero-ref
+;* V19 loc15 [V19 ] ( 0, 0 ) long -> zero-ref
+; V20 loc16 [V20,T00] ( 20,6144 ) long -> registers
+; V21 loc17 [V21,T12] ( 7, 18 ) int -> rcx
+; V22 loc18 [V22,T17] ( 5, 10 ) int -> rdx
+; V23 OutArgs [V23 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
+; V24 tmp1 [V24,T26] ( 2, 1 ) int -> rcx
+;* V25 tmp2 [V25 ] ( 0, 0 ) int -> zero-ref
+;* V26 tmp3 [V26 ] ( 0, 0 ) int -> zero-ref
+;* V27 tmp4 [V27 ] ( 0, 0 ) int -> zero-ref
+;* V28 tmp5 [V28 ] ( 0, 0 ) int -> zero-ref
+;* V29 tmp6 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V30 tmp7 [V30 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V31 tmp8 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V32 tmp9 [V32 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V33 tmp10 [V33 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
+;* V34 tmp11 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
+;* V35 tmp12 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V36 tmp13 [V36 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V37 tmp14 [V37 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V38 tmp15 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V41 tmp18 [V41,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V42 tmp19 [V42 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V43 tmp20 [V43,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V44 tmp21 [V44 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
+;* V45 tmp22 [V45,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V46 tmp23 [V46,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V47 tmp24 [V47 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V48 tmp25 [V48,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V49 tmp26 [V49,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V50 tmp27 [V50 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg"
+;* V51 tmp28 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V53 cse0 [V53,T19] ( 3, 6 ) int -> [rsp+0x2C] spill-single-def "CSE - moderate"
;
; Lcl frame size = 72
@@ -91,14 +90,12 @@ G_M60901_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi},
G_M60901_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=29 bbWeight=0.50 PerfScore 1.88
+ ;; size=26 bbWeight=0.50 PerfScore 1.75
G_M60901_IG04: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
test rbx, rbx
jne SHORT G_M60901_IG06
@@ -111,14 +108,12 @@ G_M60901_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rd
jne SHORT G_M60901_IG06
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov r14, 0xD1FFAB1E
- ; gcrRegs +[r14]
- mov rdx, r14
+ mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
call [<unknown method>]
- ; gcrRegs -[rcx rdx r14]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=40 bbWeight=0.50 PerfScore 3.25
+ ;; size=37 bbWeight=0.50 PerfScore 3.12
G_M60901_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov edx, esi
mov rcx, rbx
@@ -155,54 +150,51 @@ G_M60901_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000
xor r15d, r15d
xor r13d, r13d
cmp esi, 4
- jl G_M60901_IG46
+ jl G_M60901_IG45
mov ecx, esi
lea r12, [r14+rcx-0x04]
xor eax, eax
cmp r14, r12
- ja G_M60901_IG47
+ ja G_M60901_IG46
;; size=36 bbWeight=0.50 PerfScore 2.38
G_M60901_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov r8d, dword ptr [rbx]
mov dword ptr [rsp+0x3C], r8d
;; size=8 bbWeight=4 PerfScore 12.00
-G_M60901_IG12: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
cmp rax, rbx
jb SHORT G_M60901_IG14
- ;; size=5 bbWeight=32 PerfScore 40.00
-G_M60901_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=5 bbWeight=4 PerfScore 5.00
+G_M60901_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
mov rdx, 0xD1FFAB1E
; gcrRegs +[rdx]
- mov r10, rdx
- ; gcrRegs +[r10]
- mov rdx, r10
call [<unknown method>]
- ; gcrRegs -[rcx rdx r10]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=32 bbWeight=8 PerfScore 32.00
-G_M60901_IG14: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
+ ;; size=26 bbWeight=2 PerfScore 7.00
+G_M60901_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
mov rax, rbx
mov r8d, dword ptr [rsp+0x3C]
test r8d, 0xD1FFAB1E
jne G_M60901_IG21
- ;; size=21 bbWeight=32 PerfScore 80.00
-G_M60901_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=21 bbWeight=4 PerfScore 10.00
+G_M60901_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov qword ptr [rsp+0x40], rax
lea rbx, [rax+0x04]
mov r8, r12
sub r8, rbx
cmp r8, 16
- jl G_M60901_IG44
+ jl G_M60901_IG43
mov r8d, dword ptr [rbx]
test r8d, 0xD1FFAB1E
jne SHORT G_M60901_IG18
add rbx, 4
and rbx, -4
lea rcx, [r12-0x0C]
- ;; size=50 bbWeight=8 PerfScore 60.00
-G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=50 bbWeight=2 PerfScore 15.00
+G_M60901_IG16: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
vmovups xmm0, xmmword ptr [rbx]
vpmovmskb edx, xmm0
test edx, edx
@@ -210,94 +202,87 @@ G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}
add rbx, 16
cmp rbx, rcx
jbe SHORT G_M60901_IG16
- ;; size=21 bbWeight=64 PerfScore 560.00
+ ;; size=21 bbWeight=16 PerfScore 140.00
G_M60901_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref
- jmp G_M60901_IG44
+ jmp G_M60901_IG43
;; size=5 bbWeight=4 PerfScore 8.00
-G_M60901_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+G_M60901_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
mov rax, qword ptr [rsp+0x40]
jmp SHORT G_M60901_IG21
- ;; size=7 bbWeight=4 PerfScore 12.00
-G_M60901_IG19: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
+ ;; size=7 bbWeight=1 PerfScore 3.00
+G_M60901_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=00A0 {rbp rdi}, byref, isz
xor ecx, ecx
tzcnt ecx, edx
mov r8d, ecx
mov qword ptr [rsp+0x30], r8
cmp r8, 16
jb SHORT G_M60901_IG20
- mov r10, 0xD1FFAB1E
- ; gcrRegs +[r10]
- mov rcx, r10
+ mov rcx, 0xD1FFAB1E
; gcrRegs +[rcx]
- mov rdx, r10
...
-6 (-0.80%) : 2664.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
@@ -8,16 +8,16 @@
; 0 inlinees with PGO data; 11 single block inlinees; 3 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T08] ( 12, 7 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
+; V00 this [V00,T05] ( 12, 11.44) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.Reflection.RuntimeMethodInfo>
; V01 arg1 [V01,T04] ( 8, 12 ) ref -> rbx class-hnd single-def <System.Type[]>
-; V02 loc0 [V02,T10] ( 8, 5.54) ref -> [rbp-0x48] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
+; V02 loc0 [V02,T12] ( 8, 7.02) ref -> [rbp-0x48] class-hnd exact EH-live spill-single-def <System.RuntimeType[]>
;* V03 loc1 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.RuntimeType[]>
-; V04 loc2 [V04,T19] ( 2, 1 ) ref -> rax class-hnd single-def <System.Reflection.MethodInfo>
+; V04 loc2 [V04,T21] ( 2, 1 ) ref -> rax class-hnd single-def <System.Reflection.MethodInfo>
; V05 loc3 [V05,T00] ( 11, 17.08) int -> r15
; V06 loc4 [V06,T02] ( 8, 16 ) ref -> rdx class-hnd <System.Type>
-; V07 loc5 [V07,T09] ( 4, 8 ) ref -> rdx class-hnd exact <System.RuntimeType>
-; V08 loc6 [V08,T11] ( 6, 5.54) ref -> r15 class-hnd exact <System.Type[]>
-; V09 loc7 [V09,T01] ( 11, 16.58) int -> rdi
+; V07 loc5 [V07,T10] ( 4, 8 ) ref -> rdx class-hnd exact <System.RuntimeType>
+; V08 loc6 [V08,T13] ( 6, 7.02) ref -> r15 class-hnd exact <System.Type[]>
+; V09 loc7 [V09,T01] ( 11, 16.58) int -> rsi
;* V10 loc8 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
; V11 OutArgs [V11 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V12 tmp1 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.RuntimeType>
@@ -26,33 +26,33 @@
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.RuntimeType>
; V16 tmp5 [V16,T24] ( 2, 0 ) ref -> r8 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>>
; V17 tmp6 [V17,T23] ( 3, 0 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
-; V18 tmp7 [V18,T16] ( 2, 2 ) ubyte -> rax "Inline stloc first use temp"
+; V18 tmp7 [V18,T19] ( 2, 2 ) ubyte -> rax "Inline stloc first use temp"
;* V19 tmp8 [V19 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp"
;* V20 tmp9 [V20 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V21 tmp10 [V21,T20] ( 2, 1 ) ref -> rdx class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
-; V22 tmp11 [V22 ] ( 4, 2 ) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
-; V23 tmp12 [V23,T17] ( 2, 2 ) long -> rcx "impAppendStmt"
+; V21 tmp10 [V21,T15] ( 2, 3.96) ref -> rdx class-hnd exact single-def "Inline return value spill temp" <System.RuntimeType[]>
+; V22 tmp11 [V22 ] ( 4, 7.92) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline stloc first use temp" <System.RuntimeType[]>
+; V23 tmp12 [V23,T11] ( 2, 7.92) long -> rcx "impAppendStmt"
;* V24 tmp13 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "spilled call-like call argument" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V25 tmp14 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "NewObj constructor temp" <System.ArgumentNullException>
;* V26 tmp15 [V26 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Runtime.CompilerServices.ObjectHandleOnStack>
;* V27 tmp16 [V27 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.RuntimeType+RuntimeTypeCache>
;* V29 tmp18 [V29 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V30 tmp19 [V30,T13] ( 3, 4 ) ref -> rax "Single return block return value"
-; V31 FramesRoot [V31,T12] ( 6, 4 ) long -> rdi "Pinvoke FrameListRoot"
-; V32 PInvokeFrame [V32 ] ( 8, 6 ) struct (72) [rbp-0x90] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
+; V30 tmp19 [V30,T14] ( 3, 6.96) ref -> rax "Single return block return value"
+; V31 FramesRoot [V31,T09] ( 6, 9.92) long -> rsi "Pinvoke FrameListRoot"
+; V32 PInvokeFrame [V32 ] ( 8, 11.92) struct (72) [rbp-0x90] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar"
;* V33 tmp22 [V33 ] ( 0, 0 ) long -> zero-ref "field V24._ptr (fldOffset=0x0)" P-INDEP
-; V34 tmp23 [V34,T21] ( 2, 1 ) long -> rdx "field V26._ptr (fldOffset=0x0)" P-INDEP
-; V35 tmp24 [V35,T18] ( 2, 2 ) long -> rdx "argument with side effect"
-; V36 tmp25 [V36,T14] ( 2, 2 ) ref -> r15 single-def "argument with side effect"
-; V37 tmp26 [V37,T15] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
+; V34 tmp23 [V34,T16] ( 2, 3.96) long -> rdx "field V26._ptr (fldOffset=0x0)" P-INDEP
+; V35 tmp24 [V35,T20] ( 2, 2 ) long -> rdx "argument with side effect"
+; V36 tmp25 [V36,T17] ( 2, 2 ) ref -> r15 single-def "argument with side effect"
+; V37 tmp26 [V37,T18] ( 2, 2 ) ref -> rdx single-def "argument with side effect"
;* V38 tmp27 [V38 ] ( 0, 0 ) ref -> zero-ref single-def "argument with side effect"
; V39 tmp28 [V39,T25] ( 2, 0 ) ref -> rcx single-def "argument with side effect"
; V40 tmp29 [V40,T26] ( 2, 0 ) ref -> rdx single-def "argument with side effect"
; V41 PSPSym [V41,T22] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym"
-; V42 cse0 [V42,T05] ( 10, 12.50) int -> r14 "CSE - aggressive"
-; V43 cse1 [V43,T06] ( 3, 11.88) long -> rcx "CSE - aggressive"
-; V44 cse2 [V44,T07] ( 3, 11.88) long -> rcx "CSE - aggressive"
+; V42 cse0 [V42,T06] ( 10, 12.50) int -> rdi "CSE - aggressive"
+; V43 cse1 [V43,T07] ( 3, 11.88) long -> rcx "CSE - aggressive"
+; V44 cse2 [V44,T08] ( 3, 11.88) long -> rcx "CSE - aggressive"
;
; Lcl frame size = 136
@@ -72,47 +72,47 @@ G_M59170_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
mov qword ptr [rbp-0xA0], rsp
mov gword ptr [rbp+0x10], rcx
; GC ptr vars +{V00}
- mov rsi, rcx
- ; gcrRegs +[rsi]
mov rbx, rdx
; gcrRegs +[rbx]
- ;; size=50 bbWeight=1 PerfScore 12.50
-G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000100 {V00}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=47 bbWeight=1 PerfScore 12.25
+G_M59170_IG02: ; bbWeight=1, gcVars=0000000000000020 {V00}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
lea rcx, [rbp-0x88]
mov rdx, r10
call CORINFO_HELP_INIT_PINVOKE_FRAME
- mov rdi, rax
+ mov rsi, rax
mov rdx, rsp
mov qword ptr [rbp-0x68], rdx
mov rdx, rbp
mov qword ptr [rbp-0x58], rdx
test rbx, rbx
je G_M59170_IG19
- mov r14d, dword ptr [rbx+0x08]
- mov edx, r14d
+ mov edi, dword ptr [rbx+0x08]
+ mov edx, edi
mov rcx, 0xD1FFAB1E ; System.RuntimeType[]
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[rax]
; gcr arg pop 0
mov gword ptr [rbp-0x48], rax
; GC ptr vars +{V02}
- mov rcx, qword ptr [rsi+0x50]
+ mov r14, gword ptr [rbp+0x10]
+ ; gcrRegs +[r14]
+ mov rcx, qword ptr [r14+0x50]
call <unknown method>
; gcrRegs -[rax]
; gcr arg pop 0
test eax, eax
je G_M59170_IG20
xor r15d, r15d
- test r14d, r14d
+ test edi, edi
jle G_M59170_IG07
- ;; size=96 bbWeight=1 PerfScore 16.00
-G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=97 bbWeight=1 PerfScore 17.00
+G_M59170_IG03: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
mov rax, gword ptr [rbp-0x48]
; gcrRegs +[rax]
- cmp dword ptr [rax+0x08], r14d
+ cmp dword ptr [rax+0x08], edi
jl SHORT G_M59170_IG06
- ;; size=10 bbWeight=0.50 PerfScore 2.50
-G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=9 bbWeight=0.50 PerfScore 2.50
+G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, byref, isz
mov ecx, r15d
mov rdx, gword ptr [rbx+8*rcx+0x10]
; gcrRegs +[rdx]
@@ -127,16 +127,16 @@ G_M59170_IG04: ; bbWeight=3.96, gcrefRegs=0049 {rax rbx rsi}, byrefRegs=0
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
inc r15d
- cmp r14d, r15d
+ cmp edi, r15d
mov rax, gword ptr [rbp-0x48]
; gcrRegs +[rax]
jg SHORT G_M59170_IG04
;; size=58 bbWeight=3.96 PerfScore 48.51
-G_M59170_IG05: ; bbWeight=0.50, gcrefRegs=0041 {rax rsi}, byrefRegs=0000 {}, byref, isz
+G_M59170_IG05: ; bbWeight=1.98, gcrefRegs=4001 {rax r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx]
jmp SHORT G_M59170_IG07
- ;; size=2 bbWeight=0.50 PerfScore 1.00
-G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] +[rbx]
mov rax, gword ptr [rbp-0x48]
; gcrRegs +[rax]
@@ -157,17 +157,17 @@ G_M59170_IG06: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
inc r15d
- cmp r14d, r15d
+ cmp edi, r15d
jg SHORT G_M59170_IG06
;; size=71 bbWeight=0.04 PerfScore 0.66
-G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M59170_IG07: ; bbWeight=1.98, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
xor rcx, rcx
; gcrRegs +[rcx]
mov gword ptr [rbp-0x40], rcx
- mov rcx, rsi
+ mov rcx, r14
call [System.Reflection.RuntimeMethodInfo:System.IRuntimeMethodInfo.get_Value():long:this]
- ; gcrRegs -[rcx rsi]
+ ; gcrRegs -[rcx r14]
; gcr arg pop 0
mov rcx, rax
lea rdx, [rbp-0x40]
@@ -178,55 +178,56 @@ G_M59170_IG07: ; bbWeight=0.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {},
mov qword ptr [rbp-0x60], rax
lea rax, bword ptr [rbp-0x88]
; byrRegs +[rax]
- mov qword ptr [rdi+0x10], rax
- mov byte ptr [rdi+0x0C], 0
- ;; size=68 bbWeight=0.50 PerfScore 5.62
-G_M59170_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov qword ptr [rsi+0x10], rax
+ mov byte ptr [rsi+0x0C], 0
+ ;; size=68 bbWeight=1.98 PerfScore 22.27
+G_M59170_IG08: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rax]
call [<unknown method>]
; gcr arg pop 0
- ;; size=6 bbWeight=0.50 PerfScore 1.50
-G_M59170_IG09: ; bbWeight=0.50, isz, extend
- mov byte ptr [rdi+0x0C], 1
+ ;; size=6 bbWeight=1.98 PerfScore 5.94
+G_M59170_IG09: ; bbWeight=1.98, isz, extend
+ mov byte ptr [rsi+0x0C], 1
cmp dword ptr [(reloc)], 0
je SHORT G_M59170_IG10
call [CORINFO_HELP_STOP_FOR_GC]
; gcr arg pop 0
- ;; size=19 bbWeight=0.50 PerfScore 4.00
-G_M59170_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=19 bbWeight=1.98 PerfScore 15.84
+G_M59170_IG10: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov rcx, bword ptr [rbp-0x80]
; byrRegs +[rcx]
- mov qword ptr [rdi+0x10], rcx
+ mov qword ptr [rsi+0x10], rcx
+ mov r14, gword ptr [rbp+0x10]
+ ; gcrRegs +[r14]
mov rdx, gword ptr [rbp-0x40]
; gcrRegs +[rdx]
- xor rax, rax
- ; gcrRegs +[rax]
- mov gword ptr [rbp-0x40], rax
- mov rcx, gword ptr [rbp-0x48]
+ xor rcx, rcx
; gcrRegs +[rcx]
; byrRegs -[rcx]
+ mov gword ptr [rbp-0x40], rcx
+ mov rcx, gword ptr [rbp-0x48]
call [System.RuntimeType:SanityCheckGenericArguments(System.RuntimeType[],System.RuntimeType[])]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
jmp SHORT G_M59170_IG16
- ;; size=30 bbWeight=0.50 PerfScore 5.12
-G_M59170_IG11: ; bbWeight=0.50, gcVars=0000000000000100 {V00}, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs +[rbx rsi]
+ ;; size=34 bbWeight=1.98 PerfScore 22.27
+G_M59170_IG11: ; bbWeight=0.50, gcVars=0000000000000020 {V00}, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; gcrRegs +[rbx]
; GC ptr vars -{V02}
- mov edx, r14d
+ mov edx, edi
mov rcx, 0xD1FFAB1E ; System.Type[]
call CORINFO_HELP_NEWARR_1_OBJ
; gcrRegs +[rax]
; gcr arg pop 0
mov r15, rax
; gcrRegs +[r15]
- xor edi, edi
- cmp dword ptr [r15+0x08], r14d
+ xor esi, esi
+ cmp dword ptr [r15+0x08], edi
jl SHORT G_M59170_IG14
- ;; size=29 bbWeight=0.50 PerfScore 3.00
-G_M59170_IG12: ; bbWeight=3.96, gcrefRegs=8048 {rbx rsi r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=28 bbWeight=0.50 PerfScore 3.00
...
+10 (+3.21%) : 15571.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,33 +9,32 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T11] ( 5, 3.50) int -> rdi
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> rbp
-; V03 loc2 [V03,T12] ( 4, 3.50) ubyte -> r14
-; V04 loc3 [V04,T17] ( 3, 2.50) ubyte -> rax
+; V01 loc0 [V01,T10] ( 5, 3.50) int -> rdi
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> rbp
+; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> r14
+; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> rax
; V05 loc4 [V05,T05] ( 4, 12.50) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T18] ( 3, 2 ) int -> rax
-; V08 tmp2 [V08,T19] ( 3, 1.50) int -> rbp
+; V07 tmp1 [V07,T17] ( 3, 2 ) int -> rax
+; V08 tmp2 [V08,T18] ( 3, 1.50) int -> rbp
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rax "dup spill"
-;* V10 tmp4 [V10,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T13] ( 3, 3 ) ushort -> rcx "Inlining Arg"
-;* V12 tmp6 [V12,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
-;* V14 tmp8 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> rax "Inlining Arg"
+;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rcx "Inlining Arg"
-;* V16 tmp10 [V16,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rax "Inlining Arg"
-;* V18 tmp12 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T15] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T16] ( 3, 3 ) ushort -> rax "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T06] ( 6, 11 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> rax "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T06] ( 7, 15 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V26 tmp20 [V26 ] ( 6, 9 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V27 cse0 [V27,T08] ( 3, 8.50) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge G_M17180_IG23
+ jge G_M17180_IG24
mov ecx, ebp
movzx rcx, word ptr [rbx+2*rcx]
cmp ecx, 92
@@ -136,16 +135,16 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=6 bbWeight=4 PerfScore 6.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rbx]
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ebp, 1
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
test r14d, r14d
- je SHORT G_M17180_IG21
+ je SHORT G_M17180_IG22
mov ebp, 4
jmp SHORT G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.75
@@ -154,55 +153,59 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge SHORT G_M17180_IG23
+ jge SHORT G_M17180_IG20
mov eax, ebp
- movzx rcx, word ptr [rbx+2*rax]
- mov eax, ecx
+ movzx rax, word ptr [rbx+2*rax]
cmp eax, 92
- je SHORT G_M17180_IG19
+ je SHORT G_M17180_IG20
cmp eax, 47
jne SHORT G_M17180_IG17
- ;; size=22 bbWeight=4 PerfScore 25.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rbx]
- cmp ebp, 4
- jle SHORT G_M17180_IG23
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 92
- je SHORT G_M17180_IG22
- cmp ecx, 47
- jne SHORT G_M17180_IG23
- jmp SHORT G_M17180_IG22
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=20 bbWeight=4 PerfScore 24.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M17180_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ebp, esi
+ jge SHORT G_M17180_IG24
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+ cmp ebp, 4
+ jle SHORT G_M17180_IG24
+ mov eax, ebp
+ movzx rax, word ptr [rbx+2*rax]
+ cmp eax, 92
+ je SHORT G_M17180_IG23
+ cmp eax, 47
+ jne SHORT G_M17180_IG24
+ jmp SHORT G_M17180_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.00
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp esi, 2
- jl SHORT G_M17180_IG23
+ jl SHORT G_M17180_IG24
cmp word ptr [rbx+0x02], 58
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
movzx rax, word ptr [rbx]
or eax, 32
add eax, -97
cmp eax, 25
- ja SHORT G_M17180_IG23
+ ja SHORT G_M17180_IG24
mov ebp, 2
cmp esi, 2
- jle SHORT G_M17180_IG23
+ jle SHORT G_M17180_IG24
movzx rax, word ptr [rbx+0x04]
cmp eax, 92
- je SHORT G_M17180_IG22
+ je SHORT G_M17180_IG23
cmp eax, 47
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
;; size=50 bbWeight=0.50 PerfScore 7.50
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
inc ebp
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ebp
;; size=2 bbWeight=1 PerfScore 0.25
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -212,7 +215,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 312, prolog size 17, PerfScore 112.38, instruction count 114, allocated bytes for code 312 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 322, prolog size 17, PerfScore 114.12, instruction count 118, allocated bytes for code 322 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
+10 (+3.21%) : 1944.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
@@ -9,33 +9,32 @@
; Final local variable assignments
;
; V00 arg0 [V00,T07] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T11] ( 5, 3.50) int -> rdi
-; V02 loc1 [V02,T00] ( 17, 33 ) int -> rbp
-; V03 loc2 [V03,T12] ( 4, 3.50) ubyte -> r14
-; V04 loc3 [V04,T17] ( 3, 2.50) ubyte -> rax
+; V01 loc0 [V01,T10] ( 5, 3.50) int -> rdi
+; V02 loc1 [V02,T00] ( 19, 34 ) int -> rbp
+; V03 loc2 [V03,T11] ( 4, 3.50) ubyte -> r14
+; V04 loc3 [V04,T16] ( 3, 2.50) ubyte -> rax
; V05 loc4 [V05,T05] ( 4, 12.50) int -> rax
; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 tmp1 [V07,T18] ( 3, 2 ) int -> rax
-; V08 tmp2 [V08,T19] ( 3, 1.50) int -> rbp
+; V07 tmp1 [V07,T17] ( 3, 2 ) int -> rax
+; V08 tmp2 [V08,T18] ( 3, 1.50) int -> rbp
; V09 tmp3 [V09,T03] ( 2, 16 ) int -> rax "dup spill"
-;* V10 tmp4 [V10,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V11 tmp5 [V11,T13] ( 3, 3 ) ushort -> rcx "Inlining Arg"
-;* V12 tmp6 [V12,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V13 tmp7 [V13,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
-;* V14 tmp8 [V14,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V10 tmp4 [V10,T19] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V11 tmp5 [V11,T12] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V12 tmp6 [V12,T20] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V13 tmp7 [V13,T13] ( 3, 3 ) ushort -> rax "Inlining Arg"
+;* V14 tmp8 [V14,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V15 tmp9 [V15,T01] ( 3, 24 ) ushort -> rcx "Inlining Arg"
-;* V16 tmp10 [V16,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V16 tmp10 [V16,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
; V17 tmp11 [V17,T02] ( 3, 24 ) ushort -> rax "Inlining Arg"
-;* V18 tmp12 [V18,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V19 tmp13 [V19,T15] ( 3, 3 ) ushort -> rcx "Inlining Arg"
+;* V18 tmp12 [V18,T21] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V19 tmp13 [V19,T14] ( 3, 3 ) ushort -> rax "Inlining Arg"
;* V20 tmp14 [V20 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-;* V21 tmp15 [V21,T23] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V22 tmp16 [V22,T16] ( 3, 3 ) ushort -> rax "Inlining Arg"
-; V23 tmp17 [V23,T04] ( 10, 13 ) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V24 tmp18 [V24,T06] ( 6, 11 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
+;* V21 tmp15 [V21,T22] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V22 tmp16 [V22,T15] ( 3, 3 ) ushort -> rax "Inlining Arg"
+; V23 tmp17 [V23,T04] ( 11, 13.50) byref -> rbx single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V24 tmp18 [V24,T06] ( 7, 15 ) int -> rsi "field V00._length (fldOffset=0x8)" P-INDEP
;* V25 tmp19 [V25 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
; V26 tmp20 [V26 ] ( 6, 9 ) struct (16) [rsp+0x20] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]>
-; V27 cse0 [V27,T08] ( 3, 8.50) int -> rcx "CSE - aggressive"
;
; Lcl frame size = 48
@@ -121,7 +120,7 @@ G_M17180_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge G_M17180_IG23
+ jge G_M17180_IG24
mov ecx, ebp
movzx rcx, word ptr [rbx+2*rcx]
cmp ecx, 92
@@ -136,16 +135,16 @@ G_M17180_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=6 bbWeight=4 PerfScore 6.00
G_M17180_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rbx]
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=2 bbWeight=0.50 PerfScore 1.00
G_M17180_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ebp, 1
- jmp SHORT G_M17180_IG23
+ jmp SHORT G_M17180_IG24
;; size=7 bbWeight=0.50 PerfScore 1.12
G_M17180_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
; byrRegs +[rbx]
test r14d, r14d
- je SHORT G_M17180_IG21
+ je SHORT G_M17180_IG22
mov ebp, 4
jmp SHORT G_M17180_IG18
;; size=12 bbWeight=0.50 PerfScore 1.75
@@ -154,55 +153,59 @@ G_M17180_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr
;; size=2 bbWeight=2 PerfScore 0.50
G_M17180_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp ebp, esi
- jge SHORT G_M17180_IG23
+ jge SHORT G_M17180_IG20
mov eax, ebp
- movzx rcx, word ptr [rbx+2*rax]
- mov eax, ecx
+ movzx rax, word ptr [rbx+2*rax]
cmp eax, 92
- je SHORT G_M17180_IG19
+ je SHORT G_M17180_IG20
cmp eax, 47
jne SHORT G_M17180_IG17
- ;; size=22 bbWeight=4 PerfScore 25.00
-G_M17180_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- ; byrRegs -[rbx]
- cmp ebp, 4
- jle SHORT G_M17180_IG23
- ;; size=5 bbWeight=4 PerfScore 5.00
-G_M17180_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 92
- je SHORT G_M17180_IG22
- cmp ecx, 47
- jne SHORT G_M17180_IG23
- jmp SHORT G_M17180_IG22
- ;; size=12 bbWeight=0.50 PerfScore 2.25
+ ;; size=20 bbWeight=4 PerfScore 24.00
+G_M17180_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ jmp SHORT G_M17180_IG21
+ ;; size=2 bbWeight=0.50 PerfScore 1.00
+G_M17180_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp ebp, esi
+ jge SHORT G_M17180_IG24
+ ;; size=4 bbWeight=4 PerfScore 5.00
G_M17180_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
- ; byrRegs +[rbx]
+ cmp ebp, 4
+ jle SHORT G_M17180_IG24
+ mov eax, ebp
+ movzx rax, word ptr [rbx+2*rax]
+ cmp eax, 92
+ je SHORT G_M17180_IG23
+ cmp eax, 47
+ jne SHORT G_M17180_IG24
+ jmp SHORT G_M17180_IG23
+ ;; size=23 bbWeight=0.50 PerfScore 4.00
+G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
cmp esi, 2
- jl SHORT G_M17180_IG23
+ jl SHORT G_M17180_IG24
cmp word ptr [rbx+0x02], 58
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
movzx rax, word ptr [rbx]
or eax, 32
add eax, -97
cmp eax, 25
- ja SHORT G_M17180_IG23
+ ja SHORT G_M17180_IG24
mov ebp, 2
cmp esi, 2
- jle SHORT G_M17180_IG23
+ jle SHORT G_M17180_IG24
movzx rax, word ptr [rbx+0x04]
cmp eax, 92
- je SHORT G_M17180_IG22
+ je SHORT G_M17180_IG23
cmp eax, 47
- jne SHORT G_M17180_IG23
+ jne SHORT G_M17180_IG24
;; size=50 bbWeight=0.50 PerfScore 7.50
-G_M17180_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
inc ebp
;; size=2 bbWeight=0.50 PerfScore 0.12
-G_M17180_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17180_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov eax, ebp
;; size=2 bbWeight=1 PerfScore 0.25
-G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
+G_M17180_IG25: ; bbWeight=1, epilog, nogc, extend
add rsp, 48
pop rbx
pop rbp
@@ -212,7 +215,7 @@ G_M17180_IG24: ; bbWeight=1, epilog, nogc, extend
ret
;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 312, prolog size 17, PerfScore 112.38, instruction count 114, allocated bytes for code 312 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
+; Total bytes of code 322, prolog size 17, PerfScore 114.12, instruction count 118, allocated bytes for code 322 (MethodHash=ae56bce3) for method System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
; ============================================================
Unwind Info:
+41 (+3.97%) : 21189.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)
@@ -8,90 +8,91 @@
; 0 inlinees with PGO data; 20 single block inlinees; 11 inlinees without PGO data
; Final local variable assignments
;
-; V00 this [V00,T00] ( 39,506 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
-; V01 TypeCtx [V01,T42] ( 7, 5.56) long -> r12 single-def
-; V02 arg1 [V02,T31] ( 4, 14 ) byref -> r14 single-def
-; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> rsi single-def
-; V04 arg3 [V04,T48] ( 1, 1 ) ref -> [rsp+0x100] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
-; V05 arg4 [V05,T29] ( 4, 24 ) ref -> rdi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V06 arg5 [V06,T30] ( 4, 24 ) ref -> rbp class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
-; V07 arg6 [V07,T34] ( 1, 16 ) ubyte -> r15 single-def
-; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> r13
-; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [rsp+0x128] single-def
+; V00 this [V00,T00] ( 39,432 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser>
+; V01 TypeCtx [V01,T43] ( 7, 5.56) long -> r12 single-def
+; V02 arg1 [V02,T30] ( 4, 14 ) byref -> rbp single-def
+; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> r14 single-def
+; V04 arg3 [V04,T49] ( 1, 1 ) ref -> [rsp+0x110] class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]>
+; V05 arg4 [V05,T29] ( 4, 20 ) ref -> rdi class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
+; V06 arg5 [V06,T27] ( 4, 24 ) ref -> rsi class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]>
+; V07 arg6 [V07,T42] ( 1, 8 ) ubyte -> r13 single-def
+; V08 arg7 [V08,T37] ( 2, 10 ) ubyte -> r15
+; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [rsp+0x138] single-def
;* V10 loc0 [V10 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+<>c__DisplayClass417_0`1[System.__Canon]>
-; V11 loc1 [V11 ] ( 7, 42 ) struct ( 8) [rsp+0x88] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V12 loc2 [V12,T17] ( 3, 52 ) int -> [rsp+0x84] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 8) [rsp+0x98] do-not-enreg[XS] must-init addr-exposed ld-addr-op <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
+; V12 loc2 [V12,T16] ( 3, 34 ) int -> [rsp+0x94] ld-addr-op
; V13 OutArgs [V13 ] ( 1, 1 ) struct (48) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T46] ( 3, 4 ) long -> rdx "spilling helperCall"
+; V14 tmp1 [V14,T47] ( 3, 4 ) long -> rdx "spilling helperCall"
;* V15 tmp2 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V16 tmp3 [V16 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
-; V17 tmp4 [V17,T47] ( 3, 4 ) long -> rdx "spilling helperCall"
+; V17 tmp4 [V17,T48] ( 3, 4 ) long -> rdx "spilling helperCall"
;* V18 tmp5 [V18 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V19 tmp6 [V19 ] ( 0, 0 ) byref -> zero-ref
-; V20 tmp7 [V20,T26] ( 2, 32 ) byref -> [rsp+0x78] spill-single-def
-; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> rax
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [rsp+0x80] spill-single-def
+; V21 tmp8 [V21,T28] ( 3, 24 ) ref -> rax
;* V22 tmp9 [V22 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V23 tmp10 [V23 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V24 tmp11 [V24 ] ( 0, 0 ) struct ( 8) zero-ref "location for address-of(RValue)" <Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]>
;* V25 tmp12 [V25 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
;* V26 tmp13 [V26 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V27 tmp14 [V27,T41] ( 2, 8 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> rax
-; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> [rsp+0x70] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V27 tmp14 [V27,T40] ( 2, 8 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V28 tmp15 [V28,T39] ( 4, 8 ) ref -> rax
+; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> [rsp+0x78] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V31 tmp18 [V31,T39] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V31 tmp18 [V31,T38] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V32 tmp19 [V32 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> rax
-; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> [rsp+0x68] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V33 tmp20 [V33,T32] ( 2, 16 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V34 tmp21 [V34,T33] ( 4, 14 ) ref -> rdx
+; V35 tmp22 [V35,T36] ( 3, 12 ) ref -> [rsp+0x70] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V36 tmp23 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V37 tmp24 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V38 tmp25 [V38,T07] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V39 tmp26 [V39,T12] ( 4, 56 ) ref -> rdx
-; V40 tmp27 [V40,T19] ( 3, 48 ) ref -> [rsp+0x60] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> r8
+; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> [rsp+0x68] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V41 tmp28 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V42 tmp29 [V42,T33] ( 2, 16 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T41] ( 2, 8 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
;* V43 tmp30 [V43 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V44 tmp31 [V44,T08] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V45 tmp32 [V45,T13] ( 4, 56 ) ref -> rdx
-; V46 tmp33 [V46,T20] ( 3, 48 ) ref -> [rsp+0x58] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V44 tmp31 [V44,T21] ( 2, 32 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V45 tmp32 [V45,T17] ( 4, 32 ) ref -> rdx
+; V46 tmp33 [V46,T09] ( 3, 48 ) ref -> [rsp+0x60] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V47 tmp34 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-;* V48 tmp35 [V48,T24] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+;* V48 tmp35 [V48,T15] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
;* V49 tmp36 [V49 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V50 tmp37 [V50,T09] ( 2, 64 ) ref -> rdx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V51 tmp38 [V51,T14] ( 4, 56 ) ref -> rdx
-; V52 tmp39 [V52,T21] ( 3, 48 ) ref -> [rsp+0x50] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> r8
+; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> [rsp+0x58] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V53 tmp40 [V53 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V54 tmp41 [V54 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r8
-; V57 tmp44 [V57,T04] ( 3,192 ) ref -> [rsp+0x48] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V55 tmp42 [V55,T01] ( 2,256 ) ref -> r10 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V56 tmp43 [V56,T02] ( 4,224 ) ref -> r10
+; V57 tmp44 [V57,T03] ( 3,192 ) ref -> [rsp+0x50] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V58 tmp45 [V58 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V59 tmp46 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V60 tmp47 [V60,T10] ( 2, 64 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> r8
-; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> [rsp+0x40] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> r10 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> r10
+; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> [rsp+0x48] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V63 tmp50 [V63 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V64 tmp51 [V64 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V65 tmp52 [V65,T11] ( 2, 64 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> rax
-; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> [rsp+0x38] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> rax class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> rax
+; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> [rsp+0x40] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
;* V68 tmp55 [V68 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
-; V69 tmp56 [V69,T27] ( 2, 32 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
-;* V70 tmp57 [V70,T28] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
-; V71 tmp58 [V71,T06] ( 3, 80 ) int -> rcx "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> rdx class-hnd "Inlining Arg" <System.__Canon>
+;* V70 tmp57 [V70,T26] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp"
+; V71 tmp58 [V71,T13] ( 3, 48 ) int -> rcx "Inline stloc first use temp"
;* V72 tmp59 [V72 ] ( 0, 0 ) ref -> zero-ref "field V10.<>4__this (fldOffset=0x0)" P-INDEP
-; V73 tmp60 [V73,T03] ( 7,193 ) ref -> [rsp+0x30] spill-single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
-;* V74 tmp61 [V74,T50] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
-; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [rsp+0x80] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [rsp+0x88] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> [rsp+0x38] spill-single-def "field V10.isPossibleElement (fldOffset=0x8)" P-INDEP
+;* V74 tmp61 [V74,T51] ( 0, 0 ) ushort -> zero-ref single-def "field V10.separatorTokenKind (fldOffset=0x10)" P-INDEP
+; V75 tmp62 [V75,T05] ( 3, 81 ) ubyte -> [rsp+0x90] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [rsp+0x98] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
;* V77 tmp64 [V77 ] ( 0, 0 ) ref -> zero-ref "field V16._builder (fldOffset=0x0)" P-INDEP
;* V78 tmp65 [V78 ] ( 0, 0 ) ref -> zero-ref "field V24._builder (fldOffset=0x0)" P-INDEP
-; V79 rat0 [V79,T43] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
-; V80 rat1 [V80,T44] ( 3, 5.60) long -> rcx "spilling expr"
-; V81 rat2 [V81,T45] ( 3, 4.48) long -> rdx "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [rsp+0x8C] multi-def "CSE - moderate"
+; V80 rat0 [V80,T44] ( 3, 5.60) long -> rdx "fgMakeTemp is creating a new local variable"
+; V81 rat1 [V81,T45] ( 3, 5.60) long -> rcx "spilling expr"
+; V82 rat2 [V82,T46] ( 3, 4.48) long -> rdx "fgMakeTemp is creating a new local variable"
;
-; Lcl frame size = 152
+; Lcl frame size = 168
G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -102,61 +103,61 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 152
+ sub rsp, 168
xor eax, eax
- mov qword ptr [rsp+0x88], rax
- mov qword ptr [rsp+0x90], rdx
+ mov qword ptr [rsp+0x98], rax
+ mov qword ptr [rsp+0xA0], rdx
mov rbx, rcx
; gcrRegs +[rbx]
mov r12, rdx
- mov r14, r8
- ; byrRegs +[r14]
- mov esi, r9d
- mov rdi, gword ptr [rsp+0x108]
+ mov rbp, r8
+ ; byrRegs +[rbp]
+ mov r14d, r9d
+ mov rdi, gword ptr [rsp+0x118]
; gcrRegs +[rdi]
- mov rbp, gword ptr [rsp+0x110]
- ; gcrRegs +[rbp]
- mov r15d, dword ptr [rsp+0x118]
- mov r13d, dword ptr [rsp+0x120]
+ mov rsi, gword ptr [rsp+0x120]
+ ; gcrRegs +[rsi]
+ mov r13d, dword ptr [rsp+0x128]
+ mov r15d, dword ptr [rsp+0x130]
;; size=81 bbWeight=1 PerfScore 15.50
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref, isz
- movzx rax, byte ptr [rsp+0x128]
- mov byte ptr [rsp+0x80], al
- mov r8, gword ptr [rsp+0x100]
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref, isz
+ movzx rax, byte ptr [rsp+0x138]
+ mov byte ptr [rsp+0x90], al
+ mov r8, gword ptr [rsp+0x110]
; gcrRegs +[r8]
- mov gword ptr [rsp+0x30], r8
+ mov gword ptr [rsp+0x38], r8
; GC ptr vars +{V73}
mov rcx, qword ptr [r12+0x38]
mov rdx, qword ptr [rcx+0x10]
test rdx, rdx
je SHORT G_M39451_IG04
;; size=42 bbWeight=1 PerfScore 9.25
-G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000008 {V73}, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, gcvars, byref, isz
+G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000010 {V73}, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, gcvars, byref, isz
; gcrRegs -[r8]
jmp SHORT G_M39451_IG05
;; size=2 bbWeight=0.80 PerfScore 1.60
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
mov rcx, r12
mov rdx, 0xD1FFAB1E ; global ptr
call CORINFO_HELP_RUNTIMEHANDLE_METHOD
; gcr arg pop 0
mov rdx, rax
;; size=21 bbWeight=0.20 PerfScore 0.35
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
mov rcx, gword ptr [rbx+0x108]
; gcrRegs +[rcx]
cmp dword ptr [rcx], ecx
call [Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxListPool:AllocateSeparated[System.__Canon]():Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxListBuilder`1[System.__Canon]:this]
; gcrRegs -[rcx] +[rax]
; gcr arg pop 0
- mov gword ptr [rsp+0x88], rax
+ mov gword ptr [rsp+0x98], rax
;; size=23 bbWeight=1 PerfScore 9.00
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref
; gcrRegs -[rax]
- test r13b, r13b
+ test r15b, r15b
jne G_M39451_IG16
;; size=9 bbWeight=8 PerfScore 10.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000 {r14}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0020 {rbp}, byref, isz
mov rax, gword ptr [rbx+0x10]
; gcrRegs +[rax]
test rax, rax
@@ -166,7 +167,7 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000
call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this]
; gcrRegs -[rcx]
; gcr arg pop 0
- mov gword ptr [rsp+0x70], rax
+ mov gword ptr [rsp+0x78], rax
; GC ptr vars +{V29}
lea rcx, bword ptr [rbx+0x10]
; byrRegs +[rcx]
@@ -175,57 +176,25 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=00A8 {rbx rbp rdi}, byrefRegs=4000
call CORINFO_HELP_ASSIGN_REF
; gcrRegs -[rax rdx]
; byrRegs -[rcx]
- mov rax, gword ptr [rsp+0x70]
+ mov rax, gword ptr [rsp+0x78]
; gcrRegs +[rax]
;; size=40 bbWeight=2 PerfScore 20.50
-G_M39451_IG08: ; bbWeight=2, gcVars=0000000000000008 {V73}, gcrefRegs=00A9 {rax rbx rbp rdi}, byrefRegs=4000 {r14}, gcvars, byref
+G_M39451_IG08: ; bbWeight=2, gcVars=0000000000000010 {V73}, gcrefRegs=00C9 {rax rbx rsi rdi}, byrefRegs=0020 {rbp}, gcvars, byref
...
smoke_tests.nativeaot.windows.x64.checked.mch
-8 (-2.17%) : 5794.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
@@ -13,11 +13,11 @@
; V02 loc1 [V02,T02] ( 10, 7.75) int -> rdi
; V03 loc2 [V03,T06] ( 3, 1.50) ref -> rbp class-hnd exact single-def <ushort[]>
;* V04 loc3 [V04,T08] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc4 [V05,T00] ( 10, 16.54) int -> rcx
+; V05 loc4 [V05,T00] ( 10, 16.54) int -> rdx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rcx single-def "spilling varStr"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr"
;* V10 tmp4 [V10,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V11 rat0 [V11,T05] ( 3, 3 ) long -> rsi "fgMakeTemp is creating a new local variable"
;
@@ -85,28 +85,28 @@ G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs -[rcx]
jmp G_M48063_IG16
;; size=54 bbWeight=0.50 PerfScore 6.62
-G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M48063_IG15
- ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rcx+0x08], 5
+ mov rdx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdx]
+ test rdx, rdx
+ je SHORT G_M48063_IG15
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rdx+0x08], 5
jne SHORT G_M48063_IG15
;; size=6 bbWeight=0.25 PerfScore 1.00
-G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8, 0xD1FFAB1E
- xor r8, qword ptr [rcx+0x0C]
- mov ecx, dword ptr [rcx+0x12]
- ; gcrRegs -[rcx]
- xor ecx, 0xD1FFAB1E
- or rcx, r8
+G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x12]
+ ; gcrRegs -[rdx]
+ xor edx, 0xD1FFAB1E
+ or rdx, rcx
jne SHORT G_M48063_IG15
;; size=28 bbWeight=0.12 PerfScore 0.84
G_M48063_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- xor ecx, ecx
+ xor edx, edx
test edi, edi
jle SHORT G_M48063_IG14
;; size=6 bbWeight=0.50 PerfScore 0.75
@@ -115,26 +115,26 @@ G_M48063_IG10: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
jg SHORT G_M48063_IG13
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M48063_IG11: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG11
- ;; size=18 bbWeight=3.96 PerfScore 22.77
-G_M48063_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=3.96 PerfScore 22.77
+G_M48063_IG12: ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M48063_IG14
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M48063_IG13: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 23
+ cmp edx, 23
jae SHORT G_M48063_IG18
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG13
- ;; size=23 bbWeight=0.04 PerfScore 0.28
+ ;; size=21 bbWeight=0.04 PerfScore 0.28
G_M48063_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc edi
mov dword ptr [rsp+0x20], 21
@@ -198,7 +198,7 @@ G_M48063_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
jmp G_M48063_IG04
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 369, prolog size 11, PerfScore 62.08, instruction count 94, allocated bytes for code 369 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
+; Total bytes of code 361, prolog size 11, PerfScore 65.04, instruction count 94, allocated bytes for code 361 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
; ============================================================
Unwind Info:
-8 (-2.17%) : 16882.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
@@ -12,11 +12,11 @@
; V02 loc1 [V02,T02] ( 10, 7.75) int -> rdi
; V03 loc2 [V03,T06] ( 3, 1.50) ref -> rbp class-hnd exact single-def <ushort[]>
;* V04 loc3 [V04,T08] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc4 [V05,T00] ( 10, 16.54) int -> rcx
+; V05 loc4 [V05,T00] ( 10, 16.54) int -> rdx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rcx single-def "spilling varStr"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr"
;* V10 tmp4 [V10,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V11 rat0 [V11,T05] ( 3, 3 ) long -> rsi "fgMakeTemp is creating a new local variable"
;
@@ -84,28 +84,28 @@ G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs -[rcx]
jmp G_M48063_IG16
;; size=54 bbWeight=0.50 PerfScore 6.62
-G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M48063_IG15
- ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rcx+0x08], 5
+ mov rdx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdx]
+ test rdx, rdx
+ je SHORT G_M48063_IG15
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rdx+0x08], 5
jne SHORT G_M48063_IG15
;; size=6 bbWeight=0.25 PerfScore 1.00
-G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8, 0xD1FFAB1E
- xor r8, qword ptr [rcx+0x0C]
- mov ecx, dword ptr [rcx+0x12]
- ; gcrRegs -[rcx]
- xor ecx, 0xD1FFAB1E
- or rcx, r8
+G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x12]
+ ; gcrRegs -[rdx]
+ xor edx, 0xD1FFAB1E
+ or rdx, rcx
jne SHORT G_M48063_IG15
;; size=28 bbWeight=0.12 PerfScore 0.84
G_M48063_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- xor ecx, ecx
+ xor edx, edx
test edi, edi
jle SHORT G_M48063_IG14
;; size=6 bbWeight=0.50 PerfScore 0.75
@@ -114,26 +114,26 @@ G_M48063_IG10: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
jg SHORT G_M48063_IG13
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M48063_IG11: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG11
- ;; size=18 bbWeight=3.96 PerfScore 22.77
-G_M48063_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=3.96 PerfScore 22.77
+G_M48063_IG12: ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M48063_IG14
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M48063_IG13: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 23
+ cmp edx, 23
jae SHORT G_M48063_IG18
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG13
- ;; size=23 bbWeight=0.04 PerfScore 0.28
+ ;; size=21 bbWeight=0.04 PerfScore 0.28
G_M48063_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc edi
mov dword ptr [rsp+0x20], 21
@@ -197,7 +197,7 @@ G_M48063_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
jmp G_M48063_IG04
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 369, prolog size 11, PerfScore 62.08, instruction count 94, allocated bytes for code 369 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
+; Total bytes of code 361, prolog size 11, PerfScore 65.04, instruction count 94, allocated bytes for code 361 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
; ============================================================
Unwind Info:
-8 (-2.17%) : 1747.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
@@ -12,11 +12,11 @@
; V02 loc1 [V02,T02] ( 10, 7.75) int -> rdi
; V03 loc2 [V03,T06] ( 3, 1.50) ref -> rbp class-hnd exact single-def <ushort[]>
;* V04 loc3 [V04,T08] ( 0, 0 ) ubyte -> zero-ref
-; V05 loc4 [V05,T00] ( 10, 16.54) int -> rcx
+; V05 loc4 [V05,T00] ( 10, 16.54) int -> rdx
; V06 OutArgs [V06 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
;* V07 tmp1 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
;* V08 tmp2 [V08 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String>
-; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rcx single-def "spilling varStr"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr"
;* V10 tmp4 [V10,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V11 rat0 [V11,T05] ( 3, 3 ) long -> rsi "fgMakeTemp is creating a new local variable"
;
@@ -84,28 +84,28 @@ G_M48063_IG05: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
; byrRegs -[rcx]
jmp G_M48063_IG16
;; size=54 bbWeight=0.50 PerfScore 6.62
-G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
+G_M48063_IG06: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rsi]
- mov rcx, gword ptr [rbx+0x10]
- ; gcrRegs +[rcx]
- test rcx, rcx
- je G_M48063_IG15
- ;; size=13 bbWeight=0.50 PerfScore 1.62
-G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp dword ptr [rcx+0x08], 5
+ mov rdx, gword ptr [rbx+0x10]
+ ; gcrRegs +[rdx]
+ test rdx, rdx
+ je SHORT G_M48063_IG15
+ ;; size=9 bbWeight=0.50 PerfScore 1.62
+G_M48063_IG07: ; bbWeight=0.25, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ cmp dword ptr [rdx+0x08], 5
jne SHORT G_M48063_IG15
;; size=6 bbWeight=0.25 PerfScore 1.00
-G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004A {rcx rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8, 0xD1FFAB1E
- xor r8, qword ptr [rcx+0x0C]
- mov ecx, dword ptr [rcx+0x12]
- ; gcrRegs -[rcx]
- xor ecx, 0xD1FFAB1E
- or rcx, r8
+G_M48063_IG08: ; bbWeight=0.12, gcrefRegs=004C {rdx rbx rsi}, byrefRegs=0000 {}, byref, isz
+ mov rcx, 0xD1FFAB1E
+ xor rcx, qword ptr [rdx+0x0C]
+ mov edx, dword ptr [rdx+0x12]
+ ; gcrRegs -[rdx]
+ xor edx, 0xD1FFAB1E
+ or rdx, rcx
jne SHORT G_M48063_IG15
;; size=28 bbWeight=0.12 PerfScore 0.84
G_M48063_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- xor ecx, ecx
+ xor edx, edx
test edi, edi
jle SHORT G_M48063_IG14
;; size=6 bbWeight=0.50 PerfScore 0.75
@@ -114,26 +114,26 @@ G_M48063_IG10: ; bbWeight=0.25, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000
jg SHORT G_M48063_IG13
;; size=5 bbWeight=0.25 PerfScore 0.31
G_M48063_IG11: ; bbWeight=3.96, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG11
- ;; size=18 bbWeight=3.96 PerfScore 22.77
-G_M48063_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=16 bbWeight=3.96 PerfScore 22.77
+G_M48063_IG12: ; bbWeight=1.98, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
jmp SHORT G_M48063_IG14
- ;; size=2 bbWeight=0.50 PerfScore 1.00
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
G_M48063_IG13: ; bbWeight=0.04, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- cmp ecx, 23
+ cmp edx, 23
jae SHORT G_M48063_IG18
- mov r8d, ecx
- cmp word ptr [rsi+2*r8+0x10], 4
+ mov ecx, edx
+ cmp word ptr [rsi+2*rcx+0x10], 4
je SHORT G_M48063_IG15
- inc ecx
- cmp ecx, edi
+ inc edx
+ cmp edx, edi
jl SHORT G_M48063_IG13
- ;; size=23 bbWeight=0.04 PerfScore 0.28
+ ;; size=21 bbWeight=0.04 PerfScore 0.28
G_M48063_IG14: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
inc edi
mov dword ptr [rsp+0x20], 21
@@ -197,7 +197,7 @@ G_M48063_IG19: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr
jmp G_M48063_IG04
;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 369, prolog size 11, PerfScore 62.08, instruction count 94, allocated bytes for code 369 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
+; Total bytes of code 361, prolog size 11, PerfScore 65.04, instruction count 94, allocated bytes for code 361 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
; ============================================================
Unwind Info:
+17 (+6.72%) : 942.dasm - System.Enum+<>c1`1[ubyte]:b1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
@@ -8,20 +8,20 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Enum+<>c__1`1[ubyte]>
-; V01 arg1 [V01,T08] ( 3, 3 ) ref -> rsi class-hnd exact single-def <<unknown class>>
-; V02 arg2 [V02,T09] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String[]>
-; V03 arg3 [V03,T04] ( 5, 7 ) ref -> rbx class-hnd single-def <System.Object[]>
-; V04 arg4 [V04,T10] ( 1, 1 ) ubyte -> [rsp+0x90] single-def
-; V05 loc0 [V05,T06] ( 6, 6.54) ref -> r14 class-hnd exact single-def <ubyte[]>
-; V06 loc1 [V06,T01] ( 11, 17.08) int -> r15
+; V01 arg1 [V01,T08] ( 3, 3.98) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V02 arg2 [V02,T09] ( 3, 3.98) ref -> rdi class-hnd single-def <System.String[]>
+; V03 arg3 [V03,T05] ( 5, 7 ) ref -> rbx class-hnd single-def <System.Object[]>
+; V04 arg4 [V04,T10] ( 1, 1.98) ubyte -> rbp single-def
+; V05 loc0 [V05,T06] ( 6, 7.52) ref -> r15 class-hnd exact single-def <ubyte[]>
+; V06 loc1 [V06,T01] ( 11, 17.08) int -> r13
; V07 OutArgs [V07 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T00] ( 8, 26 ) ref -> r12 "inline UNBOX clone1"
-; V09 tmp2 [V09,T02] ( 4, 16 ) int -> rax "Strict ordering of exceptions for Array store"
-; V10 tmp3 [V10,T07] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.EnumInfo`1[ubyte]>
-; V11 cse0 [V11,T05] ( 6, 7.50) int -> rbp "CSE - aggressive"
-; V12 cse1 [V12,T03] ( 3, 11.88) long -> r13 "CSE - aggressive"
+; V08 tmp1 [V08,T00] ( 8, 26 ) ref -> [rsp+0x30] "inline UNBOX clone1"
+; V09 tmp2 [V09,T02] ( 4, 16 ) int -> r8 "Strict ordering of exceptions for Array store"
+; V10 tmp3 [V10,T03] ( 3, 11.88) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.EnumInfo`1[ubyte]>
+; V11 cse0 [V11,T07] ( 6, 7.50) int -> r14 "CSE - aggressive"
+; V12 cse1 [V12,T04] ( 3, 11.88) long -> r12 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M59494_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -32,69 +32,78 @@ G_M59494_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 56
mov rsi, rdx
; gcrRegs +[rsi]
mov rdi, r8
; gcrRegs +[rdi]
mov rbx, r9
; gcrRegs +[rbx]
- ;; size=25 bbWeight=1 PerfScore 9.00
+ mov ebp, dword ptr [rsp+0xA0]
+ ;; size=32 bbWeight=1 PerfScore 10.00
G_M59494_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- mov ebp, dword ptr [rbx+0x08]
- mov edx, ebp
+ mov r14d, dword ptr [rbx+0x08]
+ mov edx, r14d
lea rcx, [(reloc)] ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- xor r15d, r15d
- test ebp, ebp
+ mov r15, rax
+ ; gcrRegs +[r15]
+ xor r13d, r13d
+ test r14d, r14d
jle G_M59494_IG11
- ;; size=31 bbWeight=1 PerfScore 5.50
-G_M59494_IG03: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=1 PerfScore 5.50
+G_M59494_IG03: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp dword ptr [r14+0x08], ebp
+ cmp dword ptr [r15+0x08], r14d
jl SHORT G_M59494_IG08
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M59494_IG04: ; bbWeight=3.96, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- mov r13d, r15d
- mov r12, gword ptr [rbx+8*r13+0x10]
- ; gcrRegs +[r12]
+G_M59494_IG04: ; bbWeight=3.96, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ mov r12d, r13d
+ mov rax, gword ptr [rbx+8*r12+0x10]
+ ; gcrRegs +[rax]
lea rdx, [(reloc)] ; <unknown class>
- cmp qword ptr [r12], rdx
+ cmp qword ptr [rax], rdx
je SHORT G_M59494_IG06
- ;; size=21 bbWeight=3.96 PerfScore 26.73
-G_M59494_IG05: ; bbWeight=0.99, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref
- mov rdx, r12
+ ;; size=20 bbWeight=3.96 PerfScore 26.73
+G_M59494_IG05: ; bbWeight=0.99, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ mov gword ptr [rsp+0x30], rax
+ ; GC ptr vars +{V08}
+ mov rdx, rax
; gcrRegs +[rdx]
lea rcx, [(reloc)] ; <unknown class>
call CORINFO_HELP_UNBOX
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rax rdx]
; gcr arg pop 0
- ;; size=15 bbWeight=0.99 PerfScore 1.73
-G_M59494_IG06: ; bbWeight=3.96, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [r12+0x08]
- mov byte ptr [r14+r13+0x10], al
- inc r15d
- cmp ebp, r15d
+ mov rax, gword ptr [rsp+0x30]
+ ; gcrRegs +[rax]
+ ;; size=25 bbWeight=0.99 PerfScore 3.71
+G_M59494_IG06: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V08}
+ movzx r8, byte ptr [rax+0x08]
+ mov byte ptr [r15+r12+0x10], r8b
+ inc r13d
+ cmp r14d, r13d
jg SHORT G_M59494_IG04
- ;; size=19 bbWeight=3.96 PerfScore 17.82
-G_M59494_IG07: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx r12]
+ ;; size=18 bbWeight=3.96 PerfScore 17.82
+G_M59494_IG07: ; bbWeight=1.98, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rbx]
jmp SHORT G_M59494_IG11
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M59494_IG08: ; bbWeight=0.04, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M59494_IG08: ; bbWeight=0.04, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
- mov edx, r15d
- mov r12, gword ptr [rbx+8*rdx+0x10]
+ mov eax, r13d
+ mov rax, gword ptr [rbx+8*rax+0x10]
+ ; gcrRegs +[rax]
+ mov r12, rax
; gcrRegs +[r12]
lea rdx, [(reloc)]
cmp qword ptr [r12], rdx
je SHORT G_M59494_IG10
- ;; size=21 bbWeight=0.04 PerfScore 0.27
-G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.04 PerfScore 0.28
+G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=90C8 {rbx rsi rdi r12 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rdx, r12
; gcrRegs +[rdx]
lea rcx, [(reloc)]
@@ -102,17 +111,17 @@ G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byr
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=15 bbWeight=0.01 PerfScore 0.02
-G_M59494_IG10: ; bbWeight=0.04, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [r12+0x08]
- cmp r15d, dword ptr [r14+0x08]
+G_M59494_IG10: ; bbWeight=0.04, gcrefRegs=90C8 {rbx rsi rdi r12 r15}, byrefRegs=0000 {}, byref, isz
+ movzx r8, byte ptr [r12+0x08]
+ cmp r13d, dword ptr [r15+0x08]
jae SHORT G_M59494_IG13
- mov ecx, r15d
- mov byte ptr [r14+rcx+0x10], al
- inc r15d
- cmp ebp, r15d
+ mov ecx, r13d
+ mov byte ptr [r15+rcx+0x10], r8b
+ inc r13d
+ cmp r14d, r13d
jg SHORT G_M59494_IG08
;; size=28 bbWeight=0.04 PerfScore 0.35
-G_M59494_IG11: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M59494_IG11: ; bbWeight=1.98, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r12]
lea rcx, [(reloc)] ; System.Reflection.EnumInfo`1[ubyte]
call CORINFO_HELP_NEWSFAST
@@ -120,24 +129,24 @@ G_M59494_IG11: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
- movzx rcx, byte ptr [rsp+0x90]
+ movzx rcx, bpl
mov dword ptr [rsp+0x20], ecx
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
- mov r8, r14
+ mov r8, r15
; gcrRegs +[r8]
mov r9, rdi
; gcrRegs +[r9]
call System.Reflection.EnumInfo`1[ubyte]:.ctor(System.Type,ubyte[],System.String[],ubyte):this
- ; gcrRegs -[rax rcx rdx rsi rdi r8-r9 r14]
+ ; gcrRegs -[rax rcx rdx rsi rdi r8-r9 r15]
; gcr arg pop 0
mov rax, rbx
; gcrRegs +[rax]
- ;; size=47 bbWeight=1 PerfScore 6.00
-G_M59494_IG12: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+ ;; size=43 bbWeight=1.98 PerfScore 10.39
+G_M59494_IG12: ; bbWeight=1.98, epilog, nogc, extend
+ add rsp, 56
pop rbx
pop rbp
pop rsi
@@ -147,7 +156,7 @@ G_M59494_IG12: ; bbWeight=1, epilog, nogc, extend
pop r14
pop r15
ret
- ;; size=17 bbWeight=1 PerfScore 5.25
+ ;; size=17 bbWeight=1.98 PerfScore 10.40
G_M59494_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx]
call CORINFO_HELP_RNGCHKFAIL
@@ -155,7 +164,7 @@ G_M59494_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 253, prolog size 25, PerfScore 76.67, instruction count 75, allocated bytes for code 253 (MethodHash=8bac1799) for method System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
+; Total bytes of code 270, prolog size 32, PerfScore 91.16, instruction count 79, allocated bytes for code 270 (MethodHash=8bac1799) for method System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
; ============================================================
Unwind Info:
@@ -168,7 +177,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+17 (+6.72%) : 16058.dasm - System.Enum+<>c1`1[ubyte]:b1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
@@ -8,20 +8,20 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Enum+<>c__1`1[ubyte]>
-; V01 arg1 [V01,T08] ( 3, 3 ) ref -> rsi class-hnd exact single-def <<unknown class>>
-; V02 arg2 [V02,T09] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String[]>
-; V03 arg3 [V03,T04] ( 5, 7 ) ref -> rbx class-hnd single-def <System.Object[]>
-; V04 arg4 [V04,T10] ( 1, 1 ) ubyte -> [rsp+0x90] single-def
-; V05 loc0 [V05,T06] ( 6, 6.54) ref -> r14 class-hnd exact single-def <ubyte[]>
-; V06 loc1 [V06,T01] ( 11, 17.08) int -> r15
+; V01 arg1 [V01,T08] ( 3, 3.98) ref -> rsi class-hnd exact single-def <<unknown class>>
+; V02 arg2 [V02,T09] ( 3, 3.98) ref -> rdi class-hnd single-def <System.String[]>
+; V03 arg3 [V03,T05] ( 5, 7 ) ref -> rbx class-hnd single-def <System.Object[]>
+; V04 arg4 [V04,T10] ( 1, 1.98) ubyte -> rbp single-def
+; V05 loc0 [V05,T06] ( 6, 7.52) ref -> r15 class-hnd exact single-def <ubyte[]>
+; V06 loc1 [V06,T01] ( 11, 17.08) int -> r13
; V07 OutArgs [V07 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T00] ( 8, 26 ) ref -> r12 "inline UNBOX clone1"
-; V09 tmp2 [V09,T02] ( 4, 16 ) int -> rax "Strict ordering of exceptions for Array store"
-; V10 tmp3 [V10,T07] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.EnumInfo`1[ubyte]>
-; V11 cse0 [V11,T05] ( 6, 7.50) int -> rbp "CSE - aggressive"
-; V12 cse1 [V12,T03] ( 3, 11.88) long -> r13 "CSE - aggressive"
+; V08 tmp1 [V08,T00] ( 8, 26 ) ref -> [rsp+0x30] "inline UNBOX clone1"
+; V09 tmp2 [V09,T02] ( 4, 16 ) int -> r8 "Strict ordering of exceptions for Array store"
+; V10 tmp3 [V10,T03] ( 3, 11.88) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.EnumInfo`1[ubyte]>
+; V11 cse0 [V11,T07] ( 6, 7.50) int -> r14 "CSE - aggressive"
+; V12 cse1 [V12,T04] ( 3, 11.88) long -> r12 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M59494_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -32,69 +32,78 @@ G_M59494_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 56
mov rsi, rdx
; gcrRegs +[rsi]
mov rdi, r8
; gcrRegs +[rdi]
mov rbx, r9
; gcrRegs +[rbx]
- ;; size=25 bbWeight=1 PerfScore 9.00
+ mov ebp, dword ptr [rsp+0xA0]
+ ;; size=32 bbWeight=1 PerfScore 10.00
G_M59494_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- mov ebp, dword ptr [rbx+0x08]
- mov edx, ebp
+ mov r14d, dword ptr [rbx+0x08]
+ mov edx, r14d
lea rcx, [(reloc)] ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- xor r15d, r15d
- test ebp, ebp
+ mov r15, rax
+ ; gcrRegs +[r15]
+ xor r13d, r13d
+ test r14d, r14d
jle G_M59494_IG11
- ;; size=31 bbWeight=1 PerfScore 5.50
-G_M59494_IG03: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=1 PerfScore 5.50
+G_M59494_IG03: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp dword ptr [r14+0x08], ebp
+ cmp dword ptr [r15+0x08], r14d
jl SHORT G_M59494_IG08
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M59494_IG04: ; bbWeight=3.96, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- mov r13d, r15d
- mov r12, gword ptr [rbx+8*r13+0x10]
- ; gcrRegs +[r12]
+G_M59494_IG04: ; bbWeight=3.96, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ mov r12d, r13d
+ mov rax, gword ptr [rbx+8*r12+0x10]
+ ; gcrRegs +[rax]
lea rdx, [(reloc)] ; <unknown class>
- cmp qword ptr [r12], rdx
+ cmp qword ptr [rax], rdx
je SHORT G_M59494_IG06
- ;; size=21 bbWeight=3.96 PerfScore 26.73
-G_M59494_IG05: ; bbWeight=0.99, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref
- mov rdx, r12
+ ;; size=20 bbWeight=3.96 PerfScore 26.73
+G_M59494_IG05: ; bbWeight=0.99, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ mov gword ptr [rsp+0x30], rax
+ ; GC ptr vars +{V08}
+ mov rdx, rax
; gcrRegs +[rdx]
lea rcx, [(reloc)] ; <unknown class>
call CORINFO_HELP_UNBOX
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rax rdx]
; gcr arg pop 0
- ;; size=15 bbWeight=0.99 PerfScore 1.73
-G_M59494_IG06: ; bbWeight=3.96, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [r12+0x08]
- mov byte ptr [r14+r13+0x10], al
- inc r15d
- cmp ebp, r15d
+ mov rax, gword ptr [rsp+0x30]
+ ; gcrRegs +[rax]
+ ;; size=25 bbWeight=0.99 PerfScore 3.71
+G_M59494_IG06: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V08}
+ movzx r8, byte ptr [rax+0x08]
+ mov byte ptr [r15+r12+0x10], r8b
+ inc r13d
+ cmp r14d, r13d
jg SHORT G_M59494_IG04
- ;; size=19 bbWeight=3.96 PerfScore 17.82
-G_M59494_IG07: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx r12]
+ ;; size=18 bbWeight=3.96 PerfScore 17.82
+G_M59494_IG07: ; bbWeight=1.98, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rbx]
jmp SHORT G_M59494_IG11
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M59494_IG08: ; bbWeight=0.04, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M59494_IG08: ; bbWeight=0.04, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
- mov edx, r15d
- mov r12, gword ptr [rbx+8*rdx+0x10]
+ mov eax, r13d
+ mov rax, gword ptr [rbx+8*rax+0x10]
+ ; gcrRegs +[rax]
+ mov r12, rax
; gcrRegs +[r12]
lea rdx, [(reloc)]
cmp qword ptr [r12], rdx
je SHORT G_M59494_IG10
- ;; size=21 bbWeight=0.04 PerfScore 0.27
-G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.04 PerfScore 0.28
+G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=90C8 {rbx rsi rdi r12 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rdx, r12
; gcrRegs +[rdx]
lea rcx, [(reloc)]
@@ -102,17 +111,17 @@ G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byr
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=15 bbWeight=0.01 PerfScore 0.02
-G_M59494_IG10: ; bbWeight=0.04, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [r12+0x08]
- cmp r15d, dword ptr [r14+0x08]
+G_M59494_IG10: ; bbWeight=0.04, gcrefRegs=90C8 {rbx rsi rdi r12 r15}, byrefRegs=0000 {}, byref, isz
+ movzx r8, byte ptr [r12+0x08]
+ cmp r13d, dword ptr [r15+0x08]
jae SHORT G_M59494_IG13
- mov ecx, r15d
- mov byte ptr [r14+rcx+0x10], al
- inc r15d
- cmp ebp, r15d
+ mov ecx, r13d
+ mov byte ptr [r15+rcx+0x10], r8b
+ inc r13d
+ cmp r14d, r13d
jg SHORT G_M59494_IG08
;; size=28 bbWeight=0.04 PerfScore 0.35
-G_M59494_IG11: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M59494_IG11: ; bbWeight=1.98, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r12]
lea rcx, [(reloc)] ; System.Reflection.EnumInfo`1[ubyte]
call CORINFO_HELP_NEWSFAST
@@ -120,24 +129,24 @@ G_M59494_IG11: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
- movzx rcx, byte ptr [rsp+0x90]
+ movzx rcx, bpl
mov dword ptr [rsp+0x20], ecx
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
- mov r8, r14
+ mov r8, r15
; gcrRegs +[r8]
mov r9, rdi
; gcrRegs +[r9]
call System.Reflection.EnumInfo`1[ubyte]:.ctor(System.Type,ubyte[],System.String[],ubyte):this
- ; gcrRegs -[rax rcx rdx rsi rdi r8-r9 r14]
+ ; gcrRegs -[rax rcx rdx rsi rdi r8-r9 r15]
; gcr arg pop 0
mov rax, rbx
; gcrRegs +[rax]
- ;; size=47 bbWeight=1 PerfScore 6.00
-G_M59494_IG12: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+ ;; size=43 bbWeight=1.98 PerfScore 10.39
+G_M59494_IG12: ; bbWeight=1.98, epilog, nogc, extend
+ add rsp, 56
pop rbx
pop rbp
pop rsi
@@ -147,7 +156,7 @@ G_M59494_IG12: ; bbWeight=1, epilog, nogc, extend
pop r14
pop r15
ret
- ;; size=17 bbWeight=1 PerfScore 5.25
+ ;; size=17 bbWeight=1.98 PerfScore 10.40
G_M59494_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx]
call CORINFO_HELP_RNGCHKFAIL
@@ -155,7 +164,7 @@ G_M59494_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 253, prolog size 25, PerfScore 76.67, instruction count 75, allocated bytes for code 253 (MethodHash=8bac1799) for method System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
+; Total bytes of code 270, prolog size 32, PerfScore 91.16, instruction count 79, allocated bytes for code 270 (MethodHash=8bac1799) for method System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
; ============================================================
Unwind Info:
@@ -168,7 +177,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+17 (+6.72%) : 4155.dasm - System.Enum+<>c1`1[ubyte]:b1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
@@ -9,20 +9,20 @@
; Final local variable assignments
;
;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd exact single-def <System.Enum+<>c__1`1[ubyte]>
-; V01 arg1 [V01,T08] ( 3, 3 ) ref -> rsi class-hnd single-def <System.Type>
-; V02 arg2 [V02,T09] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String[]>
-; V03 arg3 [V03,T04] ( 5, 7 ) ref -> rbx class-hnd single-def <System.Object[]>
-; V04 arg4 [V04,T10] ( 1, 1 ) ubyte -> [rsp+0x90] single-def
-; V05 loc0 [V05,T06] ( 6, 6.54) ref -> r14 class-hnd exact single-def <ubyte[]>
-; V06 loc1 [V06,T01] ( 11, 17.08) int -> r15
+; V01 arg1 [V01,T08] ( 3, 3.98) ref -> rsi class-hnd single-def <System.Type>
+; V02 arg2 [V02,T09] ( 3, 3.98) ref -> rdi class-hnd single-def <System.String[]>
+; V03 arg3 [V03,T05] ( 5, 7 ) ref -> rbx class-hnd single-def <System.Object[]>
+; V04 arg4 [V04,T10] ( 1, 1.98) ubyte -> rbp single-def
+; V05 loc0 [V05,T06] ( 6, 7.52) ref -> r15 class-hnd exact single-def <ubyte[]>
+; V06 loc1 [V06,T01] ( 11, 17.08) int -> r13
; V07 OutArgs [V07 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 tmp1 [V08,T00] ( 8, 26 ) ref -> r12 "inline UNBOX clone1"
-; V09 tmp2 [V09,T02] ( 4, 16 ) int -> rax "Strict ordering of exceptions for Array store"
-; V10 tmp3 [V10,T07] ( 3, 6 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.EnumInfo`1[ubyte]>
-; V11 cse0 [V11,T05] ( 6, 7.50) int -> rbp "CSE - aggressive"
-; V12 cse1 [V12,T03] ( 3, 11.88) long -> r13 "CSE - aggressive"
+; V08 tmp1 [V08,T00] ( 8, 26 ) ref -> [rsp+0x30] "inline UNBOX clone1"
+; V09 tmp2 [V09,T02] ( 4, 16 ) int -> r8 "Strict ordering of exceptions for Array store"
+; V10 tmp3 [V10,T03] ( 3, 11.88) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Reflection.EnumInfo`1[ubyte]>
+; V11 cse0 [V11,T07] ( 6, 7.50) int -> r14 "CSE - aggressive"
+; V12 cse1 [V12,T04] ( 3, 11.88) long -> r12 "CSE - aggressive"
;
-; Lcl frame size = 40
+; Lcl frame size = 56
G_M59494_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
push r15
@@ -33,69 +33,78 @@ G_M59494_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref,
push rsi
push rbp
push rbx
- sub rsp, 40
+ sub rsp, 56
mov rsi, rdx
; gcrRegs +[rsi]
mov rdi, r8
; gcrRegs +[rdi]
mov rbx, r9
; gcrRegs +[rbx]
- ;; size=25 bbWeight=1 PerfScore 9.00
+ mov ebp, dword ptr [rsp+0xA0]
+ ;; size=32 bbWeight=1 PerfScore 10.00
G_M59494_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
- mov ebp, dword ptr [rbx+0x08]
- mov edx, ebp
+ mov r14d, dword ptr [rbx+0x08]
+ mov edx, r14d
lea rcx, [(reloc)] ; ubyte[]
call CORINFO_HELP_NEWARR_1_VC
; gcrRegs +[rax]
; gcr arg pop 0
- mov r14, rax
- ; gcrRegs +[r14]
- xor r15d, r15d
- test ebp, ebp
+ mov r15, rax
+ ; gcrRegs +[r15]
+ xor r13d, r13d
+ test r14d, r14d
jle G_M59494_IG11
- ;; size=31 bbWeight=1 PerfScore 5.50
-G_M59494_IG03: ; bbWeight=0.50, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=1 PerfScore 5.50
+G_M59494_IG03: ; bbWeight=0.50, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax]
- cmp dword ptr [r14+0x08], ebp
+ cmp dword ptr [r15+0x08], r14d
jl SHORT G_M59494_IG08
;; size=6 bbWeight=0.50 PerfScore 2.00
-G_M59494_IG04: ; bbWeight=3.96, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- mov r13d, r15d
- mov r12, gword ptr [rbx+8*r13+0x10]
- ; gcrRegs +[r12]
+G_M59494_IG04: ; bbWeight=3.96, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ mov r12d, r13d
+ mov rax, gword ptr [rbx+8*r12+0x10]
+ ; gcrRegs +[rax]
lea rdx, [(reloc)] ; <unknown class>
- cmp qword ptr [r12], rdx
+ cmp qword ptr [rax], rdx
je SHORT G_M59494_IG06
- ;; size=21 bbWeight=3.96 PerfScore 26.73
-G_M59494_IG05: ; bbWeight=0.99, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref
- mov rdx, r12
+ ;; size=20 bbWeight=3.96 PerfScore 26.73
+G_M59494_IG05: ; bbWeight=0.99, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, byref
+ mov gword ptr [rsp+0x30], rax
+ ; GC ptr vars +{V08}
+ mov rdx, rax
; gcrRegs +[rdx]
lea rcx, [(reloc)] ; <unknown class>
call CORINFO_HELP_UNBOX
- ; gcrRegs -[rdx]
+ ; gcrRegs -[rax rdx]
; gcr arg pop 0
- ;; size=15 bbWeight=0.99 PerfScore 1.73
-G_M59494_IG06: ; bbWeight=3.96, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [r12+0x08]
- mov byte ptr [r14+r13+0x10], al
- inc r15d
- cmp ebp, r15d
+ mov rax, gword ptr [rsp+0x30]
+ ; gcrRegs +[rax]
+ ;; size=25 bbWeight=0.99 PerfScore 3.71
+G_M59494_IG06: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ; GC ptr vars -{V08}
+ movzx r8, byte ptr [rax+0x08]
+ mov byte ptr [r15+r12+0x10], r8b
+ inc r13d
+ cmp r14d, r13d
jg SHORT G_M59494_IG04
- ;; size=19 bbWeight=3.96 PerfScore 17.82
-G_M59494_IG07: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[rbx r12]
+ ;; size=18 bbWeight=3.96 PerfScore 17.82
+G_M59494_IG07: ; bbWeight=1.98, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[rax rbx]
jmp SHORT G_M59494_IG11
- ;; size=2 bbWeight=1 PerfScore 2.00
-G_M59494_IG08: ; bbWeight=0.04, gcrefRegs=40C8 {rbx rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=2 bbWeight=1.98 PerfScore 3.96
+G_M59494_IG08: ; bbWeight=0.04, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx]
- mov edx, r15d
- mov r12, gword ptr [rbx+8*rdx+0x10]
+ mov eax, r13d
+ mov rax, gword ptr [rbx+8*rax+0x10]
+ ; gcrRegs +[rax]
+ mov r12, rax
; gcrRegs +[r12]
lea rdx, [(reloc)]
cmp qword ptr [r12], rdx
je SHORT G_M59494_IG10
- ;; size=21 bbWeight=0.04 PerfScore 0.27
-G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref
+ ;; size=24 bbWeight=0.04 PerfScore 0.28
+G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=90C8 {rbx rsi rdi r12 r15}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[rax]
mov rdx, r12
; gcrRegs +[rdx]
lea rcx, [(reloc)]
@@ -103,17 +112,17 @@ G_M59494_IG09: ; bbWeight=0.01, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byr
; gcrRegs -[rdx]
; gcr arg pop 0
;; size=15 bbWeight=0.01 PerfScore 0.02
-G_M59494_IG10: ; bbWeight=0.04, gcrefRegs=50C8 {rbx rsi rdi r12 r14}, byrefRegs=0000 {}, byref, isz
- movzx rax, byte ptr [r12+0x08]
- cmp r15d, dword ptr [r14+0x08]
+G_M59494_IG10: ; bbWeight=0.04, gcrefRegs=90C8 {rbx rsi rdi r12 r15}, byrefRegs=0000 {}, byref, isz
+ movzx r8, byte ptr [r12+0x08]
+ cmp r13d, dword ptr [r15+0x08]
jae SHORT G_M59494_IG13
- mov ecx, r15d
- mov byte ptr [r14+rcx+0x10], al
- inc r15d
- cmp ebp, r15d
+ mov ecx, r13d
+ mov byte ptr [r15+rcx+0x10], r8b
+ inc r13d
+ cmp r14d, r13d
jg SHORT G_M59494_IG08
;; size=28 bbWeight=0.04 PerfScore 0.35
-G_M59494_IG11: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M59494_IG11: ; bbWeight=1.98, gcrefRegs=80C0 {rsi rdi r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r12]
lea rcx, [(reloc)] ; System.Reflection.EnumInfo`1[ubyte]
call CORINFO_HELP_NEWSFAST
@@ -121,24 +130,24 @@ G_M59494_IG11: ; bbWeight=1, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000
; gcr arg pop 0
mov rbx, rax
; gcrRegs +[rbx]
- movzx rcx, byte ptr [rsp+0x90]
+ movzx rcx, bpl
mov dword ptr [rsp+0x20], ecx
mov rcx, rbx
; gcrRegs +[rcx]
mov rdx, rsi
; gcrRegs +[rdx]
- mov r8, r14
+ mov r8, r15
; gcrRegs +[r8]
mov r9, rdi
; gcrRegs +[r9]
call System.Reflection.EnumInfo`1[ubyte]:.ctor(System.Type,ubyte[],System.String[],ubyte):this
- ; gcrRegs -[rax rcx rdx rsi rdi r8-r9 r14]
+ ; gcrRegs -[rax rcx rdx rsi rdi r8-r9 r15]
; gcr arg pop 0
mov rax, rbx
; gcrRegs +[rax]
- ;; size=47 bbWeight=1 PerfScore 6.00
-G_M59494_IG12: ; bbWeight=1, epilog, nogc, extend
- add rsp, 40
+ ;; size=43 bbWeight=1.98 PerfScore 10.39
+G_M59494_IG12: ; bbWeight=1.98, epilog, nogc, extend
+ add rsp, 56
pop rbx
pop rbp
pop rsi
@@ -148,7 +157,7 @@ G_M59494_IG12: ; bbWeight=1, epilog, nogc, extend
pop r14
pop r15
ret
- ;; size=17 bbWeight=1 PerfScore 5.25
+ ;; size=17 bbWeight=1.98 PerfScore 10.40
G_M59494_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx]
call CORINFO_HELP_RNGCHKFAIL
@@ -156,7 +165,7 @@ G_M59494_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {
int3
;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 253, prolog size 25, PerfScore 76.67, instruction count 75, allocated bytes for code 253 (MethodHash=8bac1799) for method System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
+; Total bytes of code 270, prolog size 32, PerfScore 91.16, instruction count 79, allocated bytes for code 270 (MethodHash=8bac1799) for method System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
; ============================================================
Unwind Info:
@@ -169,7 +178,7 @@ Unwind Info:
FrameRegister : none (0)
FrameOffset : N/A (no FrameRegister) (Value=0)
UnwindCodes :
- CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x10 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 6 * 8 + 8 = 56 = 0x38
CodeOffset: 0x0C UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x0B UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
Details
Improvements/regressions per collection
Collection |
Contexts with diffs |
Improvements |
Regressions |
Same size |
Improvements (bytes) |
Regressions (bytes) |
aspnet.run.windows.x64.checked.mch |
1,610 |
870 |
587 |
153 |
-9,488 |
+6,418 |
benchmarks.run.windows.x64.checked.mch |
114 |
13 |
31 |
70 |
-161 |
+498 |
benchmarks.run_pgo.windows.x64.checked.mch |
2,835 |
1,597 |
889 |
349 |
-18,751 |
+6,275 |
benchmarks.run_tiered.windows.x64.checked.mch |
42 |
6 |
14 |
22 |
-51 |
+458 |
coreclr_tests.run.windows.x64.checked.mch |
3,491 |
165 |
121 |
3,205 |
-1,543 |
+979 |
libraries.crossgen2.windows.x64.checked.mch |
279 |
30 |
62 |
187 |
-408 |
+911 |
libraries.pmi.windows.x64.checked.mch |
408 |
62 |
115 |
231 |
-886 |
+2,175 |
libraries_tests.run.windows.x64.Release.mch |
468 |
167 |
140 |
161 |
-1,553 |
+894 |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
613 |
116 |
216 |
281 |
-1,976 |
+3,718 |
realworld.run.windows.x64.checked.mch |
124 |
18 |
29 |
77 |
-385 |
+1,019 |
smoke_tests.nativeaot.windows.x64.checked.mch |
55 |
8 |
14 |
33 |
-49 |
+215 |
|
10,039 |
3,052 |
2,218 |
4,769 |
-35,251 |
+23,560 |
Context information
Collection |
Diffed contexts |
MinOpts |
FullOpts |
Missed, base |
Missed, diff |
aspnet.run.windows.x64.checked.mch |
129,157 |
61,702 |
67,455 |
133 (0.10%) |
133 (0.10%) |
benchmarks.run.windows.x64.checked.mch |
36,886 |
6 |
36,880 |
55 (0.15%) |
55 (0.15%) |
benchmarks.run_pgo.windows.x64.checked.mch |
107,598 |
68,114 |
39,484 |
379 (0.35%) |
379 (0.35%) |
benchmarks.run_tiered.windows.x64.checked.mch |
82,880 |
62,052 |
20,828 |
63 (0.08%) |
63 (0.08%) |
coreclr_tests.run.windows.x64.checked.mch |
492,183 |
273,478 |
218,705 |
118 (0.02%) |
118 (0.02%) |
libraries.crossgen2.windows.x64.checked.mch |
273,759 |
15 |
273,744 |
352 (0.13%) |
352 (0.13%) |
libraries.pmi.windows.x64.checked.mch |
343,885 |
6 |
343,879 |
92 (0.03%) |
92 (0.03%) |
libraries_tests.run.windows.x64.Release.mch |
120,206 |
100,260 |
19,946 |
40 (0.03%) |
40 (0.03%) |
librariestestsnotieredcompilation.run.windows.x64.Release.mch |
341,591 |
21,947 |
319,644 |
2,321 (0.67%) |
2,321 (0.67%) |
realworld.run.windows.x64.checked.mch |
38,742 |
3 |
38,739 |
14 (0.04%) |
14 (0.04%) |
smoke_tests.nativeaot.windows.x64.checked.mch |
32,344 |
11 |
32,333 |
90 (0.28%) |
90 (0.28%) |
|
1,999,231 |
587,594 |
1,411,637 |
3,657 (0.18%) |
3,657 (0.18%) |
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: 46755446 (overridden on cmd)
Total bytes of diff: 46752376 (overridden on cmd)
Total bytes of delta: -3070 (-0.01 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
366 : 11014.dasm (9.39 % of base)
322 : 5958.dasm (8.26 % of base)
76 : 40857.dasm (4.75 % of base)
51 : 60210.dasm (5.45 % of base)
51 : 65929.dasm (5.45 % of base)
51 : 46746.dasm (5.45 % of base)
49 : 60209.dasm (4.31 % of base)
49 : 66073.dasm (4.31 % of base)
49 : 46745.dasm (4.31 % of base)
48 : 41317.dasm (2.01 % of base)
48 : 58908.dasm (2.01 % of base)
42 : 28346.dasm (1.81 % of base)
42 : 29564.dasm (1.81 % of base)
42 : 48372.dasm (1.81 % of base)
42 : 51330.dasm (1.81 % of base)
42 : 9766.dasm (1.81 % of base)
42 : 1131.dasm (1.81 % of base)
42 : 96880.dasm (1.81 % of base)
42 : 8975.dasm (1.81 % of base)
42 : 81452.dasm (1.81 % of base)
Top file improvements (bytes):
-429 : 70616.dasm (-6.71 % of base)
-333 : 56946.dasm (-5.38 % of base)
-297 : 80893.dasm (-4.71 % of base)
-266 : 54277.dasm (-6.69 % of base)
-260 : 51091.dasm (-6.45 % of base)
-152 : 30356.dasm (-4.40 % of base)
-152 : 56325.dasm (-4.40 % of base)
-138 : 57650.dasm (-4.01 % of base)
-138 : 77259.dasm (-4.01 % of base)
-123 : 116378.dasm (-4.53 % of base)
-122 : 57537.dasm (-3.74 % of base)
-122 : 77252.dasm (-3.74 % of base)
-85 : 57644.dasm (-3.18 % of base)
-85 : 77253.dasm (-3.18 % of base)
-78 : 42076.dasm (-2.26 % of base)
-78 : 58919.dasm (-2.26 % of base)
-59 : 32952.dasm (-0.95 % of base)
-58 : 80044.dasm (-0.94 % of base)
-54 : 84206.dasm (-8.75 % of base)
-43 : 55301.dasm (-1.96 % of base)
87 total files with Code Size differences (45 improved, 42 regressed), 20 unchanged.
Top method regressions (bytes):
366 (9.39 % of base) : 11014.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
322 (8.26 % of base) : 5958.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier0-FullOpts)
76 (4.75 % of base) : 40857.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.ValueTuple`4[Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingInfo,System.__Canon,System.__Canon,System.__Canon],System.__Canon]:GrowTable(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.ValueTuple`4[Microsoft.EntityFrameworkCore.Storage.RelationalTypeMappingInfo,System.__Canon,System.__Canon,System.__Canon],System.__Canon],ubyte,ubyte):this (Tier1-OSR)
51 (5.45 % of base) : 60210.dasm - System.Globalization.CompareInfo:IcuIndexOfCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (Tier1)
51 (5.45 % of base) : 65929.dasm - System.Globalization.CompareInfo:IcuIndexOfCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (Tier1)
51 (5.45 % of base) : 46746.dasm - System.Globalization.CompareInfo:IcuIndexOfCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (Tier1)
49 (4.31 % of base) : 60209.dasm - System.Globalization.CompareInfo:IndexOfCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (Tier1)
49 (4.31 % of base) : 66073.dasm - System.Globalization.CompareInfo:IndexOfCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (Tier1)
49 (4.31 % of base) : 46745.dasm - System.Globalization.CompareInfo:IndexOfCore(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (Tier1)
48 (2.01 % of base) : 41317.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1-OSR)
48 (2.01 % of base) : 58908.dasm - System.Linq.Enumerable:TryGetSingle[System.__Canon](System.Collections.Generic.IEnumerable`1[System.__Canon],System.Func`2[System.__Canon,ubyte],byref):System.__Canon (Tier1-OSR)
42 (1.81 % of base) : 28346.dasm - System.Diagnostics.Tracing.EventProvider:EncodeObject(byref,byref,byref,byref):System.Object (Tier1)
42 (1.81 % of base) : 29564.dasm - System.Diagnostics.Tracing.EventProvider:EncodeObject(byref,byref,byref,byref):System.Object (Tier1)
42 (1.81 % of base) : 48372.dasm - System.Diagnostics.Tracing.EventProvider:EncodeObject(byref,byref,byref,byref):System.Object (Tier1)
42 (1.81 % of base) : 51330.dasm - System.Diagnostics.Tracing.EventProvider:EncodeObject(byref,byref,byref,byref):System.Object (Tier1)
42 (1.81 % of base) : 9766.dasm - System.Diagnostics.Tracing.EventProvider:EncodeObject(byref,byref,byref,byref):System.Object (Tier1)
42 (1.81 % of base) : 1131.dasm - System.Diagnostics.Tracing.EventProvider:EncodeObject(byref,byref,byref,byref):System.Object (Tier1)
42 (1.81 % of base) : 96880.dasm - System.Diagnostics.Tracing.EventProvider:EncodeObject(byref,byref,byref,byref):System.Object (Tier1)
42 (1.81 % of base) : 8975.dasm - System.Diagnostics.Tracing.EventProvider:EncodeObject(byref,byref,byref,byref):System.Object (Tier1)
42 (1.81 % of base) : 81452.dasm - System.Diagnostics.Tracing.EventProvider:EncodeObject(byref,byref,byref,byref):System.Object (Tier1)
Top method improvements (bytes):
-429 (-6.71 % of base) : 70616.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-333 (-5.38 % of base) : 56946.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-297 (-4.71 % of base) : 80893.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-266 (-6.69 % of base) : 54277.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-260 (-6.45 % of base) : 51091.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (FullOpts)
-152 (-4.40 % of base) : 30356.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1-OSR)
-152 (-4.40 % of base) : 56325.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1-OSR)
-138 (-4.01 % of base) : 57650.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1-OSR)
-138 (-4.01 % of base) : 77259.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1-OSR)
-123 (-4.53 % of base) : 116378.dasm - System.Uri:CheckAuthorityHelper(ulong,int,int,byref,byref,System.UriParser,byref):int:this (Tier1-OSR)
-122 (-3.74 % of base) : 57537.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
-122 (-3.74 % of base) : 77252.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
-85 (-3.18 % of base) : 57644.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1-OSR)
-85 (-3.18 % of base) : 77253.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1-OSR)
-78 (-2.26 % of base) : 42076.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1-OSR)
-78 (-2.26 % of base) : 58919.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1-OSR)
-59 (-0.95 % of base) : 32952.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-58 (-0.94 % of base) : 80044.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-54 (-8.75 % of base) : 84206.dasm - System.Net.IPAddressParser:<FormatIPv6Address>g__AppendSections|6_0[ushort](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref) (Tier1)
-43 (-1.96 % of base) : 55301.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
Top method regressions (percentages):
7 (10.14 % of base) : 44811.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 57784.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 80564.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 97058.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 118107.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 128114.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 22063.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 23744.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 84798.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 116514.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 117448.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 15796.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 18716.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 24215.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 24664.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 60615.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 64928.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 68220.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 69240.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
7 (10.14 % of base) : 78314.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
Top method improvements (percentages):
-28 (-11.97 % of base) : 40657.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:CopyToPairs(System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon][],int):this (Tier1-OSR)
-2 (-10.00 % of base) : 127921.dasm - System.Text.StringBuilder:FindChunkForIndex(int):System.Text.StringBuilder:this (Tier1)
-20 (-9.05 % of base) : 36041.dasm - System.Convert:FromBase64_ComputeResultLength(ulong,int):int (Tier1-OSR)
-54 (-8.75 % of base) : 84206.dasm - System.Net.IPAddressParser:<FormatIPv6Address>g__AppendSections|6_0[ushort](System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref) (Tier1)
-2 (-8.00 % of base) : 49187.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int:this (Tier1)
-2 (-8.00 % of base) : 51841.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int:this (Tier1)
-2 (-8.00 % of base) : 59683.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int:this (Tier1)
-2 (-8.00 % of base) : 65861.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int:this (Tier1)
-2 (-8.00 % of base) : 45831.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int:this (Tier1)
-2 (-8.00 % of base) : 82051.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int:this (Tier1)
-37 (-7.46 % of base) : 117623.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-19 (-7.45 % of base) : 35234.dasm - System.Linq.Enumerable+WhereSelectListIterator`2[System.__Canon,System.__Canon]:ToList():System.Collections.Generic.List`1[System.__Canon]:this (Tier1-OSR)
-31 (-7.40 % of base) : 84558.dasm - System.Reflection.TypeNameParser:Parse():System.Type:this (Tier1)
-429 (-6.71 % of base) : 70616.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-266 (-6.69 % of base) : 54277.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
-15 (-6.58 % of base) : 21353.dasm - System.Uri:CheckForUnicodeOrEscapedUnreserved(System.String):ubyte (Tier1-OSR)
-19 (-6.53 % of base) : 30164.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:FindBraceIndex(System.String,ushort,int,int):int (Tier1-OSR)
-10 (-6.49 % of base) : 15004.dasm - System.IO.Path:GetDirectoryNameOffset(System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
-260 (-6.45 % of base) : 51091.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (FullOpts)
-42 (-6.29 % of base) : 20420.dasm - System.Uri:CreateHostString():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: 11726698 (overridden on cmd)
Total bytes of diff: 11727035 (overridden on cmd)
Total bytes of delta: 337 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
128 : 9234.dasm (2.81 % of base)
128 : 33496.dasm (2.90 % of base)
46 : 26924.dasm (2.02 % of base)
23 : 25524.dasm (0.75 % of base)
17 : 27501.dasm (0.61 % of base)
15 : 27811.dasm (0.25 % of base)
12 : 18768.dasm (2.05 % of base)
12 : 3661.dasm (2.05 % of base)
11 : 23905.dasm (2.93 % of base)
11 : 31537.dasm (2.93 % of base)
10 : 12639.dasm (3.21 % of base)
10 : 2990.dasm (3.21 % of base)
9 : 10410.dasm (2.47 % of base)
9 : 31316.dasm (2.47 % of base)
9 : 5177.dasm (1.80 % of base)
6 : 26881.dasm (0.28 % of base)
6 : 33594.dasm (0.34 % of base)
5 : 29683.dasm (0.15 % of base)
5 : 32063.dasm (0.15 % of base)
5 : 4499.dasm (0.13 % of base)
Top file improvements (bytes):
-46 : 13769.dasm (-0.45 % of base)
-46 : 4532.dasm (-0.45 % of base)
-16 : 7478.dasm (-4.47 % of base)
-14 : 12335.dasm (-0.95 % of base)
-14 : 581.dasm (-0.95 % of base)
-6 : 13822.dasm (-0.80 % of base)
-6 : 4135.dasm (-0.80 % of base)
-4 : 23493.dasm (-0.26 % of base)
-4 : 7692.dasm (-0.24 % of base)
-2 : 9757.dasm (-0.46 % of base)
-1 : 15731.dasm (-0.06 % of base)
-1 : 15900.dasm (-0.05 % of base)
-1 : 10113.dasm (-0.05 % of base)
36 total files with Code Size differences (13 improved, 23 regressed), 24 unchanged.
Top method regressions (bytes):
128 (2.81 % of base) : 9234.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.90 % of base) : 33496.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
46 (2.02 % of base) : 26924.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
23 (0.75 % of base) : 25524.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
17 (0.61 % of base) : 27501.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
15 (0.25 % of base) : 27811.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
12 (2.05 % of base) : 18768.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
12 (2.05 % of base) : 3661.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
11 (2.93 % of base) : 23905.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
11 (2.93 % of base) : 31537.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
10 (3.21 % of base) : 12639.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.21 % of base) : 2990.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
9 (1.80 % of base) : 5177.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
9 (2.47 % of base) : 10410.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
9 (2.47 % of base) : 31316.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
6 (0.34 % of base) : 33594.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
6 (0.28 % of base) : 26881.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:BuildReferencedAssembliesAndModulesMaps(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]],int,int,System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.__Canon],ubyte,byref,byref,byref,byref) (FullOpts)
5 (0.15 % of base) : 29683.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
5 (0.15 % of base) : 32063.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
5 (0.13 % of base) : 4499.dasm - Utf8Json.Internal.AutomataDictionary+AutomataNode:EmitSearchNextCore(System.Reflection.Emit.ILGenerator,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Reflection.Emit.LocalBuilder,System.Action`1[System.Collections.Generic.KeyValuePair`2[System.String,int]],System.Action,Utf8Json.Internal.AutomataDictionary+AutomataNode[],int) (FullOpts)
Top method improvements (bytes):
-46 (-0.45 % of base) : 13769.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-46 (-0.45 % of base) : 4532.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-16 (-4.47 % of base) : 7478.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-14 (-0.95 % of base) : 12335.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-14 (-0.95 % of base) : 581.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-6 (-0.80 % of base) : 13822.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-6 (-0.80 % of base) : 4135.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-4 (-0.24 % of base) : 7692.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):this (FullOpts)
-4 (-0.26 % of base) : 23493.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-2 (-0.46 % of base) : 9757.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
-1 (-0.06 % of base) : 15731.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (FullOpts)
-1 (-0.05 % of base) : 15900.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-1 (-0.05 % of base) : 10113.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
Top method regressions (percentages):
10 (3.21 % of base) : 12639.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.21 % of base) : 2990.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
11 (2.93 % of base) : 23905.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
11 (2.93 % of base) : 31537.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
128 (2.90 % of base) : 33496.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.81 % of base) : 9234.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
9 (2.47 % of base) : 10410.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
9 (2.47 % of base) : 31316.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
12 (2.05 % of base) : 18768.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
12 (2.05 % of base) : 3661.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
46 (2.02 % of base) : 26924.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
9 (1.80 % of base) : 5177.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
23 (0.75 % of base) : 25524.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
17 (0.61 % of base) : 27501.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
3 (0.36 % of base) : 27403.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (FullOpts)
6 (0.34 % of base) : 33594.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (FullOpts)
6 (0.28 % of base) : 26881.dasm - Microsoft.CodeAnalysis.CommonReferenceManager`2[System.__Canon,System.__Canon]:BuildReferencedAssembliesAndModulesMaps(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[System.__Canon,System.__Canon][],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.MetadataReference],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CommonReferenceManager`2+ResolvedReference[System.__Canon,System.__Canon]],int,int,System.Collections.Generic.IReadOnlyDictionary`2[System.__Canon,System.__Canon],ubyte,byref,byref,byref,byref) (FullOpts)
2 (0.27 % of base) : 26446.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)
15 (0.25 % of base) : 27811.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
2 (0.24 % of base) : 10052.dasm - System.Xml.Serialization.CodeIdentifier:GetCSharpName(System.Type,System.Type[],int,System.Text.StringBuilder):int (FullOpts)
Top method improvements (percentages):
-16 (-4.47 % of base) : 7478.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-14 (-0.95 % of base) : 12335.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-14 (-0.95 % of base) : 581.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-6 (-0.80 % of base) : 13822.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-6 (-0.80 % of base) : 4135.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-2 (-0.46 % of base) : 9757.dasm - Microsoft.Extensions.Logging.LogValuesFormatter:Format(System.Object[]):System.String:this (FullOpts)
-46 (-0.45 % of base) : 13769.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-46 (-0.45 % of base) : 4532.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-4 (-0.26 % of base) : 23493.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-4 (-0.24 % of base) : 7692.dasm - ProtoBuf.Internal.Serializers.TypeSerializer`1[System.__Canon]:Init(int[],ProtoBuf.Internal.Serializers.IRuntimeProtoSerializerNode[],System.Reflection.MethodInfo[],ubyte,ubyte,ubyte,ProtoBuf.Meta.CallbackSet,System.Type,System.Reflection.MethodInfo,int):this (FullOpts)
-1 (-0.06 % of base) : 15731.dasm - System.Reflection.Emit.RuntimeModuleBuilder:GetMethodMetadataToken(System.Reflection.ConstructorInfo):int:this (FullOpts)
-1 (-0.05 % of base) : 15900.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-1 (-0.05 % of base) : 10113.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
benchmarks.run_pgo.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 34354002 (overridden on cmd)
Total bytes of diff: 34341526 (overridden on cmd)
Total bytes of delta: -12476 (-0.04 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
106 : 32005.dasm (2.25 % of base)
106 : 89036.dasm (2.25 % of base)
106 : 89159.dasm (2.30 % of base)
84 : 91287.dasm (1.99 % of base)
72 : 90614.dasm (4.35 % of base)
61 : 56108.dasm (1.40 % of base)
46 : 93086.dasm (2.76 % of base)
36 : 57991.dasm (5.52 % of base)
36 : 64016.dasm (5.52 % of base)
36 : 98237.dasm (5.52 % of base)
36 : 102367.dasm (5.52 % of base)
36 : 90621.dasm (5.52 % of base)
36 : 94313.dasm (5.52 % of base)
36 : 96293.dasm (5.52 % of base)
36 : 99427.dasm (5.52 % of base)
36 : 28783.dasm (5.52 % of base)
36 : 45402.dasm (5.52 % of base)
36 : 91249.dasm (5.52 % of base)
36 : 92930.dasm (5.52 % of base)
36 : 98291.dasm (5.52 % of base)
Top file improvements (bytes):
-69 : 74696.dasm (-2.44 % of base)
-56 : 100567.dasm (-1.97 % of base)
-56 : 105575.dasm (-1.98 % of base)
-56 : 64959.dasm (-1.97 % of base)
-56 : 91847.dasm (-1.97 % of base)
-56 : 93128.dasm (-1.97 % of base)
-56 : 91935.dasm (-1.97 % of base)
-56 : 102782.dasm (-1.97 % of base)
-56 : 107738.dasm (-1.91 % of base)
-56 : 92746.dasm (-1.97 % of base)
-56 : 98478.dasm (-1.98 % of base)
-56 : 101774.dasm (-1.98 % of base)
-56 : 17722.dasm (-1.98 % of base)
-56 : 45087.dasm (-1.98 % of base)
-56 : 67415.dasm (-1.98 % of base)
-56 : 70388.dasm (-1.98 % of base)
-56 : 78169.dasm (-1.91 % of base)
-56 : 87927.dasm (-1.97 % of base)
-53 : 74552.dasm (-1.25 % of base)
-50 : 86251.dasm (-1.44 % of base)
68 total files with Code Size differences (41 improved, 27 regressed), 20 unchanged.
Top method regressions (bytes):
106 (2.25 % of base) : 32005.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
106 (2.25 % of base) : 89036.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
106 (2.30 % of base) : 89159.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
84 (1.99 % of base) : 91287.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
72 (4.35 % of base) : 90614.dasm - System.IO.Tests.Perf_RandomAccess:Write(long,int,int):this (Tier1-OSR)
61 (1.40 % of base) : 56108.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
46 (2.76 % of base) : 93086.dasm - System.IO.Tests.Perf_RandomAccess:Write(long,int,int):this (Tier1-OSR)
36 (5.52 % of base) : 57991.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 64016.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 98237.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 102367.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 90621.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 94313.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 96293.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 99427.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 28783.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 45402.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 91249.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 92930.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 98291.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
Top method improvements (bytes):
-69 (-2.44 % of base) : 74696.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.97 % of base) : 100567.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.98 % of base) : 105575.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.97 % of base) : 64959.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.97 % of base) : 91847.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.97 % of base) : 93128.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.97 % of base) : 91935.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.97 % of base) : 102782.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.91 % of base) : 107738.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.97 % of base) : 92746.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.98 % of base) : 98478.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.98 % of base) : 101774.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.98 % of base) : 17722.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.98 % of base) : 45087.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.98 % of base) : 67415.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.98 % of base) : 70388.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.91 % of base) : 78169.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-56 (-1.97 % of base) : 87927.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
-53 (-1.25 % of base) : 74552.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
-50 (-1.44 % of base) : 86251.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.IntStruct]:IntroSort(System.Span`1[System.Collections.IntStruct],int,System.Comparison`1[System.Collections.IntStruct]) (Tier1)
Top method regressions (percentages):
11 (5.82 % of base) : 16824.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
36 (5.53 % of base) : 76474.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 57991.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 64016.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 98237.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 102367.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 90621.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 94313.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 96293.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 99427.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 28783.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 45402.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 91249.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 92930.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 98291.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 70756.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 74054.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 74936.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 85219.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
36 (5.52 % of base) : 85896.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:MergeWithGlobalList(System.__Canon[]):this (Tier1)
Top method improvements (percentages):
-15 (-24.19 % of base) : 91602.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
-36 (-6.94 % of base) : 94695.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-36 (-6.86 % of base) : 96825.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
-11 (-6.29 % of base) : 88560.dasm - System.Collections.Concurrent.AddRemoveFromDifferentThreads`1+<>c__DisplayClass10_0[int]:<SetupConcurrentQueueIteration>b__0():this (Tier1-OSR)
-21 (-5.82 % of base) : 107627.dasm - System.Reflection.CerHashtable`2[System.__Canon,System.__Canon]:get_Item(System.__Canon):System.__Canon:this (Tier1)
-10 (-5.78 % of base) : 92121.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-10 (-5.78 % of base) : 98997.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-10 (-5.78 % of base) : 105656.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-10 (-5.78 % of base) : 29393.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-10 (-5.78 % of base) : 64086.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-10 (-5.78 % of base) : 72673.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-10 (-5.78 % of base) : 86122.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
-13 (-5.75 % of base) : 48765.dasm - System.Number:UInt32ToDecChars[ushort](ulong,uint):ulong (Tier1)
-37 (-5.71 % of base) : 19777.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-37 (-5.71 % of base) : 70026.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-37 (-5.71 % of base) : 92542.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-37 (-5.71 % of base) : 51304.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-37 (-5.71 % of base) : 87071.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-37 (-5.71 % of base) : 87833.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
-37 (-5.71 % of base) : 96123.dasm - System.Linq.Enumerable:Count[ushort](System.Collections.Generic.IEnumerable`1[ushort],System.Func`2[ushort,ubyte]):int (Tier1-OSR)
benchmarks.run_tiered.windows.x64.checked.mch
To reproduce these diffs on Windows x64:
superpmi.py asmdiffs -target_os windows -target_arch x64 -arch x64
Summary of Code Size diffs:
(Lower is better)
Total bytes of base: 19448995 (overridden on cmd)
Total bytes of diff: 19449402 (overridden on cmd)
Total bytes of delta: 407 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
128 : 18791.dasm (2.81 % of base)
128 : 73266.dasm (2.90 % of base)
128 : 72423.dasm (2.81 % of base)
23 : 48350.dasm (0.75 % of base)
17 : 48314.dasm (0.59 % of base)
10 : 74014.dasm (3.21 % of base)
5 : 61708.dasm (0.15 % of base)
5 : 68143.dasm (0.15 % of base)
3 : 67475.dasm (0.36 % of base)
3 : 56839.dasm (0.36 % of base)
2 : 10586.dasm (0.08 % of base)
2 : 42210.dasm (0.08 % of base)
2 : 74266.dasm (0.11 % of base)
2 : 79122.dasm (0.19 % of base)
Top file improvements (bytes):
-14 : 18720.dasm (-0.95 % of base)
-14 : 36717.dasm (-0.95 % of base)
-10 : 48316.dasm (-1.25 % of base)
-6 : 19989.dasm (-0.80 % of base)
-6 : 81941.dasm (-0.80 % of base)
-1 : 16095.dasm (-0.15 % of base)
20 total files with Code Size differences (6 improved, 14 regressed), 22 unchanged.
Top method regressions (bytes):
128 (2.81 % of base) : 18791.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.90 % of base) : 73266.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.81 % of base) : 72423.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
23 (0.75 % of base) : 48350.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
17 (0.59 % of base) : 48314.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
10 (3.21 % of base) : 74014.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
5 (0.15 % of base) : 61708.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
5 (0.15 % of base) : 68143.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
3 (0.36 % of base) : 67475.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
3 (0.36 % of base) : 56839.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
2 (0.11 % of base) : 74266.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
2 (0.19 % of base) : 79122.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
2 (0.08 % of base) : 10586.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
2 (0.08 % of base) : 42210.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
Top method improvements (bytes):
-14 (-0.95 % of base) : 18720.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-14 (-0.95 % of base) : 36717.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-10 (-1.25 % of base) : 48316.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
-6 (-0.80 % of base) : 19989.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
-6 (-0.80 % of base) : 81941.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
-1 (-0.15 % of base) : 16095.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
Top method regressions (percentages):
10 (3.21 % of base) : 74014.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
128 (2.90 % of base) : 73266.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.81 % of base) : 18791.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
128 (2.81 % of base) : 72423.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
23 (0.75 % of base) : 48350.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
17 (0.59 % of base) : 48314.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
3 (0.36 % of base) : 56839.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
3 (0.36 % of base) : 67475.dasm - Microsoft.CodeAnalysis.PEModule:GetFirstUnsupportedCompilerFeatureFromToken(System.Reflection.Metadata.EntityHandle,Microsoft.CodeAnalysis.IAttributeNamedArgumentDecoder,int):System.String:this (Tier1)
2 (0.19 % of base) : 79122.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
5 (0.15 % of base) : 61708.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
5 (0.15 % of base) : 68143.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (Tier0-FullOpts)
2 (0.11 % of base) : 74266.dasm - Benchstone.BenchF.Romber:Test():ubyte:this (Tier1-OSR)
2 (0.08 % of base) : 10586.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
2 (0.08 % of base) : 42210.dasm - System.Net.Http.HttpEnvironmentProxy:GetUriFromString(System.String):System.Uri (Tier0-FullOpts)
Top method improvements (percentages):
-10 (-1.25 % of base) : 48316.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
-14 (-0.95 % of base) : 18720.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-14 (-0.95 % of base) : 36717.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
-6 (-0.80 % of base) : 19989.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
-6 (-0.80 % of base) : 81941.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (Tier1)
-1 (-0.15 % of base) : 16095.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
20 total methods with Code Size differences (6 improved, 14 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: 296147901 (overridden on cmd)
Total bytes of diff: 296147337 (overridden on cmd)
Total bytes of delta: -564 (-0.00 % of base)
diff is an improvement.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
60 : 188279.dasm (2.61 % of base)
60 : 238996.dasm (2.61 % of base)
29 : 229184.dasm (2.60 % of base)
23 : 191620.dasm (0.75 % of base)
22 : 439209.dasm (2.58 % of base)
21 : 439202.dasm (1.52 % of base)
17 : 186452.dasm (0.46 % of base)
16 : 229930.dasm (1.70 % of base)
15 : 433404.dasm (0.57 % of base)
15 : 481496.dasm (1.74 % of base)
14 : 229140.dasm (1.07 % of base)
14 : 435715.dasm (1.09 % of base)
14 : 438861.dasm (1.21 % of base)
13 : 325872.dasm (3.27 % of base)
13 : 429354.dasm (3.27 % of base)
13 : 194043.dasm (3.95 % of base)
13 : 320231.dasm (3.27 % of base)
13 : 390348.dasm (3.27 % of base)
13 : 394381.dasm (3.27 % of base)
13 : 448658.dasm (3.27 % of base)
Top file improvements (bytes):
-238 : 168455.dasm (-2.20 % of base)
-50 : 230781.dasm (-4.03 % of base)
-50 : 433920.dasm (-4.03 % of base)
-48 : 77650.dasm (-2.19 % of base)
-42 : 455262.dasm (-3.27 % of base)
-41 : 77611.dasm (-1.88 % of base)
-27 : 484682.dasm (-4.35 % of base)
-27 : 491740.dasm (-4.35 % of base)
-27 : 492218.dasm (-4.35 % of base)
-27 : 427727.dasm (-4.35 % of base)
-27 : 428439.dasm (-4.35 % of base)
-27 : 488658.dasm (-4.35 % of base)
-27 : 489665.dasm (-4.35 % of base)
-25 : 481494.dasm (-4.74 % of base)
-22 : 416509.dasm (-1.45 % of base)
-22 : 447890.dasm (-2.53 % of base)
-22 : 71443.dasm (-3.85 % of base)
-22 : 71468.dasm (-3.85 % of base)
-22 : 86226.dasm (-3.85 % of base)
-21 : 427254.dasm (-0.97 % of base)
71 total files with Code Size differences (31 improved, 40 regressed), 20 unchanged.
Top method regressions (bytes):
60 (2.61 % of base) : 188279.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
60 (2.61 % of base) : 238996.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
29 (2.60 % of base) : 229184.dasm - JitTest_lcsvalbox_lcs_cs.LCS:findLCS(System.Object[,,,],ushort[][],int[]) (FullOpts)
23 (0.75 % of base) : 191620.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
22 (2.58 % of base) : 439209.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
21 (1.52 % of base) : 439202.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
17 (0.46 % of base) : 186452.dasm - UnrollEqualsStartsWith:RunTests(System.Type):int (FullOpts)
16 (1.70 % of base) : 229930.dasm - JitTest_lcs_port.LCSV:findLCS(JitTest_lcs_port.LCSV[,,,],JitTest_lcs_port.LCSV[,,,],ushort[][],JitTest_lcs_port.LCSV[]) (FullOpts)
15 (0.57 % of base) : 433404.dasm - System.Decimal+DecCalc:VarDecDiv(byref,byref) (Instrumented Tier1)
15 (1.74 % of base) : 481496.dasm - TestSet:Run(int):this (Tier1-OSR)
14 (1.07 % of base) : 229140.dasm - JitTest_lcs_gcref_port.LCSV:findLCS(JitTest_lcs_gcref_port.LCSV[,,,],JitTest_lcs_gcref_port.LCSV[,,,],ushort[][],JitTest_lcs_gcref_port.LCSV[]) (FullOpts)
14 (1.09 % of base) : 435715.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
14 (1.21 % of base) : 438861.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
13 (3.95 % of base) : 194043.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
13 (2.77 % of base) : 452056.dasm - Runtime_75828:TestEntryPoint():int (Tier1-OSR)
13 (3.27 % of base) : 325872.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 429354.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 320231.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 390348.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 394381.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
Top method improvements (bytes):
-238 (-2.20 % of base) : 168455.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-50 (-4.03 % of base) : 230781.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (FullOpts)
-50 (-4.03 % of base) : 433920.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (Tier0-FullOpts)
-48 (-2.19 % of base) : 77650.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperSByte:RunReflectionScenario():this (FullOpts)
-42 (-3.27 % of base) : 455262.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
-41 (-1.88 % of base) : 77611.dasm - JIT.HardwareIntrinsics.General._Vector512_1.VectorGetAndWithLowerAndUpper__GetAndWithLowerAndUpperByte:RunReflectionScenario():this (FullOpts)
-27 (-4.35 % of base) : 484682.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 491740.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 492218.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 427727.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 428439.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 488658.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 489665.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-25 (-4.74 % of base) : 481494.dasm - TestSet:.ctor(int,int):this (Tier1-OSR)
-22 (-3.85 % of base) : 71443.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateScalarDouble:ValidateResult(double[],double,System.String):this (FullOpts)
-22 (-3.85 % of base) : 71468.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateScalarSingle:ValidateResult(float[],float,System.String):this (FullOpts)
-22 (-3.85 % of base) : 86226.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorCreate__CreateScalarSingle:ValidateResult(float[],float,System.String):this (FullOpts)
-22 (-2.53 % of base) : 447890.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
-22 (-1.45 % of base) : 416509.dasm - System.Reflection.TypeNameParser:GetTypeHelper(ulong,System.Reflection.RuntimeAssembly,ubyte,ubyte):System.RuntimeType (Instrumented Tier1)
-21 (-0.97 % of base) : 427254.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
Top method regressions (percentages):
9 (5.39 % of base) : 425090.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
8 (4.71 % of base) : 169692.dasm - Helper:NewOUTER3(int,float,System.String,System.String):OUTER3 (FullOpts)
8 (4.71 % of base) : 166736.dasm - Helper:NewOUTER3(int,float,System.String,System.String):OUTER3 (FullOpts)
6 (4.08 % of base) : 169690.dasm - Helper:NewInnerArrayExplicit(int,float,System.String,System.String):InnerArrayExplicit (FullOpts)
6 (4.08 % of base) : 166732.dasm - Helper:NewInnerArrayExplicit(int,float,System.String,System.String):InnerArrayExplicit (FullOpts)
13 (3.95 % of base) : 194043.dasm - Benchstone.BenchF.SqMtx:Bench():ubyte (FullOpts)
13 (3.27 % of base) : 325872.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 429354.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 320231.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 390348.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 394381.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 448658.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 454688.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
10 (3.21 % of base) : 310693.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
4 (3.01 % of base) : 466257.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
4 (3.01 % of base) : 480023.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
4 (3.01 % of base) : 481225.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
4 (3.01 % of base) : 464709.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
10 (2.94 % of base) : 292247.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
10 (2.94 % of base) : 313232.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
Top method improvements (percentages):
-6 (-5.31 % of base) : 416484.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-25 (-4.74 % of base) : 481494.dasm - TestSet:.ctor(int,int):this (Tier1-OSR)
-27 (-4.35 % of base) : 484682.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 491740.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 492218.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 427727.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 428439.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 488658.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-27 (-4.35 % of base) : 489665.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-19 (-4.06 % of base) : 429055.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-50 (-4.03 % of base) : 230781.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (FullOpts)
-50 (-4.03 % of base) : 433920.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (Tier0-FullOpts)
-9 (-3.90 % of base) : 422907.dasm - Benchstone.BenchI.CSieve:Bench():ubyte (Tier1-OSR)
-22 (-3.85 % of base) : 71443.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateScalarDouble:ValidateResult(double[],double,System.String):this (FullOpts)
-22 (-3.85 % of base) : 71468.dasm - JIT.HardwareIntrinsics.General._Vector128.VectorCreate__CreateScalarSingle:ValidateResult(float[],float,System.String):this (FullOpts)
-22 (-3.85 % of base) : 86226.dasm - JIT.HardwareIntrinsics.General._Vector64.VectorCreate__CreateScalarSingle:ValidateResult(float[],float,System.String):this (FullOpts)
-4 (-3.60 % of base) : 326061.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 433577.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 435729.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 454697.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (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: 44779562 (overridden on cmd)
Total bytes of diff: 44780065 (overridden on cmd)
Total bytes of delta: 503 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
85 : 30121.dasm (2.59 % of base)
65 : 171789.dasm (2.71 % of base)
59 : 115210.dasm (8.65 % of base)
55 : 119272.dasm (3.77 % of base)
52 : 66520.dasm (1.12 % of base)
47 : 59975.dasm (3.85 % of base)
47 : 122698.dasm (3.85 % of base)
40 : 181858.dasm (0.73 % of base)
29 : 115235.dasm (0.67 % of base)
28 : 93476.dasm (2.74 % of base)
28 : 151874.dasm (2.74 % of base)
27 : 68041.dasm (1.77 % of base)
27 : 129759.dasm (1.77 % of base)
25 : 37842.dasm (0.10 % of base)
19 : 271782.dasm (1.75 % of base)
15 : 120187.dasm (1.03 % of base)
14 : 31536.dasm (1.31 % of base)
14 : 37073.dasm (0.55 % of base)
13 : 119270.dasm (0.46 % of base)
13 : 251260.dasm (3.36 % of base)
Top file improvements (bytes):
-71 : 96980.dasm (-3.04 % of base)
-50 : 216741.dasm (-2.13 % of base)
-48 : 229503.dasm (-0.51 % of base)
-41 : 93159.dasm (-0.78 % of base)
-32 : 38822.dasm (-1.19 % of base)
-32 : 257975.dasm (-1.38 % of base)
-26 : 9768.dasm (-3.03 % of base)
-16 : 245271.dasm (-0.65 % of base)
-11 : 205378.dasm (-1.18 % of base)
-11 : 38575.dasm (-0.82 % of base)
-11 : 250971.dasm (-1.38 % of base)
-9 : 221823.dasm (-0.75 % of base)
-8 : 25408.dasm (-2.26 % of base)
-8 : 216572.dasm (-0.86 % of base)
-6 : 115104.dasm (-0.30 % of base)
-5 : 203328.dasm (-0.13 % of base)
-4 : 94834.dasm (-0.15 % of base)
-4 : 245313.dasm (-0.40 % of base)
-3 : 25475.dasm (-0.64 % of base)
-2 : 24517.dasm (-0.55 % of base)
53 total files with Code Size differences (22 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
85 (2.59 % of base) : 30121.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (FullOpts)
65 (2.71 % of base) : 171789.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
59 (8.65 % of base) : 115210.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:PropertyInvocationOverloadResolution(Microsoft.CodeAnalysis.VisualBasic.BoundPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxNode,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
55 (3.77 % of base) : 119272.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
52 (1.12 % of base) : 66520.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
47 (3.85 % of base) : 59975.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
47 (3.85 % of base) : 122698.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
40 (0.73 % of base) : 181858.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
29 (0.67 % of base) : 115235.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
28 (2.74 % of base) : 93476.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)
28 (2.74 % of base) : 151874.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)
27 (1.77 % of base) : 68041.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CreateAndPopulateSpanFromInlineArray(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
27 (1.77 % of base) : 129759.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CreateAndPopulateSpanFromInlineArray(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
25 (0.10 % of base) : 37842.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)
19 (1.75 % of base) : 271782.dasm - System.Security.AccessControl.ObjectAce:ParseBinaryForm(ubyte[],int,byref,byref,byref,byref,byref,byref,byref,byref):ubyte (FullOpts)
15 (1.03 % of base) : 120187.dasm - Microsoft.CodeAnalysis.VisualBasic.AsyncRewriter+AsyncMethodToClassRewriter:SpillLValue(Microsoft.CodeAnalysis.VisualBasic.BoundExpression,ubyte,ubyte,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
14 (0.55 % of base) : 37073.dasm - System.Data.ProviderBase.SchemaMapping:SetupSchemaWithoutKeyInfo(int,int,ubyte,System.Data.DataColumn,System.Object):System.Object[]:this (FullOpts)
14 (1.31 % of base) : 31536.dasm - System.Diagnostics.Tracing.ManifestBuilder:TranslateToManifestConvention(System.String,System.String):System.String:this (FullOpts)
13 (0.46 % of base) : 119270.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
13 (3.36 % of base) : 251260.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
Top method improvements (bytes):
-71 (-3.04 % of base) : 96980.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
-50 (-2.13 % of base) : 216741.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
-48 (-0.51 % of base) : 229503.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-41 (-0.78 % of base) : 93159.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 (-1.19 % of base) : 38822.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
-32 (-1.38 % of base) : 257975.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (FullOpts)
-26 (-3.03 % of base) : 9768.dasm - System.RuntimeType:ForwardCallToInvokeMember(System.String,int,System.Object,System.Object[],ubyte[],int[],System.Type[],System.Type):System.Object:this (FullOpts)
-16 (-0.65 % of base) : 245271.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-11 (-0.82 % of base) : 38575.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception:this (FullOpts)
-11 (-1.38 % of base) : 250971.dasm - System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this (FullOpts)
-11 (-1.18 % of base) : 205378.dasm - System.DirectoryServices.SearchResultCollection+ResultsEnumerator:GetCurrentResult():System.DirectoryServices.SearchResult:this (FullOpts)
-9 (-0.75 % of base) : 221823.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-8 (-2.26 % of base) : 25408.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-0.86 % of base) : 216572.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
-6 (-0.30 % of base) : 115104.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-5 (-0.13 % of base) : 203328.dasm - System.Speech.Internal.SrgsCompiler.Backend:InitFromBinaryGrammar(System.Speech.Internal.StreamMarshaler):this (FullOpts)
-4 (-0.15 % of base) : 94834.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindLateBoundInvocation(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-4 (-0.40 % of base) : 245313.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)
-3 (-0.64 % of base) : 25475.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
-2 (-0.55 % of base) : 24517.dasm - System.Environment:GetEnvironmentVariablesFromRegistry(ubyte):System.Collections.Hashtable (FullOpts)
Top method regressions (percentages):
59 (8.65 % of base) : 115210.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:PropertyInvocationOverloadResolution(Microsoft.CodeAnalysis.VisualBasic.BoundPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxNode,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
7 (4.86 % of base) : 157434.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
7 (4.86 % of base) : 192088.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
10 (4.20 % of base) : 182249.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
9 (4.15 % of base) : 221086.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
47 (3.85 % of base) : 59975.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
47 (3.85 % of base) : 122698.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
55 (3.77 % of base) : 119272.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
9 (3.59 % of base) : 221087.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndexWithRequiredMembers(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
13 (3.36 % of base) : 251260.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
10 (3.21 % of base) : 26558.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.21 % of base) : 271411.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
11 (2.85 % of base) : 18734.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)
28 (2.74 % of base) : 93476.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)
28 (2.74 % of base) : 151874.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)
65 (2.71 % of base) : 171789.dasm - Newtonsoft.Json.Utilities.JavaScriptUtils:WriteEscapedJavaScriptString(System.IO.TextWriter,System.String,ushort,ubyte,ubyte[],int,Newtonsoft.Json.IArrayPool`1[ushort],byref) (FullOpts)
85 (2.59 % of base) : 30121.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (FullOpts)
9 (1.95 % of base) : 31857.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
6 (1.94 % of base) : 25302.dasm - System.TimeZoneInfo:PopulateAllSystemTimeZones(System.TimeZoneInfo+CachedData) (FullOpts)
27 (1.77 % of base) : 129759.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:CreateAndPopulateSpanFromInlineArray(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundNode],ubyte,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
Top method improvements (percentages):
-71 (-3.04 % of base) : 96980.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol:GetParameters(Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEPropertySymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.Metadata.PE.PEMethodSymbol,Microsoft.CodeAnalysis.ParamInfo`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol][],byref):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.ParameterSymbol] (FullOpts)
-26 (-3.03 % of base) : 9768.dasm - System.RuntimeType:ForwardCallToInvokeMember(System.String,int,System.Object,System.Object[],ubyte[],int[],System.Type[],System.Type):System.Object:this (FullOpts)
-8 (-2.26 % of base) : 25408.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-50 (-2.13 % of base) : 216741.dasm - System.Xml.Serialization.TempAssembly:GenerateRefEmitAssembly(System.Xml.Serialization.XmlMapping[],System.Type[]):System.Reflection.Assembly (FullOpts)
-11 (-1.38 % of base) : 250971.dasm - System.DirectoryServices.Protocols.SortRequestControl:GetValue():ubyte[]:this (FullOpts)
-32 (-1.38 % of base) : 257975.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (FullOpts)
-32 (-1.19 % of base) : 38822.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
-11 (-1.18 % of base) : 205378.dasm - System.DirectoryServices.SearchResultCollection+ResultsEnumerator:GetCurrentResult():System.DirectoryServices.SearchResult:this (FullOpts)
-8 (-0.86 % of base) : 216572.dasm - System.Xml.Xsl.XsltOld.XsltCompileContext:FindBestMethod(System.Reflection.MethodInfo[],ubyte,ubyte,System.String,int[]):System.Reflection.MethodInfo (FullOpts)
-11 (-0.82 % of base) : 38575.dasm - Microsoft.VisualBasic.CompilerServices.VBBinder:CreateParamOrder(ubyte,int[],System.Reflection.ParameterInfo[],System.Object[],System.String[]):System.Exception:this (FullOpts)
-41 (-0.78 % of base) : 93159.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)
-9 (-0.75 % of base) : 221823.dasm - System.Xml.XmlConverter:TryParseDateTime(ubyte[],int,int,byref):ubyte (FullOpts)
-16 (-0.65 % of base) : 245271.dasm - System.Number:FormatBigInteger(ubyte,System.Numerics.BigInteger,System.String,System.ReadOnlySpan`1[ushort],System.Globalization.NumberFormatInfo,System.Span`1[ushort],byref,byref):System.String (FullOpts)
-3 (-0.64 % of base) : 25475.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
-2 (-0.55 % of base) : 24517.dasm - System.Environment:GetEnvironmentVariablesFromRegistry(ubyte):System.Collections.Hashtable (FullOpts)
-48 (-0.51 % of base) : 229503.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-4 (-0.40 % of base) : 245313.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)
-6 (-0.30 % of base) : 115104.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-1 (-0.25 % of base) : 114969.dasm - Microsoft.CodeAnalysis.VisualBasic.AccessCheck:CheckNamedTypeAccessibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.BasesBeingResolved,byref):int (FullOpts)
-1 (-0.18 % of base) : 19303.dasm - System.Reflection.Emit.RuntimeILGenerator:EmitCalli(System.Reflection.Emit.OpCode,int,System.Type,System.Type[]):this (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: 67659393 (overridden on cmd)
Total bytes of diff: 67660682 (overridden on cmd)
Total bytes of delta: 1289 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
476 : 131472.dasm (2.67 % of base)
190 : 159003.dasm (3.89 % of base)
115 : 192680.dasm (2.63 % of base)
83 : 154848.dasm (1.36 % of base)
60 : 93732.dasm (2.61 % of base)
57 : 242967.dasm (13.01 % of base)
49 : 192681.dasm (2.80 % of base)
47 : 59313.dasm (2.04 % of base)
46 : 159002.dasm (1.20 % of base)
36 : 154823.dasm (2.07 % of base)
36 : 159001.dasm (0.72 % of base)
32 : 203682.dasm (6.04 % of base)
32 : 169068.dasm (6.04 % of base)
30 : 221892.dasm (2.87 % of base)
30 : 16997.dasm (2.87 % of base)
30 : 303120.dasm (2.87 % of base)
29 : 202163.dasm (4.23 % of base)
29 : 332185.dasm (2.58 % of base)
29 : 167464.dasm (4.23 % of base)
28 : 317793.dasm (2.54 % of base)
Top file improvements (bytes):
-235 : 163189.dasm (-2.17 % of base)
-71 : 68052.dasm (-3.17 % of base)
-58 : 131516.dasm (-1.07 % of base)
-36 : 154713.dasm (-1.63 % of base)
-28 : 331759.dasm (-0.99 % of base)
-26 : 184738.dasm (-2.91 % of base)
-25 : 131316.dasm (-1.22 % of base)
-25 : 278305.dasm (-1.99 % of base)
-23 : 93731.dasm (-0.78 % of base)
-22 : 23387.dasm (-1.24 % of base)
-20 : 340663.dasm (-2.34 % of base)
-19 : 118229.dasm (-1.09 % of base)
-19 : 65816.dasm (-0.89 % of base)
-15 : 264137.dasm (-1.28 % of base)
-14 : 57538.dasm (-0.45 % of base)
-14 : 67768.dasm (-0.40 % of base)
-13 : 224845.dasm (-1.20 % of base)
-13 : 135589.dasm (-0.96 % of base)
-11 : 249688.dasm (-2.28 % of base)
-11 : 253453.dasm (-0.51 % of base)
59 total files with Code Size differences (28 improved, 31 regressed), 20 unchanged.
Top method regressions (bytes):
476 (2.67 % of base) : 131472.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindFieldAndPropertyInitializers(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol,System.Collections.Immutable.ImmutableArray`1[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.FieldOrPropertyInitializer]],Microsoft.CodeAnalysis.VisualBasic.Symbols.SynthesizedInteractiveInitializerMethod,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundInitializer] (FullOpts)
190 (3.89 % of base) : 159003.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
115 (2.63 % of base) : 192680.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraph(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,ubyte):this (FullOpts)
83 (1.36 % of base) : 154848.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:MatchArguments(Microsoft.CodeAnalysis.VisualBasic.BoundMethodOrPropertyGroup,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,byref,Microsoft.CodeAnalysis.SyntaxNode,ubyte,byref) (FullOpts)
60 (2.61 % of base) : 93732.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
57 (13.01 % of base) : 242967.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
49 (2.80 % of base) : 192681.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraphLine(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,int[],int[],System.DateTime,System.DateTime,int,byref):this (FullOpts)
47 (2.04 % of base) : 59313.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
46 (1.20 % of base) : 159002.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
36 (2.07 % of base) : 154823.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:PropertyInvocationOverloadResolution(Microsoft.CodeAnalysis.VisualBasic.BoundPropertyGroup,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.SyntaxNode,byref,ubyte):Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+OverloadResolutionResult (FullOpts)
36 (0.72 % of base) : 159001.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],int,byref,Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol) (FullOpts)
32 (6.04 % of base) : 203682.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
32 (6.04 % of base) : 169068.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
30 (2.87 % of base) : 303120.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F3D2F53A382AC8D28802D228929C0CCEBC3558AAD1706BFB4D4EDB695DB536DFD__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
30 (2.87 % of base) : 16997.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F8CFCAEBF51DE37CE3EEBF6F23954BEEBCBCD4E908A2963911D4B27C7CD5148E6__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
30 (2.87 % of base) : 221892.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FA531B1B140B4C4724EBE448DE02C2BB45C5CE928BA56DEA80B8B0BA098711049__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
29 (4.23 % of base) : 202163.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
29 (4.23 % of base) : 167464.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
29 (2.58 % of base) : 332185.dasm - System.Security.AccessControl.ObjectAce:ParseBinaryForm(ubyte[],int,byref,byref,byref,byref,byref,byref,byref,byref):ubyte (FullOpts)
28 (2.54 % of base) : 317793.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
Top method improvements (bytes):
-235 (-2.17 % of base) : 163189.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-71 (-3.17 % of base) : 68052.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeValueOrDefaultTemp(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-58 (-1.07 % of base) : 131516.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:PassArguments(Microsoft.CodeAnalysis.SyntaxNode,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.BitVector]:this (FullOpts)
-36 (-1.63 % of base) : 154713.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-28 (-0.99 % of base) : 331759.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (FullOpts)
-26 (-2.91 % of base) : 184738.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-25 (-1.99 % of base) : 278305.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-25 (-1.22 % of base) : 131316.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-23 (-0.78 % of base) : 93731.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForRetargetingAssembly(Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
-22 (-1.24 % of base) : 23387.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-20 (-2.34 % of base) : 340663.dasm - Xunit.Internal.AssertHelper:ShortenAndEncodeString(System.String,int,byref):System.String (FullOpts)
-19 (-0.89 % of base) : 65816.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
-19 (-1.09 % of base) : 118229.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-15 (-1.28 % of base) : 264137.dasm - System.Speech.Internal.SrgsCompiler.Backend:CreateRule(System.String,int):System.Speech.Internal.SrgsCompiler.Rule:this (FullOpts)
-14 (-0.40 % of base) : 67768.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:BuildArgumentsInEvaluationOrder(Microsoft.CodeAnalysis.Operations.CSharpOperationFactory,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbol,ubyte,System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.CSharpCompilation):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.Operations.IArgumentOperation] (FullOpts)
-14 (-0.45 % of base) : 57538.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:CanMatchArguments(Microsoft.VisualBasic.CompilerServices.Symbols+Method,System.Object[],System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[System.String]):ubyte (FullOpts)
-13 (-0.96 % of base) : 135589.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceFile:BindImports(Microsoft.CodeAnalysis.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.ImportsStatementSyntax],Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.DiagnosticBag,byref,byref,byref,byref,System.Threading.CancellationToken,System.Nullable`1[Microsoft.CodeAnalysis.Text.TextSpan]) (FullOpts)
-13 (-1.20 % of base) : 224845.dasm - System.DirectoryServices.SearchResultCollection+ResultsEnumerator:GetCurrentResult():System.DirectoryServices.SearchResult:this (FullOpts)
-11 (-0.51 % of base) : 253453.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FAB93D28E879A1C012F40790EA668F818AB3858873713FA53950E20F52E058952__Regex1_3+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
-11 (-2.28 % of base) : 249688.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
Top method regressions (percentages):
57 (13.01 % of base) : 242967.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
32 (6.04 % of base) : 203682.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
32 (6.04 % of base) : 169068.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
7 (4.90 % of base) : 205115.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
7 (4.90 % of base) : 170560.dasm - Microsoft.CodeAnalysis.SyntaxTreeExtensions:FindFirstDifference(System.String,System.String):int (FullOpts)
13 (4.76 % of base) : 228663.dasm - System.Dynamic.ExpandoObject+ValueCollection:Contains(System.Object):ubyte:this (FullOpts)
29 (4.23 % of base) : 202163.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
29 (4.23 % of base) : 167464.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
190 (3.89 % of base) : 159003.dasm - Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation+ReferenceManager:SetupReferencesForSourceAssembly(Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceAssemblySymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.PEModule],int,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.VisualBasic.VisualBasicCompilation,Microsoft.CodeAnalysis.VisualBasic.Symbols.AssemblySymbol][],byref,byref) (FullOpts)
13 (3.56 % of base) : 18905.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
6 (3.49 % of base) : 217313.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
10 (3.21 % of base) : 308943.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.15 % of base) : 310899.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (2.94 % of base) : 188526.dasm - Internal.TypeSystem.Ecma.EcmaSignatureParser:ParseMethodSpecSignature():Internal.TypeSystem.TypeDesc[]:this (FullOpts)
30 (2.87 % of base) : 303120.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F3D2F53A382AC8D28802D228929C0CCEBC3558AAD1706BFB4D4EDB695DB536DFD__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
30 (2.87 % of base) : 16997.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F8CFCAEBF51DE37CE3EEBF6F23954BEEBCBCD4E908A2963911D4B27C7CD5148E6__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
30 (2.87 % of base) : 221892.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>FA531B1B140B4C4724EBE448DE02C2BB45C5CE928BA56DEA80B8B0BA098711049__CreateConnectionStringQuoteOdbcValueRegex_2+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
24 (2.84 % of base) : 134163.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.Retargeting.RetargetingEventSymbol:RetargetExplicitInterfaceImplementations():System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.EventSymbol]:this (FullOpts)
49 (2.80 % of base) : 192681.dasm - Microsoft.Build.BackEnd.Scheduler:WriteNodeUtilizationGraphLine(Microsoft.Build.BackEnd.Logging.ILoggingService,Microsoft.Build.Framework.BuildEventContext,int[],int[],System.DateTime,System.DateTime,int,byref):this (FullOpts)
9 (2.69 % of base) : 235782.dasm - System.Runtime.Serialization.XmlObjectSerializerReadContext:GetMemberIndex(System.Runtime.Serialization.XmlReaderDelegator,System.Xml.XmlDictionaryString[],System.Xml.XmlDictionaryString[],int,System.Runtime.Serialization.ExtensionDataObject):int:this (FullOpts)
Top method improvements (percentages):
-7 (-12.96 % of base) : 120524.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-7 (-12.96 % of base) : 25678.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-7 (-12.50 % of base) : 120512.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-7 (-12.50 % of base) : 25666.dasm - System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
-71 (-3.17 % of base) : 68052.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:MakeValueOrDefaultTemp(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-26 (-2.91 % of base) : 184738.dasm - Newtonsoft.Json.Serialization.DefaultSerializationBinder:GetTypeFromTypeNameKey(Newtonsoft.Json.Utilities.StructMultiKey`2[System.String,System.String]):System.Type:this (FullOpts)
-20 (-2.34 % of base) : 340663.dasm - Xunit.Internal.AssertHelper:ShortenAndEncodeString(System.String,int,byref):System.String (FullOpts)
-11 (-2.28 % of base) : 249688.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-235 (-2.17 % of base) : 163189.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-25 (-1.99 % of base) : 278305.dasm - ILCompiler.Reflection.ReadyToRun.Amd64.GcInfo:GetLiveSlotsAtSafepoints(ubyte[],byref):System.Collections.Generic.List`1[System.Collections.Generic.List`1[ILCompiler.Reflection.ReadyToRun.BaseGcSlot]]:this (FullOpts)
-8 (-1.75 % of base) : 333788.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
-8 (-1.75 % of base) : 290602.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
-36 (-1.63 % of base) : 154713.dasm - Microsoft.CodeAnalysis.VisualBasic.Conversions:ClassifyImmediateVarianceCompatibility(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamedTypeSymbol,int,byref):int (FullOpts)
-4 (-1.54 % of base) : 228749.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
-15 (-1.28 % of base) : 264137.dasm - System.Speech.Internal.SrgsCompiler.Backend:CreateRule(System.String,int):System.Speech.Internal.SrgsCompiler.Rule:this (FullOpts)
-22 (-1.24 % of base) : 23387.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-25 (-1.22 % of base) : 131316.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:ReclassifyTupleLiteral(int,Microsoft.CodeAnalysis.SyntaxNode,ubyte,Microsoft.CodeAnalysis.VisualBasic.BoundTupleLiteral,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
-13 (-1.20 % of base) : 224845.dasm - System.DirectoryServices.SearchResultCollection+ResultsEnumerator:GetCurrentResult():System.DirectoryServices.SearchResult:this (FullOpts)
-19 (-1.09 % of base) : 118229.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
-58 (-1.07 % of base) : 131516.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:PassArguments(Microsoft.CodeAnalysis.SyntaxNode,byref,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.BitVector]: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: 42430193 (overridden on cmd)
Total bytes of diff: 42429534 (overridden on cmd)
Total bytes of delta: -659 (-0.00 % of base)
diff is an improvement.
relative diff is an improvement.
Detail diffs
Top file regressions (bytes):
35 : 31648.dasm (1.45 % of base)
13 : 108184.dasm (3.27 % of base)
13 : 115213.dasm (3.27 % of base)
13 : 12451.dasm (3.27 % of base)
13 : 1272.dasm (3.27 % of base)
13 : 14271.dasm (3.27 % of base)
13 : 25087.dasm (3.27 % of base)
13 : 27545.dasm (3.27 % of base)
13 : 34409.dasm (3.27 % of base)
13 : 4042.dasm (0.53 % of base)
13 : 4465.dasm (3.27 % of base)
13 : 4534.dasm (3.27 % of base)
13 : 49536.dasm (3.27 % of base)
13 : 6779.dasm (3.27 % of base)
13 : 11324.dasm (3.27 % of base)
13 : 12679.dasm (3.27 % of base)
13 : 24430.dasm (3.27 % of base)
13 : 29193.dasm (3.27 % of base)
13 : 32633.dasm (3.27 % of base)
13 : 32720.dasm (3.27 % of base)
Top file improvements (bytes):
-33 : 71609.dasm (-4.10 % of base)
-27 : 58985.dasm (-4.50 % of base)
-23 : 118198.dasm (-2.53 % of base)
-23 : 63196.dasm (-4.80 % of base)
-20 : 31821.dasm (-2.48 % of base)
-20 : 36242.dasm (-2.48 % of base)
-20 : 47222.dasm (-2.17 % of base)
-20 : 10811.dasm (-2.87 % of base)
-20 : 53443.dasm (-2.48 % of base)
-20 : 83454.dasm (-2.48 % of base)
-19 : 108643.dasm (-3.11 % of base)
-19 : 114586.dasm (-0.87 % of base)
-19 : 37420.dasm (-3.11 % of base)
-19 : 76733.dasm (-1.23 % of base)
-19 : 76742.dasm (-1.32 % of base)
-19 : 76775.dasm (-1.32 % of base)
-18 : 1449.dasm (-4.58 % of base)
-18 : 22997.dasm (-1.97 % of base)
-18 : 19691.dasm (-4.58 % of base)
-18 : 27566.dasm (-4.58 % of base)
71 total files with Code Size differences (46 improved, 25 regressed), 20 unchanged.
Top method regressions (bytes):
35 (1.45 % of base) : 31648.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
13 (3.27 % of base) : 108184.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 115213.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 12451.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 1272.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 14271.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 25087.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 27545.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 34409.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 4465.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 4534.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 49536.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 6779.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 11324.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 12679.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 24430.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 29193.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 32633.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 32720.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 8161.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
Top method improvements (bytes):
-33 (-4.10 % of base) : 71609.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[ushort]:ToArray():ushort[]:this (Tier1-OSR)
-27 (-4.50 % of base) : 58985.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-23 (-2.53 % of base) : 118198.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
-23 (-4.80 % of base) : 63196.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-20 (-2.17 % of base) : 47222.dasm - System.Linq.Enumerable+SelectEnumerableIterator`2[int,int]:ToArray():int[]:this (Tier1-OSR)
-20 (-2.87 % of base) : 10811.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
-20 (-2.48 % of base) : 31821.dasm - Xunit.JsonBuffer:Read():Xunit.JsonToken:this (Tier1)
-20 (-2.48 % of base) : 36242.dasm - Xunit.JsonBuffer:Read():Xunit.JsonToken:this (Tier1)
-20 (-2.48 % of base) : 53443.dasm - Xunit.JsonBuffer:Read():Xunit.JsonToken:this (Tier1)
-20 (-2.48 % of base) : 83454.dasm - Xunit.JsonBuffer:Read():Xunit.JsonToken:this (Tier1)
-19 (-0.87 % of base) : 114586.dasm - System.Reflection.Emit.SignatureHelper:AddOneArgTypeHelperWorker(System.Type,ubyte):this (Instrumented Tier1)
-19 (-1.23 % of base) : 76733.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeConstantTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
-19 (-1.32 % of base) : 76775.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeDeclSecurityTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
-19 (-1.32 % of base) : 76742.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodSemanticsTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
-19 (-3.11 % of base) : 108643.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-19 (-3.11 % of base) : 37420.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-18 (-1.97 % of base) : 22997.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)
-18 (-4.58 % of base) : 1449.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-18 (-4.58 % of base) : 19691.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-18 (-4.58 % of base) : 27566.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
Top method regressions (percentages):
13 (3.27 % of base) : 108184.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 115213.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 12451.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 1272.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 14271.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 25087.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 27545.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 34409.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 4465.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 4534.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 49536.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 6779.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 11324.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 12679.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 24430.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 29193.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 32633.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 32720.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 8161.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
13 (3.27 % of base) : 97024.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
Top method improvements (percentages):
-23 (-4.80 % of base) : 63196.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-18 (-4.58 % of base) : 1449.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-18 (-4.58 % of base) : 19691.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-18 (-4.58 % of base) : 27566.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-27 (-4.50 % of base) : 58985.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
-33 (-4.10 % of base) : 71609.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[ushort]:ToArray():ushort[]:this (Tier1-OSR)
-16 (-3.92 % of base) : 55352.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
-8 (-3.90 % of base) : 113990.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 100107.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 110001.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 39672.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 73096.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 13319.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 22322.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 37825.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 41224.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 55657.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 59890.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 71616.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
-4 (-3.60 % of base) : 71986.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (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: 142635440 (overridden on cmd)
Total bytes of diff: 142637182 (overridden on cmd)
Total bytes of delta: 1742 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
198 : 312454.dasm (4.70 % of base)
189 : 211107.dasm (4.24 % of base)
100 : 206031.dasm (4.67 % of base)
83 : 319316.dasm (5.23 % of base)
72 : 156177.dasm (5.88 % of base)
65 : 71308.dasm (0.23 % of base)
64 : 319317.dasm (3.96 % of base)
64 : 319322.dasm (3.96 % of base)
64 : 319318.dasm (3.96 % of base)
64 : 319319.dasm (3.96 % of base)
64 : 319320.dasm (3.96 % of base)
64 : 319321.dasm (3.96 % of base)
63 : 319324.dasm (3.95 % of base)
60 : 60161.dasm (2.61 % of base)
60 : 5293.dasm (2.61 % of base)
60 : 34225.dasm (2.61 % of base)
60 : 54357.dasm (2.61 % of base)
57 : 150260.dasm (13.01 % of base)
57 : 74097.dasm (13.01 % of base)
51 : 340727.dasm (6.08 % of base)
Top file improvements (bytes):
-238 : 26710.dasm (-2.20 % of base)
-235 : 121051.dasm (-2.17 % of base)
-113 : 327056.dasm (-3.21 % of base)
-62 : 312455.dasm (-0.91 % of base)
-59 : 312610.dasm (-3.20 % of base)
-58 : 15691.dasm (-0.96 % of base)
-58 : 39379.dasm (-0.96 % of base)
-41 : 15874.dasm (-1.00 % of base)
-39 : 321767.dasm (-3.17 % of base)
-37 : 321649.dasm (-2.62 % of base)
-36 : 321772.dasm (-2.56 % of base)
-35 : 308766.dasm (-1.99 % of base)
-35 : 308800.dasm (-1.99 % of base)
-31 : 321779.dasm (-0.89 % of base)
-28 : 112150.dasm (-1.01 % of base)
-28 : 87105.dasm (-1.01 % of base)
-26 : 330214.dasm (-1.30 % of base)
-26 : 319332.dasm (-1.24 % of base)
-25 : 327595.dasm (-1.12 % of base)
-25 : 312554.dasm (-1.48 % of base)
60 total files with Code Size differences (31 improved, 29 regressed), 20 unchanged.
Top method regressions (bytes):
198 (4.70 % of base) : 312454.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1665_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
189 (4.24 % of base) : 211107.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
100 (4.67 % of base) : 206031.dasm - System.Reflection.Emit.Tests.Helpers:VerifyMethod(System.Reflection.Emit.DynamicMethod,System.String,int,int,System.Type,System.Type[],System.Reflection.Module) (FullOpts)
83 (5.23 % of base) : 319316.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5355_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
72 (5.88 % of base) : 156177.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:WrapPartitionedStreamHelper[int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int],System.Linq.Parallel.PartitionedStream`2[int,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],int,System.Threading.CancellationToken):this (FullOpts)
65 (0.23 % of base) : 71308.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)
64 (3.96 % of base) : 319317.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5356_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (3.96 % of base) : 319318.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5357_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (3.96 % of base) : 319319.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5358_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (3.96 % of base) : 319320.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5359_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (3.96 % of base) : 319321.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5360_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (3.96 % of base) : 319322.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5361_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
63 (3.95 % of base) : 319324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5362_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
60 (2.61 % of base) : 60161.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
60 (2.61 % of base) : 5293.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
60 (2.61 % of base) : 34225.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
60 (2.61 % of base) : 54357.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
57 (13.01 % of base) : 150260.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
57 (13.01 % of base) : 74097.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
51 (6.08 % of base) : 340727.dasm - System.Transactions.Tests.LTMEnlistmentTests:SinglePhaseDurable(int,int,int,int,ubyte,int,int):this (FullOpts)
Top method improvements (bytes):
-238 (-2.20 % of base) : 26710.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-235 (-2.17 % of base) : 121051.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-113 (-3.21 % of base) : 327056.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6095_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-62 (-0.91 % of base) : 312455.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1671_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-59 (-3.20 % of base) : 312610.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1728_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-58 (-0.96 % of base) : 15691.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)
-58 (-0.96 % of base) : 39379.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)
-41 (-1.00 % of base) : 15874.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-39 (-3.17 % of base) : 321767.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4863_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-37 (-2.62 % of base) : 321649.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4554_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-36 (-2.56 % of base) : 321772.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4869_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-35 (-1.99 % of base) : 308766.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex627_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-35 (-1.99 % of base) : 308800.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex628_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-31 (-0.89 % of base) : 321779.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4876_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-28 (-1.01 % of base) : 112150.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (FullOpts)
-28 (-1.01 % of base) : 87105.dasm - System.Runtime.Serialization.Formatters.Binary.ObjectWriter:WriteArray(System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo,System.Runtime.Serialization.Formatters.Binary.NameInfo,System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo):this (FullOpts)
-26 (-1.30 % of base) : 330214.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33260_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-26 (-1.24 % of base) : 319332.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5368_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-25 (-1.48 % of base) : 312554.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1705_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-25 (-1.12 % of base) : 327595.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex7149_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
Top method regressions (percentages):
57 (13.01 % of base) : 150260.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
57 (13.01 % of base) : 74097.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
51 (6.08 % of base) : 340727.dasm - System.Transactions.Tests.LTMEnlistmentTests:SinglePhaseDurable(int,int,int,int,ubyte,int,int):this (FullOpts)
72 (5.88 % of base) : 156177.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[int,int,int,System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]:WrapPartitionedStreamHelper[int,int](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[int,int],int],System.Linq.Parallel.PartitionedStream`2[int,int],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]],int,System.Threading.CancellationToken):this (FullOpts)
15 (5.40 % of base) : 212774.dasm - System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
15 (5.40 % of base) : 212574.dasm - System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
83 (5.23 % of base) : 319316.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5355_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
198 (4.70 % of base) : 312454.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1665_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
100 (4.67 % of base) : 206031.dasm - System.Reflection.Emit.Tests.Helpers:VerifyMethod(System.Reflection.Emit.DynamicMethod,System.String,int,int,System.Type,System.Type[],System.Reflection.Module) (FullOpts)
189 (4.24 % of base) : 211107.dasm - System.Reflection.Metadata.Tests.MetadataReaderTests:ValidateFieldDef(System.Reflection.Metadata.MetadataReader,uint,uint,ubyte):this (FullOpts)
41 (3.97 % of base) : 4167.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)
64 (3.96 % of base) : 319317.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5356_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (3.96 % of base) : 319318.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5357_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (3.96 % of base) : 319319.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5358_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (3.96 % of base) : 319320.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5359_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (3.96 % of base) : 319321.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5360_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
64 (3.96 % of base) : 319322.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5361_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
63 (3.95 % of base) : 319324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5362_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
13 (3.56 % of base) : 106226.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
13 (3.56 % of base) : 112756.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
Top method improvements (percentages):
-113 (-3.21 % of base) : 327056.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6095_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-59 (-3.20 % of base) : 312610.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1728_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-39 (-3.17 % of base) : 321767.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4863_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-37 (-2.62 % of base) : 321649.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4554_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-36 (-2.56 % of base) : 321772.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4869_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-20 (-2.34 % of base) : 340919.dasm - Xunit.Internal.AssertHelper:ShortenAndEncodeString(System.String,int,byref):System.String (FullOpts)
-11 (-2.28 % of base) : 197645.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
-238 (-2.20 % of base) : 26710.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-235 (-2.17 % of base) : 121051.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder:bindUserDefinedConversion(Microsoft.CSharp.RuntimeBinder.Semantics.Expr,Microsoft.CSharp.RuntimeBinder.Semantics.CType,Microsoft.CSharp.RuntimeBinder.Semantics.CType,ubyte,byref,ubyte):ubyte:this (FullOpts)
-35 (-1.99 % of base) : 308800.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex628_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-35 (-1.99 % of base) : 308766.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex627_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-1.97 % of base) : 226843.dasm - DataContractJsonSerializerTests:DCJS_DecimalAsRoot() (FullOpts)
-11 (-1.97 % of base) : 228669.dasm - DataContractJsonSerializerTests:DCJS_DecimalAsRoot() (FullOpts)
-18 (-1.91 % of base) : 307851.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex907_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-18 (-1.89 % of base) : 312256.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1263_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-11 (-1.77 % of base) : 193987.dasm - XmlSerializerTests:Xml_DecimalAsRoot() (FullOpts)
-11 (-1.77 % of base) : 343666.dasm - XmlSerializerTests:Xml_DecimalAsRoot() (FullOpts)
-8 (-1.75 % of base) : 261783.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
-11 (-1.71 % of base) : 233361.dasm - DataContractSerializerTests:DCS_DecimalAsRoot() (FullOpts)
-18 (-1.70 % of base) : 312799.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1829_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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: 14768264 (overridden on cmd)
Total bytes of diff: 14768898 (overridden on cmd)
Total bytes of delta: 634 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
404 : 18377.dasm (5.07 % of base)
74 : 20013.dasm (4.87 % of base)
68 : 6629.dasm (8.95 % of base)
62 : 12816.dasm (9.25 % of base)
53 : 3568.dasm (0.46 % of base)
49 : 23018.dasm (2.24 % of base)
47 : 29986.dasm (2.07 % of base)
41 : 21189.dasm (3.97 % of base)
25 : 36852.dasm (1.16 % of base)
23 : 24212.dasm (0.38 % of base)
19 : 20260.dasm (2.14 % of base)
17 : 24785.dasm (0.61 % of base)
15 : 25256.dasm (0.25 % of base)
13 : 8319.dasm (1.60 % of base)
13 : 8344.dasm (1.72 % of base)
12 : 17937.dasm (0.39 % of base)
12 : 31814.dasm (1.77 % of base)
12 : 20084.dasm (2.50 % of base)
12 : 36900.dasm (2.05 % of base)
10 : 15571.dasm (3.21 % of base)
Top file improvements (bytes):
-140 : 6457.dasm (-0.16 % of base)
-58 : 27119.dasm (-0.95 % of base)
-46 : 36593.dasm (-0.45 % of base)
-40 : 17916.dasm (-0.49 % of base)
-32 : 34285.dasm (-0.74 % of base)
-14 : 2162.dasm (-0.95 % of base)
-14 : 559.dasm (-0.95 % of base)
-9 : 31997.dasm (-0.27 % of base)
-6 : 17318.dasm (-0.80 % of base)
-6 : 2664.dasm (-0.80 % of base)
-5 : 29612.dasm (-0.20 % of base)
-4 : 24193.dasm (-0.21 % of base)
-3 : 16643.dasm (-0.16 % of base)
-3 : 27100.dasm (-0.23 % of base)
-2 : 31601.dasm (-0.11 % of base)
-1 : 30460.dasm (-0.14 % of base)
-1 : 29069.dasm (-0.03 % of base)
-1 : 14011.dasm (-0.09 % of base)
41 total files with Code Size differences (18 improved, 23 regressed), 21 unchanged.
Top method regressions (bytes):
404 (5.07 % of base) : 18377.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
74 (4.87 % of base) : 20013.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
68 (8.95 % of base) : 6629.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
62 (9.25 % of base) : 12816.dasm - FSharp.Compiler.CheckExpressions:TcMethodArg$cont@9938(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.MethodCalls+ArgumentAnalysis[],FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Core.Unit) (FullOpts)
53 (0.46 % of base) : 3568.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
49 (2.24 % of base) : 23018.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
47 (2.07 % of base) : 29986.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
41 (3.97 % of base) : 21189.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)
25 (1.16 % of base) : 36852.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
23 (0.38 % of base) : 24212.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:<VisitArguments>g__visitArguments|232_0(Microsoft.CodeAnalysis.CSharp.BoundNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],System.Collections.Immutable.ImmutableArray`1[ubyte],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],System.Collections.Immutable.ImmutableArray`1[int],Microsoft.CodeAnalysis.BitVector,ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,ubyte):System.ValueTuple`4[Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.NullableWalker+VisitArgumentResult],ubyte,Microsoft.CodeAnalysis.CSharp.NullableWalker+ArgumentsCompletionDelegate]:this (FullOpts)
19 (2.14 % of base) : 20260.dasm - Microsoft.ML.Transforms.Text.NgramExtractorTransform:Create(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractorTransform+NgramExtractorArguments,Microsoft.ML.IDataView,Microsoft.ML.Transforms.Text.ExtractorColumn[],Microsoft.ML.Transforms.Text.TermLoaderArguments):Microsoft.ML.ITransformer (FullOpts)
17 (0.61 % of base) : 24785.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
15 (0.25 % of base) : 25256.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ComputeInterfaceImplementations(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol+SynthesizedExplicitImplementations:this (FullOpts)
13 (1.60 % of base) : 8319.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingComparable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
13 (1.72 % of base) : 8344.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingEquatable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
12 (1.77 % of base) : 31814.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+DecisionDagRewriter:ShareTempsIfPossibleAndEvaluateInput(Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],byref):Microsoft.CodeAnalysis.CSharp.BoundDecisionDag:this (FullOpts)
12 (2.50 % of base) : 20084.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
12 (0.39 % of base) : 17937.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:CheckConvergence(Microsoft.ML.Runtime.IProgressChannel,int,Microsoft.ML.Trainers.FloatLabelCursor+Factory,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],Microsoft.ML.Data.VBuffer`1[float][],Microsoft.ML.Data.VBuffer`1[float][],float[],float[],float[],float[],long,double[],byref,byref):ubyte:this (FullOpts)
12 (2.05 % of base) : 36900.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
10 (3.21 % of base) : 15571.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
Top method improvements (bytes):
-140 (-0.16 % of base) : 6457.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
-58 (-0.95 % of base) : 27119.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)
-46 (-0.45 % of base) : 36593.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-40 (-0.49 % of base) : 17916.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
-32 (-0.74 % of base) : 34285.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-14 (-0.95 % of base) : 2162.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-14 (-0.95 % of base) : 559.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-9 (-0.27 % of base) : 31997.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-6 (-0.80 % of base) : 17318.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-6 (-0.80 % of base) : 2664.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-5 (-0.20 % of base) : 29612.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArrayCreationWithInitializer(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte):Microsoft.CodeAnalysis.CSharp.BoundArrayCreation:this (FullOpts)
-4 (-0.21 % of base) : 24193.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
-3 (-0.23 % of base) : 27100.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetParamArrayArgument(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],System.Collections.Immutable.ImmutableArray`1[System.String],int,int,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.TypedConstant (FullOpts)
-3 (-0.16 % of base) : 16643.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
-2 (-0.11 % of base) : 31601.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (FullOpts)
-1 (-0.09 % of base) : 14011.dasm - FSharp.Compiler.CheckExpressions:isSimpleArgument@8784(FSharp.Compiler.Syntax.SynExpr):ubyte (FullOpts)
-1 (-0.03 % of base) : 29069.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MethodIsCompatibleWithDelegateOrFunctionPointer(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte:this (FullOpts)
-1 (-0.14 % of base) : 30460.dasm - Microsoft.CodeAnalysis.CSharp.Binder+WithQueryLambdaParametersBinder:BindRangeVariable(Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.RangeVariableSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
Top method regressions (percentages):
62 (9.25 % of base) : 12816.dasm - FSharp.Compiler.CheckExpressions:TcMethodArg$cont@9938(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.MethodCalls+ArgumentAnalysis[],FSharp.Compiler.Text.Range,FSharp.Compiler.TypedTree+TType,FSharp.Compiler.TcGlobals+TcGlobals,Microsoft.FSharp.Core.Unit) (FullOpts)
68 (8.95 % of base) : 6629.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:seekReadParams(FSharp.Compiler.AbstractIL.ILBinaryReader+ILMetadataReader,FSharp.Compiler.IO.ReadOnlyByteMemory,FSharp.Compiler.AbstractIL.IL+ILType,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILType],int,int):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILReturn,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILParameter]] (FullOpts)
404 (5.07 % of base) : 18377.dasm - Microsoft.ML.Transforms.Text.TextFeaturizingEstimator:Fit(Microsoft.ML.IDataView):Microsoft.ML.ITransformer:this (FullOpts)
74 (4.87 % of base) : 20013.dasm - Microsoft.ML.Trainers.KMeansUtils:ParallelMapReduce[System.__Canon,System.__Canon](int,Microsoft.ML.Runtime.IHost,Microsoft.ML.Trainers.FeatureFloatVectorCursor+Factory,Microsoft.ML.Trainers.KMeansUtils+RowIndexGetter,Microsoft.ML.Trainers.KMeansUtils+InitAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+MapAction`1[System.__Canon],Microsoft.ML.Trainers.KMeansUtils+ReduceAction`2[System.__Canon,System.__Canon],byref,byref):Microsoft.ML.Trainers.KMeansUtils+RowStats (FullOpts)
41 (3.97 % of base) : 21189.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)
10 (3.21 % of base) : 15571.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.21 % of base) : 1944.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
12 (2.50 % of base) : 20084.dasm - Microsoft.ML.Trainers.KMeansUtils:FindBestCluster(byref,Microsoft.ML.Data.VBuffer`1[float][],float[],int,ubyte,byref,byref,byref,byref) (FullOpts)
49 (2.24 % of base) : 23018.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager:SetupReferencesForFileAssembly(Microsoft.CodeAnalysis.CSharp.CSharpCompilation+ReferenceManager+AssemblyDataForFile,Microsoft.CodeAnalysis.CommonReferenceManager`2+BoundInputAssembly[Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol][],byref,byref,Microsoft.CodeAnalysis.CSharp.Symbols.SourceAssemblySymbol) (FullOpts)
19 (2.14 % of base) : 20260.dasm - Microsoft.ML.Transforms.Text.NgramExtractorTransform:Create(Microsoft.ML.Runtime.IHostEnvironment,Microsoft.ML.Transforms.Text.NgramExtractorTransform+NgramExtractorArguments,Microsoft.ML.IDataView,Microsoft.ML.Transforms.Text.ExtractorColumn[],Microsoft.ML.Transforms.Text.TermLoaderArguments):Microsoft.ML.ITransformer (FullOpts)
47 (2.07 % of base) : 29986.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConvertSwitchExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedSwitchExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.Nullable`1[Microsoft.CodeAnalysis.CSharp.Conversion],Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
12 (2.05 % of base) : 36900.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteBlockExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
12 (1.77 % of base) : 31814.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter+DecisionDagRewriter:ShareTempsIfPossibleAndEvaluateInput(Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundStatement],byref):Microsoft.CodeAnalysis.CSharp.BoundDecisionDag:this (FullOpts)
13 (1.72 % of base) : 8344.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingEquatable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
13 (1.60 % of base) : 8319.dasm - FSharp.Compiler.CheckDeclarations+TyconConstraintInference:InferSetOfTyconsSupportingComparable[FSharp.Compiler.Text.Range](FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.TypedTreeOps+DisplayEnv,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+Entity,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.TypedTree+TType,FSharp.Compiler.Text.Range]]]]):Microsoft.FSharp.Collections.FSharpSet`1[long] (FullOpts)
25 (1.16 % of base) : 36852.dasm - System.Management.Automation.Language.PSInvokeMemberBinder:InvokeDotNetMethod(System.Dynamic.CallInfo,System.String,System.Management.Automation.PSMethodInvocationConstraints,int,System.Dynamic.DynamicMetaObject,System.Dynamic.DynamicMetaObject[],System.Dynamic.BindingRestrictions,System.Management.Automation.MethodInformation[],System.Type):System.Dynamic.DynamicMetaObject (FullOpts)
17 (0.61 % of base) : 24785.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
6 (0.49 % of base) : 16800.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData]:TryAddInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurParameters,System.Nullable`1[int],SixLabors.ImageSharp.Processing.Processors.Convolution.Parameters.BokehBlurKernelData,ubyte,ubyte,byref):ubyte:this (FullOpts)
53 (0.46 % of base) : 3568.dasm - FSharp.Compiler.AbstractIL.ILBinaryReader:openMetadataReader(System.String,FSharp.Compiler.AbstractIL.ILBinaryReader+BinaryFile,int,System.Tuple`8[ushort,System.Tuple`2[int,int],ubyte,ubyte,ubyte,ubyte,ubyte,System.Tuple`5[Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.IL+ILPlatform],ubyte,int,int,int]],FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader,FSharp.Compiler.IO.ReadOnlyByteMemory,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.AbstractIL.ILBinaryReader+PEReader],ubyte):System.Tuple`2[FSharp.Compiler.AbstractIL.IL+ILModuleDef,System.Lazy`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.AbstractIL.IL+ILAssemblyRef]]] (FullOpts)
4 (0.43 % of base) : 36908.dasm - System.Linq.Expressions.Compiler.StackSpiller:RewriteTryExpression(System.Linq.Expressions.Expression,int):System.Linq.Expressions.Compiler.StackSpiller+Result:this (FullOpts)
Top method improvements (percentages):
-14 (-0.95 % of base) : 2162.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-14 (-0.95 % of base) : 559.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
-58 (-0.95 % of base) : 27119.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.80 % of base) : 2664.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-6 (-0.80 % of base) : 17318.dasm - System.Reflection.RuntimeMethodInfo:MakeGenericMethod(System.Type[]):System.Reflection.MethodInfo:this (FullOpts)
-32 (-0.74 % of base) : 34285.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
-40 (-0.49 % of base) : 17916.dasm - Microsoft.ML.Trainers.SdcaMulticlassTrainerBase`1[System.__Canon]:TrainWithoutLock(Microsoft.ML.Runtime.IProgressChannelProvider,Microsoft.ML.Trainers.FloatLabelCursor+Factory,System.Random,Microsoft.ML.Trainers.SdcaTrainerBase`3+IdToIdxLookup[System.__Canon,System.__Canon,System.__Canon],int,Microsoft.ML.Trainers.SdcaTrainerBase`3+DualsTableBase[System.__Canon,System.__Canon,System.__Canon],float[],float[],float,Microsoft.ML.Data.VBuffer`1[float][],float[],Microsoft.ML.Data.VBuffer`1[float][],float[],float[]):this (FullOpts)
-46 (-0.45 % of base) : 36593.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (FullOpts)
-9 (-0.27 % of base) : 31997.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:RewriteForEachEnumerator(Microsoft.CodeAnalysis.CSharp.BoundNode,Microsoft.CodeAnalysis.CSharp.BoundConversion,Microsoft.CodeAnalysis.CSharp.ForEachEnumeratorInfo,Microsoft.CodeAnalysis.CSharp.BoundValuePlaceholder,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol],Microsoft.CodeAnalysis.CSharp.BoundForEachDeconstructStep,Microsoft.CodeAnalysis.CSharp.BoundAwaitableInfo,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.GeneratedLabelSymbol,Microsoft.CodeAnalysis.CSharp.BoundStatement):Microsoft.CodeAnalysis.CSharp.BoundStatement:this (FullOpts)
-3 (-0.23 % of base) : 27100.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GetParamArrayArgument(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant],System.Collections.Immutable.ImmutableArray`1[System.String],int,int,Microsoft.CodeAnalysis.CSharp.Conversions,byref):Microsoft.CodeAnalysis.TypedConstant (FullOpts)
-4 (-0.21 % of base) : 24193.dasm - Microsoft.CodeAnalysis.CSharp.NullableWalker:RemoveArgumentConversions(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[ubyte]):System.ValueTuple`2[System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Conversion]]:this (FullOpts)
-5 (-0.20 % of base) : 29612.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArrayCreationWithInitializer(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Syntax.ExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InitializerExpressionSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],ubyte):Microsoft.CodeAnalysis.CSharp.BoundArrayCreation:this (FullOpts)
-140 (-0.16 % of base) : 6457.dasm - FSharp.Compiler.TcGlobals+TcGlobals:.ctor(ubyte,FSharp.Compiler.AbstractIL.IL+ILGlobals,FSharp.Compiler.TypedTree+CcuThunk,System.String,ubyte,ubyte,Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Collections.FSharpList`1[System.String],Microsoft.FSharp.Core.FSharpFunc`2[System.String,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+CcuThunk]]],ubyte,ubyte,Internal.Utilities.PathMap,FSharp.Compiler.Features+LanguageVersion):this (FullOpts)
-3 (-0.16 % of base) : 16643.dasm - SixLabors.ImageSharp.Compression.Zlib.DeflaterEngine:FindLongestMatch(int):ubyte:this (FullOpts)
-1 (-0.14 % of base) : 30460.dasm - Microsoft.CodeAnalysis.CSharp.Binder+WithQueryLambdaParametersBinder:BindRangeVariable(Microsoft.CodeAnalysis.CSharp.Syntax.SimpleNameSyntax,Microsoft.CodeAnalysis.CSharp.Symbols.RangeVariableSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
-2 (-0.11 % of base) : 31601.dasm - Microsoft.CodeAnalysis.CSharp.CodeGen.Optimizer:RemoveIntersectingLocals(System.Collections.Generic.Dictionary`2[Microsoft.CodeAnalysis.CSharp.Symbols.LocalSymbol,Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.CodeGen.LocalDefUseInfo]) (FullOpts)
-1 (-0.09 % of base) : 14011.dasm - FSharp.Compiler.CheckExpressions:isSimpleArgument@8784(FSharp.Compiler.Syntax.SynExpr):ubyte (FullOpts)
-1 (-0.03 % of base) : 29069.dasm - Microsoft.CodeAnalysis.CSharp.Binder:MethodIsCompatibleWithDelegateOrFunctionPointer(Microsoft.CodeAnalysis.CSharp.BoundExpression,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.Location,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):ubyte: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: 5049681 (overridden on cmd)
Total bytes of diff: 5049847 (overridden on cmd)
Total bytes of delta: 166 (0.00 % of base)
diff is a regression.
relative diff is a regression.
Detail diffs
Top file regressions (bytes):
39 : 14625.dasm (5.52 % of base)
39 : 14427.dasm (5.56 % of base)
17 : 18713.dasm (6.72 % of base)
17 : 21373.dasm (6.72 % of base)
17 : 4155.dasm (6.72 % of base)
17 : 942.dasm (6.72 % of base)
17 : 16058.dasm (6.72 % of base)
10 : 2560.dasm (3.23 % of base)
10 : 7563.dasm (3.23 % of base)
10 : 17637.dasm (3.23 % of base)
10 : 20282.dasm (3.23 % of base)
10 : 22921.dasm (3.23 % of base)
1 : 9687.dasm (0.08 % of base)
1 : 3979.dasm (0.08 % of base)
Top file improvements (bytes):
-8 : 5794.dasm (-2.17 % of base)
-8 : 1747.dasm (-2.17 % of base)
-8 : 19539.dasm (-2.17 % of base)
-8 : 16882.dasm (-2.17 % of base)
-8 : 22208.dasm (-2.17 % of base)
-3 : 7859.dasm (-0.65 % of base)
-3 : 13323.dasm (-0.65 % of base)
-3 : 15033.dasm (-0.64 % of base)
22 total files with Code Size differences (8 improved, 14 regressed), 28 unchanged.
Top method regressions (bytes):
39 (5.52 % of base) : 14625.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:GetInterfaceMap(System.Type,System.Type,byref,byref):this (FullOpts)
39 (5.56 % of base) : 14427.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:GetInterfaceMap(System.Type,System.Type,byref,byref):this (FullOpts)
17 (6.72 % of base) : 18713.dasm - System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
17 (6.72 % of base) : 21373.dasm - System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
17 (6.72 % of base) : 4155.dasm - System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
17 (6.72 % of base) : 942.dasm - System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
17 (6.72 % of base) : 16058.dasm - System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
10 (3.23 % of base) : 2560.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 7563.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 17637.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 20282.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 22921.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
1 (0.08 % of base) : 9687.dasm - System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly:UncachedGetTypeCoreCaseSensitive(System.String):System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:this (FullOpts)
1 (0.08 % of base) : 3979.dasm - System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly:UncachedGetTypeCoreCaseSensitive(System.String):System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:this (FullOpts)
Top method improvements (bytes):
-8 (-2.17 % of base) : 5794.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 1747.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 19539.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 16882.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 22208.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-3 (-0.65 % of base) : 7859.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
-3 (-0.65 % of base) : 13323.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
-3 (-0.64 % of base) : 15033.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
Top method regressions (percentages):
17 (6.72 % of base) : 18713.dasm - System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
17 (6.72 % of base) : 21373.dasm - System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
17 (6.72 % of base) : 4155.dasm - System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
17 (6.72 % of base) : 942.dasm - System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
17 (6.72 % of base) : 16058.dasm - System.Enum+<>c__1`1[ubyte]:<GetEnumInfo>b__1_0(System.Type,System.String[],System.Object[],ubyte):System.Reflection.EnumInfo:this (FullOpts)
39 (5.56 % of base) : 14427.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:GetInterfaceMap(System.Type,System.Type,byref,byref):this (FullOpts)
39 (5.52 % of base) : 14625.dasm - Internal.Reflection.Execution.ExecutionEnvironmentImplementation:GetInterfaceMap(System.Type,System.Type,byref,byref):this (FullOpts)
10 (3.23 % of base) : 2560.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 7563.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 17637.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 20282.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
10 (3.23 % of base) : 22921.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
1 (0.08 % of base) : 9687.dasm - System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly:UncachedGetTypeCoreCaseSensitive(System.String):System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:this (FullOpts)
1 (0.08 % of base) : 3979.dasm - System.Reflection.Runtime.Assemblies.NativeFormat.NativeFormatRuntimeAssembly:UncachedGetTypeCoreCaseSensitive(System.String):System.Reflection.Runtime.TypeInfos.RuntimeTypeInfo:this (FullOpts)
Top method improvements (percentages):
-8 (-2.17 % of base) : 5794.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 1747.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 19539.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 16882.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-8 (-2.17 % of base) : 22208.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
-3 (-0.65 % of base) : 7859.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
-3 (-0.65 % of base) : 13323.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
-3 (-0.64 % of base) : 15033.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)