Assembly Diffs

linux arm64

Diffs are based on 1,610,910 contexts (368,644 MinOpts, 1,242,266 FullOpts).

MISSED contexts: 2,790 (0.17%)

Overall (-101,288 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 13,063,852 +20
benchmarks.run_pgo.linux.arm64.checked.mch 65,248,792 -99,188
benchmarks.run_tiered.linux.arm64.checked.mch 20,463,728 -20
coreclr_tests.run.linux.arm64.checked.mch 301,233,192 -404
libraries.crossgen2.linux.arm64.checked.mch 63,764,680 -260
libraries.pmi.linux.arm64.checked.mch 76,209,360 +104
libraries_tests.run.linux.arm64.Release.mch 38,230,684 -1,040
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 161,796,492 +100
realworld.run.linux.arm64.checked.mch 15,928,884 -464
smoke_tests.nativeaot.linux.arm64.checked.mch 2,851,260 -136

FullOpts (-101,288 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.arm64.checked.mch 12,930,536 +20
benchmarks.run_pgo.linux.arm64.checked.mch 43,966,168 -99,188
benchmarks.run_tiered.linux.arm64.checked.mch 4,685,104 -20
coreclr_tests.run.linux.arm64.checked.mch 140,439,428 -404
libraries.crossgen2.linux.arm64.checked.mch 63,763,044 -260
libraries.pmi.linux.arm64.checked.mch 76,089,376 +104
libraries_tests.run.linux.arm64.Release.mch 14,335,208 -1,040
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 148,393,660 +100
realworld.run.linux.arm64.checked.mch 15,346,680 -464
smoke_tests.nativeaot.linux.arm64.checked.mch 2,850,272 -136

Example diffs

benchmarks.run.linux.arm64.checked.mch

-20 (-2.18%) : 11186.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 15, 9 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Jil.Serialize.InlineSerializer`1[System.__Canon]> -; V01 loc0 [V01,T27] ( 2, 1 ) ref -> x20 class-hnd single-def <System.Reflection.MethodInfo> -; V02 loc1 [V02,T09] ( 7, 2 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <Sigil.Local>
+; V00 this [V00,T01] ( 15, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Jil.Serialize.InlineSerializer`1[System.__Canon]> +; V01 loc0 [V01,T27] ( 2, 1.50) ref -> x20 class-hnd single-def <System.Reflection.MethodInfo> +; V02 loc1 [V02,T11] ( 7, 2 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <Sigil.Local>
;# 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,T23] ( 2, 2 ) long -> x0 "spilling helperCall"
-; V06 tmp3 [V06,T10] ( 2, 2 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V07 tmp4 [V07,T05] ( 4, 4 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]>
+; V06 tmp3 [V06,T12] ( 2, 2 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V07 tmp4 [V07,T04] ( 4, 5 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]>
;* V08 tmp5 [V08,T28] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V10 tmp7 [V10,T11] ( 2, 2 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V10 tmp7 [V10,T08] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
; V11 tmp8 [V11,T24] ( 2, 2 ) long -> x0 "spilling helperCall" ; V12 tmp9 [V12,T25] ( 2, 2 ) long -> x0 "spilling helperCall" ; V13 tmp10 [V13,T00] ( 5, 16.50) int -> x0 "Inline stloc first use temp" ;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V15 tmp12 [V15,T12] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> -; V16 tmp13 [V16,T08] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V15 tmp12 [V15,T09] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> +; V16 tmp13 [V16,T02] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
; V17 tmp14 [V17,T13] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> ; V18 tmp15 [V18,T14] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> ; V19 tmp16 [V19,T15] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> @@ -38,11 +38,11 @@ ; V27 tmp24 [V27,T26] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <System.Reflection.MethodInfo> ;* V28 tmp25 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V29 PSPSym [V29,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V30 cse0 [V30,T07] ( 5, 3.50) long -> x19 "CSE - aggressive" -; V31 cse1 [V31,T03] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive" -; V32 rat0 [V32,T04] ( 3, 4.40) long -> x1 "Spilling to split statement for tree" -; V33 rat1 [V33,T06] ( 3, 4 ) long -> x19 "runtime lookup" -; V34 rat2 [V34,T02] ( 3, 5.60) long -> x19 "fgMakeTemp is creating a new local variable"
+; V30 cse0 [V30,T10] ( 5, 3.50) long -> x19 "CSE - aggressive" +; V31 cse1 [V31,T05] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive" +; V32 rat0 [V32,T06] ( 3, 4.40) long -> x1 "Spilling to split statement for tree" +; V33 rat1 [V33,T07] ( 3, 4 ) long -> x19 "runtime lookup" +; V34 rat2 [V34,T03] ( 3, 5.60) long -> x19 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -113,7 +113,7 @@ G_M44361_IG07: ; bbWeight=4, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, by cmp w0, #1 blt G_M44361_IG07 ;; size=20 bbWeight=4 PerfScore 24.00
-G_M44361_IG08: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref
+G_M44361_IG08: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] ; byrRegs -[x1] movz x0, #0xD1FFAB1E @@ -162,40 +162,38 @@ G_M44361_IG08: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, b ; gcr arg pop 0 str x0, [fp, #0x18] // [V02 loc1] ; GC ptr vars +{V02}
- ;; size=148 bbWeight=0.50 PerfScore 18.50 -G_M44361_IG09: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=148 bbWeight=1 PerfScore 37.00 +G_M44361_IG09: ; bbWeight=0.50, gcVars=0000000000000802 {V00 V02}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x1, [x2, #0x18]
+ ldr x21, [fp, #0x20] // [V00 this] + ; gcrRegs +[x21] + ldr x1, [x21, #0x18]
; gcrRegs +[x1] ldr x0, [x1, #0x08] ; gcrRegs +[x0] ldr x1, [fp, #0x18] // [V02 loc1]
- movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3]
+ movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2]
ldr wzr, [x0]
- blr x3 - ; gcrRegs -[x1-x2]
+ blr x2 + ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18]
+ ldr x0, [x21, #0x18]
ldr x0, [x0, #0x08] ldr x1, [fp, #0x18] // [V02 loc1] ; gcrRegs +[x1]
- movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3]
+ movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2]
ldr wzr, [x0]
- blr x3 - ; gcrRegs -[x1-x2]
+ blr x2 + ; gcrRegs -[x1]
; gcr arg pop 0
- ;; size=80 bbWeight=0.50 PerfScore 18.50 -G_M44361_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=76 bbWeight=0.50 PerfScore 17.50 +G_M44361_IG10: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x1, [fp, #0x18] // [V02 loc1] ; gcrRegs +[x1] @@ -212,31 +210,25 @@ G_M44361_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18]
+G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz + ldr x0, [x21, #0x18]
; gcrRegs +[x0] ldr x0, [x0, #0x08] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- movz x3, #0xD1FFAB1E // code for Sigil.Emit`1[System.__Canon]:LoadConstant(System.String):Sigil.Emit`1[System.__Canon]:this - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3]
+ movz x2, #0xD1FFAB1E // code for Sigil.Emit`1[System.__Canon]:LoadConstant(System.String):Sigil.Emit`1[System.__Canon]:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2]
ldr wzr, [x0]
- blr x3 - ; gcrRegs -[x2]
+ blr x2
; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18]
+ ldr x0, [x21, #0x18]
ldr x0, [x0, #0x08] mov x1, x20 ; gcrRegs +[x1] mov x2, xzr
- ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 @@ -245,16 +237,13 @@ G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x1 x20] ; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldrb w0, [x2, #0x34]
+ ldrb w0, [x21, #0x34]
; gcrRegs -[x0] cbz w0, G_M44361_IG13 mov x0, x19
- ldr x19, [x2, #0x18]
+ ldr x19, [x21, #0x18]
; gcrRegs +[x19] bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
- ; gcrRegs -[x2]
; byrRegs +[x0] ; gcr arg pop 0 ldr x1, [x0, #0x18] @@ -271,20 +260,19 @@ G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x1 x19] ; gcr arg pop 0
- ;; size=152 bbWeight=0.50 PerfScore 30.50
+ ;; size=140 bbWeight=0.50 PerfScore 27.50
G_M44361_IG12: ; bbWeight=0.50, epilog, nogc, extend ldr x21, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x50 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M44361_IG13: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x2]
+G_M44361_IG13: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0]
mov x0, x19
- ldr x19, [x2, #0x18]
+ ldr x19, [x21, #0x18]
; gcrRegs +[x19] bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
- ; gcrRegs -[x2]
; byrRegs +[x0] ; gcr arg pop 0 ldr x1, [x0, #0x10] @@ -310,14 +298,13 @@ G_M44361_IG14: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50 G_M44361_IG15: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
mov x0, x19
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x19, [x2, #0x18]
+ ldr x21, [fp, #0x20] // [V00 this] + ; gcrRegs +[x21] + ldr x19, [x21, #0x18]
; gcrRegs +[x19] bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
- ; gcrRegs -[x2]
; byrRegs +[x0] ; gcr arg pop 0 ldr x1, [x0] @@ -333,10 +320,8 @@ G_M44361_IG15: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs= blr x2 ; gcrRegs -[x1 x19] ; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18] - ldrb w1, [x2, #0x34]
+ ldr x0, [x21, #0x18] + ldrb w1, [x21, #0x34]
cbz w1, G_M44361_IG16 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -344,16 +329,16 @@ G_M44361_IG15: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs= ldr x1, [x1] ; gcrRegs +[x1] b G_M44361_IG17
- ;; size=84 bbWeight=0.50 PerfScore 17.75 -G_M44361_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1-x2]
+ ;; size=80 bbWeight=0.50 PerfScore 16.75 +G_M44361_IG16: ; bbWeight=0.50, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ; gcrRegs +[x1] ...

-32 (-1.75%) : 13926.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)

@@ -22,7 +22,7 @@ ; V11 loc7 [V11,T09] ( 18, 40 ) ushort -> x24 ;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 loc9 [V13,T43] ( 3, 6 ) ubyte -> x0
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T18] ( 7, 14 ) ushort -> x25 ;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune> ; V17 loc13 [V17,T28] ( 4, 8 ) int -> x27 @@ -342,8 +342,9 @@ G_M13139_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
+ mov w22, w25
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 28.00
+ ;; size=44 bbWeight=2 PerfScore 29.00
G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -353,8 +354,9 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
+ mov w22, w25
b G_M13139_IG45
- ;; size=28 bbWeight=2 PerfScore 14.00
+ ;; size=32 bbWeight=2 PerfScore 15.00
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 bgt G_M13139_IG21 @@ -382,9 +384,8 @@ G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ;; size=28 bbWeight=2 PerfScore 13.00 G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref add w22, w22, #2
- mov w25, w22
b G_M13139_IG45
- ;; size=12 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref sbfiz x0, x22, #1, #32 add x0, x19, x0 @@ -401,9 +402,8 @@ G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ; gcr arg pop 0 add w0, w0, w22 sub w22, w0, #1
- mov w25, w22
b G_M13139_IG45
- ;; size=64 bbWeight=2 PerfScore 24.00
+ ;; size=60 bbWeight=2 PerfScore 23.00
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -414,9 +414,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -426,9 +425,8 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22
b G_M13139_IG45
- ;; size=32 bbWeight=2 PerfScore 15.00
+ ;; size=28 bbWeight=2 PerfScore 14.00
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 ble G_M13139_IG43 @@ -666,19 +664,16 @@ G_M13139_IG40: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, cmp w24, w27 blt G_M13139_IG35 ;; size=112 bbWeight=16 PerfScore 344.00
-G_M13139_IG41: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M13139_IG41: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] ldrb w0, [fp, #-0x80] // [V14 loc10]
- cbz w0, G_M13139_IG42
+ cbz w0, G_M13139_IG45 + ;; size=8 bbWeight=4 PerfScore 12.00 +G_M13139_IG42: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
add w27, w22, #1 sxtw w22, w27
- mov w25, w22
b G_M13139_IG45
- ;; size=24 bbWeight=2 PerfScore 11.00 -G_M13139_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref - mov w25, w22 - b G_M13139_IG45 - ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=2 PerfScore 4.00
G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -689,9 +684,8 @@ G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -701,14 +695,12 @@ G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22 - ;; size=28 bbWeight=2 PerfScore 13.00
+ ;; size=24 bbWeight=2 PerfScore 12.00
G_M13139_IG45: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- add w25, w25, #1 - cmp w25, w20 - mov w22, w25
+ add w22, w22, #1 + cmp w22, w20
blt G_M13139_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
+ ;; size=12 bbWeight=4 PerfScore 8.00
G_M13139_IG46: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x23] sub x0, fp, #120 // [V05 loc1] @@ -771,7 +763,7 @@ G_M13139_IG50: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1828, prolog size 76, PerfScore 1420.00, instruction count 457, allocated bytes for code 1828 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
+; Total bytes of code 1796, prolog size 76, PerfScore 1417.50, instruction count 449, allocated bytes for code 1796 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -782,7 +774,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 457 (0x001c9) Actual length = 1828 (0x000724)
+ Function Length : 449 (0x001c1) Actual length = 1796 (0x000704)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.44%) : 15619.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)

@@ -14,26 +14,26 @@ ; V03 arg3 [V03,T34] ( 3, 3 ) float -> d10 single-def ; V04 arg4 [V04,T35] ( 3, 3 ) float -> d11 single-def ; V05 arg5 [V05,T36] ( 3, 3 ) float -> d12 single-def
-; V06 loc0 [V06,T08] ( 10, 14 ) ref -> x20 class-hnd exact single-def <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_0> -; V07 loc1 [V07,T39] ( 2, 3 ) double -> [fp+0x80] spill-single-def
+; V06 loc0 [V06,T07] ( 10, 20 ) ref -> x20 class-hnd exact single-def <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_0> +; V07 loc1 [V07,T40] ( 2, 3 ) double -> [fp+0x80] spill-single-def
; V08 loc2 [V08,T41] ( 2, 2 ) double -> [fp+0x78] spill-single-def ; V09 loc3 [V09,T31] ( 2, 9 ) double -> [fp+0x70] spill-single-def ; V10 loc4 [V10,T22] ( 2,129 ) simd16 -> d11 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
-; V11 loc5 [V11,T27] ( 2, 17 ) simd16 -> [fp+0x60] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> -; V12 loc6 [V12,T40] ( 2, 3 ) simd16 -> [fp+0x50] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]>
+; V11 loc5 [V11,T28] ( 2, 17 ) simd16 -> [fp+0x60] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> +; V12 loc6 [V12,T38] ( 2, 5 ) simd16 -> [fp+0x50] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]>
; V13 loc7 [V13,T23] ( 2,129 ) simd16 -> d14 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[long]> ; V14 loc8 [V14,T37] ( 3, 5 ) simd16 -> [fp+0x40] HFA(simd16) spill-single-def <System.Numerics.Vector`1[double]>
-; V15 loc9 [V15,T29] ( 5, 14 ) double -> [fp+0x38] -; V16 loc10 [V16,T21] ( 5,149 ) simd16 -> d15 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
+; V15 loc9 [V15,T27] ( 5, 18 ) double -> [fp+0x38] +; V16 loc10 [V16,T21] ( 5,153 ) simd16 -> d8 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
; V17 loc11 [V17,T02] ( 8, 70 ) ref -> x22 class-hnd exact <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_1> ; V18 loc12 [V18,T26] ( 3, 20 ) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> ; V19 loc13 [V19,T20] ( 6,194 ) simd16 -> [fp+0x10] HFA(simd16) <System.Numerics.Vector`1[double]>
-; V20 loc14 [V20,T13] ( 7,784 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]> -; V21 loc15 [V21,T14] ( 7,784 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[double]> -; V22 loc16 [V22,T16] ( 5,416 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[long]> -; V23 loc17 [V23,T15] ( 6,656 ) simd16 -> d22 HFA(simd16) <System.Numerics.Vector`1[long]> -; V24 loc18 [V24,T18] ( 2,256 ) simd16 -> d23 HFA(simd16) <System.Numerics.Vector`1[double]> -; V25 loc19 [V25,T19] ( 2,256 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[double]>
+; V20 loc14 [V20,T13] ( 7,784 ) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[double]> +; V21 loc15 [V21,T14] ( 7,784 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]> +; V22 loc16 [V22,T16] ( 5,416 ) simd16 -> d10 HFA(simd16) <System.Numerics.Vector`1[long]> +; V23 loc17 [V23,T15] ( 6,656 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[long]> +; V24 loc18 [V24,T18] ( 2,256 ) simd16 -> d22 HFA(simd16) <System.Numerics.Vector`1[double]> +; V25 loc19 [V25,T19] ( 2,256 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]>
;* V26 loc20 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[double]> ;* V27 loc21 [V27 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[long]> ;* V28 loc22 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Action`2[long,int]> @@ -49,15 +49,15 @@ ;* V38 tmp8 [V38 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inline return value spill temp" <System.Numerics.Vector`1[double]> ; V39 tmp9 [V39,T12] ( 3, 3 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <double[]> ; V40 tmp10 [V40,T06] ( 6, 21 ) int -> x24 "Inline stloc first use temp"
-; V41 tmp11 [V41,T28] ( 2, 16 ) double -> d0 "Strict ordering of exceptions for Array store"
+; V41 tmp11 [V41,T29] ( 2, 16 ) double -> d0 "Strict ordering of exceptions for Array store"
;* V42 tmp12 [V42 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[double]>
-;* V43 tmp13 [V43,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V44 tmp14 [V44,T24] ( 3, 96 ) simd16 -> d8 HFA(simd16) ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]> -; V45 cse0 [V45,T17] ( 3,384 ) simd16 -> d20 "CSE - aggressive"
+;* V43 tmp13 [V43,T08] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V44 tmp14 [V44,T24] ( 3, 96 ) simd16 -> d10 HFA(simd16) ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]> +; V45 cse0 [V45,T17] ( 3,384 ) simd16 -> d19 "CSE - aggressive"
; V46 cse1 [V46,T09] ( 4, 12 ) long -> x21 "CSE - moderate" ; V47 cse2 [V47,T11] ( 2, 5 ) byref -> x25 hoist "CSE - moderate"
-; V48 cse3 [V48,T38] ( 4, 4 ) double -> d16 "CSE - moderate" -; V49 rat0 [V49,T30] ( 3, 12 ) simd16 -> d20 "ReplaceWithLclVar is creating a new local variable"
+; V48 cse3 [V48,T39] ( 4, 4 ) double -> d16 "CSE - moderate" +; V49 rat0 [V49,T30] ( 3, 12 ) simd16 -> d19 "ReplaceWithLclVar is creating a new local variable"
; V50 rat1 [V50,T25] ( 3, 96 ) simd16 -> d18 "ReplaceWithLclVar is creating a new local variable" ; V51 rat2 [V51,T04] ( 3, 24 ) ref -> x1 "delegate invoke call" ; @@ -174,18 +174,18 @@ G_M57953_IG03: ; bbWeight=4, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefReg G_M57953_IG04: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref ; gcrRegs -[x22] ; byrRegs -[x25]
- ldr q9, [x23, #0x10] - str q9, [fp, #0x40] // [V14 loc8] - ldr d13, [fp, #0x78] // [V08 loc2]
+ ldr q13, [x23, #0x10] + str q13, [fp, #0x40] // [V14 loc8] + ldr d9, [fp, #0x78] // [V08 loc2]
str wzr, [x20, #0x20]
- dup v15.2d, v13.d[0]
+ dup v8.2d, v9.d[0]
b G_M57953_IG12 ;; size=24 bbWeight=1 PerfScore 9.00 G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x23] mov x0, x21
- mov v8.d[0], v15.d[1] - mov v9.d[0], v11.d[1]
+ mov v15.d[0], v8.d[1] + mov v13.d[0], v11.d[1]
mov v10.d[0], v14.d[1] bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] @@ -200,62 +200,62 @@ G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x0 x15] ; byrRegs -[x14] str wzr, [x22, #0x18]
- ldr d16, [fp, #0x80] // [V07 loc1] - dup v17.2d, v16.d[0] - str q17, [fp, #0x20] // [V18 loc12] - ldr q18, [fp, #0x40] // [V14 loc8] - mov v19.16b, v18.16b - fcmge v20.2d, v17.2d, v18.2d - umaxp v20.4s, v20.4s, v20.4s - umov x0, v20.d[0]
+ ldr d12, [fp, #0x80] // [V07 loc1] + dup v16.2d, v12.d[0] + str q16, [fp, #0x20] // [V18 loc12] + ldr q17, [fp, #0x40] // [V14 loc8] + mov v18.16b, v17.16b + fcmge v19.2d, v16.2d, v17.2d + umaxp v19.4s, v19.4s, v19.4s + umov x0, v19.d[0]
cmp x0, #0
- mov v15.d[1], v8.d[0] - mov v11.d[1], v9.d[0]
+ mov v8.d[1], v15.d[0] + mov v11.d[1], v13.d[0]
mov v14.d[1], v10.d[0] beq G_M57953_IG16 ;; size=92 bbWeight=2 PerfScore 44.00 G_M57953_IG06: ; bbWeight=16, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- mov v20.16b, v19.16b - mov v21.16b, v15.16b - movi v8.4s, #0 - ldr q22, [@RWD32]
+ mov v19.16b, v18.16b + mov v20.16b, v8.16b + movi v10.4s, #0 + ldr q21, [@RWD32]
;; size=16 bbWeight=16 PerfScore 56.00 G_M57953_IG07: ; bbWeight=128, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ fmul v22.2d, v19.2d, v19.2d
fmul v23.2d, v20.2d, v20.2d
- fmul v24.2d, v21.2d, v21.2d - fsub v23.2d, v23.2d, v24.2d - fmul v20.2d, v20.2d, v21.2d - fadd v21.2d, v20.2d, v20.2d - str q19, [fp, #0x10] // [V19 loc13] - fadd v20.2d, v23.2d, v19.2d - fadd v21.2d, v21.2d, v15.2d - add v8.2d, v8.2d, v22.2d
+ fsub v22.2d, v22.2d, v23.2d + fmul v19.2d, v19.2d, v20.2d + fadd v20.2d, v19.2d, v19.2d + str q18, [fp, #0x10] // [V19 loc13] + fadd v19.2d, v22.2d, v18.2d + fadd v20.2d, v20.2d, v8.2d + add v10.2d, v10.2d, v21.2d + fmul v22.2d, v19.2d, v19.2d
fmul v23.2d, v20.2d, v20.2d
- fmul v24.2d, v21.2d, v21.2d - fadd v23.2d, v23.2d, v24.2d - fcmge v23.2d, v11.2d, v23.2d - cmge v24.2d, v14.2d, v8.2d - and v23.2d, v23.2d, v24.2d
+ fadd v22.2d, v22.2d, v23.2d + fcmge v22.2d, v11.2d, v22.2d + cmge v23.2d, v14.2d, v10.2d
and v22.2d, v22.2d, v23.2d
- umaxp v23.4s, v22.4s, v22.4s - umov x0, v23.d[0]
+ and v21.2d, v21.2d, v22.2d + umaxp v22.4s, v21.4s, v21.4s + umov x0, v22.d[0]
cmp x0, #0
- ldr q19, [fp, #0x10] // [V19 loc13]
+ ldr q18, [fp, #0x10] // [V19 loc13]
bne G_M57953_IG07 ;; size=84 bbWeight=128 PerfScore 5184.00 G_M57953_IG08: ; bbWeight=16, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ldr x23, [x22, #0x10] ; gcrRegs +[x23]
- str q19, [fp, #0x10] // [V19 loc13]
+ str q18, [fp, #0x10] // [V19 loc13]
cbnz x23, G_M57953_IG10 ;; size=12 bbWeight=16 PerfScore 80.00 G_M57953_IG09: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref ; gcrRegs -[x23] add x0, x21, #0xD1FFAB1E
- mov v9.d[0], v8.d[1] - mov v10.d[0], v15.d[1] - mov v13.d[0], v11.d[1] - mov v12.d[0], v14.d[1]
+ mov v13.d[0], v10.d[1] + mov v15.d[0], v8.d[1] + mov v12.d[0], v11.d[1] + mov v9.d[0], v14.d[1]
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -279,28 +279,28 @@ G_M57953_IG09: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- mov v8.d[1], v9.d[0] - mov v15.d[1], v10.d[0] - mov v11.d[1], v13.d[0] - mov v14.d[1], v12.d[0]
+ mov v10.d[1], v13.d[0] + mov v8.d[1], v15.d[0] + mov v11.d[1], v12.d[0] + mov v14.d[1], v9.d[0]
;; size=84 bbWeight=8 PerfScore 132.00 G_M57953_IG10: ; bbWeight=16, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz mov w1, wzr
- umov x1, v8.d[0]
+ umov x1, v10.d[0]
mov w2, wzr ldr x0, [x23, #0x08] ; gcrRegs +[x0] ldr x3, [x23, #0x18]
- mov v10.d[0], v15.d[1]
+ mov v15.d[0], v8.d[1]
mov v13.d[0], v11.d[1]
- mov v9.d[0], v14.d[1] - mov v12.d[0], v8.d[1]
+ mov v12.d[0], v14.d[1] + mov v9.d[0], v10.d[1]
blr x3 ; gcrRegs -[x0] ; gcr arg pop 0 mov w1, #1
- mov v8.d[1], v12.d[0] - umov x1, v8.d[1]
+ mov v10.d[1], v9.d[0] + umov x1, v10.d[1]
mov w2, #1 ldr x0, [x23, #0x08] ; gcrRegs +[x0] @@ -308,39 +308,38 @@ G_M57953_IG10: ; bbWeight=16, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRe blr x3 ; gcrRegs -[x0 x23] ; gcr arg pop 0
- ldr q8, [fp, #0x10] // [V19 loc13]
+ ldr q10, [fp, #0x10] // [V19 loc13]
ldr q16, [fp, #0x60] // [V11 loc5]
- fadd v8.2d, v8.2d, v16.2d
+ fadd v10.2d, v10.2d, v16.2d
ldr w0, [x22, #0x18] add w0, w0, #2 str w0, [x22, #0x18] ldr q17, [fp, #0x20] // [V18 loc12]
- fcmge v18.2d, v17.2d, v8.2d
+ fcmge v18.2d, v17.2d, v10.2d
umaxp v18.4s, v18.4s, v18.4s umov x0, v18.d[0] cmp x0, #0
- mov v15.d[1], v10.d[0]
+ mov v8.d[1], v15.d[0]
mov v11.d[1], v13.d[0]
- mov v14.d[1], v9.d[0] - mov v19.16b, v8.16b
+ mov v14.d[1], v12.d[0] + mov v18.16b, v10.16b
bne G_M57953_IG15 ;; size=132 bbWeight=16 PerfScore 712.00 ...

+12 (+0.59%) : 5140.dasm - System.Globalization.TimeSpanFormat:TryFormatStandardushort:ubyte (FullOpts)

@@ -9,39 +9,39 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
-; V01 arg1 [V01,T07] ( 13, 9 ) int -> x19 single-def
+; V01 arg1 [V01,T07] ( 13, 9.50) int -> x19 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]> ; V04 arg4 [V04,T15] ( 4, 3 ) byref -> x21 single-def ; V05 loc0 [V05,T10] ( 15, 8.50) int -> x26
-; V06 loc1 [V06,T20] ( 8, 4 ) int -> x27 ld-addr-op
+; V06 loc1 [V06,T17] ( 8, 4.50) int -> x27 ld-addr-op
; V07 loc2 [V07,T28] ( 5, 3 ) long -> x28
-; V08 loc3 [V08,T21] ( 7, 4 ) int -> [fp+0x4C]
+; V08 loc3 [V08,T18] ( 7, 4.50) int -> [fp+0x4C]
; V09 loc4 [V09,T27] ( 5, 3.50) long -> registers ; V10 loc5 [V10,T36] ( 4, 2.50) long -> [fp+0x40] ; V11 loc6 [V11,T24] ( 5, 4 ) long -> x28 ; V12 loc7 [V12,T37] ( 4, 2.50) long -> [fp+0x38] ; V13 loc8 [V13,T23] ( 6, 4 ) int -> [fp+0x34]
-; V14 loc9 [V14,T17] ( 7, 4.50) int -> [fp+0x30]
+; V14 loc9 [V14,T19] ( 7, 4.50) int -> [fp+0x30]
; V15 loc10 [V15,T29] ( 5, 3 ) int -> x28 ; V16 loc11 [V16,T22] ( 7, 4 ) int -> [fp+0x2C]
-; V17 loc12 [V17,T18] ( 7, 4.50) long -> x2
+; V17 loc12 [V17,T20] ( 7, 4.50) long -> x2
;* V18 loc13 [V18 ] ( 0, 0 ) long -> zero-ref ; V19 loc14 [V19,T35] ( 5, 2.50) long -> x24 ; V20 loc15 [V20 ] ( 2, 1 ) byref -> [fp+0x20] must-init pinned
-; V21 loc16 [V21,T03] ( 33, 23.50) long -> registers -; V22 loc17 [V22,T08] ( 18, 9 ) long -> registers
+; V21 loc16 [V21,T03] ( 33, 25.50) long -> registers +; V22 loc17 [V22,T08] ( 18, 10.50) long -> registers
;# V23 OutArgs [V23 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V24 tmp1 [V24,T40] ( 2, 1 ) int -> x0
+; V24 tmp1 [V24,T43] ( 2, 1 ) int -> x0
;* V25 tmp2 [V25 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]>
-; V26 tmp3 [V26,T41] ( 3, 1.50) int -> x0 -; V27 tmp4 [V27,T42] ( 3, 1.50) int -> x0
+; V26 tmp3 [V26,T44] ( 3, 1.50) int -> x0 +; V27 tmp4 [V27,T45] ( 3, 1.50) int -> x0
;* V28 tmp5 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V29 tmp6 [V29 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp7 [V30 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp8 [V31 ] ( 0, 0 ) long -> zero-ref ;* V32 tmp9 [V32 ] ( 0, 0 ) long -> zero-ref
-; V33 tmp10 [V33,T56] ( 2, 1 ) int -> x0
+; V33 tmp10 [V33,T40] ( 2, 2 ) int -> x0
;* V34 tmp11 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[uint,uint]> ;* V35 tmp12 [V35 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]> ;* V36 tmp13 [V36 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]> @@ -49,24 +49,24 @@ ;* 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,T43] ( 3, 1.50) long -> x28 "Inline stloc first use temp"
+; V41 tmp18 [V41,T46] ( 3, 1.50) long -> x28 "Inline stloc first use temp"
;* V42 tmp19 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]> ;* V43 tmp20 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V44 tmp21 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V45 tmp22 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp23 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V47 tmp24 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp25 [V48,T09] ( 4, 9 ) int -> x2 "Inline stloc first use temp" -; V49 tmp26 [V49,T02] ( 5, 26 ) int -> x27 "Inlining Arg"
+; V48 tmp25 [V48,T09] ( 4, 9.50) int -> x2 "Inline stloc first use temp" +; V49 tmp26 [V49,T02] ( 5, 27 ) int -> x27 "Inlining Arg"
; V50 tmp27 [V50,T06] ( 3, 12 ) int -> x0 "Inline stloc first use temp"
-; V51 tmp28 [V51,T44] ( 3, 1.50) long -> x1 "Inline stloc first use temp"
+; V51 tmp28 [V51,T47] ( 3, 1.50) long -> x1 "Inline stloc first use temp"
;* V52 tmp29 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]> ;* V53 tmp30 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V54 tmp31 [V54,T45] ( 3, 1.50) long -> x28 "Inline stloc first use temp"
+; V54 tmp31 [V54,T48] ( 3, 1.50) long -> x28 "Inline stloc first use temp"
;* V55 tmp32 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]> ;* V56 tmp33 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V57 tmp34 [V57,T30] ( 3, 3 ) int -> x28 "Inlining Arg"
-; V58 tmp35 [V58,T46] ( 3, 1.50) int -> x1 "Inline stloc first use temp"
+; V58 tmp35 [V58,T49] ( 3, 1.50) int -> x1 "Inline stloc first use temp"
;* V59 tmp36 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[uint,uint]> ;* V60 tmp37 [V60 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V61 tmp38 [V61 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[long]> @@ -78,8 +78,8 @@ ;* V67 tmp44 [V67 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V68 tmp45 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V69 tmp46 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V70 tmp47 [V70,T04] ( 8, 18 ) long -> [fp+0x18] "Inline stloc first use temp" -; V71 tmp48 [V71,T00] ( 7, 35 ) int -> x22 "Inlining Arg"
+; V70 tmp47 [V70,T04] ( 8, 19 ) long -> [fp+0x18] "Inline stloc first use temp" +; V71 tmp48 [V71,T00] ( 7, 37 ) int -> x22 "Inlining Arg"
; V72 tmp49 [V72,T11] ( 2, 8 ) int -> x0 "Inline stloc first use temp" ;* V73 tmp50 [V73 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V74 tmp51 [V74 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -87,44 +87,44 @@ ;* V76 tmp53 [V76 ] ( 0, 0 ) int -> zero-ref ;* V77 tmp54 [V77 ] ( 0, 0 ) long -> zero-ref ;* V78 tmp55 [V78 ] ( 0, 0 ) long -> zero-ref
-; V79 tmp56 [V79,T50] ( 2, 1 ) ref -> x28 single-def
+; V79 tmp56 [V79,T51] ( 2, 1 ) ref -> x25 single-def
;* V80 tmp57 [V80 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V81 tmp58 [V81 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V82 tmp59 [V82 ] ( 0, 0 ) int -> zero-ref
-; V83 tmp60 [V83,T31] ( 3, 3 ) int -> x25 "Inlining Arg"
+; V83 tmp60 [V83,T31] ( 3, 3 ) int -> x22 "Inlining Arg"
;* V84 tmp61 [V84 ] ( 0, 0 ) long -> zero-ref ;* V85 tmp62 [V85 ] ( 0, 0 ) long -> zero-ref
-; V86 tmp63 [V86,T51] ( 2, 1 ) ref -> x0 single-def
+; V86 tmp63 [V86,T52] ( 2, 1 ) ref -> x0 single-def
;* V87 tmp64 [V87 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V88 tmp65 [V88 ] ( 0, 0 ) int -> zero-ref
-; V89 tmp66 [V89,T32] ( 3, 3 ) int -> x25 "Inlining Arg"
+; V89 tmp66 [V89,T32] ( 3, 3 ) int -> x22 "Inlining Arg"
;* V90 tmp67 [V90 ] ( 0, 0 ) long -> zero-ref ;* V91 tmp68 [V91 ] ( 0, 0 ) long -> zero-ref
-; V92 tmp69 [V92,T52] ( 2, 1 ) ref -> x0 single-def
+; V92 tmp69 [V92,T53] ( 2, 1 ) ref -> x0 single-def
;* V93 tmp70 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V94 tmp71 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V95 tmp72 [V95,T47] ( 3, 1.50) ubyte -> x0 "Inline return value spill temp"
+; V95 tmp72 [V95,T50] ( 3, 1.50) ubyte -> x0 "Inline return value spill temp"
;* V96 tmp73 [V96 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V97 tmp74 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp75 [V98 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V99 tmp76 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V100 tmp77 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V101 tmp78 [V101 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V102 tmp79 [V102,T38] ( 2, 2 ) long -> x2 "Inlining Arg"
+; V102 tmp79 [V102,T41] ( 2, 2 ) long -> x2 "Inlining Arg"
;* V103 tmp80 [V103 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V104 tmp81 [V104,T05] ( 8, 18 ) long -> x23 "Inline stloc first use temp" -; V105 tmp82 [V105,T01] ( 7, 35 ) int -> x20 "Inlining Arg"
+; V104 tmp81 [V104,T05] ( 8, 19 ) long -> x23 "Inline stloc first use temp" +; V105 tmp82 [V105,T01] ( 7, 37 ) int -> x20 "Inlining Arg"
; V106 tmp83 [V106,T12] ( 2, 8 ) int -> x0 "Inline stloc first use temp" ;* V107 tmp84 [V107 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V108 tmp85 [V108 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V109 tmp86 [V109,T16] ( 4, 3 ) long -> x22 single-def "field V00._ticks (fldOffset=0x0)" P-INDEP
-; V110 tmp87 [V110,T19] ( 4, 2.50) byref -> x23 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp87 [V110,T21] ( 4, 2.50) byref -> x23 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V111 tmp88 [V111,T14] ( 7, 4 ) int -> x20 single-def "field V02._length (fldOffset=0x8)" P-INDEP ; V112 tmp89 [V112,T25] ( 3, 2 ) byref -> x24 single-def "field V03._reference (fldOffset=0x0)" P-INDEP ; V113 tmp90 [V113,T26] ( 2, 2 ) int -> x25 single-def "field V03._length (fldOffset=0x8)" P-INDEP ;* V114 tmp91 [V114 ] ( 0, 0 ) long -> zero-ref "field V25.Item1 (fldOffset=0x0)" P-INDEP ;* V115 tmp92 [V115 ] ( 0, 0 ) long -> zero-ref "field V25.Item2 (fldOffset=0x8)" P-INDEP
-; V116 tmp93 [V116,T53] ( 2, 1 ) byref -> x0 single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+; V116 tmp93 [V116,T54] ( 2, 1 ) byref -> x0 single-def "field V28._reference (fldOffset=0x0)" P-INDEP
;* V117 tmp94 [V117 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP ;* V118 tmp95 [V118 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP ;* V119 tmp96 [V119 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP @@ -144,9 +144,9 @@ ; V133 tmp110 [V133,T59] ( 2, 1 ) long -> x4 "field V55.Item2 (fldOffset=0x8)" P-INDEP ;* V134 tmp111 [V134 ] ( 0, 0 ) int -> zero-ref "field V59.Item1 (fldOffset=0x0)" P-INDEP ; V135 tmp112 [V135,T60] ( 2, 1 ) int -> x2 "field V59.Item2 (fldOffset=0x4)" P-INDEP
-; V136 tmp113 [V136,T54] ( 2, 1 ) byref -> x3 single-def "field V61._reference (fldOffset=0x0)" P-INDEP
+; V136 tmp113 [V136,T55] ( 2, 1 ) byref -> x3 single-def "field V61._reference (fldOffset=0x0)" P-INDEP
;* V137 tmp114 [V137 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
-; V138 tmp115 [V138,T55] ( 2, 1 ) byref -> x3 single-def "field V62._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp115 [V138,T56] ( 2, 1 ) byref -> x3 single-def "field V62._reference (fldOffset=0x0)" P-INDEP
;* V139 tmp116 [V139 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP ;* V140 tmp117 [V140 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP ;* V141 tmp118 [V141 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP @@ -160,10 +160,10 @@ ;* V149 tmp126 [V149 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x8)" P-INDEP ;* V150 tmp127 [V150 ] ( 0, 0 ) byref -> zero-ref single-def "field V99._reference (fldOffset=0x0)" P-INDEP ;* V151 tmp128 [V151 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x8)" P-INDEP
-; V152 tmp129 [V152,T39] ( 2, 2 ) long -> x24 "Cast away GC" -; V153 cse0 [V153,T48] ( 3, 1.50) long -> [fp+0x10] spill-single-def "CSE - moderate" -; V154 cse1 [V154,T49] ( 3, 1.50) long -> x22 "CSE - moderate" -; V155 cse2 [V155,T34] ( 5, 2.50) ref -> x28 multi-def "CSE - moderate"
+; V152 tmp129 [V152,T42] ( 2, 2 ) long -> x24 "Cast away GC" +; V153 cse0 [V153,T38] ( 3, 2 ) long -> [fp+0x10] spill-single-def "CSE - moderate" +; V154 cse1 [V154,T39] ( 3, 2 ) long -> x22 "CSE - moderate" +; V155 cse2 [V155,T34] ( 5, 2.50) ref -> registers multi-def "CSE - moderate"
; V156 cse3 [V156,T13] ( 15, 7.50) ref -> x1 multi-def "CSE - aggressive" ; V157 rat0 [V157,T33] ( 3, 3 ) long -> x0 "ReplaceWithLclVar is creating a new local variable" ; @@ -303,8 +303,9 @@ G_M23189_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 G_M23189_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref mov w2, #7 str w2, [fp, #0x4C] // [V08 loc3]
+ ldr w1, [fp, #0x4C] // [V08 loc3]
b G_M23189_IG17
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ ;; size=16 bbWeight=0.50 PerfScore 2.25
G_M23189_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref, isz cmp w19, #2 beq G_M23189_IG14 @@ -340,18 +341,17 @@ G_M23189_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x2 add w2, w2, #1 b G_M23189_IG15 ;; size=44 bbWeight=4 PerfScore 40.00
-G_M23189_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref
+G_M23189_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref
neg w0, w2 add w2, w0, #7 sxtw w1, w2
- str w1, [fp, #0x4C] // [V08 loc3] - ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=1 PerfScore 1.50
G_M23189_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref
- ldr w2, [fp, #0x4C] // [V08 loc3] - add w0, w26, w2
+ str w1, [fp, #0x4C] // [V08 loc3] + add w0, w26, w1
add w26, w0, w20 ldr w2, [fp, #0x4C] // [V08 loc3]
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M23189_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref, isz mov x1, xzr mov x3, xzr @@ -524,7 +524,7 @@ G_M23189_IG33: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 ;; size=24 bbWeight=0.50 PerfScore 2.25 G_M23189_IG34: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref, isz ; byrRegs -[x24]
- cbz w3, G_M23189_IG37
+ cbz w3, G_M23189_IG40
ldr w1, [fp, #0x34] // [V13 loc8] sxtw w22, w1 sbfiz x0, x3, #1, #32 @@ -548,7 +548,7 @@ G_M23189_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23 cmp x3, x25 bhi G_M23189_IG38 ;; size=48 bbWeight=4 PerfScore 44.00
-G_M23189_IG36: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref
+G_M23189_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref
cmp w22, #10 cset x0, lo movz x4, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) @@ -577,14 +577,13 @@ G_M23189_IG36: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 cmp w19, #0 csel w0, w0, w1, eq strh w0, [x25]
- mov x25, x22 - ;; size=108 bbWeight=0.50 PerfScore 12.50
+ ;; size=104 bbWeight=1 PerfScore 24.50
G_M23189_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref, isz cmp w28, #1
- beq G_M23189_IG40
+ beq G_M23189_IG41
cmp w28, #2 cset x0, eq
- b G_M23189_IG41
+ b G_M23189_IG42
;; size=20 bbWeight=0.50 PerfScore 1.75 G_M23189_IG38: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref ldr x3, [fp, #0x18] // [V70 tmp47] @@ -594,10 +593,14 @@ G_M23189_IG39: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 str x3, [fp, #0x18] // [V70 tmp47] b G_M23189_IG36 ...

+8 (+1.18%) : 14785.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)

@@ -8,53 +8,53 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 13, 7.25) ref -> x19 this class-hnd single-def <System.Collections.BitArray> -; V01 arg1 [V01,T13] ( 8, 5 ) int -> x20 single-def -; V02 loc0 [V02,T07] ( 10, 12 ) int -> registers -; V03 loc1 [V03,T21] ( 6, 3 ) int -> x22 -; V04 loc2 [V04,T01] ( 11, 30 ) int -> x23 -; V05 loc3 [V05,T25] ( 5, 2 ) int -> x20 ld-addr-op -; V06 loc4 [V06,T30] ( 3, 1.50) int -> x24 ld-addr-op -; V07 loc5 [V07,T33] ( 2, 1 ) int -> x4 -; V08 loc6 [V08,T16] ( 3, 5 ) int -> x0 -; V09 loc7 [V09,T34] ( 2, 1 ) int -> x0 -; V10 loc8 [V10,T09] ( 2, 8 ) int -> x4 -; V11 loc9 [V11,T10] ( 2, 8 ) int -> x5
+; V00 this [V00,T08] ( 13, 7.75) ref -> x19 this class-hnd single-def <System.Collections.BitArray> +; V01 arg1 [V01,T14] ( 8, 5 ) int -> x20 single-def +; V02 loc0 [V02,T07] ( 10, 13 ) int -> registers +; V03 loc1 [V03,T22] ( 6, 3 ) int -> x22 +; V04 loc2 [V04,T01] ( 11, 31 ) int -> x23 +; V05 loc3 [V05,T25] ( 5, 2.50) int -> x20 ld-addr-op +; V06 loc4 [V06,T29] ( 3, 2 ) int -> x24 ld-addr-op +; V07 loc5 [V07,T35] ( 2, 1 ) int -> x4 +; V08 loc6 [V08,T18] ( 3, 5 ) int -> x0 +; V09 loc7 [V09,T30] ( 2, 2 ) int -> x0 +; V10 loc8 [V10,T10] ( 2, 8 ) int -> x4 +; V11 loc9 [V11,T11] ( 2, 8 ) int -> x5
;* V12 loc10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T05] ( 2, 16 ) int -> x23 "dup spill"
+; V14 tmp1 [V14,T06] ( 2, 16 ) int -> x23 "dup spill"
; V15 tmp2 [V15,T00] ( 4, 32 ) int -> x21 "impSpillLclRefs"
-; V16 tmp3 [V16,T19] ( 4, 4 ) int -> x1 "impSpillLclRefs" -; V17 tmp4 [V17,T22] ( 3, 3 ) byref -> x0 single-def "dup spill"
+; V16 tmp3 [V16,T09] ( 4, 8 ) int -> x1 "impSpillLclRefs" +; V17 tmp4 [V17,T23] ( 3, 3 ) byref -> x0 single-def "dup spill"
;* V18 tmp5 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V19 tmp6 [V19,T27] ( 4, 2 ) int -> x1 "Inline stloc first use temp"
-; V20 tmp7 [V20,T29] ( 2, 2 ) int -> x4 "Inlining Arg"
+; V20 tmp7 [V20,T31] ( 2, 2 ) int -> x4 "Inlining Arg"
;* V21 tmp8 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V22 tmp9 [V22,T18] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <int[]>
+; V22 tmp9 [V22,T20] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <int[]>
;* V23 tmp10 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V24 tmp11 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V25 tmp12 [V25,T20] ( 4, 4 ) int -> x1 "Inlining Arg" -; V26 tmp13 [V26,T15] ( 5, 5 ) long -> [fp+0x18] spill-single-def "Inlining Arg"
+; V25 tmp12 [V25,T21] ( 4, 4 ) int -> x1 "Inlining Arg" +; V26 tmp13 [V26,T17] ( 5, 5 ) long -> [fp+0x18] spill-single-def "Inlining Arg"
;* V27 tmp14 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V28 tmp15 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V29 tmp16 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V30 tmp17 [V30 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP ; V31 tmp18 [V31,T26] ( 4, 2 ) byref -> x0 "field V24._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp19 [V32,T31] ( 3, 1.50) int -> x1 "field V24._length (fldOffset=0x8)" P-INDEP
+; V32 tmp19 [V32,T33] ( 3, 1.50) int -> x1 "field V24._length (fldOffset=0x8)" P-INDEP
; V33 tmp20 [V33,T02] ( 3, 24 ) ref -> x4 "arr expr"
-;* V34 tmp21 [V34,T11] ( 0, 0 ) ref -> zero-ref "arr expr" -;* V35 tmp22 [V35,T12] ( 0, 0 ) ref -> zero-ref "arr expr" -; V36 tmp23 [V36,T23] ( 3, 3 ) ref -> x2 single-def "arr expr" -;* V37 tmp24 [V37,T35] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V34 tmp21 [V34,T12] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V35 tmp22 [V35,T13] ( 0, 0 ) ref -> zero-ref "arr expr" +; V36 tmp23 [V36,T16] ( 3, 6 ) ref -> x2 single-def "arr expr" +;* V37 tmp24 [V37,T32] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V38 tmp25 [V38,T24] ( 3, 3 ) ref -> x0 single-def "arr expr" ; V39 tmp26 [V39,T36] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V40 cse0 [V40,T17] ( 2, 4.25) int -> x3 hoist "CSE - moderate" -; V41 cse1 [V41,T32] ( 3, 1.50) int -> x21 "CSE - moderate" -; V42 cse2 [V42,T06] ( 8, 7.25) ref -> x2 hoist multi-def "CSE - aggressive"
+; V40 cse0 [V40,T19] ( 2, 4.25) int -> x3 hoist "CSE - moderate" +; V41 cse1 [V41,T34] ( 3, 1.50) int -> x21 "CSE - moderate" +; V42 cse2 [V42,T05] ( 8, 8.25) ref -> x2 hoist multi-def "CSE - aggressive"
; V43 cse3 [V43,T28] ( 4, 2 ) int -> x4 "CSE - moderate"
-; V44 cse4 [V44,T04] ( 9, 18.50) int -> x25 multi-def "CSE - aggressive" -; V45 cse5 [V45,T03] ( 9, 18.50) byref -> x26 multi-def "CSE - aggressive" -; V46 cse6 [V46,T14] ( 4, 5.25) int -> registers hoist multi-def "CSE - aggressive"
+; V44 cse4 [V44,T04] ( 9, 20 ) int -> x25 multi-def "CSE - aggressive" +; V45 cse5 [V45,T03] ( 9, 20 ) byref -> x26 multi-def "CSE - aggressive" +; V46 cse6 [V46,T15] ( 4, 6.25) int -> registers hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -74,7 +74,7 @@ G_M25748_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bgt G_M25748_IG05 ;; size=8 bbWeight=1 PerfScore 1.50 G_M25748_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M25748_IG19
+ tbnz w20, #31, G_M25748_IG20
ldr w0, [x19, #0x14] add w0, w0, #1 str w0, [x19, #0x14] @@ -96,12 +96,12 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 add w0, w4, #31 lsr w22, w0, #5 cmp w20, w4
- bge G_M25748_IG10
+ bge G_M25748_IG06
lsr w1, w20, #5 and w20, w20, #31 sxtw w23, w1 and w24, w4, #31
- cbnz w20, G_M25748_IG06
+ cbnz w20, G_M25748_IG07
neg w4, w24 add w4, w4, #32 movn w0, #0 @@ -113,7 +113,7 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 sub w3, w22, #1 ldr w25, [x0, #0x08] cmp w3, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
add x26, x0, #16 ; byrRegs +[x26] sub w0, w22, #1 @@ -138,14 +138,19 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[x0 x2] ; byrRegs -[x26] ; gcr arg pop 0
- b G_M25748_IG10 - ;; size=152 bbWeight=0.50 PerfScore 18.00 -G_M25748_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, w21 + b G_M25748_IG11 + ;; size=156 bbWeight=0.50 PerfScore 18.25 +G_M25748_IG06: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov w6, w21 + b G_M25748_IG11 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M25748_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w0, w22, #1 cmp w23, w0
- bge G_M25748_IG12
+ bge G_M25748_IG13
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M25748_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25748_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x2, [x19, #0x08] ; gcrRegs +[x2] and w1, w20, #31 @@ -153,12 +158,12 @@ G_M25748_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, add w3, w3, #32 and w3, w3, #31 ;; size=20 bbWeight=0.25 PerfScore 1.25
-G_M25748_IG08: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG09: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
mov x4, x2 ; gcrRegs +[x4] ldr w25, [x4, #0x08] cmp w23, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
add x26, x4, #16 ; byrRegs +[x26] ldr w4, [x26, w23, UXTW #2] @@ -166,18 +171,18 @@ G_M25748_IG08: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, lsr w4, w4, w1 add w23, w23, #1 cmp w23, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
ldr w5, [x26, w23, UXTW #2] lsl w5, w5, w3 add w6, w21, #1 cmp w21, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
orr w4, w5, w4 str w4, [x26, w21, UXTW #2] cmp w23, w0
- blt G_M25748_IG11
+ blt G_M25748_IG12
;; size=76 bbWeight=4 PerfScore 78.00
-G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] ; byrRegs -[x26] neg w2, w24 @@ -188,7 +193,7 @@ G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x2] ldr w25, [x2, #0x08] cmp w23, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
add x26, x2, #16 ; byrRegs +[x26] ldr w1, [x26, w23, UXTW #2] @@ -196,65 +201,64 @@ G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, sxtw w1, w6 add w6, w1, #1 cmp w1, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
and w2, w20, #31 ; gcrRegs -[x2] lsr w0, w0, w2 str w0, [x26, w1, UXTW #2]
- mov w21, w6 - ;; size=76 bbWeight=0.50 PerfScore 9.25 -G_M25748_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=72 bbWeight=1 PerfScore 18.00 +G_M25748_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x26] ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- sub w1, w22, w21 - cbnz x0, G_M25748_IG13 - orr w1, w21, w1 - cbnz w1, G_M25748_IG20
+ sub w1, w22, w6 + cbnz x0, G_M25748_IG14 + orr w6, w6, w1 + cbnz w6, G_M25748_IG21
mov x0, xzr ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, wzr
- b G_M25748_IG14
+ b G_M25748_IG15
;; size=32 bbWeight=0.50 PerfScore 4.00
-G_M25748_IG11: ; bbWeight=2, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+G_M25748_IG12: ; bbWeight=2, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x2] ; byrRegs -[x0] mov w21, w6
- b G_M25748_IG08
+ b G_M25748_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M25748_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25748_IG13: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] mov w6, w21
- b G_M25748_IG09
+ b G_M25748_IG10
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M25748_IG13: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG14: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- mov w2, w21
+ mov w2, w6
add x2, x2, w1, UXTW ldr w3, [x0, #0x08] cmp x2, x3
- bhi G_M25748_IG20
+ bhi G_M25748_IG21
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ...

+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, 57.75) byref -> x19 this single-def +; V01 arg1 [V01,T10] ( 8, 6 ) byref -> x21 single-def +; V02 arg2 [V02,T05] ( 9, 13.50) byref -> x20 single-def +; V03 arg3 [V03,T11] ( 4, 3.50) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo> +; V04 loc0 [V04,T07] ( 3, 12 ) int -> x2 +; V05 loc1 [V05,T19] ( 3, 2 ) 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.50) int -> x2 "CSE - moderate" +; V63 cse1 [V63,T17] ( 3, 2.50) int -> x23 "CSE - moderate" +; V64 cse2 [V64,T18] ( 3, 2.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,111 +93,114 @@ 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_IG11
;; 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=1, 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_IG12 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M44776_IG04: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
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
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 - 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
+ cbnz w0, G_M44776_IG10 + ;; size=32 bbWeight=0.50 PerfScore 4.00 +G_M44776_IG05: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref + b G_M44776_IG21 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M44776_IG06: ; 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 - 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
+ tbnz w0, #7, G_M44776_IG10 + b G_M44776_IG21 + ;; size=24 bbWeight=0.50 PerfScore 3.25 +G_M44776_IG07: ; 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_IG23 + 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 w0, [x19, #0x0C] cmp w0, #0xD1FFAB1E
- blo G_M44776_IG10
+ blo G_M44776_IG09
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_IG08: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref + b G_M44776_IG10
;; size=4 bbWeight=4 PerfScore 4.00
-G_M44776_IG10: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG09: ; 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_IG10: ; 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_IG07 + ;; size=24 bbWeight=4 PerfScore 36.00 +G_M44776_IG11: ; bbWeight=1, 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
+ b G_M44776_IG22 + ;; size=12 bbWeight=1 PerfScore 2.50 +G_M44776_IG12: ; 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
+ cmp w24, 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
+ ;; size=32 bbWeight=0.50 PerfScore 5.25 +G_M44776_IG13: ; 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_IG14: ; 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
- bhs G_M44776_IG22
+ bhs G_M44776_IG23
...

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,101.25) 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=1.00, 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=1.00 PerfScore 0.50 +G_M4100_IG06: ; bbWeight=1.00, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 add sp, sp, #48 ret lr
- ;; size=12 bbWeight=0 PerfScore 0.00
+ ;; size=12 bbWeight=1.00 PerfScore 2.49 +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 503.20, 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)

-36 (-13.04%) : 96277.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)

@@ -6,21 +6,21 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 99.73
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 99.73
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> x20
+; V01 loc0 [V01,T02] ( 5,200.98) ubyte -> x20
; V02 loc1 [V02,T06] ( 4,101.00) ref -> x21 class-hnd <<unknown class>> ; V03 loc2 [V03,T09] ( 3, 0.02) ref -> x2 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> x19
+; 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 @@ -39,109 +39,108 @@ G_M16914_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref, isz ldr w22, [x2, #0x08] cmp w22, w19
- ble G_M16914_IG11 - ;; size=12 bbWeight=0.01 PerfScore 0.05 -G_M16914_IG03: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref, isz - tbnz w19, #31, G_M16914_IG06 - ;; 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 - ; byrRegs +[x23] - ldrsb wzr, [x21] - ;; size=8 bbWeight=0.01 PerfScore 0.04 -G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz - ; gcrRegs -[x2] - ldr x1, [x23, w19, UXTW #3] - ; gcrRegs +[x1] - mov x0, x21 - ; gcrRegs +[x0] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; byrRegs +[x0] - cbnz x0, G_M16914_IG09 - mov w2, wzr - eor w0, w20, w2 - ; byrRegs -[x0] - 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] - ; byrRegs -[x23] - 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 - ; gcrRegs -[x2] - cmp w19, w22 - bhs G_M16914_IG08 - ldr x1, [x23, w19, UXTW #3] - ; gcrRegs +[x1] - ldrsb wzr, [x21] - mov x0, x21 - ; gcrRegs +[x0] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; byrRegs +[x0] - cbnz x0, G_M16914_IG10 - 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 - eor w0, w20, w2 - uxtb w20, w0 - add w19, w19, #1 - cmp w22, w19 - bgt G_M16914_IG07 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M16914_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - ; byrRegs -[x23]
+ ;; size=12 bbWeight=0.01 PerfScore 0.05 +G_M16914_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x2 x21]
mov w0, w20
- ;; size=4 bbWeight=0 PerfScore 0.00 -G_M16914_IG12: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=1.00 PerfScore 0.50 +G_M16914_IG04: ; bbWeight=1.00, 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=1.00 PerfScore 6.52 +G_M16914_IG05: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x2 x21] + tbnz w19, #31, G_M16914_IG10 + ;; size=4 bbWeight=0.01 PerfScore 0.01 +G_M16914_IG06: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref + add x23, x2, #16 + ; byrRegs +[x23] + ldrsb wzr, [x21] + ;; size=8 bbWeight=0.01 PerfScore 0.04 +G_M16914_IG07: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz + ; gcrRegs -[x2] + ldr x1, [x23, w19, UXTW #3] + ; gcrRegs +[x1] + mov x0, x21 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0-x1] + ; byrRegs +[x0] + cbnz x0, G_M16914_IG14 + mov w2, wzr + ;; size=36 bbWeight=98.99 PerfScore 1039.40 +G_M16914_IG08: ; 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 + bgt G_M16914_IG07 + ;; size=20 bbWeight=98.99 PerfScore 296.97 +G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21] + ; byrRegs -[x23] + b G_M16914_IG03 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M16914_IG10: ; 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_IG11: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz + ; gcrRegs -[x2] + cmp w19, w22 + bhs G_M16914_IG13 + ldr x1, [x23, w19, UXTW #3] + ; gcrRegs +[x1] + ldrsb wzr, [x21] + mov x0, x21 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0-x1] + ; byrRegs +[x0] + cbnz x0, G_M16914_IG15 + mov w2, wzr + ;; size=48 bbWeight=1.00 PerfScore 15.00 +G_M16914_IG12: ; 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_IG11 + b G_M16914_IG03 + ;; size=24 bbWeight=1.00 PerfScore 4.00 +G_M16914_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21] + ; byrRegs -[x23] + 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_IG08 + ;; 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_IG12 + ;; 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 240, prolog size 20, PerfScore 1363.59, instruction count 60, allocated bytes for code 240 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -152,7 +151,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-13.04%) : 90002.dasm - System.Collections.PerfFrozenDictionaryString:TryGetValueTrueDictionary():ubyte:this (Tier1-OSR)

@@ -6,21 +6,21 @@ ; optimized using Dynamic PGO ; fp based frame ; partially interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 100.13
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 100.13
; 1 inlinees with PGO data; 0 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ; ;* V00 this [V00 ] ( 0, 0 ) ref -> zero-ref this class-hnd single-def <System.Collections.Perf_FrozenDictionary_String>
-; V01 loc0 [V01,T02] ( 9,199.98) ubyte -> x20
+; V01 loc0 [V01,T02] ( 5,200.98) ubyte -> x20
; V02 loc1 [V02,T06] ( 4,101.00) ref -> x21 class-hnd <<unknown class>> ; V03 loc2 [V03,T09] ( 3, 0.02) ref -> x2 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> x19
+; 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 @@ -39,109 +39,110 @@ G_M16914_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M16914_IG02: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref, isz ldr w22, [x2, #0x08] cmp w22, w19
- ble G_M16914_IG11 - ;; 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 - ;; 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 - ; byrRegs +[x23] - ldrsb wzr, [x21] - ;; size=8 bbWeight=0.01 PerfScore 0.03 -G_M16914_IG05: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz - ; gcrRegs -[x2] - ldr x1, [x23, w19, UXTW #3] - ; gcrRegs +[x1] - mov x0, x21 - ; gcrRegs +[x0] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; byrRegs +[x0] - cbnz x0, G_M16914_IG09 - mov w2, wzr - eor w0, w20, w2 - ; byrRegs -[x0] - 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] - ; byrRegs -[x23] - 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 - ; gcrRegs -[x2] - cmp w19, w22 - bhs G_M16914_IG08 - ldr x1, [x23, w19, UXTW #3] - ; gcrRegs +[x1] - ldrsb wzr, [x21] - mov x0, x21 - ; gcrRegs +[x0] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2 - ; gcrRegs -[x0-x1] - ; byrRegs +[x0] - cbnz x0, G_M16914_IG10 - 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 - eor w0, w20, w2 - uxtb w20, w0 - add w19, w19, #1 - cmp w22, w19 - bgt G_M16914_IG07 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M16914_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[x21] - ; byrRegs -[x23]
+ ;; size=12 bbWeight=0.01 PerfScore 0.04 +G_M16914_IG03: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x2 x21]
mov w0, w20
- ;; size=4 bbWeight=0 PerfScore 0.00 -G_M16914_IG12: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=1.00 PerfScore 0.50 +G_M16914_IG04: ; bbWeight=1.00, 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=1.00 PerfScore 6.49 +G_M16914_IG05: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[x2 x21] + tbnz w19, #31, G_M16914_IG10 + ;; size=4 bbWeight=0.01 PerfScore 0.01 +G_M16914_IG06: ; bbWeight=0.01, gcrefRegs=200004 {x2 x21}, byrefRegs=0000 {}, byref + add x23, x2, #16 + ; byrRegs +[x23] + ldrsb wzr, [x21] + ;; size=8 bbWeight=0.01 PerfScore 0.03 +G_M16914_IG07: ; bbWeight=98.99, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz + ; gcrRegs -[x2] + ldr x1, [x23, w19, UXTW #3] + ; gcrRegs +[x1] + mov x0, x21 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0-x1] + ; byrRegs +[x0] + cbnz x0, G_M16914_IG15 + mov w2, wzr + ;; size=36 bbWeight=98.99 PerfScore 1039.40 +G_M16914_IG08: ; 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 + bgt G_M16914_IG07 + ;; size=20 bbWeight=98.99 PerfScore 296.97 +G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21] + ; byrRegs -[x23] + b G_M16914_IG03 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M16914_IG10: ; 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_IG11: ; bbWeight=1.00, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref, isz + ; gcrRegs -[x2] + cmp w19, w22 + bhs G_M16914_IG14 + ldr x1, [x23, w19, UXTW #3] + ; gcrRegs +[x1] + ldrsb wzr, [x21] + mov x0, x21 + ; gcrRegs +[x0] + movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2] + blr x2 + ; gcrRegs -[x0-x1] + ; byrRegs +[x0] + cbnz x0, G_M16914_IG16 + mov w2, wzr + ;; size=48 bbWeight=1.00 PerfScore 15.00 +G_M16914_IG12: ; 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_IG11 + ;; size=20 bbWeight=1.00 PerfScore 3.00 +G_M16914_IG13: ; bbWeight=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x21] + ; byrRegs -[x23] + b G_M16914_IG03 + ;; size=4 bbWeight=1.00 PerfScore 1.00 +G_M16914_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_RNGCHKFAIL + ;; size=4 bbWeight=0 PerfScore 0.00 +G_M16914_IG15: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref + ; gcrRegs +[x21] + ; byrRegs +[x23] + mov w2, #1 + b G_M16914_IG08 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M16914_IG16: ; bbWeight=0, gcrefRegs=200000 {x21}, byrefRegs=800000 {x23}, byref + mov w2, #1 + b G_M16914_IG12 + ;; 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 240, prolog size 20, PerfScore 1363.56, instruction count 60, allocated bytes for code 240 (MethodHash=0a16bded) for method System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
; ============================================================ Unwind Info: @@ -152,7 +153,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 69 (0x00045) Actual length = 276 (0x000114)
+ Function Length : 60 (0x0003c) Actual length = 240 (0x0000f0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+13.51%) : 123148.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.BigStruct]:InsertionSort(System.Span1[System.Collections.BigStruct]) (Tier1)

@@ -10,11 +10,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.BigStruct]>
-; V01 loc0 [V01,T09] ( 5, 96.58) int -> x2
+; V01 loc0 [V01,T07] ( 5, 96.58) int -> x2
; V02 loc1 [V02,T11] ( 2, 47.79) struct (32) [fp+0x10] do-not-enreg[SF] ld-addr-op <System.Collections.BigStruct>
-; V03 loc2 [V03,T00] ( 7,211.75) int -> x2
+; V03 loc2 [V03,T01] ( 7,211.75) int -> x2
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 2,115.89) byref -> x6 "impAppendStmt"
+; V05 tmp1 [V05,T04] ( 2,115.89) byref -> x6 "impAppendStmt"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]> ;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]> @@ -22,10 +22,10 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "Inlining Arg" <System.Collections.BigStruct>
-;* V13 tmp9 [V13,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V14 tmp10 [V14,T01] ( 2,149.05) int -> x6 "Inlining Arg"
+;* V13 tmp9 [V13,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V14 tmp10 [V14,T02] ( 3,178.60) int -> x6 "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]>
-; V16 tmp12 [V16,T02] ( 6,144.00) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp12 [V16,T03] ( 6,144.00) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V17 tmp13 [V17,T13] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP @@ -37,11 +37,11 @@ ;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V28 tmp24 [V28,T06] ( 3, 85.05) int -> x5 "V02.[012..016)"
+; V28 tmp24 [V28,T06] ( 4, 99.83) int -> x5 "V02.[012..016)"
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "V12.[012..016)"
-; V30 tmp26 [V30,T07] ( 3, 63.32) byref -> x4 "Spilling address for field-by-field copy" -; V31 tmp27 [V31,T08] ( 3,223.41) byref -> x2 "Spilling address for field-by-field copy" -; V32 cse0 [V32,T04] ( 3,103.50) long -> x4 "CSE - aggressive"
+; V30 tmp26 [V30,T09] ( 3, 63.32) byref -> x4 "Spilling address for field-by-field copy" +; V31 tmp27 [V31,T00] ( 3,223.41) byref -> x2 "Spilling address for field-by-field copy" +; V32 cse0 [V32,T05] ( 3,103.50) long -> x4 "CSE - aggressive"
; V33 cse1 [V33,T12] ( 3, 39.23) int -> x1 "CSE - aggressive" ; V34 cse2 [V34,T10] ( 3, 58.34) int -> x3 "CSE - aggressive" ; @@ -56,7 +56,7 @@ G_M17128_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov w2, wzr sub w1, w1, #1 cmp w1, #0
- ble G_M17128_IG08
+ ble G_M17128_IG12
;; size=16 bbWeight=1 PerfScore 2.50 G_M17128_IG03: ; bbWeight=10.55, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref add w3, w2, #1 @@ -82,7 +82,7 @@ G_M17128_IG04: ; bbWeight=28.97, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ;; size=28 bbWeight=28.97 PerfScore 202.81 G_M17128_IG05: ; bbWeight=39.78, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs -[x4 x6]
- tbnz w2, #31, G_M17128_IG07
+ tbnz w2, #31, G_M17128_IG08
;; size=4 bbWeight=39.78 PerfScore 39.78 G_M17128_IG06: ; bbWeight=37.26, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz sbfiz x4, x2, #5, #32 @@ -91,9 +91,12 @@ G_M17128_IG06: ; bbWeight=37.26, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ldr w6, [x6, #0x0C] ; byrRegs -[x6] cmp w5, w6
- blt G_M17128_IG04
+ bge G_M17128_IG10
;; size=20 bbWeight=37.26 PerfScore 223.58
-G_M17128_IG07: ; bbWeight=37.23, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M17128_IG07: ; bbWeight=22.46, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M17128_IG04 + ;; size=4 bbWeight=22.46 PerfScore 22.46 +G_M17128_IG08: ; bbWeight=37.23, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1 sbfiz x2, x2, #5, #32 add x2, x0, x2 @@ -106,13 +109,25 @@ G_M17128_IG07: ; bbWeight=37.23, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, cmp w2, w1 blt G_M17128_IG03 ;; size=36 bbWeight=37.23 PerfScore 297.88
-G_M17128_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M17128_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M17128_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M17128_IG10: ; bbWeight=14.78, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + cmp w5, w6 + ble G_M17128_IG08 + ;; size=8 bbWeight=14.78 PerfScore 22.16 +G_M17128_IG11: ; bbWeight=14.77, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M17128_IG08 + ;; size=4 bbWeight=14.77 PerfScore 14.77 +G_M17128_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 148, prolog size 8, PerfScore 875.59, instruction count 37, allocated bytes for code 148 (MethodHash=3829bd17) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
+; Total bytes of code 168, prolog size 8, PerfScore 935.98, instruction count 42, allocated bytes for code 168 (MethodHash=3829bd17) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
; ============================================================ Unwind Info: @@ -123,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+19.23%) : 80123.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span1[System.Collections.IntStruct]) (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.IntStruct]>
-; V01 loc0 [V01,T06] ( 5, 96.96) int -> x2
+; V01 loc0 [V01,T04] ( 5, 96.96) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct> ; V03 loc2 [V03,T00] ( 8,241.72) int -> x2 ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -22,12 +22,12 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> ; V16 tmp12 [V16,T01] ( 6,144.82) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V17 tmp13 [V17,T09] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 85.65) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4,100.49) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP @@ -36,7 +36,7 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 75.34) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 90.18) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ; V30 cse0 [V30,T08] ( 3, 39.64) int -> x1 "CSE - aggressive" @@ -53,7 +53,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov w2, wzr sub w1, w1, #1 cmp w1, #0
- ble G_M24360_IG08
+ ble G_M24360_IG12
;; size=16 bbWeight=1 PerfScore 2.50 G_M24360_IG03: ; bbWeight=10.34, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref add w3, w2, #1 @@ -71,27 +71,42 @@ G_M24360_IG04: ; bbWeight=29.08, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ;; size=24 bbWeight=29.08 PerfScore 189.03 G_M24360_IG05: ; bbWeight=39.74, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs -[x5]
- tbnz w2, #31, G_M24360_IG07
+ tbnz w2, #31, G_M24360_IG08
;; size=4 bbWeight=39.74 PerfScore 39.74 G_M24360_IG06: ; bbWeight=37.67, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ldr w5, [x0, w2, SXTW #2] cmp w4, w5
- blt G_M24360_IG04
+ bge G_M24360_IG10
;; size=12 bbWeight=37.67 PerfScore 169.52
-G_M24360_IG07: ; bbWeight=37.64, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M24360_IG07: ; bbWeight=22.81, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG04 + ;; size=4 bbWeight=22.81 PerfScore 22.81 +G_M24360_IG08: ; bbWeight=37.64, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1 str w4, [x0, w2, SXTW #2] sxtw w2, w3 cmp w2, w1 blt G_M24360_IG03 ;; size=20 bbWeight=37.64 PerfScore 131.75
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M24360_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M24360_IG10: ; bbWeight=14.83, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + cmp w4, w5 + ble G_M24360_IG08 + ;; size=8 bbWeight=14.83 PerfScore 22.25 +G_M24360_IG11: ; bbWeight=14.83, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG08 + ;; size=4 bbWeight=14.83 PerfScore 14.83 +G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 582.56, instruction count 26, allocated bytes for code 104 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 643.45, instruction count 31, allocated bytes for code 124 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================ Unwind Info: @@ -102,7 +117,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+19.23%) : 92772.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span1[System.Collections.IntStruct]) (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.IntStruct]>
-; V01 loc0 [V01,T06] ( 5, 96.49) int -> x2
+; V01 loc0 [V01,T04] ( 5, 96.49) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct> ; V03 loc2 [V03,T00] ( 8,242.48) int -> x2 ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -22,12 +22,12 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> ; V16 tmp12 [V16,T01] ( 6,145.06) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V17 tmp13 [V17,T09] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 85.29) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4, 99.78) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP @@ -36,7 +36,7 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 75.09) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 89.58) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ; V30 cse0 [V30,T08] ( 3, 39.48) int -> x1 "CSE - aggressive" @@ -53,7 +53,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov w2, wzr sub w1, w1, #1 cmp w1, #0
- ble G_M24360_IG08
+ ble G_M24360_IG12
;; size=16 bbWeight=1 PerfScore 2.50 G_M24360_IG03: ; bbWeight=10.27, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref add w3, w2, #1 @@ -71,27 +71,42 @@ G_M24360_IG04: ; bbWeight=29.39, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ;; size=24 bbWeight=29.39 PerfScore 191.00 G_M24360_IG05: ; bbWeight=39.65, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs -[x5]
- tbnz w2, #31, G_M24360_IG07
+ tbnz w2, #31, G_M24360_IG08
;; size=4 bbWeight=39.65 PerfScore 39.65 G_M24360_IG06: ; bbWeight=37.54, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ldr w5, [x0, w2, SXTW #2] cmp w4, w5
- blt G_M24360_IG04
+ bge G_M24360_IG10
;; size=12 bbWeight=37.54 PerfScore 168.95
-G_M24360_IG07: ; bbWeight=37.48, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M24360_IG07: ; bbWeight=22.98, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG04 + ;; size=4 bbWeight=22.98 PerfScore 22.98 +G_M24360_IG08: ; bbWeight=37.48, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1 str w4, [x0, w2, SXTW #2] sxtw w2, w3 cmp w2, w1 blt G_M24360_IG03 ;; size=20 bbWeight=37.48 PerfScore 131.17
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M24360_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M24360_IG10: ; bbWeight=14.49, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + cmp w4, w5 + ble G_M24360_IG08 + ;; size=8 bbWeight=14.49 PerfScore 21.74 +G_M24360_IG11: ; bbWeight=14.49, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG08 + ;; size=4 bbWeight=14.49 PerfScore 14.49 +G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 582.98, instruction count 26, allocated bytes for code 104 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 643.19, instruction count 31, allocated bytes for code 124 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================ Unwind Info: @@ -102,7 +117,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.linux.arm64.checked.mch

-32 (-1.75%) : 24711.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)

@@ -22,7 +22,7 @@ ; V11 loc7 [V11,T09] ( 18, 40 ) ushort -> x24 ;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 loc9 [V13,T43] ( 3, 6 ) ubyte -> x0
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T18] ( 7, 14 ) ushort -> x25 ;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune> ; V17 loc13 [V17,T28] ( 4, 8 ) int -> x27 @@ -343,8 +343,9 @@ G_M13139_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
+ mov w22, w25
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 28.00
+ ;; size=44 bbWeight=2 PerfScore 29.00
G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -354,8 +355,9 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
+ mov w22, w25
b G_M13139_IG45
- ;; size=28 bbWeight=2 PerfScore 14.00
+ ;; size=32 bbWeight=2 PerfScore 15.00
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 bgt G_M13139_IG21 @@ -383,9 +385,8 @@ G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ;; size=28 bbWeight=2 PerfScore 13.00 G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref add w22, w22, #2
- mov w25, w22
b G_M13139_IG45
- ;; size=12 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref sbfiz x0, x22, #1, #32 add x0, x19, x0 @@ -402,9 +403,8 @@ G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ; gcr arg pop 0 add w0, w0, w22 sub w22, w0, #1
- mov w25, w22
b G_M13139_IG45
- ;; size=64 bbWeight=2 PerfScore 24.00
+ ;; size=60 bbWeight=2 PerfScore 23.00
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -415,9 +415,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -427,9 +426,8 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22
b G_M13139_IG45
- ;; size=32 bbWeight=2 PerfScore 15.00
+ ;; size=28 bbWeight=2 PerfScore 14.00
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 ble G_M13139_IG43 @@ -667,19 +665,16 @@ G_M13139_IG40: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, cmp w24, w27 blt G_M13139_IG35 ;; size=112 bbWeight=16 PerfScore 344.00
-G_M13139_IG41: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M13139_IG41: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] ldrb w0, [fp, #-0x80] // [V14 loc10]
- cbz w0, G_M13139_IG42
+ cbz w0, G_M13139_IG45 + ;; size=8 bbWeight=4 PerfScore 12.00 +G_M13139_IG42: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
add w27, w22, #1 sxtw w22, w27
- mov w25, w22
b G_M13139_IG45
- ;; size=24 bbWeight=2 PerfScore 11.00 -G_M13139_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref - mov w25, w22 - b G_M13139_IG45 - ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=2 PerfScore 4.00
G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -690,9 +685,8 @@ G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -702,14 +696,12 @@ G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22 - ;; size=28 bbWeight=2 PerfScore 13.00
+ ;; size=24 bbWeight=2 PerfScore 12.00
G_M13139_IG45: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- add w25, w25, #1 - cmp w25, w20 - mov w22, w25
+ add w22, w22, #1 + cmp w22, w20
blt G_M13139_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
+ ;; size=12 bbWeight=4 PerfScore 8.00
G_M13139_IG46: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x23] sub x0, fp, #120 // [V05 loc1] @@ -772,7 +764,7 @@ G_M13139_IG50: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1828, prolog size 76, PerfScore 1420.00, instruction count 457, allocated bytes for code 1828 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
+; Total bytes of code 1796, prolog size 76, PerfScore 1417.50, instruction count 449, allocated bytes for code 1796 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -783,7 +775,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 457 (0x001c9) Actual length = 1828 (0x000724)
+ Function Length : 449 (0x001c1) Actual length = 1796 (0x000704)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-1.01%) : 31509.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)

@@ -22,20 +22,20 @@ ; V11 tmp2 [V11,T25] ( 4, 16 ) 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"
+; V14 tmp5 [V14,T07] ( 6, 24 ) ref -> x3 "arr expr"
; V15 cse0 [V15,T06] ( 8, 26.89) 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" ; 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,T15] ( 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, 20.95) long -> x10 "CSE - aggressive" +; V23 cse8 [V23,T03] ( 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"
+; V27 cse12 [V27,T23] ( 6, 0.36) long -> x10 "CSE - conservative"
; ; Lcl frame size = 0 @@ -65,18 +65,18 @@ G_M64421_IG03: ; bbWeight=1, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x 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
+ bhs G_M64421_IG28
add x4, x2, #16 ; byrRegs +[x4] mov w10, w5 ldr w4, [x4, x10, LSL #2] ; byrRegs -[x4] cmp w4, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
mov w4, w4 ldr d16, [x7, x4, LSL #3] cmp w5, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
ldr d17, [x7, x10, LSL #3] str d17, [x7, x4, LSL #3] cmn w6, #1 @@ -87,7 +87,7 @@ G_M64421_IG04: ; bbWeight=2, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x ;; 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
+ bhs G_M64421_IG28
str d16, [x7, w5, UXTW #3] add w5, w5, #1 cmp w5, w1 @@ -95,23 +95,23 @@ G_M64421_IG05: ; bbWeight=8, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x ;; 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
+ sub w2, w1, #1 + sxtw w5, w2
tbnz w5, #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 ble G_M64421_IG16
- ldr w10, [x0, #0x08] - cmp w10, w5
+ ldr w4, [x0, #0x08] + cmp w4, w5
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, w5 + ldr d16, [x7, x10, LSL #3] + cmp w5, 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 @@ -120,28 +120,28 @@ G_M64421_IG09: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8} 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 w4, w5
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 @@ -150,24 +150,24 @@ G_M64421_IG11: ; bbWeight=15.68, gcrefRegs=0040 {x6}, byrefRegs=0180 {x7 ;; size=40 bbWeight=15.68 PerfScore 243.06 G_M64421_IG12: ; bbWeight=3.96, 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 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 @@ -176,92 +176,89 @@ G_M64421_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8} 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]
+ ; byrRegs -[x3] + ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- mov x2, x6 - ; gcrRegs +[x2] - ldr w0, [x2, #0x08]
+ mov x3, x6 + ; gcrRegs +[x3] + ldr w0, [x3, #0x08]
cmp w5, w0
- bhs G_M64421_IG29 - add x2, x2, #16 - ; gcrRegs -[x2] - ; byrRegs +[x2] - ldr d17, [x2, x11, LSL #3]
+ bhs G_M64421_IG28 + add x3, x3, #16 + ; gcrRegs -[x3] + ; byrRegs +[x3] + ldr d17, [x3, x10, LSL #3]
fdiv d17, d16, d17
- str d17, [x7, x11, LSL #3]
+ str d17, [x7, x10, LSL #3]
sub w5, w5, #1 tbz w5, #31, G_M64421_IG08 ;; size=44 bbWeight=3.96 PerfScore 110.88 G_M64421_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x6]
- ; byrRegs -[x2 x7-x8]
+ ; byrRegs -[x3 x7-x8]
b G_M64421_IG21 ;; size=4 bbWeight=1 PerfScore 1.00 G_M64421_IG16: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz ; gcrRegs +[x0] ; byrRegs +[x7-x8] cmp w5, w9
- bhs G_M64421_IG29 - mov w11, w5 - ldr d16, [x7, x11, LSL #3] - cmp w5, w4
+ bhs G_M64421_IG28 + mov w10, w5 + ldr d16, [x7, x10, LSL #3] + cmp w5, w2
beq G_M64421_IG20 ;; size=24 bbWeight=0.04 PerfScore 0.26 G_M64421_IG17: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
- add w10, w5, #1 - cmp w10, w1
+ add w4, w5, #1 + cmp w4, w1
bge G_M64421_IG20 ;; size=12 bbWeight=0.02 PerfScore 0.04 G_M64421_IG18: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref
- ldr w2, [x0, #0x08]
+ ldr w3, [x0, #0x08]
;; size=4 bbWeight=0.01 PerfScore 0.03 G_M64421_IG19: ; bbWeight=0.16, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
- cmp w5, w2 - bhs G_M64421_IG29 - ldr x3, [x8, x11, LSL #3] - ; gcrRegs +[x3] - mov x6, x3
+ cmp w5, w3 + bhs G_M64421_IG28 + ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- ldr w3, [x6, #0x08] - ; gcrRegs -[x3] - cmp w10, w3 - bhs G_M64421_IG29 - add x3, x6, #16 - ; byrRegs +[x3] - ldr d17, [x3, w10, UXTW #3] - cmp w10, w9 - bhs G_M64421_IG29 - ldr d18, [x7, w10, UXTW #3]
+ ldr w11, [x6, #0x08] + cmp w4, w11
...

-4 (-0.44%) : 28233.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)

@@ -14,26 +14,26 @@ ; V03 arg3 [V03,T35] ( 3, 3 ) float -> d10 single-def ; V04 arg4 [V04,T36] ( 3, 3 ) float -> d11 single-def ; V05 arg5 [V05,T37] ( 3, 3 ) float -> d12 single-def
-; V06 loc0 [V06,T08] ( 10, 14 ) ref -> x20 class-hnd exact single-def <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_0> -; V07 loc1 [V07,T40] ( 2, 3 ) double -> [fp+0x88] spill-single-def
+; V06 loc0 [V06,T07] ( 10, 20 ) ref -> x20 class-hnd exact single-def <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_0> +; V07 loc1 [V07,T41] ( 2, 3 ) double -> [fp+0x88] spill-single-def
; V08 loc2 [V08,T42] ( 2, 2 ) double -> [fp+0x80] spill-single-def ; V09 loc3 [V09,T32] ( 2, 9 ) double -> [fp+0x78] spill-single-def ; V10 loc4 [V10,T23] ( 2,129 ) simd16 -> d11 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
-; V11 loc5 [V11,T28] ( 2, 17 ) simd16 -> [fp+0x60] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> -; V12 loc6 [V12,T41] ( 2, 3 ) simd16 -> [fp+0x50] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]>
+; V11 loc5 [V11,T29] ( 2, 17 ) simd16 -> [fp+0x60] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> +; V12 loc6 [V12,T39] ( 2, 5 ) simd16 -> [fp+0x50] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]>
; V13 loc7 [V13,T24] ( 2,129 ) simd16 -> d14 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[long]> ; V14 loc8 [V14,T38] ( 3, 5 ) simd16 -> [fp+0x40] HFA(simd16) spill-single-def <System.Numerics.Vector`1[double]>
-; V15 loc9 [V15,T30] ( 5, 14 ) double -> [fp+0x38] -; V16 loc10 [V16,T22] ( 5,149 ) simd16 -> d15 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
+; V15 loc9 [V15,T28] ( 5, 18 ) double -> [fp+0x38] +; V16 loc10 [V16,T22] ( 5,153 ) simd16 -> d8 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
; V17 loc11 [V17,T02] ( 8, 70 ) ref -> x22 class-hnd exact <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_1> ; V18 loc12 [V18,T27] ( 3, 20 ) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> ; V19 loc13 [V19,T21] ( 6,194 ) simd16 -> [fp+0x10] HFA(simd16) <System.Numerics.Vector`1[double]>
-; V20 loc14 [V20,T14] ( 7,784 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]> -; V21 loc15 [V21,T15] ( 7,784 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[double]> -; V22 loc16 [V22,T17] ( 5,416 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[long]> -; V23 loc17 [V23,T16] ( 6,656 ) simd16 -> d22 HFA(simd16) <System.Numerics.Vector`1[long]> -; V24 loc18 [V24,T19] ( 2,256 ) simd16 -> d23 HFA(simd16) <System.Numerics.Vector`1[double]> -; V25 loc19 [V25,T20] ( 2,256 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[double]>
+; V20 loc14 [V20,T14] ( 7,784 ) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[double]> +; V21 loc15 [V21,T15] ( 7,784 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]> +; V22 loc16 [V22,T17] ( 5,416 ) simd16 -> d10 HFA(simd16) <System.Numerics.Vector`1[long]> +; V23 loc17 [V23,T16] ( 6,656 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[long]> +; V24 loc18 [V24,T19] ( 2,256 ) simd16 -> d22 HFA(simd16) <System.Numerics.Vector`1[double]> +; V25 loc19 [V25,T20] ( 2,256 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]>
;* V26 loc20 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[double]> ;* V27 loc21 [V27 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[long]> ;* V28 loc22 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Action`2[long,int]> @@ -49,16 +49,16 @@ ;* V38 tmp8 [V38 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inline return value spill temp" <System.Numerics.Vector`1[double]> ; V39 tmp9 [V39,T13] ( 3, 3 ) ref -> x24 class-hnd exact single-def "Inline stloc first use temp" <double[]> ; V40 tmp10 [V40,T06] ( 6, 21 ) int -> x25 "Inline stloc first use temp"
-; V41 tmp11 [V41,T29] ( 2, 16 ) double -> d0 "Strict ordering of exceptions for Array store"
+; V41 tmp11 [V41,T30] ( 2, 16 ) double -> d0 "Strict ordering of exceptions for Array store"
;* V42 tmp12 [V42 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[double]>
-;* V43 tmp13 [V43,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V44 tmp14 [V44,T25] ( 3, 96 ) simd16 -> d8 HFA(simd16) ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]> -; V45 cse0 [V45,T18] ( 3,384 ) simd16 -> d20 "CSE - aggressive"
+;* V43 tmp13 [V43,T08] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V44 tmp14 [V44,T25] ( 3, 96 ) simd16 -> d10 HFA(simd16) ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]> +; V45 cse0 [V45,T18] ( 3,384 ) simd16 -> d19 "CSE - aggressive"
; V46 cse1 [V46,T09] ( 4, 12 ) long -> x21 "CSE - moderate" ; V47 cse2 [V47,T10] ( 3, 10 ) long -> x23 "CSE - moderate" ; V48 cse3 [V48,T12] ( 2, 5 ) byref -> x26 hoist "CSE - moderate"
-; V49 cse4 [V49,T39] ( 4, 4 ) double -> d16 "CSE - moderate" -; V50 rat0 [V50,T31] ( 3, 12 ) simd16 -> d20 "ReplaceWithLclVar is creating a new local variable"
+; V49 cse4 [V49,T40] ( 4, 4 ) double -> d16 "CSE - moderate" +; V50 rat0 [V50,T31] ( 3, 12 ) simd16 -> d19 "ReplaceWithLclVar is creating a new local variable"
; V51 rat1 [V51,T26] ( 3, 96 ) simd16 -> d18 "ReplaceWithLclVar is creating a new local variable" ; V52 rat2 [V52,T04] ( 3, 24 ) ref -> x1 "delegate invoke call" ; @@ -175,18 +175,18 @@ G_M57953_IG03: ; bbWeight=4, gcrefRegs=1580000 {x19 x20 x22 x24}, byrefRe G_M57953_IG04: ; bbWeight=1, gcrefRegs=1180000 {x19 x20 x24}, byrefRegs=0000 {}, byref ; gcrRegs -[x22] ; byrRegs -[x26]
- ldr q9, [x24, #0x10] - str q9, [fp, #0x40] // [V14 loc8] - ldr d13, [fp, #0x80] // [V08 loc2]
+ ldr q13, [x24, #0x10] + str q13, [fp, #0x40] // [V14 loc8] + ldr d9, [fp, #0x80] // [V08 loc2]
str wzr, [x20, #0x20]
- dup v15.2d, v13.d[0]
+ dup v8.2d, v9.d[0]
b G_M57953_IG12 ;; size=24 bbWeight=1 PerfScore 9.00 G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x24] mov x0, x21
- mov v8.d[0], v15.d[1] - mov v9.d[0], v11.d[1]
+ mov v15.d[0], v8.d[1] + mov v13.d[0], v11.d[1]
mov v10.d[0], v14.d[1] bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] @@ -201,62 +201,62 @@ G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x0 x15] ; byrRegs -[x14] str wzr, [x22, #0x18]
- ldr d16, [fp, #0x88] // [V07 loc1] - dup v17.2d, v16.d[0] - str q17, [fp, #0x20] // [V18 loc12] - ldr q18, [fp, #0x40] // [V14 loc8] - mov v19.16b, v18.16b - fcmge v20.2d, v17.2d, v18.2d - umaxp v20.4s, v20.4s, v20.4s - umov x0, v20.d[0]
+ ldr d12, [fp, #0x88] // [V07 loc1] + dup v16.2d, v12.d[0] + str q16, [fp, #0x20] // [V18 loc12] + ldr q17, [fp, #0x40] // [V14 loc8] + mov v18.16b, v17.16b + fcmge v19.2d, v16.2d, v17.2d + umaxp v19.4s, v19.4s, v19.4s + umov x0, v19.d[0]
cmp x0, #0
- mov v15.d[1], v8.d[0] - mov v11.d[1], v9.d[0]
+ mov v8.d[1], v15.d[0] + mov v11.d[1], v13.d[0]
mov v14.d[1], v10.d[0] beq G_M57953_IG16 ;; size=92 bbWeight=2 PerfScore 44.00 G_M57953_IG06: ; bbWeight=16, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- mov v20.16b, v19.16b - mov v21.16b, v15.16b - movi v8.4s, #0 - ldr q22, [@RWD32]
+ mov v19.16b, v18.16b + mov v20.16b, v8.16b + movi v10.4s, #0 + ldr q21, [@RWD32]
;; size=16 bbWeight=16 PerfScore 56.00 G_M57953_IG07: ; bbWeight=128, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ fmul v22.2d, v19.2d, v19.2d
fmul v23.2d, v20.2d, v20.2d
- fmul v24.2d, v21.2d, v21.2d - fsub v23.2d, v23.2d, v24.2d - fmul v20.2d, v20.2d, v21.2d - fadd v21.2d, v20.2d, v20.2d - str q19, [fp, #0x10] // [V19 loc13] - fadd v20.2d, v23.2d, v19.2d - fadd v21.2d, v21.2d, v15.2d - add v8.2d, v8.2d, v22.2d
+ fsub v22.2d, v22.2d, v23.2d + fmul v19.2d, v19.2d, v20.2d + fadd v20.2d, v19.2d, v19.2d + str q18, [fp, #0x10] // [V19 loc13] + fadd v19.2d, v22.2d, v18.2d + fadd v20.2d, v20.2d, v8.2d + add v10.2d, v10.2d, v21.2d + fmul v22.2d, v19.2d, v19.2d
fmul v23.2d, v20.2d, v20.2d
- fmul v24.2d, v21.2d, v21.2d - fadd v23.2d, v23.2d, v24.2d - fcmge v23.2d, v11.2d, v23.2d - cmge v24.2d, v14.2d, v8.2d - and v23.2d, v23.2d, v24.2d
+ fadd v22.2d, v22.2d, v23.2d + fcmge v22.2d, v11.2d, v22.2d + cmge v23.2d, v14.2d, v10.2d
and v22.2d, v22.2d, v23.2d
- umaxp v23.4s, v22.4s, v22.4s - umov x0, v23.d[0]
+ and v21.2d, v21.2d, v22.2d + umaxp v22.4s, v21.4s, v21.4s + umov x0, v22.d[0]
cmp x0, #0
- ldr q19, [fp, #0x10] // [V19 loc13]
+ ldr q18, [fp, #0x10] // [V19 loc13]
bne G_M57953_IG07 ;; size=84 bbWeight=128 PerfScore 5184.00 G_M57953_IG08: ; bbWeight=16, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ldr x24, [x22, #0x10] ; gcrRegs +[x24]
- str q19, [fp, #0x10] // [V19 loc13]
+ str q18, [fp, #0x10] // [V19 loc13]
cbnz x24, G_M57953_IG10 ;; size=12 bbWeight=16 PerfScore 80.00 G_M57953_IG09: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref ; gcrRegs -[x24] add x0, x21, #0xD1FFAB1E
- mov v9.d[0], v8.d[1] - mov v10.d[0], v15.d[1] - mov v13.d[0], v11.d[1] - mov v12.d[0], v14.d[1]
+ mov v13.d[0], v10.d[1] + mov v15.d[0], v8.d[1] + mov v12.d[0], v11.d[1] + mov v9.d[0], v14.d[1]
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -278,28 +278,28 @@ G_M57953_IG09: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- mov v8.d[1], v9.d[0] - mov v15.d[1], v10.d[0] - mov v11.d[1], v13.d[0] - mov v14.d[1], v12.d[0]
+ mov v10.d[1], v13.d[0] + mov v8.d[1], v15.d[0] + mov v11.d[1], v12.d[0] + mov v14.d[1], v9.d[0]
;; size=76 bbWeight=8 PerfScore 124.00 G_M57953_IG10: ; bbWeight=16, gcrefRegs=1580000 {x19 x20 x22 x24}, byrefRegs=0000 {}, byref, isz mov w1, wzr
- umov x1, v8.d[0]
+ umov x1, v10.d[0]
mov w2, wzr ldr x0, [x24, #0x08] ; gcrRegs +[x0] ldr x3, [x24, #0x18]
- mov v10.d[0], v15.d[1]
+ mov v15.d[0], v8.d[1]
mov v13.d[0], v11.d[1]
- mov v9.d[0], v14.d[1] - mov v12.d[0], v8.d[1]
+ mov v12.d[0], v14.d[1] + mov v9.d[0], v10.d[1]
blr x3 ; gcrRegs -[x0] ; gcr arg pop 0 mov w1, #1
- mov v8.d[1], v12.d[0] - umov x1, v8.d[1]
+ mov v10.d[1], v9.d[0] + umov x1, v10.d[1]
mov w2, #1 ldr x0, [x24, #0x08] ; gcrRegs +[x0] @@ -307,39 +307,38 @@ G_M57953_IG10: ; bbWeight=16, gcrefRegs=1580000 {x19 x20 x22 x24}, byrefR blr x3 ; gcrRegs -[x0 x24] ; gcr arg pop 0
- ldr q8, [fp, #0x10] // [V19 loc13]
+ ldr q10, [fp, #0x10] // [V19 loc13]
ldr q16, [fp, #0x60] // [V11 loc5]
- fadd v8.2d, v8.2d, v16.2d
+ fadd v10.2d, v10.2d, v16.2d
ldr w0, [x22, #0x18] add w0, w0, #2 str w0, [x22, #0x18] ldr q17, [fp, #0x20] // [V18 loc12]
- fcmge v18.2d, v17.2d, v8.2d
+ fcmge v18.2d, v17.2d, v10.2d
umaxp v18.4s, v18.4s, v18.4s umov x0, v18.d[0] cmp x0, #0
- mov v15.d[1], v10.d[0]
+ mov v8.d[1], v15.d[0]
mov v11.d[1], v13.d[0]
- mov v14.d[1], v9.d[0] - mov v19.16b, v8.16b
+ mov v14.d[1], v12.d[0] + mov v18.16b, v10.16b
bne G_M57953_IG15 ...

+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] ...

+8 (+0.45%) : 26019.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[System.Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[System.Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1System.__Canon

@@ -13,7 +13,7 @@ ; V02 arg1 [V02,T09] ( 22, 16 ) ref -> x21 class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V03 arg2 [V03,T14] ( 20, 11 ) ref -> x22 class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V04 arg3 [V04,T22] ( 7, 4.50) ubyte -> x23
-; V05 arg4 [V05,T24] ( 4, 3 ) ubyte -> x24 single-def
+; V05 arg4 [V05,T25] ( 4, 3 ) ubyte -> x24 single-def
;* V06 loc0 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ;* V07 loc1 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ; V08 loc2 [V08 ] ( 2, 1 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> @@ -21,11 +21,11 @@ ; V10 loc4 [V10,T00] ( 18, 42.50) ref -> x23 class-hnd single-def <System.Collections.Generic.List`1[System.__Canon]> ; V11 loc5 [V11,T33] ( 3, 3 ) int -> x21 ; V12 loc6 [V12,T23] ( 3, 6.50) ref -> x24 class-hnd exact single-def <System.Collections.Generic.HashSet`1[System.__Canon]>
-; V13 loc7 [V13,T25] ( 4, 5 ) ubyte -> x25
+; V13 loc7 [V13,T24] ( 4, 5.50) ubyte -> x25
; V14 loc8 [V14,T01] ( 13, 36.50) int -> x26
-; V15 loc9 [V15,T18] ( 4, 9 ) ref -> x3 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]>
+; V15 loc9 [V15,T18] ( 4, 9.50) ref -> x3 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]>
; V16 loc10 [V16,T02] ( 8, 25 ) int -> x22
-; V17 loc11 [V17,T19] ( 4, 9 ) ref -> x3 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]>
+; V17 loc11 [V17,T19] ( 4, 9.50) ref -> x3 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]>
; V18 loc12 [V18,T03] ( 8, 25 ) int -> x22 ;* V19 loc13 [V19 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd <System.__Canon> ;# V20 OutArgs [V20 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -56,7 +56,7 @@ ;* V45 tmp25 [V45 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon]> ;* V46 tmp26 [V46 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V47 tmp27 [V47,T37] ( 4, 2 ) ref -> x25 ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]>
-; V48 tmp28 [V48,T16] ( 10, 10 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]>
+; V48 tmp28 [V48,T17] ( 10, 10 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]>
;* V49 tmp29 [V49,T48] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V50 tmp30 [V50,T31] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon],System.__Canon]> ; V51 tmp31 [V51 ] ( 8, 8 ) struct (40) [fp+0x40] do-not-enreg[XS] must-init addr-exposed "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon]> @@ -69,7 +69,7 @@ ; V58 tmp38 [V58 ] ( 8, 8 ) struct (40) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[System.__Canon]> ;* V59 tmp39 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]> ;* V60 tmp40 [V60 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V61 tmp41 [V61,T17] ( 8, 9 ) ref -> registers "Single return block return value"
+; V61 tmp41 [V61,T16] ( 8, 11 ) ref -> registers "Single return block return value"
; V62 tmp42 [V62,T28] ( 6, 3 ) int -> x23 "field V26._info (fldOffset=0x0)" P-INDEP ;* V63 tmp43 [V63 ] ( 0, 0 ) int -> zero-ref "field V53._info (fldOffset=0x0)" P-INDEP ;* V64 tmp44 [V64 ] ( 0, 0 ) ref -> zero-ref single-def "V45.[000..008)" @@ -180,20 +180,24 @@ G_M6193_IG08: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, ; gcrRegs -[x19 x22] mov x0, x21 ; gcrRegs +[x0]
+ mov x3, x0 + ; gcrRegs +[x3]
b G_M6193_IG42
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
G_M6193_IG09: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19 x22]
+ ; gcrRegs -[x0 x3] +[x19 x22]
ldr x25, [x19, #0x18] ; gcrRegs +[x25] cmp x21, x25 bne G_M6193_IG10 mov x0, x22 ; gcrRegs +[x0]
+ mov x3, x0 + ; gcrRegs +[x3]
b G_M6193_IG42
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
G_M6193_IG10: ; bbWeight=0.50, gcrefRegs=2680000 {x19 x21 x22 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x3]
ldr w0, [x22, #0x28] cmp w0, #4 beq G_M6193_IG11 @@ -253,10 +257,12 @@ G_M6193_IG15: ; bbWeight=0.50, gcrefRegs=2280000 {x19 x21 x25}, byrefRegs blr x6 ; gcrRegs -[x1-x3 x19 x21 x25] +[x0] ; gcr arg pop 0
+ mov x3, x0 + ; gcrRegs +[x3]
b G_M6193_IG42
- ;; size=48 bbWeight=0.50 PerfScore 4.75
+ ;; size=52 bbWeight=0.50 PerfScore 5.00
G_M6193_IG16: ; bbWeight=0.50, gcrefRegs=6680000 {x19 x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19 x21-x22 x25-x26]
+ ; gcrRegs -[x0 x3] +[x19 x21-x22 x25-x26]
mov x0, x26 ; gcrRegs +[x0] mov x1, x19 @@ -306,10 +312,12 @@ G_M6193_IG16: ; bbWeight=0.50, gcrefRegs=6680000 {x19 x21 x22 x25 x26}, b blr x6 ; gcrRegs -[x1-x3 x19 x21-x22 x25-x26] +[x0] ; gcr arg pop 0
+ mov x3, x0 + ; gcrRegs +[x3]
b G_M6193_IG42
- ;; size=140 bbWeight=0.50 PerfScore 16.00
+ ;; size=144 bbWeight=0.50 PerfScore 16.25
G_M6193_IG17: ; bbWeight=0.50, gcrefRegs=6680000 {x19 x21 x22 x25 x26}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19 x21-x22 x25-x26]
+ ; gcrRegs -[x0 x3] +[x19 x21-x22 x25-x26]
tst w24, #255 beq G_M6193_IG18 mov x0, x21 @@ -352,9 +360,9 @@ G_M6193_IG19: ; bbWeight=4, gcrefRegs=680001 {x0 x19 x21 x22}, byrefRegs= cmp w1, #4 beq G_M6193_IG19 ;; size=28 bbWeight=4 PerfScore 48.00
-G_M6193_IG20: ; bbWeight=0.50, gcrefRegs=680001 {x0 x19 x21 x22}, byrefRegs=0000 {}, byref
+G_M6193_IG20: ; bbWeight=1, gcrefRegs=680001 {x0 x19 x21 x22}, byrefRegs=0000 {}, byref
b G_M6193_IG22
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M6193_IG21: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov w23, wzr @@ -376,7 +384,7 @@ G_M6193_IG23: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs= G_M6193_IG24: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz ldr w0, [x21, #0x28] cmp w0, #4
- bne G_M6193_IG43
+ bne G_M6193_IG44
;; size=12 bbWeight=0.50 PerfScore 2.25 G_M6193_IG25: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz ldr x0, [x20, #0x38] @@ -469,17 +477,17 @@ G_M6193_IG31: ; bbWeight=0.50, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs= mov w26, wzr ldr w0, [x23, #0x10] cmp w0, #0
- ble G_M6193_IG39
+ ble G_M6193_IG40
;; size=52 bbWeight=0.50 PerfScore 6.50 G_M6193_IG32: ; bbWeight=4, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ldr w0, [x23, #0x10] cmp w26, w0
- bhs G_M6193_IG50
+ bhs G_M6193_IG51
ldr x0, [x23, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w26, w1
- bhs G_M6193_IG49
+ bhs G_M6193_IG50
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -500,12 +508,12 @@ G_M6193_IG32: ; bbWeight=4, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefReg G_M6193_IG33: ; bbWeight=2, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefRegs=0000 {}, byref, isz ldr w2, [x23, #0x10] cmp w26, w2
- bhs G_M6193_IG50
+ bhs G_M6193_IG51
ldr x2, [x23, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] cmp w26, w0
- bhs G_M6193_IG49
+ bhs G_M6193_IG50
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -529,7 +537,7 @@ G_M6193_IG34: ; bbWeight=2, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefReg ; gcrRegs +[x2] ldr w0, [x23, #0x10] cmp w26, w0
- bhs G_M6193_IG50
+ bhs G_M6193_IG51
ldr x0, [x23, #0x08] ; gcrRegs +[x0] sxtw x1, w26 @@ -550,25 +558,27 @@ G_M6193_IG35: ; bbWeight=4, gcrefRegs=1C80000 {x19 x22 x23 x24}, byrefReg cmp w26, w2 blt G_M6193_IG32 ;; size=16 bbWeight=4 PerfScore 20.00
-G_M6193_IG36: ; bbWeight=0.50, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
+G_M6193_IG36: ; bbWeight=1, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x24]
- cbz w25, G_M6193_IG39
+ cbz w25, G_M6193_IG40 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M6193_IG37: ; bbWeight=0.50, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x22]
ldr x3, [x19, #0x18] ; gcrRegs +[x3] ldr w2, [x23, #0x10] sub w22, w2, #1
- ; gcrRegs -[x22] - tbnz w22, #31, G_M6193_IG38 - ;; size=20 bbWeight=0.50 PerfScore 4.25 -G_M6193_IG37: ; bbWeight=4, gcrefRegs=880008 {x3 x19 x23}, byrefRegs=0000 {}, byref, isz
+ tbnz w22, #31, G_M6193_IG39 + ;; size=16 bbWeight=0.50 PerfScore 3.75 +G_M6193_IG38: ; bbWeight=4, gcrefRegs=880008 {x3 x19 x23}, byrefRegs=0000 {}, byref, isz
ldr w2, [x23, #0x10] cmp w22, w2
- bhs G_M6193_IG50
+ bhs G_M6193_IG51
ldr x2, [x23, #0x08] ; gcrRegs +[x2] ldr w1, [x2, #0x08] cmp w22, w1
- bhs G_M6193_IG49
+ bhs G_M6193_IG50
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -590,31 +600,29 @@ G_M6193_IG37: ; bbWeight=4, gcrefRegs=880008 {x3 x19 x23}, byrefRegs=0000 mov x3, x0 ; gcrRegs +[x3] sub w22, w22, #1
- tbz w22, #31, G_M6193_IG37
+ tbz w22, #31, G_M6193_IG38
;; size=84 bbWeight=4 PerfScore 100.00
-G_M6193_IG38: ; bbWeight=0.50, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
+G_M6193_IG39: ; bbWeight=1, gcrefRegs=0008 {x3}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19 x23]
- mov x0, x3 - ; gcrRegs +[x0]
b G_M6193_IG42
- ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M6193_IG39: ; bbWeight=0.50, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0 x3] +[x19 x22-x23]
+ ;; size=4 bbWeight=1 PerfScore 1.00 +G_M6193_IG40: ; bbWeight=0.50, gcrefRegs=C80000 {x19 x22 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x3] +[x19 x22-x23]
mov x3, x22 ; gcrRegs +[x3] sub w22, w21, #1 ; gcrRegs -[x22]
- tbnz w22, #31, G_M6193_IG41
+ tbnz w22, #31, G_M6193_IG42
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M6193_IG40: ; bbWeight=4, gcrefRegs=880008 {x3 x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M6193_IG41: ; bbWeight=4, gcrefRegs=880008 {x3 x19 x23}, byrefRegs=0000 {}, byref, isz
ldr w2, [x23, #0x10] cmp w22, w2
- bhs G_M6193_IG50
+ bhs G_M6193_IG51
ldr x2, [x23, #0x08] ; gcrRegs +[x2] ldr w1, [x2, #0x08] cmp w22, w1
- bhs G_M6193_IG49
+ bhs G_M6193_IG50
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -636,15 +644,14 @@ G_M6193_IG40: ; bbWeight=4, gcrefRegs=880008 {x3 x19 x23}, byrefRegs=0000 mov x3, x0 ; gcrRegs +[x3] sub w22, w22, #1
- tbz w22, #31, G_M6193_IG40
+ tbz w22, #31, G_M6193_IG41
...

+8 (+0.49%) : 49083.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1ulong

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T08] ( 22, 16 ) ref -> x20 class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V02 arg2 [V02,T13] ( 20, 11 ) ref -> x21 class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V03 arg3 [V03,T21] ( 7, 4.50) ubyte -> x22
-; V04 arg4 [V04,T23] ( 4, 3 ) ubyte -> x23 single-def
+; V04 arg4 [V04,T24] ( 4, 3 ) ubyte -> x23 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V07 loc2 [V07 ] ( 2, 1 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -20,11 +20,11 @@ ; V09 loc4 [V09,T00] ( 18, 42.50) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]]> ; V10 loc5 [V10,T31] ( 3, 3 ) int -> x20 ; V11 loc6 [V11,T22] ( 3, 6.50) ref -> x23 class-hnd exact single-def <<unknown class>>
-; V12 loc7 [V12,T24] ( 4, 5 ) ubyte -> x24
+; V12 loc7 [V12,T23] ( 4, 5.50) ubyte -> x24
; V13 loc8 [V13,T01] ( 13, 36.50) int -> x25
-; V14 loc9 [V14,T17] ( 4, 9 ) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V14 loc9 [V14,T17] ( 4, 9.50) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V15 loc10 [V15,T02] ( 8, 25 ) int -> x21
-; V16 loc11 [V16,T18] ( 4, 9 ) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V16 loc11 [V16,T18] ( 4, 9.50) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V17 loc12 [V17,T03] ( 8, 25 ) int -> x21 ;* V18 loc13 [V18 ] ( 0, 0 ) long -> zero-ref ld-addr-op ;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -49,7 +49,7 @@ ; V38 tmp19 [V38,T34] ( 4, 2 ) long -> x23 "Inline stloc first use temp" ;* V39 tmp20 [V39 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V40 tmp21 [V40,T32] ( 4, 2 ) ref -> x24 ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V41 tmp22 [V41,T15] ( 10, 10 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V41 tmp22 [V41,T16] ( 10, 10 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
;* V42 tmp23 [V42,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V43 tmp24 [V43,T29] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ; V44 tmp25 [V44 ] ( 8, 8 ) struct (40) [fp+0x40] do-not-enreg[XS] must-init addr-exposed "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> @@ -62,7 +62,7 @@ ; V51 tmp32 [V51 ] ( 8, 8 ) struct (40) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ;* V52 tmp33 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V53 tmp34 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V54 tmp35 [V54,T16] ( 8, 9 ) ref -> registers "Single return block return value"
+; V54 tmp35 [V54,T15] ( 8, 11 ) ref -> registers "Single return block return value"
; V55 tmp36 [V55,T27] ( 6, 3 ) int -> x22 "field V24._info (fldOffset=0x0)" P-INDEP ;* V56 tmp37 [V56 ] ( 0, 0 ) int -> zero-ref "field V46._info (fldOffset=0x0)" P-INDEP ;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "V39.[000..008)" @@ -148,20 +148,24 @@ G_M47816_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; gcrRegs -[x19 x21] mov x0, x20 ; gcrRegs +[x0]
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
G_M47816_IG06: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19 x21]
+ ; gcrRegs -[x0 x2] +[x19 x21]
ldr x24, [x19, #0x18] ; gcrRegs +[x24] cmp x20, x24 bne G_M47816_IG07 mov x0, x21 ; gcrRegs +[x0]
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
G_M47816_IG07: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
ldr w0, [x21, #0x28] cmp w0, #4 beq G_M47816_IG08 @@ -220,10 +224,12 @@ G_M47816_IG12: ; bbWeight=0.50, gcrefRegs=1180000 {x19 x20 x24}, byrefReg blr x5 ; gcrRegs -[x1-x2 x19-x20 x24] ; gcr arg pop 0
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=44 bbWeight=0.50 PerfScore 4.50
+ ;; size=48 bbWeight=0.50 PerfScore 4.75
G_M47816_IG13: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19-x21 x24-x25]
+ ; gcrRegs -[x0 x2] +[x19-x21 x24-x25]
mov x0, x25 ; gcrRegs +[x0] mov x1, x19 @@ -271,10 +277,12 @@ G_M47816_IG13: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, blr x5 ; gcrRegs -[x1-x2 x19-x21 x24-x25] ; gcr arg pop 0
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=132 bbWeight=0.50 PerfScore 15.50
+ ;; size=136 bbWeight=0.50 PerfScore 15.75
G_M47816_IG14: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19-x21 x24-x25]
+ ; gcrRegs -[x0 x2] +[x19-x21 x24-x25]
tst w23, #255 beq G_M47816_IG15 mov x0, x20 @@ -317,9 +325,9 @@ G_M47816_IG16: ; bbWeight=4, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs cmp w1, #4 beq G_M47816_IG16 ;; size=28 bbWeight=4 PerfScore 48.00
-G_M47816_IG17: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M47816_IG17: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref
b G_M47816_IG19
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M47816_IG18: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov w22, wzr @@ -341,7 +349,7 @@ G_M47816_IG20: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs G_M47816_IG21: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x20, #0x28] cmp w0, #4
- bne G_M47816_IG34
+ bne G_M47816_IG35
;; size=12 bbWeight=0.50 PerfScore 2.25 G_M47816_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E @@ -402,17 +410,17 @@ G_M47816_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs mov w25, wzr ldr w0, [x22, #0x10] cmp w0, #0
- ble G_M47816_IG30
+ ble G_M47816_IG31
;; size=168 bbWeight=0.50 PerfScore 18.50 G_M47816_IG23: ; bbWeight=4, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ldr w0, [x22, #0x10] cmp w25, w0
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w25, w1
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -433,12 +441,12 @@ G_M47816_IG23: ; bbWeight=4, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefReg G_M47816_IG24: ; bbWeight=2, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ldr w2, [x22, #0x10] cmp w25, w2
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x2, [x22, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] cmp w25, w0
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -462,7 +470,7 @@ G_M47816_IG25: ; bbWeight=2, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefReg ; gcrRegs +[x2] ldr w0, [x22, #0x10] cmp w25, w0
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x0, [x22, #0x08] ; gcrRegs +[x0] sxtw x1, w25 @@ -483,25 +491,27 @@ G_M47816_IG26: ; bbWeight=4, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefReg cmp w25, w1 blt G_M47816_IG23 ;; size=16 bbWeight=4 PerfScore 20.00
-G_M47816_IG27: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M47816_IG27: ; bbWeight=1, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x23]
- cbz w24, G_M47816_IG30
+ cbz w24, G_M47816_IG31 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M47816_IG28: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21]
ldr x2, [x19, #0x18] ; gcrRegs +[x2] ldr w1, [x22, #0x10] sub w21, w1, #1
- ; gcrRegs -[x21] - tbnz w21, #31, G_M47816_IG29 - ;; size=20 bbWeight=0.50 PerfScore 4.25 -G_M47816_IG28: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=0000 {}, byref, isz
+ tbnz w21, #31, G_M47816_IG30 + ;; size=16 bbWeight=0.50 PerfScore 3.75 +G_M47816_IG29: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w1, [x22, #0x10] cmp w21, w1
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w0, [x1, #0x08] cmp w21, w0
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -522,31 +532,29 @@ G_M47816_IG28: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=000 mov x2, x0 ; gcrRegs +[x2] sub w21, w21, #1
- tbz w21, #31, G_M47816_IG28
+ tbz w21, #31, G_M47816_IG29
;; size=80 bbWeight=4 PerfScore 98.00
-G_M47816_IG29: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+G_M47816_IG30: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19 x22]
- mov x0, x2 - ; gcrRegs +[x0]
b G_M47816_IG33
- ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M47816_IG30: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0 x2] +[x19 x21-x22]
+ ;; size=4 bbWeight=1 PerfScore 1.00 +G_M47816_IG31: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] +[x19 x21-x22]
mov x2, x21 ; gcrRegs +[x2] sub w21, w20, #1 ; gcrRegs -[x21]
- tbnz w21, #31, G_M47816_IG32
+ tbnz w21, #31, G_M47816_IG33
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M47816_IG31: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M47816_IG32: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w1, [x22, #0x10] cmp w21, w1
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w0, [x1, #0x08] cmp w21, w0
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -567,15 +575,14 @@ G_M47816_IG31: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=000 mov x2, x0 ; gcrRegs +[x2] sub w21, w21, #1
- tbz w21, #31, G_M47816_IG31
+ tbz w21, #31, G_M47816_IG32
...

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%) : 321145.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,111 +11,104 @@ ; ; V00 arg0 [V00,T01] ( 8, 18.96) 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.47) long -> x2 -; V04 loc2 [V04,T00] ( 10, 26.06) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.73) long -> x2 +; V03 loc1 [V03,T02] ( 10, 16.47) long -> x3 +; V04 loc2 [V04,T00] ( 10, 26.06) 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_IG11 - ldr x19, [x1] - ldrh w2, [x19, #0x0E] - cbz x2, G_M24157_IG07 - ldr x3, [x19, #0x40] - cmp x2, #4 - blt G_M24157_IG13
+ 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_IG07
;; size=28 bbWeight=1 PerfScore 12.50 G_M24157_IG03: ; bbWeight=4.19, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11 - ldr x4, [x3, #0x08] - cmp x4, x0 - beq G_M24157_IG11
+ 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.19 PerfScore 37.73 G_M24157_IG04: ; bbWeight=3.93, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10] - cmp x4, x0 - beq G_M24157_IG11
+ ldr x5, [x4, #0x10] + cmp x5, x0 + beq G_M24157_IG12
;; size=12 bbWeight=3.93 PerfScore 17.68 G_M24157_IG05: ; bbWeight=3.92, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x18] - cmp x4, x0 - beq G_M24157_IG11 - add x3, x3, #32 - sub x2, x2, #4 - cmp x2, #4
+ 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=28 bbWeight=3.92 PerfScore 27.43 G_M24157_IG06: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG13
+ cbz x3, G_M24157_IG08
;; size=4 bbWeight=0.73 PerfScore 0.73
-G_M24157_IG07: ; bbWeight=0.73, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr w2, [x19]
+G_M24157_IG07: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x5, [x4] + cmp x5, x0 + beq G_M24157_IG12 + add x4, x4, #8 + sub x3, x3, #1 + cmp x3, #0 + bgt G_M24157_IG07 + ;; size=28 bbWeight=0.33 PerfScore 2.32 +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_IG10
+ beq G_M24157_IG11
;; size=16 bbWeight=0.73 PerfScore 3.63
-G_M24157_IG08: ; bbWeight=0.39, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG09: ; bbWeight=0.39, 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.39 PerfScore 1.78
-G_M24157_IG09: ; bbWeight=0.39, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG10: ; bbWeight=0.39, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.39 PerfScore 1.58 -G_M24157_IG10: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.39 PerfScore 0.79 +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_IG11: ; bbWeight=0.61, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG12: ; bbWeight=0.61, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0.61 PerfScore 0.30
-G_M24157_IG12: ; bbWeight=0.61, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG13: ; bbWeight=0.61, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.61 PerfScore 2.42 -G_M24157_IG13: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0] - ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11 - add x3, x3, #8 - sub x2, x2, #1 - cmp x2, #0 - bgt G_M24157_IG13 - ;; size=28 bbWeight=0.33 PerfScore 2.32 -G_M24157_IG14: ; bbWeight=0.17, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - b G_M24157_IG07 - ;; size=4 bbWeight=0.17 PerfScore 0.17
+ ;; size=8 bbWeight=0.61 PerfScore 1.21
-; Total bytes of code 204, prolog size 12, PerfScore 110.92, 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 107.75, 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%) : 349913.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, #0xD1FFAB1E 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

+16 (+7.84%) : 344384.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,100 +11,108 @@ ; ; V00 arg0 [V00,T00] ( 8, 5.24) long -> x0 single-def ; V01 arg1 [V01,T01] ( 7, 5.17) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.21) long -> x19 -; V03 loc1 [V03,T02] ( 10, 6.97) long -> x2 -; V04 loc2 [V04,T03] ( 10, 6.71) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.50) long -> x19 +; V03 loc1 [V03,T02] ( 10, 6.97) long -> x20 +; V04 loc2 [V04,T03] ( 10, 6.71) long -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M24157_IG11
+ cbz x1, G_M24157_IG12
ldr x19, [x1]
- ldrh w2, [x19, #0x0E] - cbz x2, G_M24157_IG09 - ldr x3, [x19, #0x40] - cmp x2, #4 - bge G_M24157_IG06
+ ldrh w20, [x19, #0x0E] + cbz x20, G_M24157_IG05 + ldr x21, [x19, #0x40] + cmp x20, #4 + bge G_M24157_IG07
;; size=28 bbWeight=1 PerfScore 12.50 G_M24157_IG03: ; bbWeight=1.61, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11
+ ldr x2, [x21] + cmp x2, x0 + beq G_M24157_IG12
;; size=12 bbWeight=1.61 PerfScore 7.26 G_M24157_IG04: ; bbWeight=0.90, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8 - sub x2, x2, #1 - cmp x2, #0
+ add x21, x21, #8 + sub x20, x20, #1 + cmp x20, #0
bgt G_M24157_IG03 ;; size=16 bbWeight=0.90 PerfScore 2.25
-G_M24157_IG05: ; bbWeight=0.11, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - b G_M24157_IG09 - ;; size=4 bbWeight=0.11 PerfScore 0.11 -G_M24157_IG06: ; bbWeight=0.44, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11 - ldr x4, [x3, #0x08] - cmp x4, x0 - beq G_M24157_IG11 - ;; size=24 bbWeight=0.44 PerfScore 3.92 -G_M24157_IG07: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x4, [x3, #0x10] - cmp x4, x0 - beq G_M24157_IG11 - ldr x4, [x3, #0x18] - cmp x4, x0 - beq G_M24157_IG11 - add x3, x3, #32 - sub x2, x2, #4 - cmp x2, #4 - bge G_M24157_IG06 - ;; size=40 bbWeight=0.36 PerfScore 4.10 -G_M24157_IG08: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M24157_IG03 - ;; size=4 bbWeight=0.20 PerfScore 0.20 -G_M24157_IG09: ; bbWeight=0.21, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG05: ; bbWeight=0.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19] mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG13 - ;; size=16 bbWeight=0.21 PerfScore 1.04 -G_M24157_IG10: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne G_M24157_IG14 + ;; size=16 bbWeight=0.50 PerfScore 2.48 +G_M24157_IG06: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M24157_IG11 + ;; size=4 bbWeight=0.17 PerfScore 0.17 +G_M24157_IG07: ; bbWeight=0.44, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x1] + ldr x2, [x21] + cmp x2, x0 + beq G_M24157_IG12 + ldr x2, [x21, #0x08] + cmp x2, x0 + beq G_M24157_IG12 + ;; size=24 bbWeight=0.44 PerfScore 3.92 +G_M24157_IG08: ; bbWeight=0.36, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x21, #0x10] + cmp x2, x0 + beq G_M24157_IG12 + ldr x2, [x21, #0x18] + cmp x2, x0 + beq G_M24157_IG12 + add x21, x21, #32 + sub x20, x20, #4 + cmp x20, #4 + bge G_M24157_IG07 + ;; size=40 bbWeight=0.36 PerfScore 4.10 +G_M24157_IG09: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M24157_IG05 + ;; size=4 bbWeight=0.20 PerfScore 0.20 +G_M24157_IG10: ; bbWeight=0.10, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + b G_M24157_IG03 + ;; size=4 bbWeight=0.10 PerfScore 0.10 +G_M24157_IG11: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1] ;; size=4 bbWeight=0.17 PerfScore 0.08
-G_M24157_IG11: ; bbWeight=0.96, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG12: ; bbWeight=0.96, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M24157_IG12: ; bbWeight=0.96, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG13: ; bbWeight=0.96, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.96 PerfScore 3.84 -G_M24157_IG13: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.96 PerfScore 4.80 +G_M24157_IG14: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] 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.18
-G_M24157_IG14: ; bbWeight=0.04, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG15: ; bbWeight=0.04, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.04 PerfScore 0.16
+ ;; size=16 bbWeight=0.04 PerfScore 0.20
-; Total bytes of code 204, prolog size 12, PerfScore 38.62, 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 220, prolog size 16, PerfScore 42.22, instruction count 55, allocated bytes for code 220 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -115,7 +123,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -126,10 +134,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

+16 (+7.84%) : 344736.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,100 +11,108 @@ ; ; V00 arg0 [V00,T01] ( 8, 5.09) long -> x0 single-def ; V01 arg1 [V01,T00] ( 7, 5.17) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.21) long -> x19 -; V03 loc1 [V03,T02] ( 10, 6.88) long -> x2 -; V04 loc2 [V04,T03] ( 10, 6.52) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.51) long -> x19 +; V03 loc1 [V03,T02] ( 10, 6.88) long -> x20 +; V04 loc2 [V04,T03] ( 10, 6.52) long -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M24157_IG11
+ cbz x1, G_M24157_IG12
ldr x19, [x1]
- ldrh w2, [x19, #0x0E] - cbz x2, G_M24157_IG09 - ldr x3, [x19, #0x40] - cmp x2, #4 - bge G_M24157_IG06
+ ldrh w20, [x19, #0x0E] + cbz x20, G_M24157_IG05 + ldr x21, [x19, #0x40] + cmp x20, #4 + bge G_M24157_IG07
;; size=28 bbWeight=1 PerfScore 12.50 G_M24157_IG03: ; bbWeight=1.63, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11
+ ldr x2, [x21] + cmp x2, x0 + beq G_M24157_IG12
;; size=12 bbWeight=1.63 PerfScore 7.36 G_M24157_IG04: ; bbWeight=0.91, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8 - sub x2, x2, #1 - cmp x2, #0
+ add x21, x21, #8 + sub x20, x20, #1 + cmp x20, #0
bgt G_M24157_IG03 ;; size=16 bbWeight=0.91 PerfScore 2.28
-G_M24157_IG05: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - b G_M24157_IG09 - ;; size=4 bbWeight=0.12 PerfScore 0.12 -G_M24157_IG06: ; bbWeight=0.39, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11 - ldr x4, [x3, #0x08] - cmp x4, x0 - beq G_M24157_IG11 - ;; size=24 bbWeight=0.39 PerfScore 3.52 -G_M24157_IG07: ; bbWeight=0.32, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x4, [x3, #0x10] - cmp x4, x0 - beq G_M24157_IG11 - ldr x4, [x3, #0x18] - cmp x4, x0 - beq G_M24157_IG11 - add x3, x3, #32 - sub x2, x2, #4 - cmp x2, #4 - bge G_M24157_IG06 - ;; size=40 bbWeight=0.32 PerfScore 3.68 -G_M24157_IG08: ; bbWeight=0.18, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M24157_IG03 - ;; size=4 bbWeight=0.18 PerfScore 0.18 -G_M24157_IG09: ; bbWeight=0.21, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG05: ; bbWeight=0.51, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19] mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG13 - ;; size=16 bbWeight=0.21 PerfScore 1.04 -G_M24157_IG10: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne G_M24157_IG14 + ;; size=16 bbWeight=0.51 PerfScore 2.54 +G_M24157_IG06: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M24157_IG11 + ;; size=4 bbWeight=0.17 PerfScore 0.17 +G_M24157_IG07: ; bbWeight=0.39, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x1] + ldr x2, [x21] + cmp x2, x0 + beq G_M24157_IG12 + ldr x2, [x21, #0x08] + cmp x2, x0 + beq G_M24157_IG12 + ;; size=24 bbWeight=0.39 PerfScore 3.52 +G_M24157_IG08: ; bbWeight=0.32, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x21, #0x10] + cmp x2, x0 + beq G_M24157_IG12 + ldr x2, [x21, #0x18] + cmp x2, x0 + beq G_M24157_IG12 + add x21, x21, #32 + sub x20, x20, #4 + cmp x20, #4 + bge G_M24157_IG07 + ;; size=40 bbWeight=0.32 PerfScore 3.68 +G_M24157_IG09: ; bbWeight=0.18, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M24157_IG05 + ;; size=4 bbWeight=0.18 PerfScore 0.18 +G_M24157_IG10: ; bbWeight=0.09, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + b G_M24157_IG03 + ;; size=4 bbWeight=0.09 PerfScore 0.09 +G_M24157_IG11: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1] ;; size=4 bbWeight=0.17 PerfScore 0.09
-G_M24157_IG11: ; bbWeight=0.96, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG12: ; bbWeight=0.96, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0.96 PerfScore 0.48
-G_M24157_IG12: ; bbWeight=0.96, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG13: ; bbWeight=0.96, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.96 PerfScore 3.86 -G_M24157_IG13: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.96 PerfScore 4.82 +G_M24157_IG14: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] 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_IG14: ; bbWeight=0.04, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG15: ; bbWeight=0.04, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.04 PerfScore 0.14
+ ;; size=16 bbWeight=0.04 PerfScore 0.18
-; Total bytes of code 204, prolog size 12, PerfScore 37.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 220, prolog size 16, PerfScore 41.54, instruction count 55, allocated bytes for code 220 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -115,7 +123,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -126,10 +134,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

+16 (+7.84%) : 346020.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,100 +11,108 @@ ; ; V00 arg0 [V00,T01] ( 8, 4.86) long -> x0 single-def ; V01 arg1 [V01,T00] ( 7, 5.13) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.16) long -> x19 -; V03 loc1 [V03,T02] ( 10, 6.56) long -> x2 -; V04 loc2 [V04,T03] ( 10, 6.11) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.49) long -> x19 +; V03 loc1 [V03,T02] ( 10, 6.56) long -> x20 +; V04 loc2 [V04,T03] ( 10, 6.11) long -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M24157_IG11
+ cbz x1, G_M24157_IG12
ldr x19, [x1]
- ldrh w2, [x19, #0x0E] - cbz x2, G_M24157_IG09 - ldr x3, [x19, #0x40] - cmp x2, #4 - bge G_M24157_IG06
+ ldrh w20, [x19, #0x0E] + cbz x20, G_M24157_IG05 + ldr x21, [x19, #0x40] + cmp x20, #4 + bge G_M24157_IG07
;; size=28 bbWeight=1 PerfScore 12.50 G_M24157_IG03: ; bbWeight=1.66, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11
+ ldr x2, [x21] + cmp x2, x0 + beq G_M24157_IG12
;; size=12 bbWeight=1.66 PerfScore 7.46 G_M24157_IG04: ; bbWeight=0.87, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8 - sub x2, x2, #1 - cmp x2, #0
+ add x21, x21, #8 + sub x20, x20, #1 + cmp x20, #0
bgt G_M24157_IG03 ;; size=16 bbWeight=0.87 PerfScore 2.18
-G_M24157_IG05: ; bbWeight=0.08, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - b G_M24157_IG09 - ;; size=4 bbWeight=0.08 PerfScore 0.08 -G_M24157_IG06: ; bbWeight=0.32, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11 - ldr x4, [x3, #0x08] - cmp x4, x0 - beq G_M24157_IG11 - ;; size=24 bbWeight=0.32 PerfScore 2.91 -G_M24157_IG07: ; bbWeight=0.26, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x4, [x3, #0x10] - cmp x4, x0 - beq G_M24157_IG11 - ldr x4, [x3, #0x18] - cmp x4, x0 - beq G_M24157_IG11 - add x3, x3, #32 - sub x2, x2, #4 - cmp x2, #4 - bge G_M24157_IG06 - ;; size=40 bbWeight=0.26 PerfScore 3.04 -G_M24157_IG08: ; bbWeight=0.15, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M24157_IG03 - ;; size=4 bbWeight=0.15 PerfScore 0.15 -G_M24157_IG09: ; bbWeight=0.16, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG05: ; bbWeight=0.49, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19] mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG13 - ;; size=16 bbWeight=0.16 PerfScore 0.78 -G_M24157_IG10: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne G_M24157_IG14 + ;; size=16 bbWeight=0.49 PerfScore 2.45 +G_M24157_IG06: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M24157_IG11 + ;; size=4 bbWeight=0.13 PerfScore 0.13 +G_M24157_IG07: ; bbWeight=0.32, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x1] + ldr x2, [x21] + cmp x2, x0 + beq G_M24157_IG12 + ldr x2, [x21, #0x08] + cmp x2, x0 + beq G_M24157_IG12 + ;; size=24 bbWeight=0.32 PerfScore 2.91 +G_M24157_IG08: ; bbWeight=0.26, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x21, #0x10] + cmp x2, x0 + beq G_M24157_IG12 + ldr x2, [x21, #0x18] + cmp x2, x0 + beq G_M24157_IG12 + add x21, x21, #32 + sub x20, x20, #4 + cmp x20, #4 + bge G_M24157_IG07 + ;; size=40 bbWeight=0.26 PerfScore 3.04 +G_M24157_IG09: ; bbWeight=0.15, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M24157_IG05 + ;; size=4 bbWeight=0.15 PerfScore 0.15 +G_M24157_IG10: ; bbWeight=0.07, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + b G_M24157_IG03 + ;; size=4 bbWeight=0.07 PerfScore 0.07 +G_M24157_IG11: ; bbWeight=0.13, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1] ;; size=4 bbWeight=0.13 PerfScore 0.06
-G_M24157_IG11: ; bbWeight=0.97, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG12: ; bbWeight=0.97, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0.97 PerfScore 0.49
-G_M24157_IG12: ; bbWeight=0.97, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG13: ; bbWeight=0.97, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.97 PerfScore 3.88 -G_M24157_IG13: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.97 PerfScore 4.85 +G_M24157_IG14: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #0xD1FFAB1E LSL #32 ldr x2, [x2] ;; size=16 bbWeight=0.03 PerfScore 0.13
-G_M24157_IG14: ; bbWeight=0.03, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG15: ; 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=12 bbWeight=0.03 PerfScore 0.12
+ ;; size=16 bbWeight=0.03 PerfScore 0.15
-; Total bytes of code 204, prolog size 12, PerfScore 36.29, 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 220, prolog size 16, PerfScore 40.07, instruction count 55, allocated bytes for code 220 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -115,7 +123,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -126,10 +134,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

libraries.crossgen2.linux.arm64.checked.mch

-16 (-2.38%) : 144519.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)

@@ -13,35 +13,35 @@ ; V01 arg1 [V01,T35] ( 3, 3 ) int -> x1 single-def ; V02 arg2 [V02,T32] ( 5, 7.50) long -> x2 single-def ; V03 arg3 [V03,T36] ( 3, 3 ) int -> x3 single-def
-; V04 loc0 [V04,T00] ( 25,108.50) long -> registers -; V05 loc1 [V05,T06] ( 31, 69.50) long -> registers ld-addr-op -; V06 loc2 [V06,T30] ( 6, 10.50) long -> x1 single-def
+; V04 loc0 [V04,T00] ( 25,116.50) long -> registers +; V05 loc1 [V05,T04] ( 31, 76 ) long -> registers ld-addr-op +; V06 loc2 [V06,T23] ( 6, 13 ) long -> x1 single-def
; V07 loc3 [V07,T33] ( 3, 7 ) long -> x3 single-def ; V08 loc4 [V08,T20] ( 5, 18 ) int -> x0
-; V09 loc5 [V09,T05] ( 11, 70 ) int -> registers
+; V09 loc5 [V09,T05] ( 11, 74 ) int -> registers
; V10 loc6 [V10,T21] ( 4, 16 ) int -> x0
-; V11 loc7 [V11,T04] ( 13, 70 ) long -> registers -; V12 loc8 [V12,T12] ( 6, 26 ) int -> x6
+; V11 loc7 [V11,T06] ( 13, 70 ) long -> registers +; V12 loc8 [V12,T12] ( 6, 28 ) int -> x6
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T15] ( 3, 24 ) long -> x0 "impAppendStmt"
-; V15 tmp2 [V15,T22] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V16 tmp3 [V16,T23] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V17 tmp4 [V17,T24] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V18 tmp5 [V18,T25] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V19 tmp6 [V19,T26] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V20 tmp7 [V20,T27] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V21 tmp8 [V21,T28] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V22 tmp9 [V22,T29] ( 3, 12 ) long -> x7 "impSpillLclRefs"
+; V15 tmp2 [V15,T24] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V16 tmp3 [V16,T25] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V17 tmp4 [V17,T26] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V18 tmp5 [V18,T27] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V19 tmp6 [V19,T28] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V20 tmp7 [V20,T29] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V21 tmp8 [V21,T30] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V22 tmp9 [V22,T31] ( 3, 12 ) long -> x7 "impSpillLclRefs"
; V23 tmp10 [V23,T01] ( 6,108 ) int -> x6 "impSpillLclRefs" ; V24 tmp11 [V24,T02] ( 3, 96 ) long -> x6 "impSpillLclRefs" ; V25 tmp12 [V25,T03] ( 3, 96 ) long -> x7 "impSpillLclRefs"
-; V26 tmp13 [V26,T16] ( 9, 18 ) int -> x7 "Inline stloc first use temp"
+; V26 tmp13 [V26,T16] ( 9, 20 ) int -> x7 "Inline stloc first use temp"
;* V27 tmp14 [V27,T40] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V28 tmp15 [V28,T13] ( 12, 24 ) long -> x6 "Inline stloc first use temp"
-; V29 tmp16 [V29,T17] ( 10, 20 ) int -> registers "Inline stloc first use temp"
+; V29 tmp16 [V29,T18] ( 10, 20 ) int -> registers "Inline stloc first use temp"
; V30 tmp17 [V30,T11] ( 3, 40 ) long -> x7 "Inlining Arg" ; V31 tmp18 [V31,T07] ( 5, 66 ) int -> x9 "Inline stloc first use temp"
-; V32 tmp19 [V32,T18] ( 9, 18 ) int -> x7 "Inline stloc first use temp"
+; V32 tmp19 [V32,T17] ( 9, 20 ) int -> x7 "Inline stloc first use temp"
;* V33 tmp20 [V33,T41] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V34 tmp21 [V34,T14] ( 12, 24 ) long -> x6 "Inline stloc first use temp" ; V35 tmp22 [V35,T19] ( 10, 20 ) int -> registers "Inline stloc first use temp" @@ -51,7 +51,7 @@ ; V39 cse1 [V39,T38] ( 2, 4 ) int -> x7 "CSE - moderate" ; V40 cse2 [V40,T09] ( 3, 48 ) long -> x10 "CSE - aggressive" ; V41 cse3 [V41,T10] ( 3, 48 ) long -> x8 "CSE - aggressive"
-; V42 cse4 [V42,T31] ( 5, 10 ) long -> x8 "CSE - moderate"
+; V42 cse4 [V42,T22] ( 5, 14 ) long -> x8 "CSE - moderate"
; ; Lcl frame size = 0 @@ -64,7 +64,7 @@ G_M42792_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x1, x0, w1, SXTW add x3, x4, w3, SXTW cmp x0, x1
- bhs G_M42792_IG17
+ bhs G_M42792_IG16
;; size=20 bbWeight=1 PerfScore 4.00 G_M42792_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x5, x0, #1 @@ -98,17 +98,17 @@ G_M42792_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldrb w6, [x6] add w7, w7, w6, LSL #21 ;; size=96 bbWeight=2 PerfScore 52.00
-G_M42792_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add w6, w7, #7
- ;; size=4 bbWeight=2 PerfScore 1.00
+ ;; size=4 bbWeight=4 PerfScore 2.00
G_M42792_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz sub x7, x3, x4 sxtw x8, w6 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
sub x7, x1, x5 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
mov x7, x5 ldr x9, [x7] str x9, [x4] @@ -124,12 +124,12 @@ G_M42792_IG07: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp w9, w6 blt G_M42792_IG07 ;; size=24 bbWeight=16 PerfScore 104.00
-G_M42792_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x4, x4, x8 add x5, x5, x8 cmp x5, x1
- bhs G_M42792_IG16 - ;; size=16 bbWeight=2 PerfScore 5.00
+ bhs G_M42792_IG20 + ;; size=16 bbWeight=4 PerfScore 10.00
G_M42792_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz and w6, w0, #15 add w6, w6, #4 @@ -159,14 +159,14 @@ G_M42792_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldrb w6, [x6] add w7, w7, w6, LSL #21 ;; size=84 bbWeight=2 PerfScore 47.00
-G_M42792_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add w6, w7, #19
- ;; size=4 bbWeight=2 PerfScore 1.00
+ ;; size=4 bbWeight=4 PerfScore 2.00
G_M42792_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz sub x7, x3, x4 sxtw x8, w6 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
and w0, w0, #16 ldrh w7, [x5] add w0, w7, w0, LSL #12 @@ -175,9 +175,9 @@ G_M42792_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub x8, x4, x2 sxtw x9, w0 cmp x8, x9
- blt G_M42792_IG22
+ blt G_M42792_IG21
cmp w0, #8
- blt G_M42792_IG18
+ blt G_M42792_IG17
;; size=60 bbWeight=4 PerfScore 50.00 G_M42792_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [x7] @@ -194,21 +194,16 @@ G_M42792_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp w0, w6 blt G_M42792_IG14 ;; size=24 bbWeight=16 PerfScore 104.00
-G_M42792_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x4, x4, w6, SXTW mov x0, x4
- b G_M42792_IG20 - ;; size=12 bbWeight=2 PerfScore 5.00 -G_M42792_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x4 - b G_M42792_IG21 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M42792_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M42792_IG19 + ;; size=12 bbWeight=4 PerfScore 10.00 +G_M42792_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x5, x0
- mov x0, x4 - b G_M42792_IG21 - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M42792_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b G_M42792_IG20 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M42792_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x0, x4, #1 add x8, x7, #1 ldrb w7, [x7] @@ -233,9 +228,9 @@ G_M42792_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, strb w7, [x4] sub w4, w6, #1 cmp w6, #4
- beq G_M42792_IG20
+ beq G_M42792_IG19
;; size=100 bbWeight=2 PerfScore 50.00
-G_M42792_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG18: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov x6, x0 add x0, x6, #1 mov x7, x8 @@ -245,38 +240,37 @@ G_M42792_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sxtw w6, w4 sub w4, w6, #1 cmp w6, #4
- bne G_M42792_IG19
+ bne G_M42792_IG18
;; size=40 bbWeight=16 PerfScore 136.00
-G_M42792_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x5, x1
- blo G_M42792_IG24 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M42792_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov x4, x0 + blo G_M42792_IG23 + ;; size=12 bbWeight=4 PerfScore 8.00 +G_M42792_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x5, x1
- beq G_M42792_IG25 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M42792_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M42792_IG24 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M42792_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0
- ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M42792_IG23: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M42792_IG22: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M42792_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov x4, x0
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M42792_IG23: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov x0, x5 b G_M42792_IG03
- ;; size=12 bbWeight=2 PerfScore 4.00 -G_M42792_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x4, x0
+ ;; size=8 bbWeight=2 PerfScore 3.00 +G_M42792_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub x0, x4, x2
- ;; size=8 bbWeight=0.50 PerfScore 0.50 -G_M42792_IG26: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M42792_IG25: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 672, prolog size 8, PerfScore 640.50, instruction count 168, allocated bytes for code 672 (MethodHash=4bf758d7) for method Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
+; Total bytes of code 656, prolog size 8, PerfScore 653.50, instruction count 164, allocated bytes for code 656 (MethodHash=4bf758d7) for method Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -287,7 +281,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 168 (0x000a8) Actual length = 672 (0x0002a0)
+ Function Length : 164 (0x000a4) Actual length = 656 (0x000290)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-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,T00] ( 24, 29 ) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEventDispatcher> +; V01 arg1 [V01,T07] ( 11, 9.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,T12] ( 5, 8 ) long -> x0 +; V05 loc3 [V05,T06] ( 6, 18 ) int -> x2 +; V06 loc4 [V06,T02] ( 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,T13] ( 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,T03] ( 3, 24 ) ref -> x1 "arr expr" +; V15 tmp5 [V15,T04] ( 3, 24 ) ref -> x2 "argument with side effect" +; V16 cse0 [V16,T10] ( 2, 9 ) long -> x4 hoist "CSE - aggressive" +; V17 cse1 [V17,T14] ( 3, 6 ) int -> x3 "CSE - aggressive" +; V18 cse2 [V18,T17] ( 3, 3 ) ref -> x11 "CSE - moderate" +; V19 cse3 [V19,T18] ( 3, 1.50) ref -> x0 "CSE - moderate" +; V20 cse4 [V20,T01] ( 23, 28 ) long -> x22 hoist "CSE - aggressive" +; V21 cse5 [V21,T11] ( 11, 8.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_IG19
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_IG16 + ;; size=32 bbWeight=0.50 PerfScore 6.25 +G_M63325_IG10: ; bbWeight=1, 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] @@ -192,8 +188,8 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by 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
+ ;; size=140 bbWeight=1 PerfScore 48.00 +G_M63325_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -201,14 +197,14 @@ G_M63325_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by 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=20 bbWeight=0.50 PerfScore 2.75 +G_M63325_IG12: ; 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 +213,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_IG14
ldr w0, [x0, #0x08] ; gcrRegs -[x0] cmp w0, w21
- ble G_M63325_IG15
+ ble G_M63325_IG14
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]
ldr wzr, [x0] ...

-20 (-2.16%) : 230640.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)

@@ -9,23 +9,23 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 10, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter> -; V01 arg1 [V01,T15] ( 3, 2.50) ref -> x20 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
+; V00 this [V00,T04] ( 10, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter> +; V01 arg1 [V01,T15] ( 3, 2.50) ref -> x21 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
; V02 arg2 [V02,T03] ( 7, 10.50) ref -> x19 class-hnd single-def <System.Globalization.CultureInfo>
-; V03 arg3 [V03,T11] ( 7, 4.50) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object> -; V04 loc0 [V04,T20] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> -; V05 loc1 [V05,T16] ( 2, 4.50) ubyte -> x20 -; V06 loc2 [V06,T05] ( 4, 9 ) long -> x22
+; V03 arg3 [V03,T11] ( 7, 4.50) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object> +; V04 loc0 [V04,T20] ( 5, 3.50) ref -> x22 class-hnd single-def <<unknown class>> +; V05 loc1 [V05,T16] ( 2, 4.50) ubyte -> x21 +; V06 loc2 [V06,T05] ( 4, 9.50) long -> x23
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V08 loc4 [V08,T22] ( 3, 1.25) ref -> x0 class-hnd single-def <<unknown class>>
-; V09 loc5 [V09,T00] ( 5, 16.50) int -> x21
+; V09 loc5 [V09,T00] ( 5, 16.50) int -> x22
; V10 loc6 [V10,T10] ( 2, 8 ) ref -> x1 class-hnd <<unknown class>>
-; V11 loc7 [V11,T21] ( 3, 1.50) ref -> x0 class-hnd <System.Object>
+; V11 loc7 [V11,T21] ( 3, 2 ) ref -> x0 class-hnd <System.Object>
;* V12 loc8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V13 loc9 [V13,T17] ( 2, 4.50) ubyte -> x20 -; V14 loc10 [V14,T06] ( 4, 9 ) long -> x21
+; V13 loc9 [V13,T17] ( 2, 4.50) ubyte -> x21 +; V14 loc10 [V14,T06] ( 4, 9.50) long -> x22
; V15 loc11 [V15,T23] ( 3, 1.25) ref -> x0 class-hnd single-def <<unknown class>>
-; V16 loc12 [V16,T01] ( 5, 16.50) int -> x22
+; V16 loc12 [V16,T01] ( 5, 16.50) int -> x23
; V17 loc13 [V17,T07] ( 3, 8 ) ref -> x0 class-hnd <<unknown class>> ;# V18 OutArgs [V18 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V19 tmp1 [V19,T26] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> @@ -40,50 +40,49 @@ ; V28 tmp10 [V28,T29] ( 2, 0 ) ref -> x2 single-def "argument with side effect" ; V29 tmp11 [V29,T30] ( 2, 0 ) ref -> x20 single-def "argument with side effect" ; V30 tmp12 [V30,T31] ( 2, 0 ) ref -> x21 single-def "argument with side effect"
-; V31 PSPSym [V31,T24] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V32 cse0 [V32,T18] ( 2, 4.25) byref -> x24 hoist "CSE - moderate" -; V33 cse1 [V33,T19] ( 2, 4.25) byref -> x24 hoist "CSE - moderate" -; V34 cse2 [V34,T13] ( 3, 5 ) int -> x23 "CSE - moderate" -; V35 cse3 [V35,T14] ( 3, 5 ) int -> x23 "CSE - moderate" -; V36 cse4 [V36,T12] ( 4, 5.25) long -> x25 hoist multi-def "CSE - aggressive"
+; V31 PSPSym [V31,T24] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V32 cse0 [V32,T18] ( 2, 4.25) byref -> x25 hoist "CSE - moderate" +; V33 cse1 [V33,T19] ( 2, 4.25) byref -> x25 hoist "CSE - moderate" +; V34 cse2 [V34,T13] ( 3, 5 ) int -> x24 "CSE - moderate" +; V35 cse3 [V35,T14] ( 3, 5 ) int -> x24 "CSE - moderate" +; V36 cse4 [V36,T12] ( 4, 5.25) long -> x26 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M63242_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - str x25, [sp, #0x58]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50] + stp x25, x26, [sp, #0x60]
mov fp, sp
- add x4, sp, #96 - stp x0, x4, [fp, #0x18] // [V00 this], [V31 PSPSym]
+ add x4, sp, #112 + stp x0, x4, [fp, #0x20] // [V00 this], [V31 PSPSym]
; GC ptr vars +{V00}
- str x3, [fp, #0x10] // [V03 arg3]
+ str x3, [fp, #0x18] // [V03 arg3]
; GC ptr vars +{V03}
- mov x20, x1
+ mov x20, x0
; gcrRegs +[x20]
+ mov x21, x1 + ; gcrRegs +[x21]
mov x19, x2 ; gcrRegs +[x19]
- mov x2, x3 - ; gcrRegs +[x2] - ;; size=48 bbWeight=1 PerfScore 9.50 -G_M63242_IG02: ; bbWeight=1, gcVars=0000000000000810 {V00 V03}, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - mov x0, x2
+ mov x0, x3
; gcrRegs +[x0]
+ ;; size=52 bbWeight=1 PerfScore 10.00 +G_M63242_IG02: ; bbWeight=1, gcVars=0000000000000810 {V00 V03}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- ; gcrRegs -[x2]
; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - cbz x21, G_M63242_IG11 - ;; size=28 bbWeight=1 PerfScore 7.00 -G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0 x20] - mov x0, x21
+ mov x22, x0 + ; gcrRegs +[x22] + cbz x22, G_M63242_IG11 + ;; size=24 bbWeight=1 PerfScore 6.50 +G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0 x21] + mov x0, x22
; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -93,16 +92,15 @@ G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M63242_IG10
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- ldr x0, [x0, #0x08]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1 ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20]
+ mov x21, x0 + ; gcrRegs +[x21]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class> ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -113,46 +111,45 @@ G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000 blr x1 ; gcrRegs +[x0] ; gcr arg pop 0
- cmp x20, x0 - cset x20, eq - ; gcrRegs -[x20] - mov x22, xzr - mov x0, x21
+ cmp x21, x0 + cset x21, eq + ; gcrRegs -[x21] + mov x23, xzr + mov x0, x22
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] mov w1, #44 mov w2, wzr ldr x3, [x11] blr x3
- ; gcrRegs -[x21]
+ ; gcrRegs -[x22]
; gcr arg pop 0
- mov w21, wzr - ldr w23, [x0, #0x08] - cmp w23, #0
+ mov w22, wzr + ldr w24, [x0, #0x08] + cmp w24, #0
ble G_M63242_IG08
- ;; size=140 bbWeight=0.50 PerfScore 19.75 -G_M63242_IG04: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - add x24, x0, #16 - ; byrRegs +[x24] - adrp x25, [HIGH RELOC #0xD1FFAB1E] - add x25, x25, [LOW RELOC #0xD1FFAB1E]
+ ;; size=136 bbWeight=0.50 PerfScore 18.75 +G_M63242_IG04: ; bbWeight=0.25, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + add x25, x0, #16 + ; byrRegs +[x25] + adrp x26, [HIGH RELOC #0xD1FFAB1E] + add x26, x26, [LOW RELOC #0xD1FFAB1E]
;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M63242_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
+G_M63242_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0]
- ldr x1, [x24, w21, UXTW #3]
+ ldr x1, [x25, w22, UXTW #3]
; gcrRegs +[x1]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- ldr x0, [x0, #0x08] - mov x11, x25
+ mov x11, x26
mov w2, #1 ldr x3, [x11] blr x3 ; gcrRegs -[x1] ; gcr arg pop 0
- cbnz w20, G_M63242_IG09 - ;; size=32 bbWeight=4 PerfScore 56.00 -G_M63242_IG06: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 {x24}, byref
+ cbnz w21, G_M63242_IG09 + ;; size=28 bbWeight=4 PerfScore 48.00 +G_M63242_IG06: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref
mov x1, x19 ; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -162,29 +159,28 @@ G_M63242_IG06: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=20 bbWeight=2 PerfScore 11.00
-G_M63242_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz - orr x22, x22, x0 - add w21, w21, #1 - cmp w23, w21
+G_M63242_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz + orr x23, x23, x0 + add w22, w22, #1 + cmp w24, w22
bgt G_M63242_IG05 ;; size=16 bbWeight=4 PerfScore 10.00
-G_M63242_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M63242_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- ; byrRegs -[x24] - ldr x0, [fp, #0x18] // [V00 this]
+ ; byrRegs -[x25] + ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- ldr x0, [x0, #0x08] - mov x1, x22
+ mov x1, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0 b G_M63242_IG21
- ;; size=32 bbWeight=0.50 PerfScore 5.75 -G_M63242_IG09: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 {x24}, byref
+ ;; size=28 bbWeight=1 PerfScore 9.50 +G_M63242_IG09: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref
; gcrRegs +[x19]
- ; byrRegs +[x24]
+ ; byrRegs +[x25]
mov x1, x19 ; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -195,27 +191,26 @@ G_M63242_IG09: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 ; gcr arg pop 0 b G_M63242_IG07 ;; size=24 bbWeight=2 PerfScore 13.00
-G_M63242_IG10: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] +[x21]
...

+12 (+1.91%) : 78195.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)

@@ -12,7 +12,7 @@ ; V00 arg0 [V00,T05] ( 10, 6.50) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V01 loc0 [V01,T10] ( 7, 3.50) int -> x0 single-def ; V02 loc1 [V02,T03] ( 6, 17 ) ref -> x19 class-hnd <<unknown class>>
-; V03 loc2 [V03,T00] ( 4, 33 ) int -> x20
+; V03 loc2 [V03,T00] ( 4, 33.50) int -> x20
; V04 loc3 [V04 ] ( 2, 8 ) struct ( 8) [fp+0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ; V05 loc4 [V05 ] ( 4, 40 ) struct (16) [fp+0x48] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ; V06 loc5 [V06 ] ( 2, 32 ) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> @@ -23,7 +23,7 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol> ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.PointerTypeSymbol> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol>
-; V14 tmp7 [V14,T06] ( 5, 5 ) int -> registers "Single return block return value"
+; V14 tmp7 [V14,T06] ( 5, 6 ) int -> registers "Single return block return value"
; V15 tmp8 [V15 ] ( 2, 8 ) ref -> [fp+0x58] do-not-enreg[X] addr-exposed "field V04.array (fldOffset=0x0)" P-DEP ; V16 tmp9 [V16 ] ( 4, 40 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V05._array (fldOffset=0x0)" P-DEP ; V17 tmp10 [V17 ] ( 4, 40 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed "field V05._index (fldOffset=0x8)" P-DEP @@ -101,8 +101,9 @@ G_M16133_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x1, [x11] blr x1 ; gcrRegs -[x0]
- b G_M16133_IG19 - ;; size=68 bbWeight=0.50 PerfScore 9.50
+ mov w20, w0 + b G_M16133_IG18 + ;; size=72 bbWeight=0.50 PerfScore 9.75
G_M16133_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs +[x19] mov x0, x19 @@ -127,8 +128,9 @@ G_M16133_IG07: ; bbWeight=0.50, extend mov x11, x20 ldr x1, [x11] blr x1
- b G_M16133_IG19 - ;; size=28 bbWeight=0.50 PerfScore 3.50
+ mov w20, w0 + b G_M16133_IG18 + ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M16133_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs +[x19] mov x0, x19 @@ -153,8 +155,9 @@ G_M16133_IG10: ; bbWeight=0.50, extend mov x11, x20 ldr x1, [x11] blr x1
- b G_M16133_IG19 - ;; size=28 bbWeight=0.50 PerfScore 3.50
+ mov w20, w0 + b G_M16133_IG18 + ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M16133_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] mov x0, x19 @@ -254,7 +257,7 @@ G_M16133_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0 x19] mov w0, w20 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M16133_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M16133_IG19: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x90] ldp x23, x24, [sp, #0x80] ldp x21, x22, [sp, #0x70] @@ -274,7 +277,7 @@ G_M16133_IG21: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 628, prolog size 44, PerfScore 556.88, instruction count 157, allocated bytes for code 628 (MethodHash=4b2bc0fa) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
+; Total bytes of code 640, prolog size 44, PerfScore 557.62, instruction count 160, allocated bytes for code 640 (MethodHash=4b2bc0fa) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
; ============================================================ Unwind Info: @@ -285,7 +288,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 157 (0x0009d) Actual length = 628 (0x000274)
+ Function Length : 160 (0x000a0) Actual length = 640 (0x000280)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+2.07%) : 259423.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)

@@ -9,46 +9,46 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 13, 7.25) ref -> x19 this class-hnd single-def <System.Collections.BitArray> -; V01 arg1 [V01,T13] ( 7, 5 ) int -> x0 single-def -; V02 loc0 [V02,T07] ( 8, 11 ) int -> registers -; V03 loc1 [V03,T18] ( 6, 3 ) int -> x20 -; V04 loc2 [V04,T01] ( 11, 30 ) int -> x22 -; V05 loc3 [V05,T22] ( 5, 2 ) int -> x21 ld-addr-op -; V06 loc4 [V06,T26] ( 3, 1.50) int -> x23 ld-addr-op -; V07 loc5 [V07,T28] ( 2, 1 ) int -> x4 -; V08 loc6 [V08,T15] ( 3, 5 ) int -> x2 -; V09 loc7 [V09,T29] ( 2, 1 ) int -> x2 -; V10 loc8 [V10,T09] ( 2, 8 ) int -> x4 -; V11 loc9 [V11,T10] ( 2, 8 ) int -> x5
+; V00 this [V00,T08] ( 13, 7.75) ref -> x19 this class-hnd single-def <System.Collections.BitArray> +; V01 arg1 [V01,T14] ( 7, 5 ) int -> x0 single-def +; V02 loc0 [V02,T07] ( 8, 12 ) int -> registers +; V03 loc1 [V03,T19] ( 6, 3 ) int -> x20 +; V04 loc2 [V04,T01] ( 11, 31 ) int -> x22 +; V05 loc3 [V05,T22] ( 5, 2.50) int -> x21 ld-addr-op +; V06 loc4 [V06,T25] ( 3, 2 ) int -> x23 ld-addr-op +; V07 loc5 [V07,T30] ( 2, 1 ) int -> x4 +; V08 loc6 [V08,T17] ( 3, 5 ) int -> x2 +; V09 loc7 [V09,T26] ( 2, 2 ) int -> x2 +; V10 loc8 [V10,T10] ( 2, 8 ) int -> x4 +; V11 loc9 [V11,T11] ( 2, 8 ) int -> x5
; V12 loc10 [V12 ] ( 2, 1 ) struct (16) [fp+0x18] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Span`1[int]> ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[int]>
-; V15 tmp2 [V15,T05] ( 2, 16 ) int -> x22 "dup spill"
+; V15 tmp2 [V15,T06] ( 2, 16 ) int -> x22 "dup spill"
; V16 tmp3 [V16,T00] ( 4, 32 ) int -> x1 "impSpillLclRefs"
-; V17 tmp4 [V17,T17] ( 4, 4 ) int -> x0 "impSpillLclRefs" -; V18 tmp5 [V18,T19] ( 3, 3 ) byref -> x0 single-def "dup spill"
+; V17 tmp4 [V17,T09] ( 4, 8 ) int -> x0 "impSpillLclRefs" +; V18 tmp5 [V18,T20] ( 3, 3 ) byref -> x0 single-def "dup spill"
;* V19 tmp6 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V20 tmp7 [V20,T23] ( 4, 2 ) int -> x11 "Inline stloc first use temp"
-; V21 tmp8 [V21,T25] ( 2, 2 ) int -> x4 "Inlining Arg"
+; V21 tmp8 [V21,T27] ( 2, 2 ) int -> x4 "Inlining Arg"
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V23 tmp10 [V23 ] ( 2, 1 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP ; V24 tmp11 [V24 ] ( 2, 1 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x8)" P-DEP ;* V25 tmp12 [V25 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-DEP ;* V26 tmp13 [V26 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-DEP ; V27 tmp14 [V27,T02] ( 3, 24 ) ref -> x4 "arr expr"
-;* V28 tmp15 [V28,T11] ( 0, 0 ) ref -> zero-ref "arr expr" -;* V29 tmp16 [V29,T12] ( 0, 0 ) ref -> zero-ref "arr expr" -; V30 tmp17 [V30,T20] ( 3, 3 ) ref -> x0 single-def "arr expr" -;* V31 tmp18 [V31,T30] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V28 tmp15 [V28,T12] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V29 tmp16 [V29,T13] ( 0, 0 ) ref -> zero-ref "arr expr" +; V30 tmp17 [V30,T16] ( 3, 6 ) ref -> x0 single-def "arr expr" +;* V31 tmp18 [V31,T28] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V32 tmp19 [V32,T21] ( 3, 3 ) ref -> x0 single-def "arr expr"
-; V33 cse0 [V33,T16] ( 2, 4.25) int -> x3 hoist "CSE - aggressive" -; V34 cse1 [V34,T27] ( 3, 1.50) int -> x22 "CSE - moderate" -; V35 cse2 [V35,T06] ( 8, 7.25) ref -> registers hoist multi-def "CSE - aggressive"
+; V33 cse0 [V33,T18] ( 2, 4.25) int -> x3 hoist "CSE - aggressive" +; V34 cse1 [V34,T29] ( 3, 1.50) int -> x22 "CSE - moderate" +; V35 cse2 [V35,T05] ( 8, 8.25) ref -> registers hoist multi-def "CSE - aggressive"
; V36 cse3 [V36,T24] ( 4, 2 ) int -> x4 "CSE - moderate"
-; V37 cse4 [V37,T04] ( 9, 18.50) int -> x24 multi-def "CSE - aggressive" -; V38 cse5 [V38,T03] ( 9, 18.50) byref -> x25 multi-def "CSE - aggressive" -; V39 cse6 [V39,T14] ( 4, 5.25) int -> x11 hoist multi-def "CSE - aggressive"
+; V37 cse4 [V37,T04] ( 9, 20 ) int -> x24 multi-def "CSE - aggressive" +; V38 cse5 [V38,T03] ( 9, 20 ) byref -> x25 multi-def "CSE - aggressive" +; V39 cse6 [V39,T15] ( 4, 6.25) int -> x11 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -101,12 +101,12 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 add w2, w4, #31 lsr w20, w2, #5 cmp w0, w4
- bge G_M25748_IG10
+ bge G_M25748_IG06
lsr w11, w0, #5 and w21, w0, #31 sxtw w22, w11 and w23, w4, #31
- cbnz w21, G_M25748_IG06
+ cbnz w21, G_M25748_IG07
neg w4, w23 add w4, w4, #32 movn w0, #0 @@ -118,7 +118,7 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 sub w1, w20, #1 ldr w24, [x0, #0x08] cmp w1, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
add x25, x0, #16 ; byrRegs +[x25] sub w0, w20, #1 @@ -144,14 +144,19 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; byrRegs -[x25] ; gcr arg pop 0 sxtw w1, w22
- b G_M25748_IG10 - ;; size=156 bbWeight=0.50 PerfScore 18.25 -G_M25748_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, w1 + b G_M25748_IG11 + ;; size=160 bbWeight=0.50 PerfScore 18.50 +G_M25748_IG06: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov w6, w1 + b G_M25748_IG11 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M25748_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w2, w20, #1 cmp w22, w2
- bge G_M25748_IG13
+ bge G_M25748_IG14
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M25748_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25748_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08] ; gcrRegs +[x0] and w11, w21, #31 @@ -159,12 +164,12 @@ G_M25748_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, add w3, w3, #32 and w3, w3, #31 ;; size=20 bbWeight=0.25 PerfScore 1.25
-G_M25748_IG08: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG09: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
mov x4, x0 ; gcrRegs +[x4] ldr w24, [x4, #0x08] cmp w22, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
add x25, x4, #16 ; byrRegs +[x25] ldr w4, [x25, w22, UXTW #2] @@ -172,18 +177,18 @@ G_M25748_IG08: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, lsr w4, w4, w11 add w22, w22, #1 cmp w22, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
ldr w5, [x25, w22, UXTW #2] lsl w5, w5, w3 add w6, w1, #1 cmp w1, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
orr w4, w5, w4 str w4, [x25, w1, UXTW #2] cmp w22, w2
- blt G_M25748_IG12
+ blt G_M25748_IG13
;; size=76 bbWeight=4 PerfScore 78.00
-G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ; byrRegs -[x25] neg w0, w23 @@ -194,7 +199,7 @@ G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x0] ldr w24, [x0, #0x08] cmp w22, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
add x25, x0, #16 ; byrRegs +[x25] ldr w0, [x25, w22, UXTW #2] @@ -203,17 +208,17 @@ G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, sxtw w0, w6 add w6, w0, #1 cmp w0, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
and w11, w21, #31 lsr w2, w2, w11 str w2, [x25, w0, UXTW #2]
- mov w1, w6 - ;; size=76 bbWeight=0.50 PerfScore 9.25 -G_M25748_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=72 bbWeight=1 PerfScore 18.00 +G_M25748_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x25]
- sub w2, w20, w1
+ sub w2, w20, w6
ldr x0, [x19, #0x08] ; gcrRegs +[x0]
+ mov w1, w6
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11] @@ -234,8 +239,8 @@ G_M25748_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, str w0, [x19, #0x14] mov x0, x19 ; gcrRegs +[x0]
- ;; size=64 bbWeight=0.50 PerfScore 10.00 -G_M25748_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=68 bbWeight=0.50 PerfScore 10.25 +G_M25748_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldr x25, [sp, #0x58] ldp x23, x24, [sp, #0x48] ldp x21, x22, [sp, #0x38] @@ -243,16 +248,16 @@ G_M25748_IG11: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M25748_IG12: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M25748_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref
mov w1, w6
- b G_M25748_IG08
+ b G_M25748_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M25748_IG13: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25748_IG14: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov w6, w1
- b G_M25748_IG09
+ b G_M25748_IG10
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M25748_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25748_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -262,7 +267,7 @@ G_M25748_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 580, prolog size 36, PerfScore 145.62, instruction count 145, allocated bytes for code 580 (MethodHash=f7299b6b) for method System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
+; Total bytes of code 592, prolog size 36, PerfScore 155.25, instruction count 148, allocated bytes for code 592 (MethodHash=f7299b6b) for method System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
; ============================================================ Unwind Info: @@ -273,7 +278,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 145 (0x00091) Actual length = 580 (0x000244)
+ Function Length : 148 (0x00094) Actual length = 592 (0x000250)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+4.14%) : 144493.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)

@@ -11,9 +11,9 @@ ; V00 arg0 [V00,T13] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Object> ; V01 arg1 [V01,T11] ( 5, 5 ) ubyte -> x19 single-def ; V02 loc0 [V02,T12] ( 7, 6 ) ref -> x20 class-hnd <System.String>
-; V03 loc1 [V03,T03] ( 10, 29 ) ref -> x21 class-hnd <<unknown class>> -; V04 loc2 [V04,T09] ( 6, 12 ) ref -> x27 class-hnd <System.String> -; V05 loc3 [V05,T01] ( 10, 63 ) int -> registers
+; V03 loc1 [V03,T03] ( 10, 31 ) ref -> x21 class-hnd <<unknown class>> +; V04 loc2 [V04,T09] ( 6, 14 ) ref -> x27 class-hnd <System.String> +; V05 loc3 [V05,T01] ( 10, 67 ) int -> registers
; V06 loc4 [V06,T02] ( 7, 35 ) int -> x23 ; V07 loc5 [V07,T07] ( 7, 18 ) ushort -> x11 ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -53,7 +53,7 @@ G_M34503_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre mov w23, wzr ldr w24, [x20, #0x08] cmp w24, #0
- ble G_M34503_IG15
+ ble G_M34503_IG07
;; size=48 bbWeight=1 PerfScore 14.50 G_M34503_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -65,54 +65,68 @@ G_M34503_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=000 G_M34503_IG04: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz ldrh w11, [x25, w23, UXTW #2] cmp w11, #38
- bhi G_M34503_IG06
+ bhi G_M34503_IG08
;; size=12 bbWeight=4 PerfScore 18.00 G_M34503_IG05: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz cmp w11, #34
- beq G_M34503_IG07
+ beq G_M34503_IG10
cmp w11, #38
- bne G_M34503_IG14
+ bne G_M34503_IG06
adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x11, [x11] ldr x27, [x11] ; gcrRegs +[x27]
- b G_M34503_IG10
+ b G_M34503_IG13
;; size=36 bbWeight=2 PerfScore 22.00
-G_M34503_IG06: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz
+G_M34503_IG06: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x27]
+ mov w28, w22 + b G_M34503_IG17 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M34503_IG07: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref + ; byrRegs -[x25] + mov w28, w22 + b G_M34503_IG18 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M34503_IG08: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz + ; byrRegs +[x25]
cmp w11, #39
- beq G_M34503_IG08
+ beq G_M34503_IG11
cmp w11, #60
- beq G_M34503_IG09
+ beq G_M34503_IG12
cmp w11, #62
- bne G_M34503_IG14
+ bne G_M34503_IG09
adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x11, [x11] ldr x27, [x11] ; gcrRegs +[x27]
- b G_M34503_IG10
+ b G_M34503_IG13
;; size=44 bbWeight=2 PerfScore 25.00
-G_M34503_IG07: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG09: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref + ; gcrRegs -[x27] + mov w28, w22 + b G_M34503_IG17 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M34503_IG10: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref + adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr + add x11, x11, [LOW RELOC #0xD1FFAB1E] + ldr x11, [x11] + ldr x27, [x11] + ; gcrRegs +[x27] + b G_M34503_IG13 + ;; size=20 bbWeight=2 PerfScore 16.00 +G_M34503_IG11: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x27] adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x11, [x11] ldr x27, [x11] ; gcrRegs +[x27]
- b G_M34503_IG10
+ b G_M34503_IG13
;; size=20 bbWeight=2 PerfScore 16.00
-G_M34503_IG08: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref - ; gcrRegs -[x27] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x11, [x11] - ldr x27, [x11] - ; gcrRegs +[x27] - b G_M34503_IG10 - ;; size=20 bbWeight=2 PerfScore 16.00 -G_M34503_IG09: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG12: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x27] adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -120,8 +134,8 @@ G_M34503_IG09: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=200000 ldr x27, [x11] ; gcrRegs +[x27] ;; size=16 bbWeight=2 PerfScore 14.00
-G_M34503_IG10: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz - cbnz x21, G_M34503_IG11
+G_M34503_IG13: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz + cbnz x21, G_M34503_IG14
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -137,7 +151,7 @@ G_M34503_IG10: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2 ; gcrRegs -[x0] ; gcr arg pop 0 tst w19, #255
- beq G_M34503_IG11
+ beq G_M34503_IG14
mov x0, x21 ; gcrRegs +[x0] mov x11, x26 @@ -146,16 +160,16 @@ G_M34503_IG10: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2 blr x2 ; gcr arg pop 0 ;; size=68 bbWeight=2 PerfScore 37.00
-G_M34503_IG11: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
+G_M34503_IG14: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0] cmp w22, w23
- bge G_M34503_IG18
+ bge G_M34503_IG22
;; size=8 bbWeight=2 PerfScore 3.00
-G_M34503_IG12: ; bbWeight=16, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
+G_M34503_IG15: ; bbWeight=16, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
add w1, w22, #1 sxtw w28, w1 cmp w22, w24
- bhs G_M34503_IG27
+ bhs G_M34503_IG31
ldrh w1, [x25, w22, UXTW #2] mov x0, x21 ; gcrRegs +[x0] @@ -165,9 +179,9 @@ G_M34503_IG12: ; bbWeight=16, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs= blr x2 ; gcr arg pop 0 cmp w28, w23
- blt G_M34503_IG17
+ blt G_M34503_IG21
;; size=48 bbWeight=16 PerfScore 240.00
-G_M34503_IG13: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG16: ; bbWeight=4, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x0] mov x0, x21 ; gcrRegs +[x0] @@ -181,41 +195,45 @@ G_M34503_IG13: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2 ; gcrRegs -[x1 x27] ; gcr arg pop 0 add w28, w28, #1
- mov w22, w28 - ;; size=36 bbWeight=2 PerfScore 20.00 -G_M34503_IG14: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz
+ ;; size=32 bbWeight=4 PerfScore 38.00 +G_M34503_IG17: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0] add w23, w23, #1 cmp w24, w23
- bgt G_M34503_IG04
+ bgt G_M34503_IG20
;; size=12 bbWeight=4 PerfScore 8.00
-G_M34503_IG15: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG18: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x25]
- cbnz x21, G_M34503_IG20
+ cbnz x21, G_M34503_IG24
;; size=4 bbWeight=1 PerfScore 1.00
-G_M34503_IG16: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG19: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21] tst w19, #255
- beq G_M34503_IG25 - b G_M34503_IG24
+ beq G_M34503_IG29 + b G_M34503_IG28
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M34503_IG17: ; bbWeight=8, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref - ; gcrRegs +[x21 x27]
+G_M34503_IG20: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref + ; gcrRegs +[x21]
; byrRegs +[x25] mov w22, w28
- b G_M34503_IG12
+ b G_M34503_IG04 + ;; size=8 bbWeight=2 PerfScore 3.00 +G_M34503_IG21: ; bbWeight=8, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref + ; gcrRegs +[x27] + mov w22, w28 + b G_M34503_IG15
;; size=8 bbWeight=8 PerfScore 12.00
-G_M34503_IG18: ; bbWeight=1, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG22: ; bbWeight=1, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
mov w28, w22
- b G_M34503_IG13
+ b G_M34503_IG16
;; size=8 bbWeight=1 PerfScore 1.50
-G_M34503_IG19: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG23: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27] ; byrRegs -[x25]
- sxtw w1, w22 - add w22, w1, #1
+ sxtw w1, w28 + add w28, w1, #1
cmp w1, w24
- bhs G_M34503_IG27
+ bhs G_M34503_IG31
add x25, x20, #12 ; byrRegs +[x25] ldrh w1, [x25, w1, UXTW #2] @@ -229,15 +247,15 @@ G_M34503_IG19: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; byrRegs -[x25] ; gcr arg pop 0 ;; size=48 bbWeight=2 PerfScore 24.00
-G_M34503_IG20: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG24: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cmp w24, w22 - bgt G_M34503_IG19
+ cmp w24, w28 + bgt G_M34503_IG23
;; size=8 bbWeight=4 PerfScore 6.00
-G_M34503_IG21: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG25: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] tst w19, #255
- beq G_M34503_IG22
+ beq G_M34503_IG26
mov x0, x21 ; gcrRegs +[x0] adrp x26, [HIGH RELOC #0xD1FFAB1E] // function address ...

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, 19 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M34838_IG07: ; bbWeight=1, 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
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M34838_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, w3 + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M34838_IG09: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; 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 46.49, 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, 18 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M35228_IG07: ; bbWeight=1, 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
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M35228_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, w4 + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M35228_IG09: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; 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 48.99, 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
...

+40 (+10.10%) : 279102.dasm - System.Linq.OrderedEnumerable1[System.Numerics.Vector1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)

@@ -8,32 +8,33 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]>
-; V01 arg1 [V01,T04] ( 4, 3 ) byref -> x20 single-def
+; V01 arg1 [V01,T04] ( 4, 3.50) byref -> x20 single-def
; V02 loc0 [V02,T03] ( 4, 6 ) ref -> x21 class-hnd single-def <<unknown class>> ; V03 loc1 [V03,T01] ( 9, 11 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
-; V04 loc2 [V04,T08] ( 4, 3.50) simd16 -> [fp+0x30] HFA(simd16) <System.Numerics.Vector`1[float]> -; V05 loc3 [V05,T09] ( 3, 2 ) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V04 loc2 [V04,T08] ( 4, 4 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]> +; V05 loc3 [V05,T09] ( 3, 2.50) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d10 HFA(simd16) <System.Numerics.Vector`1[float]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
; V09 cse0 [V09,T05] ( 3, 5 ) long -> x22 "CSE - aggressive" ; V10 cse1 [V10,T00] ( 10, 13 ) long -> x19 multi-def "CSE - aggressive" ;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M50903_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!
- stp d8, d9, [sp, #0x50]
+ stp d8, d9, [sp, #0x40] + stp d10, d11, [sp, #0x50]
stp x19, x20, [sp, #0x60] stp x21, x22, [sp, #0x70] mov fp, sp add x2, sp, #128
- str x2, [fp, #0x48] // [V08 PSPSym]
+ str x2, [fp, #0x38] // [V08 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; byrRegs +[x20]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M50903_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref mov x0, x19 ; gcrRegs +[x0] @@ -74,32 +75,6 @@ G_M50903_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20} ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M50903_IG05: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs +[x21]
- ldr x0, [fp, #0x18] // [V03 loc1] - ; gcrRegs +[x0] - add x11, x19, #16 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - mov x0, x21 - ; gcrRegs +[x0] - str q0, [fp, #0x30] // [V04 loc2] - ldr x1, [x21] - ldr x22, [x1, #0x48] - ldr x1, [x22, #0x28] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ldr x0, [fp, #0x18] // [V03 loc1] - ; gcrRegs +[x0] - add x11, x19, #8 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbz w0, G_M50903_IG09 - ;; size=60 bbWeight=0.50 PerfScore 12.75 -G_M50903_IG06: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
ldr x0, [fp, #0x18] // [V03 loc1] ; gcrRegs +[x0] add x11, x19, #16 @@ -111,19 +86,13 @@ G_M50903_IG06: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x2 mov x0, x21 ; gcrRegs +[x0] mov v0.16b, v8.16b
- mov w1, #1 - ldr x2, [x22, #0x20]
+ ldr x1, [x21] + ldr x22, [x1, #0x48] + ldr x1, [x22, #0x28]
mov v9.d[0], v8.d[1]
- blr x2
+ blr x1
; gcrRegs -[x0] ; gcr arg pop 0
- mov v8.d[1], v9.d[0] - tbz w0, #31, G_M50903_IG08 - ;; size=52 bbWeight=4 PerfScore 62.00 -G_M50903_IG07: ; bbWeight=2, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref - str q8, [fp, #0x30] // [V04 loc2] - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M50903_IG08: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
ldr x0, [fp, #0x18] // [V03 loc1] ; gcrRegs +[x0] add x11, x19, #8 @@ -131,15 +100,53 @@ G_M50903_IG08: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x2 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
+ mov v8.d[1], v9.d[0] + cbz w0, G_M50903_IG09 + ;; size=72 bbWeight=0.50 PerfScore 13.75 +G_M50903_IG06: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V03 loc1] + ; gcrRegs +[x0] + add x11, x19, #16 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.16b, v0.16b + mov x0, x21 + ; gcrRegs +[x0] + mov v0.16b, v10.16b + mov w1, #1 + ldr x2, [x22, #0x20] + mov v11.d[0], v10.d[1] + blr x2 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.d[1], v11.d[0] + mov v8.d[1], v9.d[0] + tbz w0, #31, G_M50903_IG08 + ;; size=60 bbWeight=4 PerfScore 70.00 +G_M50903_IG07: ; bbWeight=2, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref + mov v8.16b, v10.16b + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M50903_IG08: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V03 loc1] + ; gcrRegs +[x0] + add x11, x19, #8 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v8.d[1], v9.d[0]
cbnz w0, G_M50903_IG06
- ;; size=20 bbWeight=4 PerfScore 30.00 -G_M50903_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+ ;; size=28 bbWeight=4 PerfScore 38.00 +G_M50903_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x21] mov w0, #1 strb w0, [x20]
- ldr q0, [fp, #0x30] // [V04 loc2] - str q0, [fp, #0x20] // [V05 loc3] - ;; size=16 bbWeight=0.50 PerfScore 2.25
+ str q8, [fp, #0x20] // [V05 loc3] + ;; size=12 bbWeight=1 PerfScore 2.50
G_M50903_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x20] ldr x0, [fp, #0x18] // [V03 loc1] @@ -155,18 +162,20 @@ G_M50903_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M50903_IG11: ; bbWeight=1, epilog, nogc, extend ldp x21, x22, [sp, #0x70] ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
+ ldp d10, d11, [sp, #0x50] + ldp d8, d9, [sp, #0x40]
ldp fp, lr, [sp], #0x80 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
G_M50903_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp d8, d9, [sp, #0x20]
- stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40]
+ stp d10, d11, [sp, #0x30] + stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
add x3, fp, #128 str x3, [sp, #0x18]
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M50903_IG13: ; bbWeight=0, gcVars=0000000000000002 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V01 V03} ldr x0, [fp, #0x18] // [V03 loc1] @@ -183,25 +192,26 @@ G_M50903_IG13: ; bbWeight=0, gcVars=0000000000000002 {V03}, gcrefRegs=000 ; gcr arg pop 0 ;; size=32 bbWeight=0 PerfScore 0.00 G_M50903_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
- ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30]
+ ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40] + ldp d10, d11, [sp, #0x30]
ldp d8, d9, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 36, PerfScore 158.25, instruction count 99, allocated bytes for code 396 (MethodHash=ce5e3928) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
+; Total bytes of code 436, prolog size 40, PerfScore 176.50, instruction count 109, allocated bytes for code 436 (MethodHash=ce5e3928) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -211,9 +221,13 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
- D8 0A save_fregp X#0 Z#10 (0x0A); stp d8, d9, [sp, #80]
+ E6 save_next + D8 08 save_fregp X#0 Z#8 (0x08); stp d8, d9, [sp, #64]
8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! E4 end
+ E4 end + E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) @@ -223,15 +237,15 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ---- E6 save_next
- C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
+ C8 08 save_regp X#0 Z#8 (0x08); stp x19, x20, [sp, #64] + E6 save_next
D8 04 save_fregp X#0 Z#4 (0x04); stp d8, d9, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
...

+40 (+10.10%) : 279103.dasm - System.Linq.OrderedEnumerable1[System.Numerics.Vector1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)

@@ -8,32 +8,33 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 4 ) ref -> x19 this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]>
-; V01 arg1 [V01,T04] ( 4, 3 ) byref -> x20 single-def
+; V01 arg1 [V01,T03] ( 4, 3.50) byref -> x20 single-def
; V02 loc0 [V02,T01] ( 9, 11 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
-; V03 loc1 [V03,T03] ( 4, 5.50) ref -> x19 class-hnd single-def <<unknown class>> -; V04 loc2 [V04,T08] ( 4, 3.50) simd16 -> [fp+0x30] HFA(simd16) <System.Numerics.Vector`1[float]> -; V05 loc3 [V05,T09] ( 3, 2 ) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V03 loc1 [V03,T04] ( 4, 5.50) ref -> x19 class-hnd single-def <<unknown class>> +; V04 loc2 [V04,T08] ( 4, 4 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]> +; V05 loc3 [V05,T09] ( 3, 2.50) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d10 HFA(simd16) <System.Numerics.Vector`1[float]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
; V09 cse0 [V09,T05] ( 3, 5 ) long -> x22 "CSE - aggressive" ; V10 cse1 [V10,T00] ( 10, 13 ) long -> x21 multi-def "CSE - aggressive" ;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M19015_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!
- stp d8, d9, [sp, #0x50]
+ stp d8, d9, [sp, #0x40] + stp d10, d11, [sp, #0x50]
stp x19, x20, [sp, #0x60] stp x21, x22, [sp, #0x70] mov fp, sp add x2, sp, #128
- str x2, [fp, #0x48] // [V08 PSPSym]
+ str x2, [fp, #0x38] // [V08 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; byrRegs +[x20]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M19015_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref ldr x0, [x19, #0x08] ; gcrRegs +[x0] @@ -81,49 +82,17 @@ G_M19015_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- mov x0, x19 - ; gcrRegs +[x0] - str q0, [fp, #0x30] // [V04 loc2] - ldr x1, [x19] - ldr x22, [x1, #0x48] - ldr x1, [x22, #0x28] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ldr x0, [fp, #0x18] // [V02 loc0] - ; gcrRegs +[x0] - add x11, x21, #8 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbz w0, G_M19015_IG09 - ;; size=88 bbWeight=0.50 PerfScore 18.50 -G_M19015_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - ldr x0, [fp, #0x18] // [V02 loc0] - ; gcrRegs +[x0] - add x11, x21, #16 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0
mov v8.16b, v0.16b mov x0, x19 ; gcrRegs +[x0] mov v0.16b, v8.16b
- mov w1, wzr - ldr x2, [x22, #0x20]
+ ldr x1, [x19] + ldr x22, [x1, #0x48] + ldr x1, [x22, #0x28]
mov v9.d[0], v8.d[1]
- blr x2
+ blr x1
; gcrRegs -[x0] ; gcr arg pop 0
- mov v8.d[1], v9.d[0] - tbnz w0, #31, G_M19015_IG08 - ;; size=52 bbWeight=4 PerfScore 62.00 -G_M19015_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - str q8, [fp, #0x30] // [V04 loc2] - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M19015_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldr x0, [fp, #0x18] // [V02 loc0] ; gcrRegs +[x0] add x11, x21, #8 @@ -131,15 +100,53 @@ G_M19015_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
+ mov v8.d[1], v9.d[0] + cbz w0, G_M19015_IG09 + ;; size=100 bbWeight=0.50 PerfScore 19.50 +G_M19015_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V02 loc0] + ; gcrRegs +[x0] + add x11, x21, #16 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.16b, v0.16b + mov x0, x19 + ; gcrRegs +[x0] + mov v0.16b, v10.16b + mov w1, wzr + ldr x2, [x22, #0x20] + mov v11.d[0], v10.d[1] + blr x2 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.d[1], v11.d[0] + mov v8.d[1], v9.d[0] + tbnz w0, #31, G_M19015_IG08 + ;; size=60 bbWeight=4 PerfScore 70.00 +G_M19015_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref + mov v8.16b, v10.16b + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M19015_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V02 loc0] + ; gcrRegs +[x0] + add x11, x21, #8 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v8.d[1], v9.d[0]
cbnz w0, G_M19015_IG06
- ;; size=20 bbWeight=4 PerfScore 30.00 -G_M19015_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+ ;; size=28 bbWeight=4 PerfScore 38.00 +G_M19015_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x19] mov w0, #1 strb w0, [x20]
- ldr q0, [fp, #0x30] // [V04 loc2] - str q0, [fp, #0x20] // [V05 loc3] - ;; size=16 bbWeight=0.50 PerfScore 2.25
+ str q8, [fp, #0x20] // [V05 loc3] + ;; size=12 bbWeight=1 PerfScore 2.50
G_M19015_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x20] ldr x0, [fp, #0x18] // [V02 loc0] @@ -155,18 +162,20 @@ G_M19015_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M19015_IG11: ; bbWeight=1, epilog, nogc, extend ldp x21, x22, [sp, #0x70] ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
+ ldp d10, d11, [sp, #0x50] + ldp d8, d9, [sp, #0x40]
ldp fp, lr, [sp], #0x80 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
G_M19015_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp d8, d9, [sp, #0x20]
- stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40]
+ stp d10, d11, [sp, #0x30] + stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
add x3, fp, #128 str x3, [sp, #0x18]
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M19015_IG13: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V01 V02} ldr x0, [fp, #0x18] // [V02 loc0] @@ -183,25 +192,26 @@ G_M19015_IG13: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=000 ; gcr arg pop 0 ;; size=32 bbWeight=0 PerfScore 0.00 G_M19015_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
- ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30]
+ ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40] + ldp d10, d11, [sp, #0x30]
ldp d8, d9, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 36, PerfScore 152.50, instruction count 99, allocated bytes for code 396 (MethodHash=dbb2b5b8) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
+; Total bytes of code 436, prolog size 40, PerfScore 170.75, instruction count 109, allocated bytes for code 436 (MethodHash=dbb2b5b8) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -211,9 +221,13 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
- D8 0A save_fregp X#0 Z#10 (0x0A); stp d8, d9, [sp, #80]
+ E6 save_next + D8 08 save_fregp X#0 Z#8 (0x08); stp d8, d9, [sp, #64]
8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! E4 end
+ E4 end + E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) @@ -223,15 +237,15 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ---- E6 save_next
- C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
+ C8 08 save_regp X#0 Z#8 (0x08); stp x19, x20, [sp, #64] + E6 save_next
D8 04 save_fregp X#0 Z#4 (0x04); stp d8, d9, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
...

+20 (+15.62%) : 122047.dasm - Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary2[System.Numerics.Vector1[float],System.Nullable1[int]]:Remove(System.Numerics.Vector1[float]):this (FullOpts)

@@ -8,38 +8,42 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 11.50) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]> -; V01 arg1 [V01,T05] ( 4, 3.50) simd16 -> [fp+0x10] HFA(simd16) single-def <System.Numerics.Vector`1[float]>
+; V00 this [V00,T01] ( 6, 12 ) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]> +; V01 arg1 [V01,T05] ( 4, 4 ) simd16 -> d8 HFA(simd16) single-def <System.Numerics.Vector`1[float]>
; V02 loc0 [V02,T00] ( 6, 17 ) ref -> x0 ld-addr-op class-hnd <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ; V06 tmp3 [V06,T03] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp" ;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M54949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
+ stp d8, d9, [sp, #0x18]
str x19, [sp, #0x28] mov fp, sp
+ mov v8.16b, v0.16b
mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M54949_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldrsb wzr, [x0]
- str q0, [fp, #0x10] // [V01 arg1]
+ mov v0.16b, v8.16b
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1]
+ mov v9.d[0], v8.d[1]
blr x1 ; gcrRegs -[x0] ; byrRegs +[x0] ; gcr arg pop 0
+ mov v8.d[1], v9.d[0]
cbz x0, G_M54949_IG06
- ;; size=36 bbWeight=1 PerfScore 13.50
+ ;; size=44 bbWeight=1 PerfScore 15.00
G_M54949_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz ldr x0, [x0] ; gcrRegs +[x0] @@ -54,11 +58,11 @@ G_M54949_IG04: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ldr x0, [x0, #0x08] cbnz x0, G_M54949_IG04 ;; size=24 bbWeight=4 PerfScore 38.00
-G_M54949_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M54949_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- ldr q0, [fp, #0x10] // [V01 arg1]
+ mov v0.16b, v8.16b
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -67,14 +71,15 @@ G_M54949_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, blr x1 ; gcrRegs -[x0 x19] ; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.75
+ ;; size=32 bbWeight=1 PerfScore 12.00
G_M54949_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ldr x19, [sp, #0x28]
+ ldp d8, d9, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 128, prolog size 16, PerfScore 67.25, instruction count 32, allocated bytes for code 128 (MethodHash=83d0295a) for method Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
+; Total bytes of code 148, prolog size 24, PerfScore 76.50, instruction count 37, allocated bytes for code 148 (MethodHash=83d0295a) for method Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
; ============================================================ Unwind Info: @@ -85,7 +90,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -94,9 +99,8 @@ Unwind Info: E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
+ D8 03 save_fregp X#0 Z#3 (0x03); stp d8, d9, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
- E4 end - E4 end

libraries_tests.run.linux.arm64.Release.mch

-4 (-4.76%) : 15519.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)

@@ -13,7 +13,7 @@ ; V02 loc0 [V02,T01] ( 5, 5 ) int -> x2 ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V04 cse0 [V04,T04] ( 2, 2 ) byref -> x1 hoist "CSE - aggressive"
-; V05 cse1 [V05,T05] ( 2, 2 ) int -> x4 hoist "CSE - aggressive"
+; V05 cse1 [V05,T05] ( 2, 2 ) int -> x0 hoist "CSE - aggressive"
; V06 cse2 [V06,T03] ( 3, 3 ) int -> x3 "CSE - aggressive" ; ; Lcl frame size = 0 @@ -31,11 +31,11 @@ G_M26314_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1]
- and w4, w0, #0xD1FFAB1E
+ and w0, w0, #0xD1FFAB1E
;; size=24 bbWeight=1 PerfScore 6.00 G_M26314_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, byref, isz
- ldr w0, [x1, w2, UXTW #2] - cmp w0, w4
+ ldr w4, [x1, w2, UXTW #2] + cmp w4, w0
bne G_M26314_IG05 mov w0, #1 ;; size=16 bbWeight=1 PerfScore 5.00 @@ -46,19 +46,18 @@ G_M26314_IG04: ; bbWeight=1, epilog, nogc, extend G_M26314_IG05: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0002 {x1}, gcvars, byref, isz add w2, w2, #1 cmp w3, w2
- ble G_M26314_IG06 - b G_M26314_IG03 - ;; size=16 bbWeight=1 PerfScore 3.00 -G_M26314_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bgt G_M26314_IG03 + ;; size=12 bbWeight=1 PerfScore 2.00 +G_M26314_IG06: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x1] mov w0, wzr
- ;; size=4 bbWeight=0 PerfScore 0.00 -G_M26314_IG07: ; bbWeight=0, epilog, nogc, extend
+ ;; size=4 bbWeight=0.76 PerfScore 0.38 +G_M26314_IG07: ; bbWeight=0.76, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=8 bbWeight=0.76 PerfScore 1.53
-; Total bytes of code 84, prolog size 8, PerfScore 17.50, instruction count 21, allocated bytes for code 84 (MethodHash=e1fd9935) for method System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
+; Total bytes of code 80, prolog size 8, PerfScore 18.41, instruction count 20, allocated bytes for code 80 (MethodHash=e1fd9935) for method System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -69,7 +68,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 21 (0x00015) Actual length = 84 (0x000054)
+ Function Length : 20 (0x00014) Actual length = 80 (0x000050)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-28 (-4.73%) : 32617.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Canon]:FindValue(System.__Canon):byref:this (Tier1)

@@ -5,26 +5,26 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 14
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 14
; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ; ; V00 this [V00,T00] ( 10, 6.43) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
-; V01 arg1 [V01,T01] ( 5, 3.57) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon> -; V02 loc0 [V02,T14] ( 6, 1.71) byref -> x27 -; V03 loc1 [V03,T13] ( 3, 2 ) byref -> x0
+; V01 arg1 [V01,T02] ( 5, 3.57) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon> +; V02 loc0 [V02,T14] ( 5, 1.71) byref -> x26 +; V03 loc1 [V03,T01] ( 3, 8.14) byref -> x0
; V04 loc2 [V04,T15] ( 4, 1.71) ref -> x21 class-hnd single-def <<unknown class>> ;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V08 loc6 [V08 ] ( 0, 0 ) int -> zero-ref
-; V09 loc7 [V09,T07] ( 5, 2.86) int -> x22 -; V10 loc8 [V10,T04] ( 7, 4.00) int -> x23 -; V11 loc9 [V11,T16] ( 3, 1.71) ref -> x24 class-hnd exact single-def <<unknown class>> -; V12 loc10 [V12,T09] ( 7, 2.29) int -> x25
+; V09 loc7 [V09,T08] ( 5, 2.86) int -> x22 +; V10 loc8 [V10,T05] ( 6, 4.00) int -> x1 +; V11 loc9 [V11,T16] ( 3, 1.71) ref -> x23 class-hnd exact single-def <<unknown class>> +; V12 loc10 [V12,T10] ( 4, 2.29) int -> x24
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp2 [V15,T05] ( 4, 3.43) long -> x11 "VirtualCall with runtime lookup"
+; V15 tmp2 [V15,T06] ( 4, 3.43) long -> x11 "VirtualCall with runtime lookup"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V17 tmp4 [V17,T19] ( 4, 0 ) long -> x11 "VirtualCall with runtime lookup" ;* V18 tmp5 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -32,41 +32,40 @@ ;* V20 tmp7 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp8 [V21 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp" ; V22 tmp9 [V22,T17] ( 3, 1.71) ref -> x23 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V23 tmp10 [V23,T03] ( 4, 4.57) int -> x0 "Inlining Arg" -; V24 tmp11 [V24,T12] ( 2, 2.29) long -> x1 "Inlining Arg" -; V25 tmp12 [V25,T10] ( 4, 2.29) int -> x25 "Inline stloc first use temp"
+; V23 tmp10 [V23,T04] ( 4, 4.57) int -> x0 "Inlining Arg" +; V24 tmp11 [V24,T13] ( 2, 2.29) long -> x1 "Inlining Arg" +; V25 tmp12 [V25,T11] ( 4, 2.29) int -> x25 "Inline stloc first use temp"
;* V26 tmp13 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp14 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp15 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V29 cse0 [V29,T18] ( 3, 1.71) int -> x24 "CSE - moderate"
-; V30 cse1 [V30,T11] ( 4, 2.29) int -> x26 hoist "CSE - aggressive" -; V31 cse2 [V31,T02] ( 8, 4.57) ref -> x1 multi-def "CSE - aggressive" -; V32 rat0 [V32,T08] ( 3, 2.51) long -> x0 "Spilling to split statement for tree" -; V33 rat1 [V33,T06] ( 3, 3.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V30 cse1 [V30,T12] ( 3, 2.29) int -> x25 hoist "CSE - aggressive" +; V31 cse2 [V31,T03] ( 8, 4.57) ref -> x1 multi-def "CSE - aggressive" +; V32 rat0 [V32,T09] ( 3, 2.51) long -> x0 "Spilling to split statement for tree" +; V33 rat1 [V33,T07] ( 3, 3.20) long -> x11 "fgMakeTemp is creating a new local variable"
; V34 rat2 [V34,T20] ( 3, 0 ) long -> x0 "Spilling to split statement for tree" ; V35 rat3 [V35,T21] ( 3, 0 ) long -> x11 "fgMakeTemp is creating a new local variable" ;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M63194_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - stp x25, x26, [sp, #0x48] - str x27, [sp, #0x58]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + stp x25, x26, [sp, #0x50]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; gcrRegs +[x20]
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M63194_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x20, G_M63194_IG16 ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- cbz x0, G_M63194_IG13
+ cbz x0, G_M63194_IG12
;; size=12 bbWeight=1 PerfScore 5.00 G_M63194_IG03: ; bbWeight=0.57, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -109,20 +108,9 @@ G_M63194_IG05: ; bbWeight=0.57, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ldr x1, [x0, #0x38] ldr x1, [x1] ldr x11, [x1, #0x38]
- cbz x11, G_M63194_IG07
+ cbz x11, G_M63194_IG11
;; size=20 bbWeight=0.57 PerfScore 7.43
-G_M63194_IG06: ; bbWeight=0.46, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref - b G_M63194_IG08 - ;; size=4 bbWeight=0.46 PerfScore 0.46 -G_M63194_IG07: ; bbWeight=0.11, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov x11, x0 - ;; size=20 bbWeight=0.11 PerfScore 0.34 -G_M63194_IG08: ; bbWeight=0.57, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG06: ; bbWeight=0.57, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x21 ; gcrRegs +[x0] mov x1, x20 @@ -149,7 +137,7 @@ G_M63194_IG08: ; bbWeight=0.57, gcrefRegs=380000 {x19 x20 x21}, byrefRegs udiv w1, w22, w0 msub w0, w1, w0, w22 cmp w0, w25
- beq G_M63194_IG09
+ beq G_M63194_IG07
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -163,57 +151,64 @@ G_M63194_IG08: ; bbWeight=0.57, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=124 bbWeight=0.57 PerfScore 26.29
-G_M63194_IG09: ; bbWeight=0.57, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG07: ; bbWeight=0.57, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
cmp w25, w24 bhs G_M63194_IG14 add x0, x23, #16 ; byrRegs +[x0]
- ldr w23, [x0, w25, UXTW #2] - ; gcrRegs -[x23] - ldr x24, [x19, #0x10] - ; gcrRegs +[x24] - mov w25, wzr - sub w23, w23, #1 - ldr w26, [x24, #0x08]
+ ldr w1, [x0, w25, UXTW #2] + ldr x23, [x19, #0x10] + mov w24, wzr + sub w1, w1, #1 + ldr w25, [x23, #0x08]
;; size=32 bbWeight=0.57 PerfScore 6.86
-G_M63194_IG10: ; bbWeight=1.14, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG08: ; bbWeight=1.14, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- cmp w26, w23 - bls G_M63194_IG13
+ cmp w25, w1 + bls G_M63194_IG12
;; size=8 bbWeight=1.14 PerfScore 1.71
-G_M63194_IG11: ; bbWeight=0.57, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG09: ; bbWeight=0.57, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
mov w0, #24
- mov x1, #16 - umaddl x0, w23, w0, x1 - add x27, x24, x0 - ; byrRegs +[x27] - ldr w0, [x27, #0x10]
+ mov x2, #16 + umaddl x1, w1, w0, x2 + add x26, x23, x1 + ; byrRegs +[x26] + ldr w0, [x26, #0x10]
cmp w0, w22 beq G_M63194_IG17
- ldr w23, [x27, #0x14] - add w25, w25, #1 - cmp w26, w25
+ ;; size=28 bbWeight=0.57 PerfScore 6.29 +G_M63194_IG10: ; bbWeight=0.57, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=4000000 {x26}, byref, isz + ldr w1, [x26, #0x14] + add w24, w24, #1 + cmp w25, w24
blo G_M63194_IG20
- b G_M63194_IG10 - ;; size=48 bbWeight=0.57 PerfScore 9.71 -G_M63194_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, epilog, nogc - ; gcrRegs -[x20-x21 x24] - ; byrRegs -[x27] +[x0] - ldr x27, [sp, #0x58] - ldp x25, x26, [sp, #0x48] - ldp x23, x24, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=28 bbWeight=1 PerfScore 8.00 -G_M63194_IG13: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[x0]
+ b G_M63194_IG08 + ;; size=20 bbWeight=0.57 PerfScore 3.43 +G_M63194_IG11: ; bbWeight=0.11, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + ; byrRegs -[x26] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov x11, x0 + b G_M63194_IG06 + ;; size=24 bbWeight=0.11 PerfScore 0.46 +G_M63194_IG12: ; bbWeight=7.14, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20-x21]
mov x0, xzr ; byrRegs +[x0]
- b G_M63194_IG12 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M63194_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=7.14 PerfScore 3.57 +G_M63194_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, epilog, nogc + ldp x25, x26, [sp, #0x50] + ldp x23, x24, [sp, #0x40] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=24 bbWeight=1 PerfScore 6.00 +G_M63194_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x0] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 @@ -232,9 +227,9 @@ G_M63194_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M63194_IG17: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8000000 {x27}, byref, isz - ; gcrRegs +[x20-x21 x24] - ; byrRegs +[x27]
+G_M63194_IG17: ; bbWeight=0, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=4000000 {x26}, byref, isz + ; gcrRegs +[x20-x21 x23] + ; byrRegs +[x26]
ldr x0, [x19] ldr x1, [x0, #0x38] ldr x1, [x1] @@ -242,7 +237,7 @@ G_M63194_IG17: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe cbz x11, G_M63194_IG18 b G_M63194_IG19 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M63194_IG18: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8000000 {x27}, byref
+G_M63194_IG18: ; bbWeight=0, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=4000000 {x26}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ...

-28 (-4.73%) : 4558.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Canon]:FindValue(System.__Canon):byref:this (Tier1)

@@ -5,26 +5,26 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 5
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 5
; 0 inlinees with PGO data; 6 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 10, 7.80) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]> -; V01 arg1 [V01,T03] ( 5, 3.80) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon> -; V02 loc0 [V02,T14] ( 6, 2.40) byref -> x27 -; V03 loc1 [V03,T17] ( 3, 2 ) byref -> x0 -; V04 loc2 [V04,T15] ( 4, 2.40) ref -> x21 class-hnd single-def <<unknown class>>
+; V00 this [V00,T01] ( 10, 7.80) ref -> x19 this class-hnd single-def <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]> +; V01 arg1 [V01,T04] ( 5, 3.80) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon> +; V02 loc0 [V02,T15] ( 5, 2.40) byref -> x26 +; V03 loc1 [V03,T00] ( 3, 21 ) byref -> x0 +; V04 loc2 [V04,T16] ( 4, 2.40) ref -> x21 class-hnd single-def <<unknown class>>
;* V05 loc3 [V05 ] ( 0, 0 ) int -> zero-ref ;* V06 loc4 [V06 ] ( 0, 0 ) int -> zero-ref ;* V07 loc5 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ;* V08 loc6 [V08 ] ( 0, 0 ) int -> zero-ref
-; V09 loc7 [V09,T07] ( 5, 4 ) int -> x22 -; V10 loc8 [V10,T04] ( 7, 5.60) int -> x23 -; V11 loc9 [V11,T16] ( 3, 2.40) ref -> x24 class-hnd exact single-def <<unknown class>> -; V12 loc10 [V12,T09] ( 7, 3.20) int -> x25
+; V09 loc7 [V09,T08] ( 5, 4 ) int -> x22 +; V10 loc8 [V10,T05] ( 6, 5.60) int -> x1 +; V11 loc9 [V11,T17] ( 3, 2.40) ref -> x23 class-hnd exact single-def <<unknown class>> +; V12 loc10 [V12,T11] ( 4, 3.20) int -> x24
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V15 tmp2 [V15,T05] ( 4, 4.80) long -> x11 "VirtualCall with runtime lookup"
+; V15 tmp2 [V15,T06] ( 4, 4.80) long -> x11 "VirtualCall with runtime lookup"
;* V16 tmp3 [V16 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V17 tmp4 [V17,T18] ( 4, 0 ) long -> x11 "VirtualCall with runtime lookup" ;* V18 tmp5 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -32,40 +32,39 @@ ;* V20 tmp7 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp8 [V21 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp" ; V22 tmp9 [V22,T10] ( 4, 3.20) ref -> x23 class-hnd single-def "Inline stloc first use temp" <<unknown class>>
-; V23 tmp10 [V23,T02] ( 4, 6.40) int -> x0 "Inlining Arg" -; V24 tmp11 [V24,T13] ( 2, 3.20) long -> x1 "Inlining Arg" -; V25 tmp12 [V25,T11] ( 4, 3.20) int -> x24 "Inline stloc first use temp"
+; V23 tmp10 [V23,T03] ( 4, 6.40) int -> x0 "Inlining Arg" +; V24 tmp11 [V24,T14] ( 2, 3.20) long -> x1 "Inlining Arg" +; V25 tmp12 [V25,T12] ( 4, 3.20) int -> x24 "Inline stloc first use temp"
;* V26 tmp13 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V27 tmp14 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp15 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V29 cse0 [V29,T12] ( 4, 3.20) int -> x26 hoist "CSE - aggressive" -; V30 cse1 [V30,T01] ( 8, 6.40) ref -> x1 multi-def "CSE - aggressive" -; V31 rat0 [V31,T08] ( 3, 3.52) long -> x0 "Spilling to split statement for tree" -; V32 rat1 [V32,T06] ( 3, 4.48) long -> x11 "fgMakeTemp is creating a new local variable"
+; V29 cse0 [V29,T13] ( 3, 3.20) int -> x25 hoist "CSE - aggressive" +; V30 cse1 [V30,T02] ( 8, 6.40) ref -> x1 multi-def "CSE - aggressive" +; V31 rat0 [V31,T09] ( 3, 3.52) long -> x0 "Spilling to split statement for tree" +; V32 rat1 [V32,T07] ( 3, 4.48) long -> x11 "fgMakeTemp is creating a new local variable"
; V33 rat2 [V33,T19] ( 3, 0 ) long -> x0 "Spilling to split statement for tree" ; V34 rat3 [V34,T20] ( 3, 0 ) long -> x11 "fgMakeTemp is creating a new local variable" ;
-; Lcl frame size = 8
+; Lcl frame size = 16
G_M63194_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x60]!
- stp x19, x20, [sp, #0x18] - stp x21, x22, [sp, #0x28] - stp x23, x24, [sp, #0x38] - stp x25, x26, [sp, #0x48] - str x27, [sp, #0x58]
+ stp x19, x20, [sp, #0x20] + stp x21, x22, [sp, #0x30] + stp x23, x24, [sp, #0x40] + stp x25, x26, [sp, #0x50]
mov fp, sp
- str x0, [fp, #0x10]
+ str x0, [fp, #0x18]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; gcrRegs +[x20]
- ;; size=40 bbWeight=1 PerfScore 8.50
+ ;; size=36 bbWeight=1 PerfScore 7.50
G_M63194_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz cbz x20, G_M63194_IG16 ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- cbz x0, G_M63194_IG13
+ cbz x0, G_M63194_IG12
;; size=12 bbWeight=1 PerfScore 5.00 G_M63194_IG03: ; bbWeight=0.80, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x0] @@ -108,20 +107,9 @@ G_M63194_IG05: ; bbWeight=0.80, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ldr x1, [x0, #0x38] ldr x1, [x1] ldr x11, [x1, #0x38]
- cbz x11, G_M63194_IG07
+ cbz x11, G_M63194_IG11
;; size=20 bbWeight=0.80 PerfScore 10.40
-G_M63194_IG06: ; bbWeight=0.64, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref - b G_M63194_IG08 - ;; size=4 bbWeight=0.64 PerfScore 0.64 -G_M63194_IG07: ; bbWeight=0.16, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref - movz x1, #0xD1FFAB1E - movk x1, #0xD1FFAB1E LSL #16 - movk x1, #0xD1FFAB1E LSL #32 - bl CORINFO_HELP_RUNTIMEHANDLE_CLASS - ; gcr arg pop 0 - mov x11, x0 - ;; size=20 bbWeight=0.16 PerfScore 0.48 -G_M63194_IG08: ; bbWeight=0.80, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG06: ; bbWeight=0.80, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
mov x0, x21 ; gcrRegs +[x0] mov x1, x20 @@ -147,7 +135,7 @@ G_M63194_IG08: ; bbWeight=0.80, gcrefRegs=380000 {x19 x20 x21}, byrefRegs udiv w1, w22, w0 msub w0, w1, w0, w22 cmp w0, w24
- beq G_M63194_IG09
+ beq G_M63194_IG07
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -161,58 +149,65 @@ G_M63194_IG08: ; bbWeight=0.80, gcrefRegs=380000 {x19 x20 x21}, byrefRegs ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=120 bbWeight=0.80 PerfScore 36.40
-G_M63194_IG09: ; bbWeight=0.80, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG07: ; bbWeight=0.80, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
ldr w0, [x23, #0x08] cmp w24, w0 bhs G_M63194_IG14 add x0, x23, #16 ; byrRegs +[x0]
- ldr w23, [x0, w24, UXTW #2] - ; gcrRegs -[x23] - ldr x24, [x19, #0x10] - ; gcrRegs +[x24] - mov w25, wzr - sub w23, w23, #1 - ldr w26, [x24, #0x08]
+ ldr w1, [x0, w24, UXTW #2] + ldr x23, [x19, #0x10] + mov w24, wzr + sub w1, w1, #1 + ldr w25, [x23, #0x08]
;; size=36 bbWeight=0.80 PerfScore 12.00
-G_M63194_IG10: ; bbWeight=1.60, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG08: ; bbWeight=1.60, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x0]
- cmp w26, w23 - bls G_M63194_IG13
+ cmp w25, w1 + bls G_M63194_IG12
;; size=8 bbWeight=1.60 PerfScore 2.40
-G_M63194_IG11: ; bbWeight=0.80, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
+G_M63194_IG09: ; bbWeight=0.80, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=0000 {}, byref, isz
mov w0, #24
- mov x1, #16 - umaddl x0, w23, w0, x1 - add x27, x24, x0 - ; byrRegs +[x27] - ldr w0, [x27, #0x10]
+ mov x2, #16 + umaddl x1, w1, w0, x2 + add x26, x23, x1 + ; byrRegs +[x26] + ldr w0, [x26, #0x10]
cmp w0, w22 beq G_M63194_IG17
- ldr w23, [x27, #0x14] - add w25, w25, #1 - cmp w26, w25
+ ;; size=28 bbWeight=0.80 PerfScore 8.80 +G_M63194_IG10: ; bbWeight=0.80, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=4000000 {x26}, byref, isz + ldr w1, [x26, #0x14] + add w24, w24, #1 + cmp w25, w24
blo G_M63194_IG20
- b G_M63194_IG10 - ;; size=48 bbWeight=0.80 PerfScore 13.60 -G_M63194_IG12: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, epilog, nogc - ; gcrRegs -[x20-x21 x24] - ; byrRegs -[x27] +[x0] - ldr x27, [sp, #0x58] - ldp x25, x26, [sp, #0x48] - ldp x23, x24, [sp, #0x38] - ldp x21, x22, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x60 - ret lr - ;; size=28 bbWeight=1 PerfScore 8.00 -G_M63194_IG13: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref - ; byrRegs -[x0]
+ b G_M63194_IG08 + ;; size=20 bbWeight=0.80 PerfScore 4.80 +G_M63194_IG11: ; bbWeight=0.16, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref + ; gcrRegs -[x23] + ; byrRegs -[x26] + movz x1, #0xD1FFAB1E + movk x1, #0xD1FFAB1E LSL #16 + movk x1, #0xD1FFAB1E LSL #32 + bl CORINFO_HELP_RUNTIMEHANDLE_CLASS + ; gcr arg pop 0 + mov x11, x0 + b G_M63194_IG06 + ;; size=24 bbWeight=0.16 PerfScore 0.64 +G_M63194_IG12: ; bbWeight=20, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + ; gcrRegs -[x20-x21]
mov x0, xzr ; byrRegs +[x0]
- b G_M63194_IG12 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M63194_IG14: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=20 PerfScore 10.00 +G_M63194_IG13: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, epilog, nogc + ldp x25, x26, [sp, #0x50] + ldp x23, x24, [sp, #0x40] + ldp x21, x22, [sp, #0x30] + ldp x19, x20, [sp, #0x20] + ldp fp, lr, [sp], #0x60 + ret lr + ;; size=24 bbWeight=1 PerfScore 6.00 +G_M63194_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x0] bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 @@ -231,9 +226,9 @@ G_M63194_IG16: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by ; gcr arg pop 0 brk_unix #0 ;; size=28 bbWeight=0 PerfScore 0.00
-G_M63194_IG17: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8000000 {x27}, byref, isz - ; gcrRegs +[x20-x21 x24] - ; byrRegs +[x27]
+G_M63194_IG17: ; bbWeight=0, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=4000000 {x26}, byref, isz + ; gcrRegs +[x20-x21 x23] + ; byrRegs +[x26]
ldr x0, [x19] ldr x1, [x0, #0x38] ldr x1, [x1] @@ -241,7 +236,7 @@ G_M63194_IG17: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRe cbz x11, G_M63194_IG18 b G_M63194_IG19 ;; size=24 bbWeight=0 PerfScore 0.00
-G_M63194_IG18: ; bbWeight=0, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=8000000 {x27}, byref
+G_M63194_IG18: ; bbWeight=0, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefRegs=4000000 {x26}, byref
movz x1, #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, 5.11) long -> x19 single-def +; V01 arg1 [V01,T02] ( 5, 4.27) 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.27, 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.27 PerfScore 1.47 +G_M64200_IG08: ; bbWeight=0.27, 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.27 PerfScore 1.34 +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 34.76, 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)

+12 (+4.29%) : 3869.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)

@@ -5,24 +5,24 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 8 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 5.99) long -> x0 single-def -; V01 arg1 [V01,T03] ( 6, 5 ) ref -> x1 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 6, 5.99) long -> x0 single-def +; V01 arg1 [V01,T04] ( 6, 5 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T12] ( 2, 2 ) ref -> x20 class-hnd single-def <System.Object> -; V04 loc2 [V04,T07] ( 4, 4.74) long -> x2
+; V03 loc1 [V03,T12] ( 2, 2 ) ref -> x19 class-hnd single-def <System.Object> +; V04 loc2 [V04,T08] ( 4, 4.74) long -> x2
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 4, 3 ) int -> x19 "Inline return value spill temp"
+; V06 tmp1 [V06,T00] ( 4,102.99) int -> x20 "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V08 tmp3 [V08,T06] ( 4, 5.48) byref -> x3 single-def "Inline stloc first use temp" -; V09 tmp4 [V09,T05] ( 4, 6.22) int -> x4 "Inline stloc first use temp" -; V10 tmp5 [V10,T01] ( 5, 7.96) int -> x5 "Inline stloc first use temp" -; V11 tmp6 [V11,T02] ( 5, 7.19) byref -> x6 "Inline stloc first use temp" -; V12 tmp7 [V12,T04] ( 5, 6.95) int -> x7 "Inline stloc first use temp" -; V13 tmp8 [V13,T08] ( 2, 3.48) long -> x8 "Inline stloc first use temp"
+; V08 tmp3 [V08,T07] ( 4, 5.48) byref -> x3 single-def "Inline stloc first use temp" +; V09 tmp4 [V09,T06] ( 4, 6.22) int -> x4 "Inline stloc first use temp" +; V10 tmp5 [V10,T02] ( 5, 7.96) int -> x5 "Inline stloc first use temp" +; V11 tmp6 [V11,T03] ( 5, 7.19) byref -> x6 "Inline stloc first use temp" +; V12 tmp7 [V12,T05] ( 5, 6.95) int -> x7 "Inline stloc first use temp" +; V13 tmp8 [V13,T09] ( 2, 3.48) long -> x8 "Inline stloc first use temp"
; V14 tmp9 [V14,T11] ( 3, 2.97) long -> x19 "Inline stloc first use temp" ;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -33,17 +33,17 @@ ; ; Lcl frame size = 0
-G_M33041_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M33041_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! stp x19, x20, [sp, #0x10] mov fp, sp ;; size=12 bbWeight=1 PerfScore 2.50 G_M33041_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M33041_IG12
+ cbz x1, G_M33041_IG13
ldr x2, [x1] cmp x2, x0
- beq G_M33041_IG12
+ beq G_M33041_IG13
movz x3, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 @@ -73,31 +73,52 @@ G_M33041_IG03: ; bbWeight=1.74, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, ldr x8, [x6, #0x08] and w7, w7, #0xD1FFAB1E cmp x8, x2
- bne G_M33041_IG09
+ bne G_M33041_IG06
;; size=36 bbWeight=1.74 PerfScore 19.99 G_M33041_IG04: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0048 {x3 x6}, byref, isz ldr x8, [x6, #0x10] eor x19, x8, x0 cmp x19, #1
- bhi G_M33041_IG09
+ bhi G_M33041_IG06
;; size=16 bbWeight=0.99 PerfScore 4.95 G_M33041_IG05: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0040 {x6}, byref, isz ; byrRegs -[x3] dmb ishld ldr w2, [x6] cmp w7, w2
- bne G_M33041_IG11 - ;; size=16 bbWeight=0.99 PerfScore 14.36 -G_M33041_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x6] - cmp w19, #1 - beq G_M33041_IG12
+ bne G_M33041_IG09 + b G_M33041_IG08 + ;; size=20 bbWeight=0.99 PerfScore 15.35 +G_M33041_IG06: ; bbWeight=0.75, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz + ; byrRegs -[x6] +[x3] + cbz w7, G_M33041_IG09 + ;; size=4 bbWeight=0.75 PerfScore 0.75 +G_M33041_IG07: ; bbWeight=1.74, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz + add w5, w5, #1 + add w4, w4, w5 + ldr w6, [x3, #0x04] + and w4, w4, w6 + cmp w5, #8 + blt G_M33041_IG03 + b G_M33041_IG09 + ;; size=28 bbWeight=1.74 PerfScore 12.19 +G_M33041_IG08: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; byrRegs -[x3] + sxtw w20, w19 + b G_M33041_IG10 + ;; size=8 bbWeight=0.99 PerfScore 1.49 +G_M33041_IG09: ; bbWeight=100, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov w20, #2 + ;; size=4 bbWeight=100 PerfScore 50.00 +G_M33041_IG10: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cmp w20, #1 + beq G_M33041_IG13
bl <unknown method> ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20] - cbnz w19, G_M33041_IG07
+ mov x19, x0 + ; gcrRegs +[x19] + cbnz w20, G_M33041_IG11
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -110,44 +131,27 @@ G_M33041_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=56 bbWeight=1 PerfScore 11.50
-G_M33041_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - mov x0, x20
+G_M33041_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19
; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M33041_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M33041_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M33041_IG09: ; bbWeight=0.75, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, gcvars, byref, isz - ; gcrRegs -[x0 x20] +[x1] - ; byrRegs +[x3] - cbz w7, G_M33041_IG11 - ;; size=4 bbWeight=0.75 PerfScore 0.75 -G_M33041_IG10: ; bbWeight=1.74, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz - add w5, w5, #1 - add w4, w4, w5 - ldr w6, [x3, #0x04] - and w4, w4, w6 - cmp w5, #8 - blt G_M33041_IG03 - ;; size=24 bbWeight=1.74 PerfScore 10.45 -G_M33041_IG11: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; byrRegs -[x3] - mov w19, #2 - b G_M33041_IG06 - ;; size=8 bbWeight=0.01 PerfScore 0.01 -G_M33041_IG12: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M33041_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x19] +[x1]
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M33041_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M33041_IG14: ; bbWeight=0, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 280, prolog size 12, PerfScore 88.00, instruction count 70, allocated bytes for code 280 (MethodHash=84fd7eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 292, prolog size 12, PerfScore 142.20, instruction count 73, allocated bytes for code 292 (MethodHash=84fd7eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -158,7 +162,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 70 (0x00046) Actual length = 280 (0x000118)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+12.50%) : 37125.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)

@@ -5,33 +5,34 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 5, 4.99) long -> x0 single-def -; V01 arg1 [V01,T06] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T04] ( 5, 4.99) long -> x0 single-def +; V01 arg1 [V01,T07] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
;* 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, 3 ) int -> x8 "Inline return value spill temp" -; V06 tmp3 [V06,T07] ( 4, 5.48) byref -> x2 single-def "Inline stloc first use temp" -; V07 tmp4 [V07,T01] ( 3, 7.48) long -> x3 "Inlining Arg" -; V08 tmp5 [V08,T05] ( 4, 6.22) int -> x4 "Inline stloc first use temp" -; V09 tmp6 [V09,T00] ( 5, 7.96) int -> x5 "Inline stloc first use temp" -; V10 tmp7 [V10,T02] ( 5, 7.19) byref -> x6 "Inline stloc first use temp" -; V11 tmp8 [V11,T04] ( 5, 6.95) int -> x7 "Inline stloc first use temp" -; V12 tmp9 [V12,T09] ( 2, 3.48) long -> x8 "Inline stloc first use temp" -; V13 tmp10 [V13,T11] ( 3, 2.97) long -> x8 "Inline stloc first use temp"
+; V04 tmp1 [V04,T09] ( 2, 4 ) ref -> x2 class-hnd single-def "impAppendStmt" <int[]> +; V05 tmp2 [V05,T00] ( 4,102.99) int -> x20 "Inline return value spill temp" +; V06 tmp3 [V06,T08] ( 4, 5.48) byref -> x2 single-def "Inline stloc first use temp" +; V07 tmp4 [V07,T02] ( 3, 7.48) long -> x3 "Inlining Arg" +; V08 tmp5 [V08,T06] ( 4, 6.22) int -> x4 "Inline stloc first use temp" +; V09 tmp6 [V09,T01] ( 5, 7.96) int -> x5 "Inline stloc first use temp" +; V10 tmp7 [V10,T03] ( 5, 7.19) byref -> x6 "Inline stloc first use temp" +; V11 tmp8 [V11,T05] ( 5, 6.95) int -> x7 "Inline stloc first use temp" +; V12 tmp9 [V12,T10] ( 2, 3.48) long -> x8 "Inline stloc first use temp" +; V13 tmp10 [V13,T11] ( 3, 2.97) long -> x19 "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, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + stp x19, x20, [sp, #0x10]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M32392_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // data for <unknown class>:<unknown field> @@ -64,81 +65,88 @@ G_M32392_IG03: ; bbWeight=1.74, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, ldr x8, [x6, #0x08] and w7, w7, #0xD1FFAB1E cmp x8, x3
- bne G_M32392_IG08
+ bne G_M32392_IG06
;; size=36 bbWeight=1.74 PerfScore 19.99 G_M32392_IG04: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0044 {x2 x6}, byref, isz ldr x8, [x6, #0x10]
- eor x8, x8, x0 - cmp x8, #1 - bhi G_M32392_IG08
+ eor x19, x8, x0 + cmp x19, #1 + bhi G_M32392_IG06
;; size=16 bbWeight=0.99 PerfScore 4.95 G_M32392_IG05: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0040 {x6}, byref, isz ; byrRegs -[x2] dmb ishld ldr w2, [x6] cmp w7, w2
- bne G_M32392_IG10 - ;; size=16 bbWeight=0.99 PerfScore 14.36 -G_M32392_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x6] - cmp w8, #1 - beq G_M32392_IG11 - cbz w8, G_M32392_IG13
+ bne G_M32392_IG09 + b G_M32392_IG08 + ;; size=20 bbWeight=0.99 PerfScore 15.35 +G_M32392_IG06: ; bbWeight=0.75, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz + ; byrRegs -[x6] +[x2] + cbz w7, G_M32392_IG09 + ;; size=4 bbWeight=0.75 PerfScore 0.75 +G_M32392_IG07: ; bbWeight=1.74, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz + add w5, w5, #1 + add w4, w4, w5 + ldr w6, [x2, #0x04] + and w4, w4, w6 + cmp w5, #8 + blt G_M32392_IG03 + b G_M32392_IG09 + ;; size=28 bbWeight=1.74 PerfScore 12.19 +G_M32392_IG08: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; byrRegs -[x2] + sxtw w20, w19 + b G_M32392_IG10 + ;; size=8 bbWeight=0.99 PerfScore 1.49 +G_M32392_IG09: ; bbWeight=100, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov w20, #2 + ;; size=4 bbWeight=100 PerfScore 50.00 +G_M32392_IG10: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cmp w20, #1 + beq G_M32392_IG12 + cbz w20, G_M32392_IG14
bl <unknown method> ; gcrRegs -[x1] +[x0] ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 3.50
-G_M32392_IG07: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG11: ; bbWeight=1, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M32392_IG08: ; bbWeight=0.75, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, gcvars, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M32392_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x1]
- ; byrRegs +[x2] - cbz w7, G_M32392_IG10 - ;; size=4 bbWeight=0.75 PerfScore 0.75 -G_M32392_IG09: ; bbWeight=1.74, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz - add w5, w5, #1 - add w4, w4, w5 - ldr w8, [x2, #0x04] - and w4, w4, w8 - cmp w5, #8 - blt G_M32392_IG03 - ;; size=24 bbWeight=1.74 PerfScore 10.45 -G_M32392_IG10: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w8, #2 - b G_M32392_IG06 - ;; size=8 bbWeight=0.01 PerfScore 0.01 -G_M32392_IG11: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M32392_IG12: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG13: ; bbWeight=0, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M32392_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M32392_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1] mov x0, xzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M32392_IG14: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG15: ; bbWeight=0, epilog, nogc, extend + 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
-; Total bytes of code 224, prolog size 8, PerfScore 75.00, instruction count 56, allocated bytes for code 224 (MethodHash=b7ab8177) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 252, prolog size 12, PerfScore 131.20, instruction count 63, allocated bytes for code 252 (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 : 56 (0x00038) Actual length = 224 (0x0000e0)
+ 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) @@ -152,7 +160,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

librariestestsnotieredcompilation.run.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,22 +155,37 @@ 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=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ; byrRegs -[x22]
- mov w0, #1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M46876_IG20: ; bbWeight=0.50, epilog, nogc, extend
+ mov w0, wzr + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46876_IG16: ; bbWeight=1, 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
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M46876_IG17: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, #1 + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46876_IG18: ; bbWeight=1, 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
-; 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 185.47, 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)

-24 (-1.90%) : 54273.dasm - Microsoft.Extensions.Options.Generators.Parser:TrackRangeAttributeForSubstitution(Microsoft.CodeAnalysis.AttributeData,Microsoft.CodeAnalysis.ITypeSymbol,byref):this (FullOpts)

@@ -9,73 +9,73 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 7, 4.50) ref -> x20 this class-hnd single-def <Microsoft.Extensions.Options.Generators.Parser>
-; V01 arg1 [V01,T03] ( 7, 5.50) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.AttributeData> -; V02 arg2 [V02,T07] ( 4, 3.50) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.ITypeSymbol> -; V03 arg3 [V03,T10] ( 3, 2.50) byref -> x22 single-def
+; V01 arg1 [V01,T03] ( 7, 6 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.AttributeData> +; V02 arg2 [V02,T08] ( 4, 3.50) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.ITypeSymbol> +; V03 arg3 [V03,T11] ( 3, 2.50) byref -> x22 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IParameterSymbol]>
-; V05 loc1 [V05,T13] ( 5, 3.50) ref -> x26 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol> -; V06 loc2 [V06,T24] ( 4, 2.50) ubyte -> x27 -; V07 loc3 [V07,T08] ( 8, 5 ) ref -> x28 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol>
+; V05 loc1 [V05,T16] ( 5, 3.50) ref -> x26 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol> +; V06 loc2 [V06,T25] ( 4, 2.50) ubyte -> x27 +; V07 loc3 [V07,T09] ( 8, 5 ) ref -> x28 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol>
;* V08 loc4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol]>
-; V09 loc5 [V09,T35] ( 3, 1.50) ref -> x24 class-hnd <System.Object> -; V10 loc6 [V10,T15] ( 6, 3 ) ref -> x24 class-hnd single-def <Microsoft.CodeAnalysis.INamedTypeSymbol> -; V11 loc7 [V11,T01] ( 7, 17.50) int -> [fp+0x2C]
+; V09 loc5 [V09,T28] ( 3, 2 ) ref -> x24 class-hnd <System.Object> +; V10 loc6 [V10,T13] ( 6, 4 ) ref -> x24 class-hnd single-def <Microsoft.CodeAnalysis.INamedTypeSymbol> +; V11 loc7 [V11,T01] ( 7, 18.50) int -> [fp+0x2C]
;* V12 loc8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]> ;* V13 loc9 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.TypedConstant>
-; V14 loc10 [V14,T26] ( 5, 2 ) ref -> x2 ld-addr-op class-hnd <System.Collections.Generic.HashSet`1[System.Object]>
+; V14 loc10 [V14,T27] ( 5, 2 ) ref -> x2 ld-addr-op class-hnd <System.Collections.Generic.HashSet`1[System.Object]>
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T09] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.IMethodSymbol>
+; V16 tmp1 [V16,T10] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.IMethodSymbol>
;* V17 tmp2 [V17 ] ( 0, 0 ) ref -> zero-ref single-def ;* V18 tmp3 [V18 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IParameterSymbol]>
-; V19 tmp4 [V19,T16] ( 3, 3 ) ref -> x26 class-hnd exact single-def "impAppendStmt" <Microsoft.Extensions.Options.Generators.OptionsSourceGenContext>
+; V19 tmp4 [V19,T17] ( 3, 3 ) ref -> x26 class-hnd exact single-def "impAppendStmt" <Microsoft.Extensions.Options.Generators.OptionsSourceGenContext>
;* V20 tmp5 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V21 tmp6 [V21,T27] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer> -; V22 tmp7 [V22,T28] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
+; V21 tmp6 [V21,T30] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer> +; V22 tmp7 [V22,T31] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
;* V23 tmp8 [V23 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V24 tmp9 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ; V25 tmp10 [V25,T00] ( 4, 19 ) ref -> x0 "spilling varStr"
-;* V26 tmp11 [V26,T06] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" -; V27 tmp12 [V27,T36] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Object>
+;* V26 tmp11 [V26,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" +; V27 tmp12 [V27,T39] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Object>
;* V28 tmp13 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
-; V29 tmp14 [V29,T37] ( 3, 1.50) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp14 [V29,T40] ( 3, 1.50) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V30 tmp15 [V30,T47] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V31 tmp16 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.SymbolHolder>
-; V32 tmp17 [V32,T44] ( 2, 1 ) ubyte -> x0 single-def "Inline return value spill temp" -; V33 tmp18 [V33,T29] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
+; V32 tmp17 [V32,T45] ( 2, 1 ) ubyte -> x0 single-def "Inline return value spill temp" +; V33 tmp18 [V33,T32] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
;* V34 tmp19 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.SymbolHolder>
-; V35 tmp20 [V35,T45] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" -; V36 tmp21 [V36,T17] ( 3, 3 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
+; V35 tmp20 [V35,T46] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" +; V36 tmp21 [V36,T18] ( 3, 3 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
;* V37 tmp22 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.SymbolHolder>
-; V38 tmp23 [V38,T18] ( 3, 3 ) ref -> x28 class-hnd exact single-def "Inlining Arg" <System.String>
+; V38 tmp23 [V38,T19] ( 3, 3 ) ref -> x28 class-hnd exact single-def "Inlining Arg" <System.String>
;* V39 tmp24 [V39 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V40 tmp25 [V40,T19] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.Object]> -; V41 tmp26 [V41,T43] ( 3, 1 ) ubyte -> x24 "Inline return value spill temp" -; V42 tmp27 [V42,T20] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]> -; V43 tmp28 [V43,T42] ( 3, 1.42) byref -> x0 single-def "Inline stloc first use temp" -; V44 tmp29 [V44,T21] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]>
+; V40 tmp25 [V40,T20] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.Object]> +; V41 tmp26 [V41,T44] ( 3, 1 ) ubyte -> x24 "Inline return value spill temp" +; V42 tmp27 [V42,T21] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]> +; V43 tmp28 [V43,T43] ( 3, 1.42) byref -> x0 single-def "Inline stloc first use temp" +; V44 tmp29 [V44,T22] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]>
;* V45 tmp30 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[System.Object]> ;* V46 tmp31 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V47 tmp32 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.OptionsSourceGenContext>
-; V48 tmp33 [V48,T25] ( 3, 2.50) ref -> x25 single-def "field V04.array (fldOffset=0x0)" P-INDEP -; V49 tmp34 [V49,T38] ( 3, 1.50) ref -> x0 "field V08.array (fldOffset=0x0)" P-INDEP -; V50 tmp35 [V50,T39] ( 3, 1.50) ref -> x0 "field V12.array (fldOffset=0x0)" P-INDEP
+; V48 tmp33 [V48,T26] ( 3, 2.50) ref -> x25 single-def "field V04.array (fldOffset=0x0)" P-INDEP +; V49 tmp34 [V49,T41] ( 3, 1.50) ref -> x0 "field V08.array (fldOffset=0x0)" P-INDEP +; V50 tmp35 [V50,T23] ( 3, 3 ) ref -> x0 "field V12.array (fldOffset=0x0)" P-INDEP
;* V51 tmp36 [V51 ] ( 0, 0 ) ref -> zero-ref "field V13._type (fldOffset=0x0)" P-INDEP
-; V52 tmp37 [V52,T40] ( 3, 1.50) ref -> x24 "field V13._value (fldOffset=0x8)" P-INDEP -; V53 tmp38 [V53,T46] ( 2, 1 ) int -> x1 "field V13._kind (fldOffset=0x10)" P-INDEP -; V54 tmp39 [V54,T23] ( 4, 2.50) ref -> x24 single-def "field V18.array (fldOffset=0x0)" P-INDEP -; V55 tmp40 [V55,T12] ( 2, 4 ) ref -> x0 single-def "argument with side effect" -; V56 tmp41 [V56,T30] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V57 tmp42 [V57,T22] ( 3, 3 ) byref -> x1 "BlockOp address local"
+; V52 tmp37 [V52,T29] ( 3, 2 ) ref -> x24 "field V13._value (fldOffset=0x8)" P-INDEP +; V53 tmp38 [V53,T38] ( 2, 2 ) int -> x1 "field V13._kind (fldOffset=0x10)" P-INDEP +; V54 tmp39 [V54,T24] ( 4, 2.50) ref -> x24 single-def "field V18.array (fldOffset=0x0)" P-INDEP +; V55 tmp40 [V55,T15] ( 2, 4 ) ref -> x0 single-def "argument with side effect" +; V56 tmp41 [V56,T33] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V57 tmp42 [V57,T06] ( 3, 6 ) byref -> x1 "BlockOp address local"
; V58 tmp43 [V58,T48] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V59 tmp44 [V59,T31] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V60 tmp45 [V60,T32] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V61 tmp46 [V61,T33] ( 2, 2 ) ref -> x3 single-def "argument with side effect" -; V62 tmp47 [V62,T34] ( 2, 2 ) ref -> x20 single-def "argument with side effect" -; V63 cse0 [V63,T14] ( 5, 3.50) long -> x23 "CSE - moderate" -; V64 cse1 [V64,T41] ( 3, 1.50) ref -> x25 "CSE - moderate"
+; V59 tmp44 [V59,T34] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V60 tmp45 [V60,T35] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V61 tmp46 [V61,T36] ( 2, 2 ) ref -> x3 single-def "argument with side effect" +; V62 tmp47 [V62,T37] ( 2, 2 ) ref -> x20 single-def "argument with side effect" +; V63 cse0 [V63,T14] ( 5, 4 ) long -> x23 "CSE - moderate" +; V64 cse1 [V64,T42] ( 3, 1.50) ref -> x25 "CSE - moderate"
; V65 cse2 [V65,T02] ( 16, 13 ) long -> [fp+0x20] multi-def "CSE - aggressive" ; V66 cse3 [V66,T05] ( 4, 6.50) int -> [fp+0x1C] spill-single-def "CSE - aggressive"
-; V67 cse4 [V67,T11] ( 2, 4.50) byref -> x25 hoist "CSE - moderate"
+; V67 cse4 [V67,T12] ( 2, 4.50) byref -> x25 hoist "CSE - moderate"
; ; Lcl frame size = 32 @@ -169,7 +169,7 @@ G_M10085_IG06: ; bbWeight=0.50, gcrefRegs=7380000 {x19 x20 x21 x24 x25 x2 blr x1 ldr w1, [x0, #0x08] cmp w1, #0
- bls G_M10085_IG34
+ bls G_M10085_IG35
ldr x28, [x0, #0x10] ; gcrRegs +[x28] str x21, [fp, #0x20] // [V65 cse2] @@ -179,7 +179,7 @@ G_M10085_IG07: ; bbWeight=1, gcrefRegs=17180000 {x19 x20 x24 x25 x26 x28} ldr w1, [x25, #0x08] str w1, [fp, #0x1C] // [V66 cse3] cmp w1, #2
- bne G_M10085_IG09
+ bne G_M10085_IG10
;; size=16 bbWeight=1 PerfScore 5.50 G_M10085_IG08: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=400000 {x22}, byref, isz ; gcrRegs -[x25] @@ -191,7 +191,7 @@ G_M10085_IG08: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, ldr x1, [x1] blr x1 ; gcrRegs -[x0 x28]
- cbz w0, G_M10085_IG25
+ cbz w0, G_M10085_IG09
ldr x0, [x24, #0x10] ; gcrRegs +[x0] ldr x21, [fp, #0x20] // [V65 cse2] @@ -201,13 +201,17 @@ G_M10085_IG08: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, ; gcrRegs -[x24 x26] mov x26, x0 ; gcrRegs +[x26]
- str x21, [fp, #0x20] // [V65 cse2] - b G_M10085_IG25 - ;; size=60 bbWeight=0.50 PerfScore 9.50 -G_M10085_IG09: ; bbWeight=0.50, gcrefRegs=16180000 {x19 x20 x25 x26 x28}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x0] +[x25 x28]
+ b G_M10085_IG27 + ;; size=56 bbWeight=0.50 PerfScore 9.00 +G_M10085_IG09: ; bbWeight=0.25, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=400000 {x22}, byref + ; gcrRegs -[x0] + ldr x21, [fp, #0x20] // [V65 cse2] + b G_M10085_IG27 + ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M10085_IG10: ; bbWeight=0.50, gcrefRegs=16180000 {x19 x20 x25 x26 x28}, byrefRegs=400000 {x22}, byref, isz + ; gcrRegs +[x25 x28]
cmp w1, #3
- bne G_M10085_IG25
+ bne G_M10085_IG16
mov x24, xzr ; gcrRegs +[x24] mov w2, wzr @@ -215,7 +219,7 @@ G_M10085_IG09: ; bbWeight=0.50, gcrefRegs=16180000 {x19 x20 x25 x26 x28}, ; gcrRegs -[x25] ; byrRegs +[x25] ;; size=20 bbWeight=0.50 PerfScore 1.50
-G_M10085_IG10: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG11: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
str w2, [fp, #0x2C] // [V11 loc7] ldr x0, [x25, w2, UXTW #3] ; gcrRegs +[x0] @@ -223,14 +227,14 @@ G_M10085_IG10: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, by add x11, x21, #24 ldr x3, [x11] blr x3
- cbz x0, G_M10085_IG13
+ cbz x0, G_M10085_IG14
;; size=28 bbWeight=4 PerfScore 46.00
-G_M10085_IG11: ; bbWeight=1, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG12: ; bbWeight=1, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
ldr w1, [x0, #0x08] cmp w1, #4
- bne G_M10085_IG13
+ bne G_M10085_IG14
;; size=12 bbWeight=1 PerfScore 4.50
-G_M10085_IG12: ; bbWeight=0.50, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG13: ; bbWeight=0.50, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
ldr x0, [x0, #0x0C] ; gcrRegs -[x0] movz x1, #116 @@ -238,9 +242,9 @@ G_M10085_IG12: ; bbWeight=0.50, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x2 movk x1, #112 LSL #32 movk x1, #101 LSL #48 cmp x0, x1
- beq G_M10085_IG15
+ beq G_M10085_IG17
;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M10085_IG13: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG14: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
ldr w1, [fp, #0x2C] // [V11 loc7] add w1, w1, #1 ldr w0, [fp, #0x1C] // [V66 cse3] @@ -248,15 +252,20 @@ G_M10085_IG13: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, by cmp w0, w1 str x21, [fp, #0x20] // [V65 cse2] ldr w2, [fp, #0x2C] // [V11 loc7]
- bgt G_M10085_IG10
+ bgt G_M10085_IG11
;; size=32 bbWeight=4 PerfScore 40.00
-G_M10085_IG14: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=400000 {x22}, byref
+G_M10085_IG15: ; bbWeight=1, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=400000 {x22}, byref
; byrRegs -[x25] ldr x21, [fp, #0x20] // [V65 cse2]
- b G_M10085_IG18 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M10085_IG15: ; bbWeight=0.50, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x24]
+ b G_M10085_IG21 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M10085_IG16: ; bbWeight=0.25, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=400000 {x22}, byref + ; gcrRegs -[x24 x28] + ldr x21, [fp, #0x20] // [V65 cse2] + b G_M10085_IG27 + ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M10085_IG17: ; bbWeight=1, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=400000 {x22}, byref, isz + ; gcrRegs +[x28]
mov x0, x19 ; gcrRegs +[x0] ldr x2, [x23, #0x38] @@ -264,7 +273,7 @@ G_M10085_IG15: ; bbWeight=0.50, gcrefRegs=14180000 {x19 x20 x26 x28}, byr ldr w1, [x0, #0x08] ldr w24, [fp, #0x2C] // [V11 loc7] cmp w24, w1
- bhs G_M10085_IG34
+ bhs G_M10085_IG35
mov w1, #24 mov x2, #16 umaddl x1, w24, w1, x2 @@ -275,33 +284,35 @@ G_M10085_IG15: ; bbWeight=0.50, gcrefRegs=14180000 {x19 x20 x26 x28}, byr ldr w1, [x1, #0x10] ; byrRegs -[x1] cmp w1, #4
- beq G_M10085_IG35
+ beq G_M10085_IG36
...

+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, 53 ) 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.50) 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.50) 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_IG39
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_IG38
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, 61 ) 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.50) int -> registers +; V10 loc8 [V10,T68] ( 2, 4.50) int -> x1 +; V11 loc9 [V11,T19] ( 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,T18] ( 10, 24.50) 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 @@ -441,53 +439,74 @@ G_M18555_IG21: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=4100000 {x2 cmp w2, #1 bls G_M18555_IG38 ldr x0, [x0, #0x18]
- lsl w2, w1, #1 - sub w2, w2, #1 - ldr w3, [x0, #0x08]
+ mov x2, x0 + ; gcrRegs +[x2] + lsl w3, w1, #1
; gcrRegs -[x3]
- cmp w2, w3
+ sub w3, w3, #1 + ldr w4, [x2, #0x08] + cmp w3, w4 + bhs G_M18555_IG38 + add x2, x2, #16 + ; gcrRegs -[x2] + ; byrRegs +[x2] + ldr w2, [x2, w3, UXTW #2] + ; byrRegs -[x2] + cmn w2, #2 + beq G_M18555_IG16 + tbz w2, #31, G_M18555_IG23 + ;; size=100 bbWeight=4 PerfScore 154.00 +G_M18555_IG22: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=4100000 {x20 x26}, byref, isz + mov x3, x0 + ; gcrRegs +[x3] + neg w2, w2 + sub w2, w2, #3 + ldr w4, [x3, #0x08] + cmp w2, w4 + bhs G_M18555_IG38
...

+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,T07] ( 11, 20.50) int -> x21
;* V02 loc1 [V02,T51] ( 0, 0 ) int -> zero-ref
-; V03 loc2 [V03,T00] ( 35, 73 ) int -> x22
+; V03 loc2 [V03,T00] ( 39, 77.50) 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,T09] ( 12, 18.04) 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,T08] ( 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_IG42
;; 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_IG57
add x24, x19, #12 ; byrRegs +[x24] ldrh w0, [x24, w0, UXTW #2] cmp w23, w20
- bhs G_M18406_IG52
+ bhs G_M18406_IG57
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, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, w21 ccmp w22, #0, nc, lt
- blt G_M18406_IG37
+ blt G_M18406_IG42 + ;; size=12 bbWeight=1 PerfScore 2.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_IG57
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 - ;; 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_IG15: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M18406_IG18 + ;; size=4 bbWeight=1 PerfScore 1.00 +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=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cmp w22, w21 + bge G_M18406_IG42 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M18406_IG19: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cmp w22, w20 + bhs G_M18406_IG57 + 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_IG42 + ;; 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_IG57
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 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M18406_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref + b G_M18406_IG24 + ;; size=4 bbWeight=1 PerfScore 1.00 +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=1, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz + cmp w22, w21 + bge G_M18406_IG42 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M18406_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz + cmp w22, w20 + bhs G_M18406_IG57
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_IG42
add w21, w22, #1 sub w2, w20, w21 cmp w20, w21
- blo G_M18406_IG53
+ blo G_M18406_IG58
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_IG42
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_IG59
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 ...

realworld.run.linux.arm64.checked.mch

-12 (-1.67%) : 1625.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector1[float],System.Numerics.Vector1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)

@@ -9,40 +9,40 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T11] ( 5, 14 ) byref -> x0 single-def
-; V01 arg1 [V01,T10] ( 9, 16.50) int -> x1 single-def -; V02 arg2 [V02,T38] ( 5, 3.50) simd16 -> d0 HFA(simd16) single-def <System.Numerics.Vector`1[float]> -; V03 arg3 [V03,T21] ( 5, 14 ) simd16 -> d1 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[float]> -; V04 arg4 [V04,T22] ( 5, 14 ) simd16 -> d2 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[int]> -; V05 arg5 [V05,T00] ( 16, 51 ) byref -> x2 single-def -; V06 arg6 [V06,T02] ( 12, 35 ) byref -> x3 single-def
+; V01 arg1 [V01,T10] ( 9, 17.50) int -> x1 single-def +; V02 arg2 [V02,T38] ( 5, 4.50) simd16 -> d0 HFA(simd16) single-def <System.Numerics.Vector`1[float]> +; V03 arg3 [V03,T22] ( 5, 14 ) simd16 -> d1 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[float]> +; V04 arg4 [V04,T23] ( 5, 14 ) simd16 -> d2 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[int]> +; V05 arg5 [V05,T00] ( 16, 52 ) byref -> x2 single-def +; V06 arg6 [V06,T02] ( 12, 36 ) byref -> x3 single-def
; V07 arg7 [V07,T03] ( 10, 34 ) byref -> x4 single-def ; V08 arg8 [V08,T04] ( 10, 34 ) byref -> x5 single-def
-; V09 arg9 [V09,T12] ( 4, 3 ) byref -> x6 single-def -; V10 arg10 [V10,T13] ( 4, 3 ) byref -> x7 single-def -; V11 arg11 [V11,T14] ( 2, 1 ) byref -> [fp+0x10] single-def -; V12 arg12 [V12,T15] ( 2, 1 ) byref -> [fp+0x18] single-def -; V13 loc0 [V13,T27] ( 5, 13 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V14 loc1 [V14,T39] ( 2, 4.50) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> -; V15 loc2 [V15,T24] ( 7, 14 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> -; V16 loc3 [V16,T40] ( 2, 4.50) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> -; V17 loc4 [V17,T41] ( 2, 4.50) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[float]> -; V18 loc5 [V18,T25] ( 6, 13.50) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[float]> -; V19 loc6 [V19,T26] ( 6, 13.50) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]> -; V20 loc7 [V20,T45] ( 3, 1.50) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> -; V21 loc8 [V21,T07] ( 6, 20.50) int -> x10
+; V09 arg9 [V09,T12] ( 4, 3.50) byref -> x6 single-def +; V10 arg10 [V10,T13] ( 4, 3.50) byref -> x7 single-def +; V11 arg11 [V11,T14] ( 2, 1.50) byref -> x8 single-def +; V12 arg12 [V12,T15] ( 2, 1.50) byref -> x9 single-def +; V13 loc0 [V13,T27] ( 5, 13.50) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V14 loc1 [V14,T41] ( 2, 4.50) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> +; V15 loc2 [V15,T21] ( 7, 16 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> +; V16 loc3 [V16,T39] ( 2, 5 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> +; V17 loc4 [V17,T40] ( 2, 5 ) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[float]> +; V18 loc5 [V18,T25] ( 6, 15 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[float]> +; V19 loc6 [V19,T26] ( 6, 15 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]> +; V20 loc7 [V20,T45] ( 3, 3 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> +; V21 loc8 [V21,T09] ( 6, 20.50) int -> x10
; V22 loc9 [V22,T05] ( 7, 28 ) byref -> x11 ; V23 loc10 [V23,T37] ( 2, 8 ) simd16 -> d22 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]> ;* V24 loc11 [V24 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ; V25 loc12 [V25,T28] ( 3, 12 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]> ; V26 loc13 [V26,T17] ( 6, 24 ) simd16 -> d22 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]>
-; V27 loc14 [V27,T08] ( 6, 20.50) int -> x6
+; V27 loc14 [V27,T07] ( 6, 21 ) int -> x6
; V28 loc15 [V28,T06] ( 7, 28 ) byref -> x10 ; V29 loc16 [V29,T29] ( 3, 12 ) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[float]> ; V30 loc17 [V30,T30] ( 3, 12 ) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> ; V31 loc18 [V31,T31] ( 3, 12 ) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> ;* V32 loc19 [V32 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]> ; V33 loc20 [V33,T18] ( 6, 24 ) simd16 -> d19 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]>
-; V34 loc21 [V34,T09] ( 6, 20.50) int -> x3
+; V34 loc21 [V34,T08] ( 6, 21 ) int -> x3
; V35 loc22 [V35,T01] ( 11, 44 ) byref -> x6 ;* V36 loc23 [V36 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V37 loc24 [V37 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> @@ -61,7 +61,7 @@ ;* V50 tmp8 [V50 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt" ;* V51 tmp9 [V51 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[int]> ;* V52 tmp10 [V52 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
-; V53 cse0 [V53,T23] ( 4, 16 ) simd16 -> d21 "CSE - aggressive"
+; V53 cse0 [V53,T24] ( 4, 16 ) simd16 -> d21 "CSE - aggressive"
; V54 cse1 [V54,T33] ( 3, 12 ) simd16 -> d25 "CSE - aggressive" ; V55 cse2 [V55,T42] ( 2, 4.25) simd8 -> d19 hoist "CSE - aggressive" ; V56 cse3 [V56,T43] ( 2, 4.25) simd8 -> d20 hoist "CSE - aggressive" @@ -69,40 +69,38 @@ ; V58 cse5 [V58,T34] ( 3, 12 ) simd16 -> d24 "CSE - aggressive" ; V59 cse6 [V59,T35] ( 3, 12 ) simd16 -> d17 "CSE - aggressive" ; V60 cse7 [V60,T36] ( 3, 12 ) simd16 -> d23 "CSE - aggressive"
-; V61 cse8 [V61,T46] ( 3, 1.50) simd16 -> d16 "CSE - moderate" -; V62 cse9 [V62,T47] ( 3, 1.50) simd16 -> d18 "CSE - moderate"
+; V61 cse8 [V61,T47] ( 3, 2 ) simd16 -> d16 "CSE - moderate" +; V62 cse9 [V62,T46] ( 3, 3 ) simd16 -> d18 "CSE - moderate"
; ; Lcl frame size = 0 G_M58832_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x10]! mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50 -G_M58832_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+ ldp x8, x9, [fp, #0x10] // [V11 arg11], [V12 arg12] + ; byrRegs +[x8-x9] + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M58832_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
; byrRegs +[x0 x2-x7] cbnz w1, G_M58832_IG05 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M58832_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {x6 x7}, byref
+G_M58832_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=03C0 {x6 x7 x8 x9}, byref
; byrRegs -[x0 x2-x5] movi v0.4s, #0 str q0, [x6] movi v1.4s, #0 str q1, [x7] movi v2.4s, #0
- ldr x8, [fp, #0x10] // [V11 arg11] - ; byrRegs +[x8]
str q2, [x8] movi v16.4s, #0
- ldr x9, [fp, #0x18] // [V12 arg12] - ; byrRegs +[x9]
str q16, [x9]
- ;; size=40 bbWeight=0.50 PerfScore 5.00
+ ;; size=32 bbWeight=0.50 PerfScore 3.00
G_M58832_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M58832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, gcvars, byref, isz - ; byrRegs -[x8-x9] +[x0 x2-x5]
+G_M58832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, gcvars, byref, isz + ; byrRegs +[x0 x2-x5]
ldr q16, [@RWD00] mov v17.16b, v16.16b ldr d18, [@RWD16] @@ -111,11 +109,11 @@ G_M58832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 cmp w1, #0 ble G_M58832_IG08 ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M58832_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+G_M58832_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
ldr d19, [@RWD24] ldr d20, [@RWD32] ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M58832_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+G_M58832_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
sbfiz x11, x10, #6, #32 add x11, x0, x11 ; byrRegs +[x11] @@ -154,7 +152,7 @@ G_M58832_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 cmp w10, w1 blt G_M58832_IG07 ;; size=144 bbWeight=4 PerfScore 218.00
-G_M58832_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+G_M58832_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
; byrRegs -[x11] fcmgt v16.4s, v17.4s, v16.4s str q16, [x6] @@ -163,8 +161,8 @@ G_M58832_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 ; byrRegs -[x6] cmp w1, #0 ble G_M58832_IG10
- ;; size=24 bbWeight=0.50 PerfScore 2.25 -G_M58832_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 x3 x4 x5 x7}, byref, isz
+ ;; size=24 bbWeight=1 PerfScore 4.50 +G_M58832_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=03BD {x0 x2 x3 x4 x5 x7 x8 x9}, byref, isz
sbfiz x10, x6, #6, #32 add x10, x0, x10 ; byrRegs +[x10] @@ -200,7 +198,7 @@ G_M58832_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 x3 cmp w6, w1 blt G_M58832_IG09 ;; size=132 bbWeight=4 PerfScore 220.00
-G_M58832_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 x3 x4 x5 x7}, byref, isz
+G_M58832_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=03BD {x0 x2 x3 x4 x5 x7 x8 x9}, byref, isz
; byrRegs -[x10] fmul v17.4s, v0.4s, v0.4s ldr q18, [@RWD48] @@ -217,12 +215,12 @@ G_M58832_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 ; byrRegs -[x3] cmp w1, #0 ble G_M58832_IG13
- ;; size=56 bbWeight=0.50 PerfScore 12.50 -G_M58832_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0035 {x0 x2 x4 x5}, byref, isz
+ ;; size=56 bbWeight=1 PerfScore 25.00 +G_M58832_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0335 {x0 x2 x4 x5 x8 x9}, byref, isz
; byrRegs -[x7] ldr d22, [@RWD64] ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M58832_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0035 {x0 x2 x4 x5}, byref, isz
+G_M58832_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0335 {x0 x2 x4 x5 x8 x9}, byref, isz
sbfiz x6, x3, #6, #32 add x6, x0, x6 ; byrRegs +[x6] @@ -279,25 +277,21 @@ G_M58832_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0035 {x0 x2 x4 cmp w3, w1 blt G_M58832_IG12 ;; size=216 bbWeight=4 PerfScore 344.00
-G_M58832_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58832_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0300 {x8 x9}, byref
; byrRegs -[x0 x2 x4-x6] fmul v16.4s, v16.4s, v16.4s fmul v16.4s, v16.4s, v18.4s fmul v17.4s, v20.4s, v20.4s fcmgt v17.4s, v17.4s, v16.4s
- ldr x8, [fp, #0x10] // [V11 arg11] - ; byrRegs +[x8]
str q17, [x8] fmul v17.4s, v21.4s, v21.4s fcmgt v16.4s, v17.4s, v16.4s
- ldr x9, [fp, #0x18] // [V12 arg12] - ; byrRegs +[x9]
str q16, [x9]
- ;; size=40 bbWeight=0.50 PerfScore 10.00 -G_M58832_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 16.00 +G_M58832_IG14: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
RWD00 dq FF7FFFFFFF7FFFFFh, FF7FFFFFFF7FFFFFh RWD16 dq 3C23D70A3C23D70Ah RWD24 dq 3F4B70CA3F4B70CAh @@ -307,7 +301,7 @@ RWD48 dq 358637BD358637BDh, 358637BD358637BDh RWD64 dq 3E8000003E800000h
-; Total bytes of code 720, prolog size 8, PerfScore 822.50, instruction count 180, allocated bytes for code 720 (MethodHash=18e61a2f) for method BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
+; Total bytes of code 708, prolog size 12, PerfScore 845.25, instruction count 177, allocated bytes for code 708 (MethodHash=18e61a2f) for method BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
; ============================================================ Unwind Info: @@ -318,7 +312,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 180 (0x000b4) Actual length = 720 (0x0002d0)
+ Function Length : 177 (0x000b1) Actual length = 708 (0x0002c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-0.75%) : 33211.dasm - System.Management.Automation.ParameterBinderController:BindPositionalParameters(System.Collections.ObjectModel.Collection1[System.Management.Automation.CommandParameterInternal],uint,uint,byref):System.Collections.ObjectModel.Collection1[System.Management.Automation.CommandParameterInternal]:this (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 36 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T09] ( 10, 13 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Management.Automation.ParameterBinderController> -; V01 arg1 [V01,T17] ( 5, 4 ) ref -> x23 class-hnd single-def <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]>
+; V00 this [V00,T10] ( 10, 13 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Management.Automation.ParameterBinderController> +; V01 arg1 [V01,T17] ( 5, 4 ) ref -> x22 class-hnd single-def <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]>
; V02 arg2 [V02,T03] ( 9, 16 ) int -> x19 ; V03 arg3 [V03,T05] ( 8, 14 ) int -> x20 single-def
-; V04 arg4 [V04,T13] ( 7, 11 ) byref -> x22 single-def -; V05 loc0 [V05,T02] ( 10, 22.50) ref -> x24 class-hnd <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> -; V06 loc1 [V06,T10] ( 6, 15 ) ref -> x26 class-hnd exact single-def <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]> -; V07 loc2 [V07,T23] ( 6, 4.50) ref -> x27 class-hnd single-def <<unknown class>> -; V08 loc3 [V08 ] ( 3, 3 ) int -> [fp+0x90] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V04 arg4 [V04,T13] ( 7, 11 ) byref -> x21 single-def +; V05 loc0 [V05,T02] ( 10, 22.50) ref -> x23 class-hnd <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> +; V06 loc1 [V06,T09] ( 6, 15.50) ref -> x25 class-hnd exact single-def <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]> +; V07 loc2 [V07,T23] ( 6, 4.50) ref -> x26 class-hnd single-def <<unknown class>> +; V08 loc3 [V08 ] ( 3, 3.50) int -> [fp+0x90] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V09 loc4 [V09 ] ( 5, 9.50) struct (40) [fp+0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SortedDictionary`2+ValueCollection+Enumerator[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V10 loc5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]>
-; V11 loc6 [V11,T11] ( 7, 14 ) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Management.Automation.CommandParameterInternal> -; V12 loc7 [V12,T04] ( 9, 18 ) ubyte -> x7 -; V13 loc8 [V13,T00] ( 8, 25 ) int -> x21
+; V11 loc6 [V11,T11] ( 7, 14 ) ref -> x28 class-hnd exact <System.Management.Automation.CommandParameterInternal> +; V12 loc7 [V12,T04] ( 9, 18 ) ubyte -> x6 +; V13 loc8 [V13,T00] ( 8, 26 ) int -> x19
; V14 OutArgs [V14 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T18] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> -; V16 tmp2 [V16,T26] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]>
+; V15 tmp1 [V15,T18] ( 3, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> +; V16 tmp2 [V16,T26] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]>
;* V17 tmp3 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V18 tmp4 [V18,T36] ( 2, 0 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ; V19 tmp5 [V19,T37] ( 2, 0 ) ref -> x20 class-hnd exact single-def "non-inline candidate call" <System.String> @@ -41,21 +41,21 @@ ; V30 tmp16 [V30,T32] ( 2, 2 ) struct (40) [fp+0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ; V31 tmp17 [V31,T22] ( 5, 5 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <<unknown class>> ; V32 tmp18 [V32 ] ( 8, 8 ) struct (32) [fp+0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]]>
-; V33 tmp19 [V33,T27] ( 3, 3 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V33 tmp19 [V33,T27] ( 3, 3 ) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V34 tmp20 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V35 tmp21 [V35,T33] ( 2, 1 ) int -> x23 single-def "Inline return value spill temp"
+; V35 tmp21 [V35,T33] ( 2, 1 ) int -> x22 single-def "Inline return value spill temp"
;* V36 tmp22 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V37 tmp23 [V37,T25] ( 4, 3 ) int -> x23 "Inlining Arg"
+; V37 tmp23 [V37,T25] ( 4, 3 ) int -> x22 "Inlining Arg"
;* V38 tmp24 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V39 tmp25 [V39 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V40 tmp26 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V41 tmp27 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]> ;* V42 tmp28 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V43 tmp29 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V44 tmp30 [V44,T07] ( 2, 16 ) ref -> x19 class-hnd "Inlining Arg" <System.__Canon>
+; V44 tmp30 [V44,T07] ( 2, 16 ) ref -> x20 class-hnd "Inlining Arg" <System.__Canon>
;* V45 tmp31 [V45 ] ( 0, 0 ) ref -> zero-ref "field V38.value (fldOffset=0x0)" P-INDEP ;* V46 tmp32 [V46 ] ( 0, 0 ) int -> zero-ref "field V38.key (fldOffset=0x8)" P-INDEP
-; V47 tmp33 [V47,T06] ( 7, 16 ) ref -> x28 "field V39.value (fldOffset=0x0)" P-INDEP
+; V47 tmp33 [V47,T06] ( 7, 16 ) ref -> x27 "field V39.value (fldOffset=0x0)" P-INDEP
;* V48 tmp34 [V48 ] ( 0, 0 ) int -> zero-ref "field V39.key (fldOffset=0x8)" P-INDEP ;* V49 tmp35 [V49 ] ( 0, 0 ) ref -> zero-ref "field V40.value (fldOffset=0x0)" P-INDEP ;* V50 tmp36 [V50 ] ( 0, 0 ) int -> zero-ref "field V40.key (fldOffset=0x8)" P-INDEP @@ -68,9 +68,9 @@ ; V57 tmp43 [V57,T01] ( 3, 24 ) ref -> x0 "arr expr" ; V58 tmp44 [V58,T08] ( 2, 16 ) int -> x1 "argument with side effect" ; V59 PSPSym [V59,T34] ( 1, 1 ) long -> [fp+0x98] do-not-enreg[V] "PSPSym"
-; V60 cse0 [V60,T20] ( 3, 6 ) int -> x0 "CSE - aggressive" -; V61 cse1 [V61,T12] ( 6, 14 ) long -> x25 "CSE - aggressive" -; V62 cse2 [V62,T21] ( 4, 5.50) long -> x23 "CSE - moderate"
+; V60 cse0 [V60,T20] ( 3, 6 ) int -> x1 "CSE - aggressive" +; V61 cse1 [V61,T12] ( 6, 14 ) long -> x24 "CSE - aggressive" +; V62 cse2 [V62,T21] ( 4, 5.50) long -> x22 "CSE - moderate"
; V63 cse3 [V63,T14] ( 3, 10 ) ref -> x0 "CSE - aggressive" ; ; Lcl frame size = 160 @@ -95,24 +95,22 @@ G_M4554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x5, [fp, #0x98] // [V59 PSPSym] str x0, [fp, #0x18] // [V00 this] ; GC ptr vars +{V00}
- mov x21, x0 - ; gcrRegs +[x21] - mov x23, x1 - ; gcrRegs +[x23]
+ mov x22, x1 + ; gcrRegs +[x22]
mov w19, w2 mov w20, w3
- mov x22, x4 - ; byrRegs +[x22] - ;; size=92 bbWeight=1 PerfScore 18.00 -G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=A00000 {x21 x23}, byrefRegs=400000 {x22}, gcvars, byref, isz
+ mov x21, x4 + ; byrRegs +[x21] + ;; size=88 bbWeight=1 PerfScore 17.50 +G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000400 {V00}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x24, x0 - ; gcrRegs +[x24]
+ mov x23, x0 + ; gcrRegs +[x23]
movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -124,20 +122,20 @@ G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=A000 movk x14, #0xD1FFAB1E LSL #16 movk x14, #0xD1FFAB1E LSL #32 str x14, [x0, #0x08]
- add x14, x24, #8
+ add x14, x23, #8
; byrRegs +[x14] mov x15, x0 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- str xzr, [x22] - ldr x0, [x23, #0x08]
+ str xzr, [x21] + ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- movz x25, #0xD1FFAB1E // code for <unknown method> - movk x25, #0xD1FFAB1E LSL #16 - movk x25, #0xD1FFAB1E LSL #32 - mov x11, x25
+ movz x24, #0xD1FFAB1E // code for <unknown method> + movk x24, #0xD1FFAB1E LSL #16 + movk x24, #0xD1FFAB1E LSL #32 + mov x11, x24
ldr x1, [x11] blr x1 ; gcrRegs -[x0] @@ -145,16 +143,16 @@ G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=A000 cmp w0, #0 ble G_M4554_IG23 ;; size=104 bbWeight=1 PerfScore 21.50
-G_M4554_IG03: ; bbWeight=0.50, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=400000 {x22}, byref
+G_M4554_IG03: ; bbWeight=0.50, gcrefRegs=C00000 {x22 x23}, byrefRegs=200000 {x21}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x26, x0 - ; gcrRegs +[x26] - mov x1, x23
+ mov x25, x0 + ; gcrRegs +[x25] + mov x1, x22
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -164,47 +162,51 @@ G_M4554_IG03: ; bbWeight=0.50, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=44 bbWeight=0.50 PerfScore 4.50
-G_M4554_IG04: ; bbWeight=0.50, gcrefRegs=5A00000 {x21 x23 x24 x26}, byrefRegs=400000 {x22}, byref - ldr x0, [x21, #0x28]
+G_M4554_IG04: ; bbWeight=0.50, gcrefRegs=2C00000 {x22 x23 x25}, byrefRegs=200000 {x21}, byref + ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- ldr w1, [x21, #0x58] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2
+ ldr x0, [x0, #0x28] + ldr x2, [fp, #0x18] // [V00 this] + ; gcrRegs +[x2] + ldr w1, [x2, #0x58] + movz x3, #0xD1FFAB1E // code for <unknown method> + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x2]
; gcr arg pop 0
- mov x27, x0 - ; gcrRegs +[x27] - ;; size=32 bbWeight=0.50 PerfScore 6.00 -G_M4554_IG05: ; bbWeight=0.50, gcrefRegs=DA00000 {x21 x23 x24 x26 x27}, byrefRegs=400000 {x22}, byref, isz
+ mov x26, x0 + ; gcrRegs +[x26] + ;; size=40 bbWeight=0.50 PerfScore 8.00 +G_M4554_IG05: ; bbWeight=0.50, gcrefRegs=6C00000 {x22 x23 x25 x26}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x27, #0x18]
+ ldr x0, [x26, #0x18]
; gcrRegs +[x0] ldr w0, [x0, #0x20] ; gcrRegs -[x0] cmp w0, #0 ble G_M4554_IG25 str wzr, [fp, #0x90] // [V08 loc3]
- ldr x1, [x27, #0x10]
+ ldr x1, [x26, #0x10]
; gcrRegs +[x1] cbnz x1, G_M4554_IG06 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1 x23] +[x0]
+ ; gcrRegs -[x1 x22] +[x0]
; gcr arg pop 0 mov x1, x0 ; gcrRegs +[x1] add x14, x1, #8 ; byrRegs +[x14]
- mov x15, x27
+ mov x15, x26
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- add x14, x27, #16
+ add x14, x26, #16
; byrRegs +[x14] mov x15, x1 ; gcrRegs +[x15] @@ -212,7 +214,7 @@ G_M4554_IG05: ; bbWeight=0.50, gcrefRegs=DA00000 {x21 x23 x24 x26 x27}, b ; gcrRegs -[x15] ; byrRegs -[x14] ;; size=72 bbWeight=0.50 PerfScore 9.75
-G_M4554_IG06: ; bbWeight=0.50, gcrefRegs=D200002 {x1 x21 x24 x26 x27}, byrefRegs=400000 {x22}, byref, isz
+G_M4554_IG06: ; bbWeight=0.50, gcrefRegs=6800002 {x1 x23 x25 x26}, byrefRegs=200000 {x21}, byref, isz
ldr x0, [x1, #0x08] ; gcrRegs +[x0] ldr x0, [x0, #0x18] @@ -228,18 +230,18 @@ G_M4554_IG06: ; bbWeight=0.50, gcrefRegs=D200002 {x1 x21 x24 x26 x27}, by add w0, w0, #1 orr w0, w0, #1 clz w0, w0
- eor w23, w0, #31
+ eor w22, w0, #31
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x28, x0 - ; gcrRegs +[x28]
...

-16 (-0.48%) : 1757.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)

@@ -8,103 +8,103 @@ ; 0 inlinees with PGO data; 41 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T21] ( 3, 3 ) long -> x0 single-def -; V01 arg1 [V01,T17] ( 6, 4 ) byref -> x26 single-def -; V02 arg2 [V02,T15] ( 6, 5 ) byref -> x24 single-def -; V03 arg3 [V03,T22] ( 3, 3 ) long -> x3 single-def -; V04 arg4 [V04,T14] ( 7, 5.50) byref -> x23 single-def -; V05 arg5 [V05,T18] ( 6, 4 ) byref -> x27 single-def -; V06 arg6 [V06,T16] ( 5, 4.50) byref -> x25 single-def -; V07 arg7 [V07,T87] ( 5, 3.50) float -> [fp-0x94] single-def -; V08 arg8 [V08,T45] ( 6, 14.50) float -> d8 single-def -; V09 arg9 [V09,T77] ( 3, 4 ) float -> [fp-0x98] single-def -; V10 arg10 [V10,T12] ( 3, 6 ) int -> x21 single-def
+; V00 arg0 [V00,T25] ( 3, 3 ) long -> x0 single-def +; V01 arg1 [V01,T14] ( 6, 6 ) byref -> x23 single-def +; V02 arg2 [V02,T19] ( 6, 5.50) byref -> x26 single-def +; V03 arg3 [V03,T26] ( 3, 3 ) long -> x3 single-def +; V04 arg4 [V04,T13] ( 7, 7 ) byref -> x22 single-def +; V05 arg5 [V05,T15] ( 6, 6 ) byref -> x24 single-def +; V06 arg6 [V06,T20] ( 5, 5 ) byref -> x27 single-def +; V07 arg7 [V07,T92] ( 5, 3.50) float -> [fp-0x94] single-def +; V08 arg8 [V08,T45] ( 6, 15 ) float -> d8 single-def +; V09 arg9 [V09,T78] ( 3, 4 ) float -> [fp-0x98] single-def +; V10 arg10 [V10,T18] ( 3, 6 ) int -> x25 single-def
;* V11 arg11 [V11 ] ( 0, 0 ) byref -> zero-ref single-def
-; V12 arg12 [V12,T05] ( 10, 16.50) byref -> x19 single-def -; V13 arg13 [V13,T08] ( 9, 15.50) byref -> x20 single-def -; V14 arg14 [V14,T13] ( 8, 7.50) byref -> x22 single-def -; V15 arg15 [V15,T23] ( 4, 4.50) byref -> x28 single-def -; V16 loc0 [V16,T19] ( 5, 5 ) byref -> x0 single-def -; V17 loc1 [V17,T20] ( 5, 5 ) byref -> x3 single-def
+; V12 arg12 [V12,T06] ( 10, 17.50) byref -> x19 single-def +; V13 arg13 [V13,T07] ( 9, 16.50) byref -> x20 single-def +; V14 arg14 [V14,T12] ( 8, 9.50) byref -> x21 single-def +; V15 arg15 [V15,T21] ( 4, 6.50) byref -> x28 single-def +; V16 loc0 [V16,T22] ( 5, 5 ) byref -> x0 single-def +; V17 loc1 [V17,T23] ( 5, 5 ) byref -> x3 single-def
; V18 loc2 [V18 ] ( 4, 7 ) struct (32) [fp-0xB8] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuPhysics.Collidables.CapsuleWide> ; V19 loc3 [V19 ] ( 4, 7 ) struct (32) [fp-0xD8] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuPhysics.Collidables.CylinderWide> ; V20 loc4 [V20 ] ( 2, 5 ) struct ( 8) [fp-0xE0] HFA(float) do-not-enreg[XS] addr-exposed ld-addr-op <BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]>
-; V21 loc5 [V21 ] ( 6, 4.50) simd12 -> [fp-0xF0] HFA(float) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector3> -; V22 loc6 [V22,T105] ( 3, 2.50) float -> d9 ld-addr-op -; V23 loc7 [V23,T109] ( 2, 1.50) float -> [fp-0xF4] ld-addr-op spill-single-def -; V24 loc8 [V24,T93] ( 5, 4.50) float -> d10 ld-addr-op -; V25 loc9 [V25,T110] ( 2, 1.50) float -> d11 ld-addr-op -; V26 loc10 [V26,T111] ( 2, 1.50) float -> [fp-0xF8] spill-single-def -; V27 loc11 [V27,T112] ( 2, 1.50) float -> [fp-0xFC] spill-single-def -; V28 loc12 [V28,T94] ( 2, 4.50) simd16 -> [fp-0x110] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V29 loc13 [V29,T95] ( 2, 4.50) simd16 -> [fp-0x120] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V30 loc14 [V30,T96] ( 2, 4.50) simd16 -> [fp-0x130] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V31 loc15 [V31,T97] ( 2, 4.50) simd16 -> [fp-0x140] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]>
+; V21 loc5 [V21 ] ( 6, 6 ) simd12 -> [fp-0xF0] HFA(float) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector3> +; V22 loc6 [V22,T105] ( 3, 3 ) float -> d9 ld-addr-op +; V23 loc7 [V23,T109] ( 2, 2 ) float -> [fp-0xF4] ld-addr-op spill-single-def +; V24 loc8 [V24,T93] ( 5, 5 ) float -> d10 ld-addr-op +; V25 loc9 [V25,T110] ( 2, 2 ) float -> d11 ld-addr-op +; V26 loc10 [V26,T111] ( 2, 2 ) float -> [fp-0xF8] spill-single-def +; V27 loc11 [V27,T112] ( 2, 2 ) float -> [fp-0xFC] spill-single-def +; V28 loc12 [V28,T95] ( 2, 5 ) simd16 -> [fp-0x110] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V29 loc13 [V29,T96] ( 2, 5 ) simd16 -> [fp-0x120] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V30 loc14 [V30,T97] ( 2, 5 ) simd16 -> [fp-0x130] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V31 loc15 [V31,T98] ( 2, 5 ) simd16 -> [fp-0x140] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]>
;* V32 loc16 [V32 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op <BepuUtilities.Vector3Wide>
-; V33 loc17 [V33 ] ( 6, 6.50) struct (64) [fp-0x180] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> -; V34 loc18 [V34 ] ( 6, 6.50) struct (64) [fp-0x1C0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide>
+; V33 loc17 [V33 ] ( 6, 9 ) struct (64) [fp-0x180] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> +; V34 loc18 [V34 ] ( 6, 9 ) struct (64) [fp-0x1C0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide>
;* V35 loc19 [V35 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op <BepuUtilities.Vector3Wide>
-; V36 loc20 [V36 ] ( 5, 6 ) struct (48) [fp-0x1F0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V37 loc21 [V37 ] ( 5, 6 ) struct (48) [fp-0x220] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V38 loc22 [V38 ] ( 15, 38.50) simd16 -> [fp-0x230] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[float]> -; V39 loc23 [V39 ] ( 7, 17.50) struct (48) [fp-0x260] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V40 loc24 [V40 ] ( 3, 8.50) struct (64) [fp-0x2A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> -; V41 loc25 [V41 ] ( 3, 8.50) struct (64) [fp-0x2E0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> -; V42 loc26 [V42,T98] ( 2, 4.50) simd16 -> [fp-0x2F0] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V43 loc27 [V43,T74] ( 3, 6.50) float -> [fp-0x2F4] -; V44 loc28 [V44,T38] ( 11, 22.50) float -> [fp-0x2F8] -; V45 loc29 [V45,T10] ( 6, 11 ) ubyte -> x23 -; V46 loc30 [V46,T09] ( 4, 12.50) int -> x25
+; V36 loc20 [V36 ] ( 5, 8 ) struct (48) [fp-0x1F0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V37 loc21 [V37 ] ( 5, 8 ) struct (48) [fp-0x220] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V38 loc22 [V38 ] ( 15, 41 ) simd16 -> [fp-0x230] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[float]> +; V39 loc23 [V39 ] ( 7, 19 ) struct (48) [fp-0x260] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V40 loc24 [V40 ] ( 3, 9 ) struct (64) [fp-0x2A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> +; V41 loc25 [V41 ] ( 3, 9 ) struct (64) [fp-0x2E0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> +; V42 loc26 [V42,T99] ( 2, 5 ) simd16 -> [fp-0x2F0] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V43 loc27 [V43,T68] ( 3, 9 ) float -> [fp-0x2F4] +; V44 loc28 [V44,T38] ( 11, 23 ) float -> [fp-0x2F8] +; V45 loc29 [V45,T09] ( 6, 13.50) ubyte -> x22 +; V46 loc30 [V46,T10] ( 4, 13 ) int -> x23
;* V47 loc31 [V47 ] ( 0, 0 ) long -> zero-ref ;* V48 loc32 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <BepuUtilities.Memory.Buffer`1[ubyte]> ;* V49 loc33 [V49 ] ( 0, 0 ) long -> zero-ref ; V50 loc34 [V50 ] ( 6, 16 ) simd16 -> [fp-0x310] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[int]> ; V51 loc35 [V51 ] ( 5, 20 ) simd16 -> [fp-0x320] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[float]>
-; V52 loc36 [V52 ] ( 4, 10 ) struct (48) [fp-0x350] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V53 loc37 [V53 ] ( 7, 22 ) struct (48) [fp-0x380] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide>
+; V52 loc36 [V52 ] ( 4, 16 ) struct (48) [fp-0x350] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V53 loc37 [V53 ] ( 7, 28 ) struct (48) [fp-0x380] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide>
; V54 loc38 [V54,T35] ( 7, 28 ) simd16 -> d16 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
-; V55 loc39 [V55,T51] ( 3, 12 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -;* V56 loc40 [V56,T101] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V57 loc41 [V57,T52] ( 3, 12 ) simd16 -> d20 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -;* V58 loc42 [V58,T102] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
+; V55 loc39 [V55,T54] ( 3, 12 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +;* V56 loc40 [V56,T103] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V57 loc41 [V57,T55] ( 3, 12 ) simd16 -> d20 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +;* V58 loc42 [V58,T104] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
; V59 loc43 [V59,T47] ( 4, 16 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]>
-; V60 loc44 [V60,T53] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> -; V61 loc45 [V61,T54] ( 3, 12 ) simd16 -> d24 HFA(simd16) <System.Numerics.Vector`1[float]> -; V62 loc46 [V62,T66] ( 2, 8 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V60 loc44 [V60,T56] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> +; V61 loc45 [V61,T57] ( 3, 12 ) simd16 -> d24 HFA(simd16) <System.Numerics.Vector`1[float]> +; V62 loc46 [V62,T70] ( 2, 8 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
; V63 loc47 [V63,T33] ( 8, 32 ) simd16 -> d25 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
-; V64 loc48 [V64,T55] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V64 loc48 [V64,T58] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
; V65 loc49 [V65,T48] ( 4, 16 ) simd16 -> d27 HFA(simd16) <System.Numerics.Vector`1[float]> ; V66 loc50 [V66,T40] ( 5, 20 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[float]> ;* V67 loc51 [V67 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V68 loc52 [V68 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V69 loc53 [V69 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]>
-; V70 loc54 [V70,T56] ( 3, 12 ) simd16 -> d29 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V70 loc54 [V70,T59] ( 3, 12 ) simd16 -> d29 HFA(simd16) <System.Numerics.Vector`1[float]>
;* V71 loc55 [V71 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V72 loc56 [V72 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V73 loc57 [V73 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]>
-; V74 loc58 [V74,T67] ( 2, 8 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V74 loc58 [V74,T71] ( 2, 8 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]>
; V75 loc59 [V75,T39] ( 6, 20 ) simd16 -> d16 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
-; V76 loc60 [V76,T86] ( 2, 6 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
+; V76 loc60 [V76,T72] ( 2, 8 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
; V77 loc61 [V77,T44] ( 5, 18 ) simd16 -> d21 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> ; V78 loc62 [V78,T32] ( 16, 48 ) float -> d17 ; V79 loc63 [V79,T34] ( 11, 30 ) float -> d24
-; V80 loc64 [V80,T68] ( 2, 8 ) float -> d21 -; V81 loc65 [V81,T50] ( 4, 14 ) float -> d27 -; V82 loc66 [V82,T49] ( 5, 14 ) float -> d21
+; V80 loc64 [V80,T73] ( 2, 8 ) float -> d21 +; V81 loc65 [V81,T52] ( 4, 14 ) float -> d27 +; V82 loc66 [V82,T51] ( 5, 14 ) float -> d21
; V83 loc67 [V83,T46] ( 6, 16 ) float -> d27 ; V84 loc68 [V84 ] ( 2, 8 ) simd16 -> [fp-0x390] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[int]>
-; V85 loc69 [V85,T03] ( 6, 40 ) int -> x0 -; V86 loc70 [V86,T01] ( 7, 54 ) int -> x1
+; V85 loc69 [V85,T03] ( 6, 42 ) int -> x0 +; V86 loc70 [V86,T01] ( 7, 60 ) int -> x1
; V87 loc71 [V87,T11] ( 5, 10 ) int -> x1
-; V88 loc72 [V88,T02] ( 4, 50 ) int -> x2
+; V88 loc72 [V88,T02] ( 4, 52 ) int -> x2
;* V89 loc73 [V89 ] ( 0, 0 ) int -> zero-ref ;* V90 loc74 [V90,T29] ( 0, 0 ) int -> zero-ref ; V91 OutArgs [V91 ] ( 1, 1 ) struct (32) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V92 tmp1 [V92,T78] ( 3, 6 ) simd12 -> d17 "Clone op1 for vector length" -; V93 tmp2 [V93,T79] ( 3, 6 ) simd12 -> d18 "Clone op1 for vector length" -; V94 tmp3 [V94,T69] ( 2, 8 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> -; V95 tmp4 [V95,T70] ( 2, 8 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> -; V96 tmp5 [V96,T07] ( 2, 16 ) int -> x25 "dup spill"
+; V92 tmp1 [V92,T79] ( 3, 6 ) simd12 -> d17 "Clone op1 for vector length" +; V93 tmp2 [V93,T80] ( 3, 6 ) simd12 -> d18 "Clone op1 for vector length" +; V94 tmp3 [V94,T49] ( 2, 16 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> +; V95 tmp4 [V95,T50] ( 2, 16 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> +; V96 tmp5 [V96,T08] ( 2, 16 ) int -> x23 "dup spill"
;* V97 tmp6 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <BepuUtilities.Memory.Buffer`1[ubyte]> ;* V98 tmp7 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <BepuUtilities.Memory.Buffer`1[ubyte]> ;* V99 tmp8 [V99 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> @@ -112,15 +112,15 @@ ;* V101 tmp10 [V101 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V102 tmp11 [V102 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V103 tmp12 [V103 ] ( 0, 0 ) float -> zero-ref "impAppendStmt"
-; V104 tmp13 [V104,T106] ( 3, 2 ) float -> d18 "Inline return value spill temp" -; V105 tmp14 [V105,T61] ( 7, 9 ) float -> d17 "Inlining Arg" -; V106 tmp15 [V106,T76] ( 4, 6 ) float -> d18 "Inlining Arg"
+; V104 tmp13 [V104,T108] ( 3, 2 ) float -> d18 "Inline return value spill temp" +; V105 tmp14 [V105,T67] ( 7, 9 ) float -> d17 "Inlining Arg" +; V106 tmp15 [V106,T77] ( 4, 6 ) float -> d18 "Inlining Arg"
;* V107 tmp16 [V107 ] ( 0, 0 ) float -> zero-ref "Inlining Arg" ;* V108 tmp17 [V108 ] ( 0, 0 ) float -> zero-ref "Inlining Arg" ;* V109 tmp18 [V109 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V110 tmp19 [V110 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V111 tmp20 [V111,T28] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
-; V112 tmp21 [V112,T65] ( 4, 8 ) simd12 -> d16 "Clone op1 for vector normalize (1)"
+; V112 tmp21 [V112,T69] ( 4, 8 ) simd12 -> d16 "Clone op1 for vector normalize (1)"
;* V113 tmp22 [V113 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V114 tmp23 [V114 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V115 tmp24 [V115 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> @@ -135,29 +135,29 @@ ;* V124 tmp33 [V124 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V125 tmp34 [V125 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V126 tmp35 [V126 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]>
-; V127 tmp36 [V127,T24] ( 4, 4 ) byref -> x0 single-def "Inlining Arg"
+; V127 tmp36 [V127,T16] ( 4, 8 ) byref -> x0 single-def "Inlining Arg"
;* V128 tmp37 [V128 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V129 tmp38 [V129 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V130 tmp39 [V130 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]>
-; V131 tmp40 [V131,T25] ( 4, 4 ) byref -> x0 single-def "Inlining Arg"
+; V131 tmp40 [V131,T17] ( 4, 8 ) byref -> x0 single-def "Inlining Arg"
;* V132 tmp41 [V132 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V133 tmp42 [V133 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V134 tmp43 [V134 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]>
-; V135 tmp44 [V135,T75] ( 6, 6 ) float -> d22 "Inlining Arg" -; V136 tmp45 [V136,T107] ( 2, 2 ) float -> d23 "Inlining Arg"
+; V135 tmp44 [V135,T53] ( 6, 12 ) float -> d22 "Inlining Arg" +; V136 tmp45 [V136,T102] ( 2, 4 ) float -> d23 "Inlining Arg"
;* V137 tmp46 [V137 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <BepuUtilities.Vector3Wide>
-; V138 tmp47 [V138 ] ( 3, 1.50) simd16 -> [fp-0x3A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Numerics.Vector`1[float]> -; V139 tmp48 [V139,T27] ( 5, 2.50) byref -> x0 single-def "Inline stloc first use temp" -; V140 tmp49 [V140,T104] ( 5, 2.50) float -> d25 "Inline stloc first use temp"
+; V138 tmp47 [V138 ] ( 3, 3 ) simd16 -> [fp-0x3A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Numerics.Vector`1[float]> +; V139 tmp48 [V139,T24] ( 5, 5 ) byref -> x0 single-def "Inline stloc first use temp" +; V140 tmp49 [V140,T94] ( 5, 5 ) float -> d25 "Inline stloc first use temp"
;* V141 tmp50 [V141,T30] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V142 tmp51 [V142,T57] ( 3, 12 ) float -> d16 "Inline return value spill temp"
+; V142 tmp51 [V142,T60] ( 3, 12 ) float -> d16 "Inline return value spill temp"
; V143 tmp52 [V143,T31] ( 7, 56 ) float -> d21 "Inlining Arg" ; V144 tmp53 [V144,T36] ( 4, 28 ) float -> d16 "Inlining Arg" ;* V145 tmp54 [V145 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <BepuUtilities.Vector3Wide> ; V146 tmp55 [V146 ] ( 3, 12 ) simd16 -> [fp-0x3B0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Numerics.Vector`1[float]>
-; V147 tmp56 [V147,T04] ( 5, 20 ) byref -> x0 "Inline stloc first use temp"
+; V147 tmp56 [V147,T05] ( 5, 20 ) byref -> x0 "Inline stloc first use temp"
; V148 tmp57 [V148,T41] ( 5, 20 ) float -> d21 "Inline stloc first use temp"
-;* V149 tmp58 [V149,T26] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V149 tmp58 [V149,T27] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V150 tmp59 [V150 ] ( 0, 0 ) float -> zero-ref "Inlining Arg" ; V151 tmp60 [V151 ] ( 3, 6 ) simd16 -> [fp-0xB8] HFA(simd16) do-not-enreg[XS] addr-exposed "field V18.Radius (fldOffset=0x0)" P-DEP ; V152 tmp61 [V152 ] ( 3, 6 ) simd16 -> [fp-0xA8] HFA(simd16) do-not-enreg[XS] addr-exposed "field V18.HalfLength (fldOffset=0x10)" P-DEP @@ -165,71 +165,71 @@ ; V154 tmp63 [V154 ] ( 3, 6 ) simd16 -> [fp-0xC8] HFA(simd16) do-not-enreg[XS] addr-exposed "field V19.HalfLength (fldOffset=0x10)" P-DEP ; V155 tmp64 [V155 ] ( 2, 5 ) float -> [fp-0xE0] do-not-enreg[X] addr-exposed "field V20.TerminationEpsilon (fldOffset=0x0)" P-DEP ; V156 tmp65 [V156 ] ( 2, 5 ) float -> [fp-0xDC] do-not-enreg[X] addr-exposed "field V20.ContainmentEpsilon (fldOffset=0x4)" P-DEP
-; V157 tmp66 [V157,T88] ( 3, 5 ) simd16 -> [fp-0x3C0] HFA(simd16) spill-single-def "field V32.X (fldOffset=0x0)" P-INDEP -; V158 tmp67 [V158,T89] ( 3, 5 ) simd16 -> [fp-0x3D0] HFA(simd16) spill-single-def "field V32.Y (fldOffset=0x10)" P-INDEP -; V159 tmp68 [V159,T90] ( 3, 5 ) simd16 -> d15 HFA(simd16) "field V32.Z (fldOffset=0x20)" P-INDEP -; V160 tmp69 [V160 ] ( 3, 5 ) simd16 -> [fp-0x180] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.X (fldOffset=0x0)" P-DEP -; V161 tmp70 [V161 ] ( 3, 5 ) simd16 -> [fp-0x170] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.Y (fldOffset=0x10)" P-DEP -; V162 tmp71 [V162 ] ( 3, 5 ) simd16 -> [fp-0x160] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.Z (fldOffset=0x20)" P-DEP -; V163 tmp72 [V163 ] ( 3, 5 ) simd16 -> [fp-0x150] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.W (fldOffset=0x30)" P-DEP -; V164 tmp73 [V164 ] ( 3, 5 ) simd16 -> [fp-0x1C0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.X (fldOffset=0x0)" P-DEP -; V165 tmp74 [V165 ] ( 3, 5 ) simd16 -> [fp-0x1B0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.Y (fldOffset=0x10)" P-DEP -; V166 tmp75 [V166 ] ( 3, 5 ) simd16 -> [fp-0x1A0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.Z (fldOffset=0x20)" P-DEP -; V167 tmp76 [V167 ] ( 3, 5 ) simd16 -> [fp-0x190] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.W (fldOffset=0x30)" P-DEP -; V168 tmp77 [V168,T62] ( 4, 9 ) simd16 -> [fp-0x3E0] HFA(simd16) spill-single-def "field V35.X (fldOffset=0x0)" P-INDEP -; V169 tmp78 [V169,T63] ( 4, 9 ) simd16 -> [fp-0x3F0] HFA(simd16) spill-single-def "field V35.Y (fldOffset=0x10)" P-INDEP -; V170 tmp79 [V170,T64] ( 4, 9 ) simd16 -> [fp-0x400] HFA(simd16) spill-single-def "field V35.Z (fldOffset=0x20)" P-INDEP -; V171 tmp80 [V171 ] ( 3, 5 ) simd16 -> [fp-0x1F0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V36.X (fldOffset=0x0)" P-DEP -; V172 tmp81 [V172 ] ( 3, 5 ) simd16 -> [fp-0x1E0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V36.Y (fldOffset=0x10)" P-DEP -; V173 tmp82 [V173 ] ( 3, 5 ) simd16 -> [fp-0x1D0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V36.Z (fldOffset=0x20)" P-DEP
...

+12 (+1.16%) : 21787.dasm - Roslyn.Utilities.EnumerableExtensions+d58`1[System.Canon]:MoveNext():ubyte:this (FullOpts)

@@ -8,19 +8,19 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 25, 34.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]> -; V01 loc0 [V01,T31] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 25, 35.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]> +; V01 loc0 [V01,T27] ( 4, 3 ) ubyte -> registers
; V02 loc1 [V02,T32] ( 3, 2.50) int -> x1 single-def ; V03 loc2 [V03,T24] ( 6, 6.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>> ; V04 loc3 [V04,T26] ( 2, 4 ) ref -> x20 class-hnd <<unknown class>>
-; V05 loc4 [V05,T17] ( 5, 11 ) ref -> x20 class-hnd <<unknown class>>
+; V05 loc4 [V05,T14] ( 5, 11.50) ref -> x20 class-hnd <<unknown class>>
; V06 loc5 [V06,T01] ( 8, 28.50) int -> x21 ; V07 loc6 [V07,T12] ( 3, 12 ) ref -> x22 class-hnd <<unknown class>> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T28] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+; V09 tmp1 [V09,T29] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
;* V10 tmp2 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp4 [V12,T27] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
+; V12 tmp4 [V12,T28] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
;* V13 tmp5 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V14 tmp6 [V14,T10] ( 4, 12 ) long -> x11 "VirtualCall with runtime lookup" ;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -40,16 +40,16 @@ ; V29 cse0 [V29,T09] ( 7, 13 ) long -> x19 hoist multi-def "CSE - aggressive" ; V30 rat0 [V30,T33] ( 3, 2.20) long -> x1 "Spilling to split statement for tree" ; V31 rat1 [V31,T35] ( 3, 2 ) long -> x2 "runtime lookup"
-; V32 rat2 [V32,T29] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V32 rat2 [V32,T30] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
; V33 rat3 [V33,T34] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
-; V34 rat4 [V34,T30] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V34 rat4 [V34,T31] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
; V35 rat5 [V35,T18] ( 3, 8.80) long -> x1 "Spilling to split statement for tree"
-; V36 rat6 [V36,T14] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V36 rat6 [V36,T15] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
; V37 rat7 [V37,T19] ( 3, 8.80) long -> x1 "Spilling to split statement for tree"
-; V38 rat8 [V38,T15] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V38 rat8 [V38,T16] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
; V39 rat9 [V39,T20] ( 3, 8.80) long -> x1 "Spilling to split statement for tree" ; V40 rat10 [V40,T22] ( 3, 8 ) long -> registers "runtime lookup"
-; V41 rat11 [V41,T16] ( 3, 11.20) long -> x2 "fgMakeTemp is creating a new local variable"
+; V41 rat11 [V41,T17] ( 3, 11.20) long -> x2 "fgMakeTemp is creating a new local variable"
; V42 rat12 [V42,T07] ( 3, 17.60) long -> x0 "Spilling to split statement for tree" ; V43 rat13 [V43,T06] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable" ; @@ -74,9 +74,13 @@ G_M19356_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b cmp w1, #1 beq G_M19356_IG23 mov w19, wzr
+ mov w20, w19 + mov x19, x0 + ; gcrRegs +[x19]
b G_M19356_IG38
- ;; size=16 bbWeight=0.50 PerfScore 1.50
+ ;; size=24 bbWeight=0.50 PerfScore 2.00
G_M19356_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
movn w1, #0 str w1, [x0, #0x28] ldr x1, [x0] @@ -324,19 +328,24 @@ G_M19356_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=76 bbWeight=4 PerfScore 112.00 G_M19356_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20 x22]
- mov w19, wzr - ldr x0, [fp, #0x18] // [V00 this]
+ ldr x19, [fp, #0x18] // [V00 this] + ; gcrRegs +[x19] + mov w20, wzr + mov x0, x19
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
+ ldr x19, [fp, #0x18] // [V00 this] + ; gcrRegs +[x19]
b G_M19356_IG38
- ;; size=32 bbWeight=0.50 PerfScore 4.50
+ ;; size=40 bbWeight=0.50 PerfScore 5.75
G_M19356_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00 @@ -427,7 +436,7 @@ G_M19356_IG36: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 cmp w21, w14 blt G_M19356_IG24 ;; size=44 bbWeight=4 PerfScore 48.00
-G_M19356_IG37: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M19356_IG37: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ldr x19, [fp, #0x18] // [V00 this] ; gcrRegs +[x19] @@ -441,11 +450,9 @@ G_M19356_IG37: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} mov w0, #1 str w0, [x19, #0x28] sxtw w20, w0
- mov w19, w20 - ; gcrRegs -[x19] - ;; size=32 bbWeight=0.50 PerfScore 3.25 -G_M19356_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, w19
+ ;; size=28 bbWeight=1 PerfScore 6.00 +G_M19356_IG38: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov w0, w20
;; size=4 bbWeight=1 PerfScore 0.50 G_M19356_IG39: ; bbWeight=1, epilog, nogc, extend ldp x21, x22, [sp, #0x40] @@ -454,6 +461,7 @@ G_M19356_IG39: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=16 bbWeight=1 PerfScore 4.00 G_M19356_IG40: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; gcrRegs -[x19]
; GC ptr vars +{V03 V24} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] @@ -506,7 +514,7 @@ G_M19356_IG45: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1036, prolog size 28, PerfScore 519.85, instruction count 259, allocated bytes for code 1036 (MethodHash=9312b463) for method Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 1048, prolog size 28, PerfScore 524.35, instruction count 262, allocated bytes for code 1048 (MethodHash=9312b463) for method Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -517,7 +525,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 227 (0x000e3) Actual length = 908 (0x00038c)
+ Function Length : 230 (0x000e6) Actual length = 920 (0x000398)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

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

+12 (+1.88%) : 22049.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)

@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T15] ( 15, 7 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V01 loc0 [V01,T19] ( 7, 3.50) int -> x0 single-def ; V02 loc1 [V02,T11] ( 6, 20.50) ref -> x20 class-hnd <<unknown class>>
-; V03 loc2 [V03,T06] ( 4, 33 ) int -> x19
+; V03 loc2 [V03,T06] ( 4, 33.50) int -> x19
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ;* V06 loc5 [V06 ] ( 0, 0 ) struct (24) zero-ref <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> @@ -36,7 +36,7 @@ ;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <<unknown class>> ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref ; V27 tmp20 [V27,T04] ( 4, 52 ) int -> x1 "Inline stloc first use temp"
-; V28 tmp21 [V28,T17] ( 5, 5 ) int -> registers "Single return block return value"
+; V28 tmp21 [V28,T17] ( 5, 6 ) int -> registers "Single return block return value"
; V29 tmp22 [V29,T13] ( 3, 12 ) ref -> x0 "field V04.array (fldOffset=0x0)" P-INDEP ; V30 tmp23 [V30,T12] ( 2, 20 ) ref -> x23 "field V05._array (fldOffset=0x0)" P-INDEP ; V31 tmp24 [V31,T03] ( 4, 52 ) int -> x24 "field V05._index (fldOffset=0x8)" P-INDEP @@ -117,8 +117,9 @@ G_M16133_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x1, [x1] blr x1 ; gcrRegs -[x0 x19]
- b G_M16133_IG21 - ;; size=72 bbWeight=0.50 PerfScore 8.50
+ mov w19, w0 + b G_M16133_IG20 + ;; size=76 bbWeight=0.50 PerfScore 8.75
G_M16133_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] movz x0, #0xD1FFAB1E @@ -154,8 +155,9 @@ G_M16133_IG09: ; bbWeight=0.50, extend movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- b G_M16133_IG21 - ;; size=28 bbWeight=0.50 PerfScore 3.50
+ mov w19, w0 + b G_M16133_IG20 + ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M16133_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] movz x0, #0xD1FFAB1E @@ -181,8 +183,9 @@ G_M16133_IG12: ; bbWeight=0.50, extend ldr x1, [x1] blr x1 ; gcrRegs -[x19]
- b G_M16133_IG21 - ;; size=28 bbWeight=0.50 PerfScore 3.50
+ mov w19, w0 + b G_M16133_IG20 + ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M16133_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] mov x0, x19 @@ -284,7 +287,7 @@ G_M16133_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0 x20] mov w0, w19 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M16133_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M16133_IG21: ; bbWeight=0.50, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -322,7 +325,7 @@ G_M16133_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by brk_unix #0 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 640, prolog size 36, PerfScore 771.12, instruction count 160, allocated bytes for code 640 (MethodHash=4b2bc0fa) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
+; Total bytes of code 652, prolog size 36, PerfScore 771.88, instruction count 163, allocated bytes for code 652 (MethodHash=4b2bc0fa) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
; ============================================================ Unwind Info: @@ -333,7 +336,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 160 (0x000a0) Actual length = 640 (0x000280)
+ Function Length : 163 (0x000a3) Actual length = 652 (0x00028c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

smoke_tests.nativeaot.linux.arm64.checked.mch

-32 (-2.19%) : 15323.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)

@@ -21,7 +21,7 @@ ; V11 loc7 [V11,T13] ( 9, 22 ) ushort -> x24 ;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 loc9 [V13,T48] ( 3, 6 ) ubyte -> x0
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [fp-0xA0] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [fp-0xA0] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T18] ( 7, 14 ) ushort -> x25 ;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune> ; V17 loc13 [V17,T31] ( 4, 8 ) int -> x24 @@ -356,15 +356,17 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
+ mov w22, w25
b G_M13139_IG51
- ;; size=40 bbWeight=2 PerfScore 28.00
+ ;; size=44 bbWeight=2 PerfScore 29.00
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] bl <unknown method> ; gcr arg pop 0
+ mov w22, w25
b G_M13139_IG51
- ;; size=12 bbWeight=2 PerfScore 5.00
+ ;; size=16 bbWeight=2 PerfScore 6.00
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 bgt G_M13139_IG27 @@ -388,9 +390,8 @@ G_M13139_IG25: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ;; size=12 bbWeight=2 PerfScore 4.00 G_M13139_IG26: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref add w22, w22, #2
- mov w25, w22
b G_M13139_IG51
- ;; size=12 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M13139_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref sbfiz x0, x22, #1, #32 add x0, x19, x0 @@ -403,9 +404,8 @@ G_M13139_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ; gcr arg pop 0 add w0, w0, w22 sub w22, w0, #1
- mov w25, w22
b G_M13139_IG51
- ;; size=48 bbWeight=2 PerfScore 15.00
+ ;; size=44 bbWeight=2 PerfScore 14.00
G_M13139_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -416,17 +416,15 @@ G_M13139_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG51
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] bl <unknown method> ; gcr arg pop 0
- mov w25, w22
b G_M13139_IG51
- ;; size=16 bbWeight=2 PerfScore 6.00
+ ;; size=12 bbWeight=2 PerfScore 5.00
G_M13139_IG30: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 ble G_M13139_IG49 @@ -625,18 +623,15 @@ G_M13139_IG46: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, cmp w25, w24 blt G_M13139_IG41 ;; size=112 bbWeight=16 PerfScore 344.00
-G_M13139_IG47: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M13139_IG47: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] ldrb w0, [fp, #-0xA0] // [V14 loc10]
- cbz w0, G_M13139_IG48
+ cbz w0, G_M13139_IG51 + ;; size=8 bbWeight=4 PerfScore 12.00 +G_M13139_IG48: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
add w22, w22, #1
- mov w25, w22
b G_M13139_IG51
- ;; size=20 bbWeight=2 PerfScore 10.00 -G_M13139_IG48: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref - mov w25, w22 - b G_M13139_IG51 - ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M13139_IG49: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -647,22 +642,19 @@ G_M13139_IG49: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG51
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG50: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] bl <unknown method> ; gcr arg pop 0
- mov w25, w22 - ;; size=12 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M13139_IG51: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- add w25, w25, #1 - cmp w25, w20 - mov w22, w25
+ add w22, w22, #1 + cmp w22, w20
blt G_M13139_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
+ ;; size=12 bbWeight=4 PerfScore 8.00
G_M13139_IG52: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x23] sub x0, fp, #120 // [V05 loc1] @@ -708,7 +700,7 @@ G_M13139_IG56: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1464, prolog size 80, PerfScore 1211.50, instruction count 366, allocated bytes for code 1464 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
+; Total bytes of code 1432, prolog size 80, PerfScore 1209.00, instruction count 358, allocated bytes for code 1432 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
; ============================================================ Cfi Info:

-36 (-1.81%) : 3212.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)

@@ -8,11 +8,11 @@ ; Final local variable assignments ; ; V00 this [V00,T15] ( 9, 19.50) ref -> x20 this class-hnd exact single-def <System.Text.UnicodeEncoding>
-; V01 arg1 [V01,T10] ( 22, 37.50) long -> x19
+; V01 arg1 [V01,T07] ( 22, 41.50) long -> x19
; V02 arg2 [V02,T34] ( 6, 5.50) int -> x21 single-def ; V03 arg3 [V03,T38] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Text.DecoderNLS> ; V04 loc0 [V04,T12] ( 18, 31.50) ref -> x23 class-hnd exact single-def <<unknown class>>
-; V05 loc1 [V05,T26] ( 6, 12 ) long -> x22
+; V05 loc1 [V05,T26] ( 6, 14 ) long -> x22
; V06 loc2 [V06,T25] ( 7, 15 ) long -> x24 ; V07 loc3 [V07,T19] ( 11, 19 ) int -> [fp+0x1C] ; V08 loc4 [V08,T02] ( 24, 78 ) ushort -> x26 @@ -20,8 +20,8 @@ ; V10 loc6 [V10,T00] ( 44,103.25) ref -> x28 class-hnd <System.Text.DecoderFallbackBuffer> ; V11 loc7 [V11,T16] ( 9, 20 ) ushort -> x25 ; V12 loc8 [V12,T18] ( 3, 20 ) long -> x0
-; V13 loc9 [V13,T03] ( 7, 70 ) long -> x19 -; V14 loc10 [V14,T08] ( 5, 40 ) long -> x2
+; V13 loc9 [V13,T03] ( 7, 72 ) long -> x19 +; V14 loc10 [V14,T09] ( 5, 40 ) long -> x2
; V15 loc11 [V15,T39] ( 3, 5 ) ref -> x21 class-hnd <ubyte[]> ; V16 loc12 [V16,T40] ( 3, 5 ) ref -> x21 class-hnd <ubyte[]> ; V17 loc13 [V17,T17] ( 3, 20 ) ref -> x21 class-hnd <ubyte[]> @@ -66,7 +66,7 @@ ; V56 tmp37 [V56,T46] ( 3, 4 ) int -> x25 "guarded devirt return temp" ;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.DecoderReplacementFallbackBuffer> ; V58 tmp39 [V58,T24] ( 3, 16 ) ref -> x28 "guarded devirt return temp"
-; V59 tmp40 [V59,T09] ( 3, 40 ) ref -> x28 "guarded devirt arg temp"
+; V59 tmp40 [V59,T10] ( 3, 40 ) ref -> x28 "guarded devirt arg temp"
;* V60 tmp41 [V60 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.DecoderReplacementFallback> ;* V61 tmp42 [V61 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.Text.DecoderExceptionFallback> ; V62 tmp43 [V62,T14] ( 3, 24 ) int -> x26 "guarded devirt return temp" @@ -96,7 +96,7 @@ ;* V86 tmp67 [V86 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Text.DecoderExceptionFallbackBuffer> ; V87 tmp68 [V87,T31] ( 5, 10 ) ref -> x0 class-hnd exact "NewObj constructor temp" <System.Text.DecoderReplacementFallbackBuffer> ;* V88 tmp69 [V88 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Text.DecoderExceptionFallbackBuffer>
-; V89 tmp70 [V89,T07] ( 5, 40 ) ref -> x0 class-hnd exact "NewObj constructor temp" <System.Text.DecoderReplacementFallbackBuffer>
+; V89 tmp70 [V89,T08] ( 5, 40 ) ref -> x0 class-hnd exact "NewObj constructor temp" <System.Text.DecoderReplacementFallbackBuffer>
;* V90 tmp71 [V90 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Text.DecoderExceptionFallbackBuffer> ; V91 tmp72 [V91,T47] ( 5, 2.50) ref -> x0 class-hnd exact single-def "NewObj constructor temp" <System.Text.DecoderReplacementFallbackBuffer> ;* V92 tmp73 [V92 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "NewObj constructor temp" <System.Text.DecoderExceptionFallbackBuffer> @@ -164,7 +164,7 @@ G_M55046_IG07: ; bbWeight=0.25, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown class> add x1, x1, [LOW RELOC #0xD1FFAB1E] cmp x0, x1
- bne G_M55046_IG97
+ bne G_M55046_IG93
;; size=20 bbWeight=0.25 PerfScore 1.38 G_M55046_IG08: ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x22] @@ -221,7 +221,7 @@ G_M55046_IG12: ; bbWeight=0.50, gcrefRegs=10900000 {x20 x23 x28}, byrefRe ;; size=36 bbWeight=0.50 PerfScore 2.75 G_M55046_IG13: ; bbWeight=1, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz cmp x24, x22
- bhs G_M55046_IG27
+ bhs G_M55046_IG65
;; size=8 bbWeight=1 PerfScore 1.50 G_M55046_IG14: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz ldrb w21, [x20, #0x26] @@ -273,10 +273,10 @@ G_M55046_IG19: ; bbWeight=16, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs cmp x19, x0 blo G_M55046_IG16 ;; size=12 bbWeight=16 PerfScore 32.00
-G_M55046_IG20: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG20: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
cmp x19, x22
- bhs G_M55046_IG26 - ;; size=8 bbWeight=2 PerfScore 3.00
+ bhs G_M55046_IG65 + ;; size=8 bbWeight=4 PerfScore 6.00
G_M55046_IG21: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz tbz w25, #31, G_M55046_IG23 ;; size=4 bbWeight=4 PerfScore 4.00 @@ -285,10 +285,10 @@ G_M55046_IG22: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= add x19, x0, #1 ldrb w25, [x0] cmp x19, x22
- bhs G_M55046_IG25
+ bhs G_M55046_IG65
;; size=20 bbWeight=2 PerfScore 11.00 G_M55046_IG23: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
- cbz w21, G_M55046_IG28
+ cbz w21, G_M55046_IG25
;; size=4 bbWeight=4 PerfScore 4.00 G_M55046_IG24: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref mov x0, x19 @@ -296,43 +296,31 @@ G_M55046_IG24: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ldrb w0, [x0] orr w0, w0, w25, LSL #8 uxth w25, w0
- b G_M55046_IG29
+ b G_M55046_IG26
;; size=24 bbWeight=2 PerfScore 13.00
-G_M55046_IG25: ; bbWeight=1, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref - str w25, [fp, #0x1C] // [V07 loc3] - b G_M55046_IG68 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M55046_IG26: ; bbWeight=1, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref - str w25, [fp, #0x1C] // [V07 loc3] - b G_M55046_IG68 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M55046_IG27: ; bbWeight=0.50, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref - str w25, [fp, #0x1C] // [V07 loc3] - b G_M55046_IG68 - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M55046_IG28: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG25: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
mov x0, x19 add x19, x0, #1 ldrb w0, [x0] orr w0, w25, w0, LSL #8 uxth w25, w0 ;; size=20 bbWeight=2 PerfScore 11.00
-G_M55046_IG29: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG26: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
movn w0, #0 str w0, [fp, #0x1C] // [V07 loc3] mov w0, #0xD1FFAB1E sub w0, w25, w0 cmp w0, #0xD1FFAB1E
- bhi G_M55046_IG54
+ bhi G_M55046_IG51
;; size=24 bbWeight=4 PerfScore 16.00
-G_M55046_IG30: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG27: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
mov w0, #0xD1FFAB1E cmp w25, w0
- bgt G_M55046_IG42
+ bgt G_M55046_IG39
cmp w26, #0
- ble G_M55046_IG41
+ ble G_M55046_IG38
sub w27, w27, #1
- cbz w21, G_M55046_IG31
+ cbz w21, G_M55046_IG28
adrp x0, [HIGH RELOC #0xD1FFAB1E] // ubyte[] add x0, x0, [LOW RELOC #0xD1FFAB1E] mov x1, #2 @@ -345,9 +333,9 @@ G_M55046_IG30: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ; gcrRegs -[x0] strb w0, [x21, #0x10] strb w26, [x21, #0x11]
- b G_M55046_IG32
+ b G_M55046_IG29
;; size=64 bbWeight=2 PerfScore 24.00
-G_M55046_IG31: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG28: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] adrp x0, [HIGH RELOC #0xD1FFAB1E] // ubyte[] add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -362,9 +350,9 @@ G_M55046_IG31: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ; gcrRegs -[x0] strb w0, [x21, #0x11] ;; size=32 bbWeight=2 PerfScore 12.00
-G_M55046_IG32: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz - cbnz x28, G_M55046_IG37 - cbz x23, G_M55046_IG33
+G_M55046_IG29: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz + cbnz x28, G_M55046_IG34 + cbz x23, G_M55046_IG30
mov x0, x23 ; gcrRegs +[x0] bl System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this @@ -372,9 +360,9 @@ G_M55046_IG32: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefR ; gcr arg pop 0 mov x28, x0 ; gcrRegs +[x28]
- b G_M55046_IG36
+ b G_M55046_IG33
;; size=24 bbWeight=2 PerfScore 10.00
-G_M55046_IG33: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG30: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x28] ldr x28, [x20, #0x18] ; gcrRegs +[x28] @@ -382,9 +370,9 @@ G_M55046_IG33: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] cmp x0, x1
- bne G_M55046_IG35
+ bne G_M55046_IG32
;; size=24 bbWeight=2 PerfScore 17.00
-G_M55046_IG34: ; bbWeight=1, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG31: ; bbWeight=1, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Text.DecoderReplacementFallbackBuffer add x0, x0, [LOW RELOC #0xD1FFAB1E] bl CORINFO_HELP_NEWSFAST @@ -402,9 +390,9 @@ G_M55046_IG34: ; bbWeight=1, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefR ; byrRegs -[x14] mov x28, x0 ; gcrRegs +[x28]
- b G_M55046_IG36
+ b G_M55046_IG33
;; size=44 bbWeight=1 PerfScore 10.50
-G_M55046_IG35: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M55046_IG32: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x28] adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Text.DecoderExceptionFallbackBuffer add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -414,25 +402,25 @@ G_M55046_IG35: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 mov x28, x0 ; gcrRegs +[x28] ;; size=16 bbWeight=1 PerfScore 2.50
-G_M55046_IG36: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG33: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] stp x24, xzr, [x28, #0x18] ;; size=4 bbWeight=2 PerfScore 2.00
-G_M55046_IG37: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG34: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz
ldr x0, [x28] adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] cmp x0, x1
- bne G_M55046_IG39
+ bne G_M55046_IG36
;; size=20 bbWeight=2 PerfScore 11.00
-G_M55046_IG38: ; bbWeight=1, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG35: ; bbWeight=1, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] ldr x0, [x28, #0x30] ; gcrRegs +[x0] ldr w26, [x0, #0x08]
- b G_M55046_IG40
+ b G_M55046_IG37
;; size=12 bbWeight=1 PerfScore 7.00
-G_M55046_IG39: ; bbWeight=1, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG36: ; bbWeight=1, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] +[x21] mov x0, x28 ; gcrRegs +[x0] @@ -446,17 +434,17 @@ G_M55046_IG39: ; bbWeight=1, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefR ; gcr arg pop 0 sxtw w26, w0 ;; size=28 bbWeight=1 PerfScore 9.00
-G_M55046_IG40: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG37: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
add w27, w27, w26 ;; size=4 bbWeight=2 PerfScore 1.00
-G_M55046_IG41: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG38: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
sxtw w26, w25
- b G_M55046_IG67
+ b G_M55046_IG64
;; size=8 bbWeight=2 PerfScore 3.00
-G_M55046_IG42: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz - cbnz w26, G_M55046_IG53
+G_M55046_IG39: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
...

-8 (-0.67%) : 8227.dasm - System.Number:FormatFixedushort (FullOpts)

@@ -9,26 +9,26 @@ ; ; V00 arg0 [V00,T02] ( 32, 57.50) byref -> x19 single-def ; V01 arg1 [V01,T33] ( 5, 4.50) byref -> x24 single-def
-; V02 arg2 [V02,T09] ( 11, 17.50) int -> x21
+; V02 arg2 [V02,T08] ( 11, 18.50) int -> x21
; V03 arg3 [V03,T32] ( 7, 5.75) ref -> x23 class-hnd single-def <int[]> ;* V04 arg4 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]> ;* V05 arg5 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ; V06 loc0 [V06,T06] ( 12, 21 ) int -> x27
-; V07 loc1 [V07,T08] ( 10, 20 ) long -> registers -; V08 loc2 [V08,T04] ( 14, 35 ) int -> [fp+0x3C]
+; V07 loc1 [V07,T09] ( 10, 20 ) long -> registers +; V08 loc2 [V08,T04] ( 14, 37 ) int -> [fp+0x3C]
; V09 loc3 [V09,T14] ( 11, 16 ) int -> [fp+0x38]
-; V10 loc4 [V10,T12] ( 7, 17 ) int -> [fp+0x34]
+; V10 loc4 [V10,T13] ( 7, 17.50) int -> [fp+0x34]
; V11 loc5 [V11,T25] ( 5, 8.50) int -> [fp+0x30]
-; V12 loc6 [V12,T49] ( 3, 1.50) int -> x0
+; V12 loc6 [V12,T52] ( 3, 1.50) int -> x0
; V13 loc7 [V13,T38] ( 3, 5 ) int -> x24
-; V14 loc8 [V14,T11] ( 7, 17.50) int -> x1 -; V15 loc9 [V15,T50] ( 3, 1.50) long -> x6
+; V14 loc8 [V14,T12] ( 7, 18 ) int -> x1 +; V15 loc9 [V15,T46] ( 3, 2 ) long -> x6
; V16 loc10 [V16 ] ( 2, 1 ) byref -> [fp+0x28] must-init pinned
-; V17 loc11 [V17,T03] ( 6, 41 ) long -> registers
+; V17 loc11 [V17,T03] ( 6, 41.50) long -> registers
; V18 loc12 [V18,T07] ( 8, 21 ) int -> x1 ; V19 loc13 [V19,T01] ( 6, 60 ) long -> x0 ; V20 loc14 [V20,T00] ( 7, 84 ) int -> x7
-; V21 loc15 [V21,T37] ( 4, 5.50) int -> x20
+; V21 loc15 [V21,T34] ( 4, 6 ) int -> x20
; V22 loc16 [V22,T18] ( 4, 12.50) int -> x22 ;# V23 OutArgs [V23 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V24 tmp1 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> @@ -43,12 +43,12 @@ ; V33 tmp10 [V33,T17] ( 2, 16 ) int -> x27 "dup spill" ;* V34 tmp11 [V34 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V35 tmp12 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V36 tmp13 [V36,T58] ( 2, 1 ) int -> x24
+; V36 tmp13 [V36,T59] ( 2, 1 ) int -> x24
;* V37 tmp14 [V37 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ;* V38 tmp15 [V38 ] ( 0, 0 ) long -> zero-ref ;* V39 tmp16 [V39 ] ( 0, 0 ) long -> zero-ref ; V40 tmp17 [V40,T28] ( 3, 8 ) int -> x8
-; V41 tmp18 [V41,T59] ( 2, 1 ) int -> x4
+; V41 tmp18 [V41,T50] ( 2, 2 ) int -> x4
;* V42 tmp19 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V43 tmp20 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp21 [V44,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -56,13 +56,13 @@ ;* V46 tmp23 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V47 tmp24 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp25 [V48 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline return value spill temp" <System.Span`1[ushort]>
-; V49 tmp26 [V49,T51] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
+; V49 tmp26 [V49,T53] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
;* V50 tmp27 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V51 tmp28 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ushort]> ;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V53 tmp30 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V54 tmp31 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V55 tmp32 [V55,T46] ( 2, 2 ) byref -> [fp+0x18] spill-single-def "Inlining Arg"
+; V55 tmp32 [V55,T48] ( 2, 2 ) byref -> [fp+0x18] spill-single-def "Inlining Arg"
;* V56 tmp33 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp34 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V58 tmp35 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> @@ -103,7 +103,7 @@ ;* V93 tmp70 [V93 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP ;* V94 tmp71 [V94 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP ;* V95 tmp72 [V95 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
-; V96 tmp73 [V96,T47] ( 2, 2 ) byref -> x28 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp73 [V96,T49] ( 2, 2 ) byref -> x28 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V97 tmp74 [V97 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP ;* V98 tmp75 [V98 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP ;* V99 tmp76 [V99 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP @@ -113,17 +113,17 @@ ;* V103 tmp80 [V103 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP ; V104 tmp81 [V104,T43] ( 4, 2 ) byref -> x6 single-def "field V48._reference (fldOffset=0x0)" P-INDEP ; V105 tmp82 [V105,T66] ( 1, 0.50) int -> x1 "field V48._length (fldOffset=0x8)" P-INDEP
-; V106 tmp83 [V106,T54] ( 2, 1 ) byref -> x1 single-def "field V50._reference (fldOffset=0x0)" P-INDEP
+; V106 tmp83 [V106,T55] ( 2, 1 ) byref -> x1 single-def "field V50._reference (fldOffset=0x0)" P-INDEP
; V107 tmp84 [V107,T61] ( 2, 1 ) int -> x6 "field V50._length (fldOffset=0x8)" P-INDEP ;* V108 tmp85 [V108 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-DEP ;* V109 tmp86 [V109 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-DEP
-; V110 tmp87 [V110,T55] ( 2, 1 ) byref -> x6 single-def "field V54._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp87 [V110,T56] ( 2, 1 ) byref -> x6 single-def "field V54._reference (fldOffset=0x0)" P-INDEP
;* V111 tmp88 [V111 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP ;* V112 tmp89 [V112 ] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP ;* V113 tmp90 [V113 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
-; V114 tmp91 [V114,T34] ( 2, 6 ) byref -> x2 "field V64._reference (fldOffset=0x0)" P-INDEP
+; V114 tmp91 [V114,T35] ( 2, 6 ) byref -> x2 "field V64._reference (fldOffset=0x0)" P-INDEP
; V115 tmp92 [V115,T29] ( 2, 8 ) int -> x3 "field V64._length (fldOffset=0x8)" P-INDEP
-; V116 tmp93 [V116,T56] ( 2, 1 ) byref -> x1 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
+; V116 tmp93 [V116,T57] ( 2, 1 ) byref -> x1 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
; V117 tmp94 [V117,T62] ( 2, 1 ) int -> x2 "field V67._length (fldOffset=0x8)" P-INDEP ;* V118 tmp95 [V118 ] ( 0, 0 ) byref -> zero-ref single-def "field V68._reference (fldOffset=0x0)" P-INDEP ;* V119 tmp96 [V119 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP @@ -131,19 +131,19 @@ ;* V121 tmp98 [V121 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP ;* V122 tmp99 [V122 ] ( 0, 0 ) byref -> zero-ref single-def "field V71._reference (fldOffset=0x0)" P-INDEP ;* V123 tmp100 [V123 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x8)" P-INDEP
-; V124 tmp101 [V124,T57] ( 2, 1 ) byref -> x2 single-def "field V74._reference (fldOffset=0x0)" P-INDEP
+; V124 tmp101 [V124,T58] ( 2, 1 ) byref -> x2 single-def "field V74._reference (fldOffset=0x0)" P-INDEP
; V125 tmp102 [V125,T63] ( 2, 1 ) int -> x0 "field V74._length (fldOffset=0x8)" P-INDEP ;* V126 tmp103 [V126 ] ( 0, 0 ) byref -> zero-ref single-def "field V75._reference (fldOffset=0x0)" P-INDEP ;* V127 tmp104 [V127 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP
-; V128 tmp105 [V128,T35] ( 2, 6 ) byref -> x1 "field V79._reference (fldOffset=0x0)" P-INDEP
+; V128 tmp105 [V128,T36] ( 2, 6 ) byref -> x1 "field V79._reference (fldOffset=0x0)" P-INDEP
; V129 tmp106 [V129,T30] ( 2, 8 ) int -> x2 "field V79._length (fldOffset=0x8)" P-INDEP
-; V130 tmp107 [V130,T36] ( 2, 6 ) byref -> x2 "field V82._reference (fldOffset=0x0)" P-INDEP
+; V130 tmp107 [V130,T37] ( 2, 6 ) byref -> x2 "field V82._reference (fldOffset=0x0)" P-INDEP
; V131 tmp108 [V131,T31] ( 2, 8 ) int -> x3 "field V82._length (fldOffset=0x8)" P-INDEP ; V132 tmp109 [V132,T41] ( 2, 4 ) long -> x28 "Cast away GC"
-; V133 tmp110 [V133,T48] ( 2, 2 ) long -> x6 "Cast away GC" -; V134 cse0 [V134,T52] ( 3, 1.50) int -> x0 "CSE - moderate" -; V135 cse1 [V135,T53] ( 3, 1.50) long -> x8 "CSE - moderate" -; V136 cse2 [V136,T13] ( 7, 17 ) int -> [fp+0x24] spill-single-def "CSE - aggressive"
+; V133 tmp110 [V133,T51] ( 2, 2 ) long -> x6 "Cast away GC" +; V134 cse0 [V134,T47] ( 3, 2 ) int -> x0 "CSE - moderate" +; V135 cse1 [V135,T54] ( 3, 1.50) long -> x8 "CSE - moderate" +; V136 cse2 [V136,T11] ( 7, 19 ) int -> [fp+0x24] spill-single-def "CSE - aggressive"
; V137 cse3 [V137,T19] ( 5, 12.25) byref -> registers hoist multi-def "CSE - moderate" ; ; Lcl frame size = 48 @@ -176,11 +176,11 @@ G_M3127_IG02: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x1 ldr x28, [x24, #0x10] ; byrRegs +[x28] cmp w27, #0
- ble G_M3127_IG38
+ ble G_M3127_IG40
;; size=16 bbWeight=1 PerfScore 7.50 G_M3127_IG03: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref, isz ; byrRegs -[x28]
- cbz x23, G_M3127_IG30
+ cbz x23, G_M3127_IG32
cbnz w20, G_M3127_IG04 cbnz x22, G_M3127_IG04 adrp x0, [HIGH RELOC #0xD1FFAB1E] @@ -199,19 +199,20 @@ G_M3127_IG04: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 mov w4, wzr ldr w5, [x23, #0x08] str w5, [fp, #0x24] // [V136 cse2]
+ str w4, [fp, #0x34] // [V10 loc4]
cbz w5, G_M3127_IG10 ldr w0, [x23, #0x10] sxtw w1, w0 cmp w3, w1 ble G_M3127_IG09
- ;; size=40 bbWeight=0.50 PerfScore 5.75
+ ;; size=44 bbWeight=0.50 PerfScore 6.25
G_M3127_IG05: ; bbWeight=0.25, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref add x6, x23, #16 ; byrRegs +[x6] ;; size=4 bbWeight=0.25 PerfScore 0.12 G_M3127_IG06: ; bbWeight=4, gcrefRegs=800000 {x23}, byrefRegs=3480040 {x6 x19 x22 x24 x25}, byref, isz cmp w2, w5
- bhs G_M3127_IG59
+ bhs G_M3127_IG61
ldr w4, [x6, w2, UXTW #2] cbz w4, G_M3127_IG09 add w3, w3, w20 @@ -224,22 +225,21 @@ G_M3127_IG07: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=3480040 {x6 ;; size=4 bbWeight=2 PerfScore 1.00 G_M3127_IG08: ; bbWeight=4, gcrefRegs=800000 {x23}, byrefRegs=3480040 {x6 x19 x22 x24 x25}, byref, isz cmp w2, w5
- bhs G_M3127_IG59
+ bhs G_M3127_IG61
ldr w4, [x6, w2, UXTW #2] add w1, w4, w1 orr w4, w1, w3
- tbnz w4, #31, G_M3127_IG60
+ tbnz w4, #31, G_M3127_IG62
cmp w27, w1 ldr w5, [fp, #0x24] // [V136 cse2] bgt G_M3127_IG06 ;; size=36 bbWeight=4 PerfScore 40.00
-G_M3127_IG09: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref
+G_M3127_IG09: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref
; byrRegs -[x6] cmp w1, #0 csel w4, wzr, w0, eq str w4, [fp, #0x34] // [V10 loc4]
- ldr w4, [fp, #0x34] // [V10 loc4] - ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M3127_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref, isz str wzr, [fp, #0x3C] // [V08 loc2] str wzr, [fp, #0x30] // [V11 loc5] @@ -249,7 +249,6 @@ G_M3127_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 ; byrRegs -[x24] str w3, [fp, #0x38] // [V09 loc3] tbz w3, #31, G_M3127_IG11
- str w4, [fp, #0x34] // [V10 loc4]
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] @@ -259,9 +258,8 @@ G_M3127_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 bl <unknown method> ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ldr w4, [fp, #0x34] // [V10 loc4]
ldr w5, [fp, #0x24] // [V136 cse2]
- ;; size=60 bbWeight=0.50 PerfScore 8.00
+ ;; size=52 bbWeight=0.50 PerfScore 6.50
G_M3127_IG11: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 {x19 x22 x25}, byref, isz ldr w0, [x19, #0x08] ldr x1, [x19, #0x10] @@ -282,7 +280,6 @@ G_M3127_IG11: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 ; GC ptr vars +{V55} str w3, [fp, #0x38] // [V09 loc3] tbz w3, #31, G_M3127_IG13
- str w4, [fp, #0x34] // [V10 loc4]
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] @@ -294,9 +291,9 @@ G_M3127_IG11: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 ; gcrRegs -[x0-x1] ; byrRegs -[x6] ; gcr arg pop 0
- ldp w4, w3, [fp, #0x34] // [V10 loc4], [V09 loc3]
+ ldr w3, [fp, #0x38] // [V09 loc3]
ldr w5, [fp, #0x24] // [V136 cse2]
- ;; size=96 bbWeight=0.50 PerfScore 14.25
+ ;; size=92 bbWeight=0.50 PerfScore 13.75
G_M3127_IG12: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 {x19 x22 x25}, byref ldr x6, [fp, #0x18] // [V55 tmp32] ; byrRegs +[x6] @@ -309,7 +306,6 @@ G_M3127_IG13: ; bbWeight=0.25, gcrefRegs=800000 {x23}, byrefRegs=2480000 ;; size=8 bbWeight=0.25 PerfScore 0.75 G_M3127_IG14: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=2480000 {x19 x22 x25}, gcvars, byref ; GC ptr vars -{V55}
- str w4, [fp, #0x34] // [V10 loc4]
mov x0, x19 ; byrRegs +[x0] str w3, [fp, #0x38] // [V09 loc3] @@ -318,9 +314,9 @@ G_M3127_IG14: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {} ; gcr arg pop 0 mov x6, x0 ; byrRegs +[x6]
- ldp w4, w3, [fp, #0x34] // [V10 loc4], [V09 loc3]
+ ldr w3, [fp, #0x38] // [V09 loc3]
ldr w5, [fp, #0x24] // [V136 cse2]
- ;; size=32 bbWeight=0.50 PerfScore 4.25
+ ;; size=28 bbWeight=0.50 PerfScore 3.75
G_M3127_IG15: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480040 {x6 x19 x22 x25}, byref, isz ; byrRegs -[x0] str x6, [fp, #0x28] // [V16 loc10] @@ -344,7 +340,7 @@ G_M3127_IG18: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=2080000 {x19 ; gcrRegs -[x23] ...

+4 (+0.41%) : 8186.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:RegisterWait(int,ubyte,ubyte):this (FullOpts)

@@ -192,7 +192,7 @@ G_M17357_IG17: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b G_M17357_IG18: ; bbWeight=0.04, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz ldr w24, [x0, #0x08] cmp w23, w24
- bhs G_M17357_IG45
+ bhs G_M17357_IG44
add x25, x0, #16 ; byrRegs +[x25] ldr x1, [x25, w23, UXTW #3] @@ -259,7 +259,7 @@ G_M17357_IG26: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=8 bbWeight=1 PerfScore 3.00 G_M17357_IG27: ; bbWeight=0.04, gcrefRegs=100001 {x0 x20}, byrefRegs=0000 {}, byref, isz cmp w23, w24
- bhs G_M17357_IG45
+ bhs G_M17357_IG44
add x25, x0, #16 ; byrRegs +[x25] ldr x1, [x25, w23, UXTW #3] @@ -352,13 +352,13 @@ G_M17357_IG37: ; bbWeight=0.04, gcVars=0000000000040000 {V04}, gcrefRegs= ; GC ptr vars +{V04} ldr w0, [x23, #0x08] cmp w20, w0
- bhs G_M17357_IG45
+ bhs G_M17357_IG44
add x21, x23, #16 ; byrRegs +[x21] ldr x0, [x21, w20, UXTW #3] ; gcrRegs +[x0] cmp w20, w24
- bhs G_M17357_IG45
+ bhs G_M17357_IG44
ldr x2, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x2] add x25, x2, #16 @@ -421,22 +421,22 @@ G_M17357_IG41: ; bbWeight=3.96, gcVars=0000000000000000 {}, gcrefRegs=000 cmp w22, w19 blt G_M17357_IG41 ;; size=32 bbWeight=3.96 PerfScore 49.50
-G_M17357_IG42: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17357_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[x21 x25] b G_M17357_IG38
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M17357_IG43: ; bbWeight=0.04, gcVars=0000000000040000 {V04}, gcrefRegs=800000 {x23}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs +[x23] ; GC ptr vars +{V04} ldr w0, [x23, #0x08] cmp w22, w0
- bhs G_M17357_IG45
+ bhs G_M17357_IG44
add x21, x23, #16 ; byrRegs +[x21] ldr x0, [x21, w22, UXTW #3] ; gcrRegs +[x0] cmp w22, w24
- bhs G_M17357_IG45
+ bhs G_M17357_IG44
ldr x2, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x2] add x25, x2, #16 @@ -451,18 +451,16 @@ G_M17357_IG43: ; bbWeight=0.04, gcVars=0000000000040000 {V04}, gcrefRegs= add w22, w22, #1 cmp w22, w19 blt G_M17357_IG43
- ;; size=60 bbWeight=0.04 PerfScore 0.84 -G_M17357_IG44: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ b G_M17357_IG38 + ;; size=64 bbWeight=0.04 PerfScore 0.88 +G_M17357_IG44: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x23] ; GC ptr vars -{V04}
- b G_M17357_IG38 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M17357_IG45: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 brk_unix #0 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M17357_IG46: ; bbWeight=0, gcVars=0000000000040000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+G_M17357_IG45: ; bbWeight=0, gcVars=0000000000040000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
; GC ptr vars +{V04} stp fp, lr, [sp, #-0x50]! stp x19, x20, [sp, #0x18] @@ -470,20 +468,21 @@ G_M17357_IG46: ; bbWeight=0, gcVars=0000000000040000 {V04}, gcrefRegs=000 stp x23, x24, [sp, #0x38] str x25, [sp, #0x48] ;; size=20 bbWeight=0 PerfScore 0.00
-G_M17357_IG47: ; bbWeight=0, gcVars=0000000000040000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M17357_IG46: ; bbWeight=0, gcVars=0000000000040000 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
ldr w1, [fp, #0x20] // [V05 loc1]
- cbnz w1, G_M17357_IG51
+ cbnz w1, G_M17357_IG49
mov w1, wzr ldr w19, [fp, #0x24] // [V01 arg1] cmp w19, #0
- ble G_M17357_IG51
+ ble G_M17357_IG49
ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0] ldr w24, [x0, #0x08]
+ ldr w19, [fp, #0x24] // [V01 arg1]
cmp w24, w19
- blt G_M17357_IG50 - ;; size=40 bbWeight=0 PerfScore 0.00 -G_M17357_IG48: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ blt G_M17357_IG48 + ;; size=44 bbWeight=0 PerfScore 0.00 +G_M17357_IG47: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x0, [fp, #0x18] // [V04 loc0] ; gcrRegs +[x0] @@ -493,28 +492,22 @@ G_M17357_IG48: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr add w1, w1, #1 ldr w19, [fp, #0x24] // [V01 arg1] cmp w1, w19
- blt G_M17357_IG48 - ;; size=28 bbWeight=0.01 PerfScore 0.07 -G_M17357_IG49: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0]
+ blt G_M17357_IG47 + b G_M17357_IG49 + ;; size=32 bbWeight=0.01 PerfScore 0.08 +G_M17357_IG48: ; bbWeight=0, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x25]
- ; GC ptr vars -{V04} - b G_M17357_IG51 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M17357_IG50: ; bbWeight=0, gcVars=0000000000040000 {V04}, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x0] - ; GC ptr vars +{V04}
ldr w24, [x0, #0x08] cmp w1, w24
- bhs G_M17357_IG52
+ bhs G_M17357_IG50
add x25, x0, #16 ; byrRegs +[x25] str xzr, [x25, w1, UXTW #3] add w1, w1, #1 cmp w1, w19
- blt G_M17357_IG50
+ blt G_M17357_IG48
;; size=32 bbWeight=0 PerfScore 0.00
-G_M17357_IG51: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+G_M17357_IG49: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x0] ; byrRegs -[x25] ; GC ptr vars -{V04} @@ -524,14 +517,14 @@ G_M17357_IG51: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x50 ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00 -G_M17357_IG52: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=24 bbWeight=1 PerfScore 15.00 +G_M17357_IG50: ; 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 984, prolog size 44, PerfScore 252.95, instruction count 246, allocated bytes for code 984 (MethodHash=947ebc32) for method System.Threading.WaitSubsystem+ThreadWaitInfo:RegisterWait(int,ubyte,ubyte):this (FullOpts)
+; Total bytes of code 988, prolog size 44, PerfScore 268.00, instruction count 247, allocated bytes for code 988 (MethodHash=947ebc32) for method System.Threading.WaitSubsystem+ThreadWaitInfo:RegisterWait(int,ubyte,ubyte):this (FullOpts)
; ============================================================ Cfi Info: @@ -563,4 +556,4 @@ Cfi Info: CodeOffset: 0x14 Op: RelOffset DwarfReg:0x19 Offset:0x48 *************** EH table for System.Threading.WaitSubsystem+ThreadWaitInfo:RegisterWait(int,ubyte,ubyte):this 1 EH table entries, 0 duplicate clauses, 0 cloned finallys, 1 total EH entries reported to VM
-EH#0: try [G_M17357_IG31..G_M17357_IG32) handled by [G_M17357_IG46..END) (fault)
+EH#0: try [G_M17357_IG31..G_M17357_IG32) handled by [G_M17357_IG45..END) (fault)
+8 (+0.87%) : 8198.dasm - System.Threading.WaitSubsystem:Wait(System.Span`1[long],ubyte,int):int (FullOpts)
@@ -436,18 +436,19 @@ G_M41332_IG39: ; bbWeight=0, gcVars=0000000000000800 {V04}, gcrefRegs=000 ;; size=20 bbWeight=0 PerfScore 0.00 G_M41332_IG40: ; bbWeight=0, gcVars=0000000000000800 {V04}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ldr w0, [fp, #0x1C] // [V05 loc2]
- cbnz w0, G_M41332_IG44
+ cbnz w0, G_M41332_IG43
mov w0, wzr ldr w19, [fp, #0x18] // [V28 tmp17] cmp w19, #0
- ble G_M41332_IG44
+ ble G_M41332_IG43
ldr x1, [fp, #0x10] // [V04 loc1] ; gcrRegs +[x1]
- cbz x1, G_M41332_IG43
+ cbz x1, G_M41332_IG42
ldr w24, [x1, #0x08]
+ ldr w19, [fp, #0x18] // [V28 tmp17]
cmp w24, w19
- blt G_M41332_IG43 - ;; size=44 bbWeight=0 PerfScore 0.00
+ blt G_M41332_IG42 + ;; size=48 bbWeight=0 PerfScore 0.00
G_M41332_IG41: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x1] ldr x1, [fp, #0x10] // [V04 loc1] @@ -459,27 +460,22 @@ G_M41332_IG41: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ldr w19, [fp, #0x18] // [V28 tmp17] cmp w0, w19 blt G_M41332_IG41
- ;; size=28 bbWeight=0.01 PerfScore 0.07 -G_M41332_IG42: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x1]
+ b G_M41332_IG43 + ;; size=32 bbWeight=0.01 PerfScore 0.08 +G_M41332_IG42: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x25]
- ; GC ptr vars -{V04} - b G_M41332_IG44 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M41332_IG43: ; bbWeight=0, gcVars=0000000000000800 {V04}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[x1] - ; GC ptr vars +{V04}
ldr w24, [x1, #0x08] cmp w0, w24
- bhs G_M41332_IG45
+ bhs G_M41332_IG44
add x25, x1, #16 ; byrRegs +[x25] str xzr, [x25, w0, UXTW #3] add w0, w0, #1
+ ldr w19, [fp, #0x18] // [V28 tmp17]
cmp w0, w19
- blt G_M41332_IG43 - ;; size=32 bbWeight=0 PerfScore 0.00 -G_M41332_IG44: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
+ blt G_M41332_IG42 + ;; size=36 bbWeight=0 PerfScore 0.00 +G_M41332_IG43: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet epilog, nogc
; gcrRegs -[x1] ; byrRegs -[x25] ; GC ptr vars -{V04} @@ -489,14 +485,14 @@ G_M41332_IG44: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x50 ret lr
- ;; size=24 bbWeight=0 PerfScore 0.00 -G_M41332_IG45: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=24 bbWeight=1 PerfScore 16.00 +G_M41332_IG44: ; 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 924, prolog size 40, PerfScore 250.88, instruction count 231, allocated bytes for code 924 (MethodHash=3e745e8b) for method System.Threading.WaitSubsystem:Wait(System.Span`1[long],ubyte,int):int (FullOpts)
+; Total bytes of code 932, prolog size 40, PerfScore 266.89, instruction count 233, allocated bytes for code 932 (MethodHash=3e745e8b) for method System.Threading.WaitSubsystem:Wait(System.Span`1[long],ubyte,int):int (FullOpts)
; ============================================================ Cfi Info:

+8 (+1.32%) : 19052.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)

@@ -7,7 +7,7 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 loc0 [V00,T11] ( 8, 4 ) long -> x20
+; V00 loc0 [V00,T10] ( 8, 4.50) long -> x20
; V01 loc1 [V01,T02] ( 7, 18.50) long -> x0 ; V02 loc2 [V02,T05] ( 4, 12.50) long -> x19 ; V03 loc3 [V03,T21] ( 2, 0.75) int -> x22 @@ -16,26 +16,26 @@ ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp" ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V09 tmp3 [V09,T12] ( 4, 4 ) int -> x20 "dup spill"
+; V09 tmp3 [V09,T14] ( 4, 4 ) int -> x20 "dup spill"
; V10 tmp4 [V10,T16] ( 3, 3 ) ref -> x1 class-hnd single-def "impAppendStmt" <<unknown class>> ;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp7 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp8 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp9 [V15,T13] ( 3, 4 ) long -> x0 "Single return block return value"
+; V15 tmp9 [V15,T08] ( 3, 5 ) long -> x0 "Single return block return value"
; V16 PInvokeFrame [V16 ] ( 3, 2 ) struct (40) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" ; V17 tmp11 [V17,T00] ( 3, 24 ) ref -> x2 "arr expr" ; V18 tmp12 [V18,T17] ( 3, 3 ) ref -> x0 single-def "arr expr" ; V19 tmp13 [V19,T18] ( 3, 3 ) int -> x1 "index expr"
-; V20 cse0 [V20,T09] ( 2, 4.25) ref -> x0 hoist "CSE - aggressive" -; V21 cse1 [V21,T08] ( 3, 5 ) int -> x25 "CSE - aggressive"
+; V20 cse0 [V20,T11] ( 2, 4.25) ref -> x0 hoist "CSE - aggressive" +; V21 cse1 [V21,T09] ( 3, 5 ) int -> x25 "CSE - aggressive"
; V22 cse2 [V22,T20] ( 3, 1.50) ref -> x0 "CSE - moderate" ; V23 cse3 [V23,T19] ( 5, 2.50) int -> x20 "CSE - moderate" ; V24 cse4 [V24,T03] ( 8, 17 ) byref -> [fp+0x48] spill-single-def "CSE - aggressive"
-; V25 cse5 [V25,T15] ( 7, 3.50) byref -> [fp+0x40] "CSE - moderate" -; V26 cse6 [V26,T10] ( 2, 4.25) long -> x1 hoist "CSE - aggressive"
+; V25 cse5 [V25,T13] ( 7, 4 ) byref -> [fp+0x40] "CSE - moderate" +; V26 cse6 [V26,T12] ( 2, 4.25) long -> x1 hoist "CSE - aggressive"
; V27 rat0 [V27,T07] ( 4, 6 ) long -> x19 "fgMakeTemp is creating a new local variable"
-; V28 rat1 [V28,T14] ( 3, 4 ) int -> x21 "Spilling to split statement for tree"
+; V28 rat1 [V28,T15] ( 3, 4 ) int -> x21 "Spilling to split statement for tree"
; V29 rat2 [V29,T06] ( 5, 6 ) long -> x22 "fgMakeTemp is creating a new local variable" ; ; Lcl frame size = 64 @@ -53,13 +53,13 @@ G_M65282_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, adrp x19, [HIGH RELOC #0xD1FFAB1E] add x19, x19, [LOW RELOC #0xD1FFAB1E] ldr x0, [x19, #-0x08]
- cbnz x0, G_M65282_IG23
+ cbnz x0, G_M65282_IG24
ldr w20, [x19] sxtw w21, w20 adrp x22, [HIGH RELOC #0xD1FFAB1E] add x22, x22, [LOW RELOC #0xD1FFAB1E] ldr x0, [x22, #-0x08]
- cbnz x0, G_M65282_IG24
+ cbnz x0, G_M65282_IG25
;; size=40 bbWeight=1 PerfScore 13.50 G_M65282_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ; byrRegs +[x19] @@ -67,13 +67,13 @@ G_M65282_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; GC ptr vars +{V24} ldr w0, [x22, #0x0C] cmp w21, w0
- bge G_M65282_IG06
+ bge G_M65282_IG07
;; size=16 bbWeight=1 PerfScore 5.50 G_M65282_IG04: ; bbWeight=0.50, gcVars=0000000000000008 {V24}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0, #-0x08]
- cbnz x0, G_M65282_IG25
+ cbnz x0, G_M65282_IG26
;; size=16 bbWeight=0.50 PerfScore 2.50 G_M65282_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz adrp x0, [HIGH RELOC #0xD1FFAB1E] @@ -87,7 +87,7 @@ G_M65282_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, str w2, [x19] ldr w2, [x1, #0x08] cmp w20, w2
- bhs G_M65282_IG22
+ bhs G_M65282_IG23
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -97,12 +97,12 @@ G_M65282_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w1, w2
- bhs G_M65282_IG22
+ bhs G_M65282_IG23
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] str xzr, [x0, w1, UXTW #3]
- cbnz x20, G_M65282_IG14
+ cbnz x20, G_M65282_IG06
adrp x0, [HIGH RELOC #0xD1FFAB1E] ; byrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -114,31 +114,39 @@ G_M65282_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0-x1] ; byrRegs -[x19] ; gcr arg pop 0
- b G_M65282_IG14 - ;; size=104 bbWeight=0.50 PerfScore 15.75 -G_M65282_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ; byrRegs +[x19]
+ ldr x24, [fp, #0x48] // [V24 cse4] + ; byrRegs +[x24] + b G_M65282_IG15 + ;; size=108 bbWeight=0.50 PerfScore 16.75 +G_M65282_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x24] + ldr x24, [fp, #0x48] // [V24 cse4] + ; byrRegs +[x24] + b G_M65282_IG15 + ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M65282_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + ; byrRegs -[x24] +[x19]
str x19, [fp, #0x40] // [V25 cse5] ; GC ptr vars +{V25} add x0, fp, #24 // [V16 PInvokeFrame] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M65282_IG07: ; bbWeight=0.50, gcVars=0000000000008008 {V24 V25}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M65282_IG08: ; bbWeight=0.50, gcVars=0000000000002008 {V24 V25}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x19] bl CORINFO_HELP_JIT_PINVOKE_BEGIN ; gcr arg pop 0 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M65282_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M65282_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
bl <unknown method> ; gcr arg pop 0 mov x20, x0 add x0, fp, #24 // [V16 PInvokeFrame] bl CORINFO_HELP_JIT_PINVOKE_END ; gcr arg pop 0
- cbnz x20, G_M65282_IG09
+ cbnz x20, G_M65282_IG10
mov x0, xzr
- b G_M65282_IG21
+ b G_M65282_IG22
;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M65282_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M65282_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov x19, x20 bl <unknown method> ; gcr arg pop 0 @@ -148,19 +156,19 @@ G_M65282_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; byrRegs +[x24] ldr w25, [x24, #0x0C] cmp w25, #0
- ble G_M65282_IG13
+ ble G_M65282_IG14
;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M65282_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0, #-0x08] - cbnz x0, G_M65282_IG26
+G_M65282_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0, #-0x08] cbnz x0, G_M65282_IG27
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] + add x0, x0, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x0, #-0x08] + cbnz x0, G_M65282_IG28
;; size=32 bbWeight=0.25 PerfScore 2.50
-G_M65282_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
+G_M65282_IG12: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0] @@ -168,12 +176,12 @@ G_M65282_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=1000000 {x24 ; gcrRegs +[x0] sxtw x1, w22 ;; size=20 bbWeight=0.25 PerfScore 1.88
-G_M65282_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=1000000 {x24}, byref, isz
+G_M65282_IG13: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=1000000 {x24}, byref, isz
mov x2, x0 ; gcrRegs +[x2] ldr w3, [x2, #0x08] cmp w23, w3
- bhs G_M65282_IG22
+ bhs G_M65282_IG23
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -181,20 +189,20 @@ G_M65282_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=1000000 {x24} add x19, x19, x1 add w23, w23, #1 cmp w25, w23
- bgt G_M65282_IG12
+ bgt G_M65282_IG13
;; size=40 bbWeight=4 PerfScore 36.00
-G_M65282_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
+G_M65282_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
; gcrRegs -[x0] ; byrRegs -[x2] mov w0, #1 ldr x19, [fp, #0x40] // [V25 cse5] ; byrRegs +[x19] str w0, [x19]
- ;; size=12 bbWeight=0.50 PerfScore 1.75 -G_M65282_IG14: ; bbWeight=0.50, gcVars=0000000000000008 {V24}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; byrRegs -[x19 x24]
+ ;; size=12 bbWeight=1 PerfScore 3.50 +G_M65282_IG15: ; bbWeight=0.50, gcVars=0000000000000008 {V24}, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, gcvars, byref, isz + ; byrRegs -[x19]
; GC ptr vars -{V25}
- cbnz x20, G_M65282_IG15
+ cbnz x20, G_M65282_IG16
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] @@ -205,48 +213,46 @@ G_M65282_IG14: ; bbWeight=0.50, gcVars=0000000000000008 {V24}, gcrefRegs= ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 2.00
-G_M65282_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M65282_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
mov x0, x20 bl <unknown method> ; gcr arg pop 0 mov w1, wzr
- ldr x22, [fp, #0x48] // [V24 cse4] - ; byrRegs +[x22] - ldr w2, [x22, #0x08]
+ ldr w2, [x24, #0x08]
cmp w2, #0
- ble G_M65282_IG20 - ;; size=28 bbWeight=0.50 PerfScore 4.25 -G_M65282_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz - ldr w2, [x22, #0x08]
+ ble G_M65282_IG21 + ;; size=24 bbWeight=0.50 PerfScore 3.25 +G_M65282_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz + ldr w2, [x24, #0x08]
sub w2, w2, #1 cmp w2, w1
- bne G_M65282_IG18
+ bne G_M65282_IG19
;; size=16 bbWeight=4 PerfScore 20.00
-G_M65282_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M65282_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
str xzr, [x0]
- b G_M65282_IG19
+ b G_M65282_IG20
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.arm64.checked.mch 175 9 16 150 -84 +104
benchmarks.run_pgo.linux.arm64.checked.mch 11,593 7,908 1,431 2,254 -117,392 +18,204
benchmarks.run_tiered.linux.arm64.checked.mch 63 6 7 50 -56 +36
coreclr_tests.run.linux.arm64.checked.mch 4,204 242 288 3,674 -2,056 +1,652
libraries.crossgen2.linux.arm64.checked.mch 537 23 24 490 -768 +508
libraries.pmi.linux.arm64.checked.mch 881 77 74 730 -628 +732
libraries_tests.run.linux.arm64.Release.mch 1,762 576 295 891 -3,500 +2,460
librariestestsnotieredcompilation.run.linux.arm64.Release.mch 1,033 167 161 705 -1,428 +1,528
realworld.run.linux.arm64.checked.mch 232 17 15 200 -708 +244
smoke_tests.nativeaot.linux.arm64.checked.mch 90 7 5 78 -164 +28
20,570 9,032 2,316 9,222 -126,784 +25,496

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,907 15 264,892 1 (0.00%) 1 (0.00%)
libraries.pmi.linux.arm64.checked.mch 295,800 6 295,794 72 (0.02%) 72 (0.02%)
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,976 21,620 281,356 2,285 (0.75%) 2,285 (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,940 7 18,933 114 (0.60%) 114 (0.60%)
1,610,910 368,644 1,242,266 2,790 (0.17%) 2,790 (0.17%)

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: 13063852 (overridden on cmd)
Total bytes of diff: 13063872 (overridden on cmd)
Total bytes of delta: 20 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          12 : 3818.dasm (1.84 % of base)
          12 : 5140.dasm (0.59 % of base)
          12 : 6061.dasm (0.10 % of base)
           8 : 14785.dasm (1.18 % of base)
           8 : 14058.dasm (0.45 % of base)
           8 : 3514.dasm (0.18 % of base)
           8 : 4161.dasm (0.48 % of base)
           4 : 12880.dasm (0.17 % of base)
           4 : 10216.dasm (0.41 % of base)
           4 : 13341.dasm (0.56 % of base)
           4 : 20815.dasm (0.16 % of base)
           4 : 20833.dasm (0.17 % of base)
           4 : 494.dasm (0.23 % of base)
           4 : 8874.dasm (0.28 % of base)
           4 : 21114.dasm (0.09 % of base)
           4 : 21133.dasm (0.09 % of base)

Top file improvements (bytes):
         -32 : 13926.dasm (-1.75 % of base)
         -20 : 11186.dasm (-2.18 % of base)
          -8 : 18557.dasm (-0.14 % of base)
          -4 : 12313.dasm (-0.17 % of base)
          -4 : 15619.dasm (-0.44 % of base)
          -4 : 12238.dasm (-0.11 % of base)
          -4 : 18249.dasm (-0.12 % of base)
          -4 : 567.dasm (-0.37 % of base)
          -4 : 12691.dasm (-0.22 % of base)

25 total files with Code Size differences (9 improved, 16 regressed), 32 unchanged.

Top method regressions (bytes):
          12 (1.84 % of base) : 3818.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
          12 (0.59 % of base) : 5140.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
          12 (0.10 % of base) : 6061.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)
           8 (1.18 % of base) : 14785.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
           8 (0.18 % of base) : 3514.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
           8 (0.45 % of base) : 14058.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (FullOpts)
           8 (0.48 % of base) : 4161.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (FullOpts)
           4 (0.16 % of base) : 20815.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.17 % of base) : 20833.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):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)
           4 (0.41 % of base) : 10216.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():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)
           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.23 % of base) : 494.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           4 (0.56 % of base) : 13341.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)

Top method improvements (bytes):
         -32 (-1.75 % of base) : 13926.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -20 (-2.18 % of base) : 11186.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():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.44 % of base) : 15619.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):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.17 % of base) : 12313.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (FullOpts)
          -4 (-0.22 % of base) : 12691.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (FullOpts)
          -4 (-0.11 % of base) : 12238.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          -4 (-0.37 % of base) : 567.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte: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.18 % of base) : 14785.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
          12 (0.59 % of base) : 5140.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
           4 (0.56 % of base) : 13341.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
           8 (0.48 % of base) : 4161.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (FullOpts)
           8 (0.45 % of base) : 14058.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (FullOpts)
           4 (0.41 % of base) : 10216.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():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)
           4 (0.23 % of base) : 494.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           8 (0.18 % of base) : 3514.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):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)
           4 (0.17 % of base) : 20833.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.16 % of base) : 20815.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
          12 (0.10 % of base) : 6061.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):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):
         -20 (-2.18 % of base) : 11186.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
         -32 (-1.75 % of base) : 13926.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -4 (-0.44 % of base) : 15619.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
          -4 (-0.37 % of base) : 567.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (FullOpts)
          -4 (-0.22 % of base) : 12691.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (FullOpts)
          -4 (-0.17 % of base) : 12313.dasm - System.Environment:ReadXdgDirectory(System.String,System.String,System.String):System.String (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.11 % of base) : 12238.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (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: 65248792 (overridden on cmd)
Total bytes of diff: 65149604 (overridden on cmd)
Total bytes of delta: -99188 (-0.15 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          76 : 85845.dasm (2.00 % of base)
          76 : 103258.dasm (2.00 % of base)
          76 : 107969.dasm (2.00 % of base)
          76 : 108770.dasm (1.99 % of base)
          76 : 118645.dasm (2.00 % of base)
          76 : 16496.dasm (2.00 % of base)
          76 : 46536.dasm (1.86 % of base)
          72 : 101087.dasm (1.87 % of base)
          72 : 123991.dasm (1.89 % of base)
          72 : 121828.dasm (1.89 % of base)
          72 : 40635.dasm (1.89 % of base)
          72 : 94436.dasm (1.89 % of base)
          72 : 120371.dasm (1.89 % of base)
          72 : 20411.dasm (1.89 % of base)
          72 : 35084.dasm (1.88 % of base)
          68 : 55284.dasm (6.34 % of base)
          68 : 97114.dasm (1.46 % of base)
          68 : 61341.dasm (8.33 % of base)
          64 : 42874.dasm (1.37 % of base)
          60 : 104396.dasm (1.57 % of base)

Top file improvements (bytes):
         -48 : 96750.dasm (-3.79 % of base)
         -40 : 54071.dasm (-1.30 % of base)
         -40 : 102960.dasm (-1.03 % of base)
         -40 : 103803.dasm (-1.29 % of base)
         -40 : 91907.dasm (-6.76 % of base)
         -40 : 102179.dasm (-6.76 % of base)
         -40 : 107697.dasm (-6.76 % of base)
         -40 : 51329.dasm (-1.29 % of base)
         -40 : 85615.dasm (-1.29 % of base)
         -36 : 90002.dasm (-13.04 % of base)
         -36 : 96277.dasm (-13.04 % of base)
         -32 : 123653.dasm (-2.15 % of base)
         -32 : 30343.dasm (-6.72 % of base)
         -32 : 31465.dasm (-3.28 % of base)
         -32 : 41146.dasm (-1.74 % of base)
         -32 : 73002.dasm (-0.83 % of base)
         -32 : 108870.dasm (-2.69 % of base)
         -32 : 110966.dasm (-1.02 % of base)
         -32 : 22081.dasm (-2.17 % of base)
         -32 : 53058.dasm (-2.15 % of base)

91 total files with Code Size differences (53 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
          76 (2.00 % of base) : 85845.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          76 (2.00 % of base) : 103258.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          76 (2.00 % of base) : 107969.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          76 (1.99 % of base) : 108770.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          76 (2.00 % of base) : 118645.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          76 (2.00 % of base) : 16496.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
          76 (1.86 % of base) : 46536.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)
          72 (1.87 % of base) : 101087.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)
          72 (1.89 % of base) : 123991.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)
          72 (1.89 % of base) : 121828.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)
          72 (1.89 % of base) : 40635.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)
          72 (1.89 % of base) : 94436.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)
          72 (1.89 % of base) : 120371.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)
          72 (1.89 % of base) : 20411.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)
          72 (1.88 % of base) : 35084.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)
          68 (8.33 % of base) : 61341.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          68 (6.34 % of base) : 55284.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          68 (1.46 % of base) : 97114.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
          64 (1.37 % of base) : 42874.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
          60 (1.57 % of base) : 104396.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)

Top method improvements (bytes):
         -48 (-3.79 % of base) : 96750.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1)
         -40 (-6.76 % of base) : 91907.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 102179.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 107697.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-1.03 % of base) : 102960.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 (-1.30 % of base) : 54071.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -40 (-1.29 % of base) : 103803.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -40 (-1.29 % of base) : 51329.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -40 (-1.29 % of base) : 85615.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -36 (-13.04 % of base) : 90002.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -36 (-13.04 % of base) : 96277.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -32 (-1.74 % of base) : 41146.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -32 (-2.15 % of base) : 123653.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.15 % of base) : 53058.dasm - System.Linq.Enumerable+SelectManySingleSelectorIterator`2[int,System.__Canon]:ToArray():System.__Canon[]:this (Tier1-OSR)
         -32 (-3.28 % of base) : 31465.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Insert(byref,System.String,int):this (Tier1)
         -32 (-0.83 % of base) : 73002.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 (-6.72 % of base) : 30343.dasm - System.Text.RegularExpressions.RegexInterpreter:Scan(System.ReadOnlySpan`1[ushort]):this (Tier1)
         -32 (-1.02 % of base) : 110966.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -32 (-2.69 % of base) : 108870.dasm - System.Threading.PortableThreadPool+WorkerThread:WorkerThreadStart() (Tier1-OSR)

Top method regressions (percentages):
          20 (19.23 % of base) : 80123.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
          20 (19.23 % of base) : 92772.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
          20 (13.51 % of base) : 111941.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
          20 (13.51 % of base) : 123148.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
          68 (8.33 % of base) : 61341.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          32 (7.21 % of base) : 113282.dasm - System.Text.RegularExpressions.RegexInterpreter:Scan(System.ReadOnlySpan`1[ushort]):this (Tier1)
          68 (6.34 % of base) : 55284.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          12 (6.25 % of base) : 79805.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 28589.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 29829.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 38840.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 76314.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 79206.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 91414.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 14270.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 14461.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 65544.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 68226.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          36 (5.17 % of base) : 116667.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (5.17 % of base) : 120546.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)

Top method improvements (percentages):
         -16 (-15.38 % of base) : 95314.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
         -36 (-13.04 % of base) : 90002.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -36 (-13.04 % of base) : 96277.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (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) : 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) : 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) : 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) : 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) : 96252.dasm - System.Collections.Frozen.KeyAnalyzer:HasSufficientUniquenessFactor(System.Collections.Generic.HashSet`1[System.String],System.ReadOnlySpan`1[System.String],int):ubyte (Tier1-OSR)
         -40 (-6.76 % of base) : 91907.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 102179.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 107697.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -32 (-6.72 % of base) : 30343.dasm - System.Text.RegularExpressions.RegexInterpreter:Scan(System.ReadOnlySpan`1[ushort]):this (Tier1)
         -16 (-6.56 % of base) : 18344.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
         -16 (-6.25 % of base) : 56864.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -16 (-6.25 % of base) : 53109.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -16 (-6.25 % of base) : 96001.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)
         -20 (-5.88 % of base) : 41934.dasm - System.Tests.Perf_Array:ArrayResize():this (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: 20463728 (overridden on cmd)
Total bytes of diff: 20463708 (overridden on cmd)
Total bytes of delta: -20 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 26019.dasm (0.45 % of base)
           8 : 49083.dasm (0.49 % of base)
           4 : 16676.dasm (0.30 % of base)
           4 : 2650.dasm (0.23 % of base)
           4 : 41415.dasm (0.09 % of base)
           4 : 53811.dasm (0.28 % of base)
           4 : 41176.dasm (0.09 % of base)

Top file improvements (bytes):
         -32 : 24711.dasm (-1.75 % of base)
          -8 : 31509.dasm (-1.01 % of base)
          -4 : 23494.dasm (-0.22 % of base)
          -4 : 26236.dasm (-0.11 % of base)
          -4 : 28233.dasm (-0.44 % of base)
          -4 : 4674.dasm (-0.37 % of base)

13 total files with Code Size differences (6 improved, 7 regressed), 38 unchanged.

Top method regressions (bytes):
           8 (0.45 % of base) : 26019.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (Tier1)
           8 (0.49 % of base) : 49083.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (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) : 41415.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
           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.23 % of base) : 2650.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)

Top method improvements (bytes):
         -32 (-1.75 % of base) : 24711.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          -8 (-1.01 % of base) : 31509.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
          -4 (-0.44 % of base) : 28233.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)
          -4 (-0.22 % of base) : 23494.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (Tier0-FullOpts)
          -4 (-0.11 % of base) : 26236.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (Tier1)
          -4 (-0.37 % of base) : 4674.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (Tier1)

Top method regressions (percentages):
           8 (0.49 % of base) : 49083.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (Tier1)
           8 (0.45 % of base) : 26019.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (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.28 % of base) : 53811.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
           4 (0.23 % of base) : 2650.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (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):
         -32 (-1.75 % of base) : 24711.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          -8 (-1.01 % of base) : 31509.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
          -4 (-0.44 % of base) : 28233.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)
          -4 (-0.37 % of base) : 4674.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (Tier1)
          -4 (-0.22 % of base) : 23494.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (Tier0-FullOpts)
          -4 (-0.11 % of base) : 26236.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (Tier1)


coreclr_tests.run.linux.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 301233192 (overridden on cmd)
Total bytes of diff: 301232788 (overridden on cmd)
Total bytes of delta: -404 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          44 : 381548.dasm (2.07 % of base)
          36 : 392471.dasm (2.02 % of base)
          24 : 343196.dasm (3.14 % of base)
          24 : 186302.dasm (2.46 % of base)
          16 : 199209.dasm (0.21 % of base)
          16 : 344044.dasm (7.84 % of base)
          16 : 344736.dasm (7.84 % of base)
          16 : 345766.dasm (7.84 % of base)
          16 : 344384.dasm (7.84 % of base)
          16 : 346020.dasm (7.84 % of base)
          16 : 379458.dasm (7.84 % of base)
          16 : 379649.dasm (7.84 % of base)
          16 : 393231.dasm (7.84 % of base)
          12 : 314216.dasm (2.31 % of base)
          12 : 343740.dasm (5.00 % of base)
          12 : 354232.dasm (1.27 % of base)
          12 : 316606.dasm (4.29 % of base)
          12 : 317945.dasm (5.77 % of base)
          12 : 345482.dasm (5.77 % of base)
          12 : 362811.dasm (5.77 % of base)

Top file improvements (bytes):
         -80 : 349171.dasm (-7.25 % of base)
         -28 : 354508.dasm (-4.73 % of base)
         -24 : 344489.dasm (-4.08 % of base)
         -24 : 355140.dasm (-4.08 % of base)
         -24 : 355468.dasm (-4.08 % of base)
         -24 : 355524.dasm (-4.08 % of base)
         -24 : 316669.dasm (-4.08 % of base)
         -24 : 335979.dasm (-3.70 % of base)
         -24 : 344464.dasm (-4.08 % of base)
         -24 : 345974.dasm (-2.00 % of base)
         -24 : 354316.dasm (-4.08 % of base)
         -24 : 354903.dasm (-4.08 % of base)
         -24 : 362704.dasm (-4.08 % of base)
         -24 : 378592.dasm (-4.08 % of base)
         -24 : 379739.dasm (-2.00 % of base)
         -24 : 386581.dasm (-4.08 % of base)
         -24 : 389129.dasm (-2.00 % of base)
         -24 : 393116.dasm (-4.08 % of base)
         -20 : 321194.dasm (-3.40 % of base)
         -20 : 336017.dasm (-9.62 % of base)

69 total files with Code Size differences (39 improved, 30 regressed), 20 unchanged.

Top method regressions (bytes):
          44 (2.07 % of base) : 381548.dasm - System.IO.Enumeration.FileSystemName:MatchPattern(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte):ubyte (Tier1)
          36 (2.02 % of base) : 392471.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (Instrumented Tier1)
          24 (3.14 % of base) : 343196.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
          24 (2.46 % of base) : 186302.dasm - VectorTest:VectorTReturnTest():int (FullOpts)
          16 (0.21 % of base) : 199209.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
          16 (7.84 % of base) : 344044.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 344736.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 345766.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 344384.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 346020.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 379458.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 379649.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 393231.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.00 % of base) : 343740.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
          12 (2.31 % of base) : 314216.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
          12 (1.40 % of base) : 384952.dasm - System.AppContext:GetData(System.String):System.Object (Tier1)
          12 (0.74 % of base) : 383607.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Instrumented Tier1)
          12 (4.29 % of base) : 316606.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 317945.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 345482.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

Top method improvements (bytes):
         -80 (-7.25 % of base) : 349171.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (Tier0-FullOpts)
         -28 (-4.73 % of base) : 354508.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-3.70 % of base) : 335979.dasm - SizeParamIndex.PInvoke.Helper:EqualArray[short](short[],int,short[],int):ubyte (Tier1-OSR)
         -24 (-4.08 % of base) : 344489.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 355140.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 355468.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 355524.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 316669.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 344464.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 354316.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 354903.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 362704.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 378592.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 386581.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 393116.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 (-9.62 % of base) : 336017.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

Top method regressions (percentages):
          16 (7.84 % of base) : 344044.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 344736.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 345766.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 344384.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 346020.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 379458.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 379649.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 393231.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 317945.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 345482.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 362811.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 382535.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.00 % of base) : 343740.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
           8 (4.76 % of base) : 196999.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
           8 (4.76 % of base) : 353656.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
          12 (4.29 % of base) : 316606.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
           8 (3.92 % of base) : 369400.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) : 382324.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)

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) : 321145.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -16 (-7.84 % of base) : 336604.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -16 (-7.84 % of base) : 346683.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -16 (-7.84 % of base) : 348019.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) : 350250.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -16 (-7.84 % of base) : 356976.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -16 (-7.84 % of base) : 359716.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -16 (-7.84 % of base) : 360704.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -16 (-7.84 % of base) : 334876.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -16 (-7.84 % of base) : 348903.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) : 365534.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) : 382898.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -16 (-7.84 % of base) : 384187.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: 63764680 (overridden on cmd)
Total bytes of diff: 63764420 (overridden on cmd)
Total bytes of delta: -260 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         116 : 209173.dasm (3.40 % of base)
         116 : 229441.dasm (3.37 % of base)
          84 : 214331.dasm (1.36 % of base)
          36 : 99657.dasm (0.64 % of base)
          28 : 144493.dasm (4.14 % of base)
          12 : 259423.dasm (2.07 % of base)
          12 : 37352.dasm (1.87 % of base)
          12 : 78195.dasm (1.91 % of base)
          12 : 223350.dasm (0.04 % of base)
          12 : 51511.dasm (0.22 % of base)
           8 : 174124.dasm (0.16 % of base)
           8 : 201732.dasm (1.21 % of base)
           8 : 237862.dasm (1.28 % of base)
           4 : 11808.dasm (0.47 % of base)
           4 : 189236.dasm (0.47 % of base)
           4 : 219960.dasm (0.45 % of base)
           4 : 230512.dasm (0.55 % of base)
           4 : 233629.dasm (0.97 % of base)
           4 : 31730.dasm (0.23 % of base)
           4 : 36852.dasm (0.17 % of base)

Top file improvements (bytes):
        -436 : 39511.dasm (-0.55 % of base)
         -52 : 52134.dasm (-0.59 % of base)
         -52 : 114256.dasm (-0.59 % of base)
         -36 : 22260.dasm (-2.05 % of base)
         -32 : 246288.dasm (-1.63 % of base)
         -24 : 84404.dasm (-0.45 % of base)
         -20 : 230640.dasm (-2.16 % of base)
         -16 : 145042.dasm (-2.16 % of base)
         -16 : 144519.dasm (-2.38 % of base)
         -12 : 202592.dasm (-0.79 % of base)
          -8 : 224130.dasm (-0.92 % of base)
          -8 : 86079.dasm (-0.24 % of base)
          -8 : 86342.dasm (-0.32 % of base)
          -8 : 11894.dasm (-0.38 % of base)
          -8 : 189330.dasm (-0.38 % of base)
          -4 : 106361.dasm (-0.09 % of base)
          -4 : 106349.dasm (-0.18 % of base)
          -4 : 211288.dasm (-0.87 % of base)
          -4 : 219484.dasm (-0.35 % of base)
          -4 : 230119.dasm (-0.66 % of base)

47 total files with Code Size differences (23 improved, 24 regressed), 20 unchanged.

Top method regressions (bytes):
         116 (3.40 % of base) : 209173.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
         116 (3.37 % of base) : 229441.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          84 (1.36 % of base) : 214331.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
          36 (0.64 % of base) : 99657.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          28 (4.14 % of base) : 144493.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)
          12 (0.22 % of base) : 51511.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          12 (1.91 % of base) : 78195.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
          12 (0.04 % 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)
          12 (1.87 % of base) : 37352.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
          12 (2.07 % of base) : 259423.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray: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)
           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 (0.33 % of base) : 88723.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo],byref):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.97 % of base) : 233629.dasm - Microsoft.Extensions.Primitives.StringValues:GetHashCode():int:this (FullOpts)
           4 (0.47 % of base) : 189236.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.47 % of base) : 11808.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__60`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.55 % of base) : 230512.dasm - System.Data.ProviderBase.DbConnectionPool:PoolCreateRequest(System.Object):this (FullOpts)

Top method improvements (bytes):
        -436 (-0.55 % of base) : 39511.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
         -52 (-0.59 % of base) : 114256.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -52 (-0.59 % of base) : 52134.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -36 (-2.05 % of base) : 22260.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -32 (-1.63 % of base) : 246288.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (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)
         -20 (-2.16 % of base) : 230640.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -16 (-2.38 % of base) : 144519.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (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)
          -8 (-0.38 % of base) : 11894.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -8 (-0.38 % of base) : 189330.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -8 (-0.24 % 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)
          -8 (-0.32 % of base) : 86342.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindXmlContainerRewriterInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder+XmlElementRootInfo,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundXmlContainerRewriterInfo:this (FullOpts)
          -8 (-0.92 % of base) : 224130.dasm - Microsoft.VisualBasic.Strings:SplitHelper(System.String,System.String,int,int):System.String[] (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)
          -4 (-0.66 % of base) : 230119.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
          -4 (-0.44 % of base) : 263224.dasm - System.Net.WebClient:DownloadBits(System.Net.WebRequest,System.IO.Stream):ubyte[]:this (FullOpts)

Top method regressions (percentages):
          28 (4.14 % of base) : 144493.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)
         116 (3.40 % of base) : 209173.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
         116 (3.37 % of base) : 229441.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          12 (2.07 % of base) : 259423.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
          12 (1.91 % of base) : 78195.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):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)
           4 (0.97 % of base) : 233629.dasm - Microsoft.Extensions.Primitives.StringValues:GetHashCode():int:this (FullOpts)
          36 (0.64 % of base) : 99657.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
           4 (0.55 % of base) : 230512.dasm - System.Data.ProviderBase.DbConnectionPool:PoolCreateRequest(System.Object):this (FullOpts)
           4 (0.53 % of base) : 213402.dasm - System.Reflection.Metadata.Ecma335.SignatureDecoder`2[System.__Canon,System.__Canon]:DecodeMethodSignature(byref):System.Reflection.Metadata.MethodSignature`1[System.__Canon]:this (FullOpts)
           4 (0.47 % of base) : 189236.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.47 % of base) : 11808.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__60`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.45 % of base) : 219960.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():this (FullOpts)
           4 (0.33 % of base) : 88723.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo],byref):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 (0.23 % of base) : 31730.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

Top method improvements (percentages):
         -16 (-2.38 % of base) : 144519.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
         -16 (-2.16 % of base) : 145042.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
         -20 (-2.16 % of base) : 230640.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -36 (-2.05 % of base) : 22260.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -32 (-1.63 % of base) : 246288.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -8 (-0.92 % of base) : 224130.dasm - Microsoft.VisualBasic.Strings:SplitHelper(System.String,System.String,int,int):System.String[] (FullOpts)
          -4 (-0.87 % of base) : 211288.dasm - System.Reflection.Metadata.BlobBuilder:TryWriteBytes(System.IO.Stream,int):int: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.66 % of base) : 230119.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
         -52 (-0.59 % of base) : 114256.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -52 (-0.59 % of base) : 52134.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
        -436 (-0.55 % of base) : 39511.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (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.44 % of base) : 263224.dasm - System.Net.WebClient:DownloadBits(System.Net.WebRequest,System.IO.Stream):ubyte[]:this (FullOpts)
          -8 (-0.38 % of base) : 11894.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -8 (-0.38 % of base) : 189330.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -4 (-0.35 % of base) : 219484.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
          -8 (-0.32 % of base) : 86342.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindXmlContainerRewriterInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder+XmlElementRootInfo,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundXmlContainerRewriterInfo:this (FullOpts)
          -4 (-0.27 % of base) : 35424.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (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)


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: 76209360 (overridden on cmd)
Total bytes of diff: 76209464 (overridden on cmd)
Total bytes of delta: 104 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          52 : 170958.dasm (1.78 % of base)
          52 : 179112.dasm (1.82 % of base)
          48 : 114888.dasm (0.87 % of base)
          44 : 261547.dasm (3.15 % of base)
          40 : 279102.dasm (10.10 % of base)
          40 : 279103.dasm (10.10 % of base)
          24 : 106232.dasm (0.27 % of base)
          20 : 122047.dasm (15.62 % of base)
          16 : 140816.dasm (1.67 % of base)
          16 : 158663.dasm (2.55 % of base)
          16 : 152982.dasm (3.60 % of base)
          12 : 168394.dasm (0.15 % of base)
          12 : 205262.dasm (0.99 % of base)
          12 : 117953.dasm (0.23 % of base)
          12 : 26875.dasm (1.15 % of base)
          12 : 63098.dasm (1.87 % of base)
          12 : 143574.dasm (2.29 % of base)
          12 : 176213.dasm (0.16 % of base)
          12 : 206034.dasm (2.31 % of base)
          12 : 220492.dasm (1.15 % of base)

Top file improvements (bytes):
         -36 : 276052.dasm (-2.33 % of base)
         -32 : 168577.dasm (-0.39 % of base)
         -32 : 244819.dasm (-1.75 % of base)
         -28 : 95360.dasm (-0.70 % of base)
         -24 : 165313.dasm (-3.31 % of base)
         -20 : 32045.dasm (-0.31 % of base)
         -16 : 151453.dasm (-1.32 % of base)
         -16 : 121366.dasm (-2.38 % of base)
         -16 : 91684.dasm (-0.78 % of base)
         -16 : 117998.dasm (-0.38 % of base)
         -12 : 142107.dasm (-0.32 % of base)
         -12 : 221778.dasm (-0.28 % of base)
         -12 : 91802.dasm (-1.92 % of base)
         -12 : 2659.dasm (-11.11 % of base)
         -12 : 2671.dasm (-12.00 % of base)
         -12 : 28196.dasm (-0.28 % of base)
         -12 : 118056.dasm (-0.25 % of base)
         -12 : 173040.dasm (-0.85 % of base)
         -12 : 192887.dasm (-0.72 % of base)
          -8 : 183251.dasm (-2.13 % of base)

58 total files with Code Size differences (32 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
          52 (1.78 % of base) : 170958.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          52 (1.82 % of base) : 179112.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte: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)
          40 (10.10 % of base) : 279102.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          40 (10.10 % of base) : 279103.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          24 (0.27 % of base) : 106232.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          20 (15.62 % of base) : 122047.dasm - Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
          16 (1.67 % of base) : 140816.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser+PartialManifestInfo:AddChunk(Microsoft.Diagnostics.Tracing.TraceEvent):Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:this (FullOpts)
          16 (3.60 % of base) : 152982.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ValueAttributes(System.Collections.Generic.List`1[Newtonsoft.Json.Converters.IXmlNode]):ubyte: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 (1.87 % of base) : 63098.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
          12 (0.23 % of base) : 117953.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousDelegatePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
          12 (1.15 % of base) : 220492.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          12 (1.15 % of base) : 26875.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__60`1[System.__Canon]:MoveNext():ubyte: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)
          12 (0.15 % of base) : 168394.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)

Top method improvements (bytes):
         -36 (-2.33 % 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)
         -32 (-1.75 % of base) : 244819.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-0.39 % of base) : 168577.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,ubyte):this (FullOpts)
         -28 (-0.70 % of base) : 95360.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)
         -24 (-3.31 % of base) : 165313.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
         -20 (-0.31 % of base) : 32045.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -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 (-0.38 % of base) : 117998.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -16 (-2.38 % of base) : 121366.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (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 (-1.92 % of base) : 91802.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:IsNamespaceGroupIncludesButNotEquivalentTo(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol):ubyte (FullOpts)
         -12 (-0.25 % of base) : 118056.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -12 (-0.85 % of base) : 173040.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:ReOrderArgsForNamedArguments(Microsoft.CSharp.RuntimeBinder.Semantics.MethodOrPropertySymbol,Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray,Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType,Microsoft.CSharp.RuntimeBinder.Semantics.ExprMemberGroup,Microsoft.CSharp.RuntimeBinder.Semantics.ArgInfos):ubyte (FullOpts)
         -12 (-0.72 % of base) : 192887.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object: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.33 % of base) : 27877.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)

Top method regressions (percentages):
          20 (15.62 % of base) : 122047.dasm - Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
          40 (10.10 % of base) : 279102.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          40 (10.10 % of base) : 279103.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          16 (3.60 % of base) : 152982.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ValueAttributes(System.Collections.Generic.List`1[Newtonsoft.Json.Converters.IXmlNode]):ubyte: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)
           4 (2.22 % of base) : 77865.dasm - Microsoft.FSharp.Collections.MapTreeModule:ofList[ubyte,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[ubyte,System.Nullable`1[int]]]):Microsoft.FSharp.Collections.MapTree`2[ubyte,System.Nullable`1[int]] (FullOpts)
          12 (1.87 % of base) : 63098.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
          52 (1.82 % of base) : 179112.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          52 (1.78 % of base) : 170958.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          16 (1.67 % of base) : 140816.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser+PartialManifestInfo:AddChunk(Microsoft.Diagnostics.Tracing.TraceEvent):Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:this (FullOpts)
           4 (1.43 % of base) : 89059.dasm - System.Security.Cryptography.X509Certificates.CertificatePolicyChain:MatchesApplicationPolicies(System.Security.Cryptography.OidCollection):ubyte:this (FullOpts)
           4 (1.43 % of base) : 89057.dasm - System.Security.Cryptography.X509Certificates.CertificatePolicyChain:MatchesCertificatePolicies(System.Security.Cryptography.OidCollection):ubyte:this (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)
           8 (1.18 % of base) : 294291.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
          12 (1.15 % of base) : 220492.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          12 (1.15 % of base) : 26875.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__60`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           8 (1.15 % of base) : 162206.dasm - System.Xml.Schema.XmlSchemaValidator:ProcessSchemaLocations(System.String,System.String):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)
         -16 (-2.38 % of base) : 121366.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
         -36 (-2.33 % 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)
         -12 (-1.92 % of base) : 91802.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:IsNamespaceGroupIncludesButNotEquivalentTo(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol):ubyte (FullOpts)
         -32 (-1.75 % of base) : 244819.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -4 (-1.67 % of base) : 193470.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
          -4 (-1.54 % of base) : 242674.dasm - System.Linq.Parallel.NullableIntAverageAggregationOperator+NullableIntAverageAggregationOperatorEnumerator`1[System.__Canon]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.54 % of base) : 242677.dasm - System.Linq.Parallel.NullableIntAverageAggregationOperator+NullableIntAverageAggregationOperatorEnumerator`1[ubyte]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.52 % of base) : 242703.dasm - System.Linq.Parallel.NullableLongAverageAggregationOperator+NullableLongAverageAggregationOperatorEnumerator`1[System.__Canon]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.52 % of base) : 242706.dasm - System.Linq.Parallel.NullableLongAverageAggregationOperator+NullableLongAverageAggregationOperatorEnumerator`1[ubyte]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.47 % of base) : 242614.dasm - System.Linq.Parallel.NullableDoubleAverageAggregationOperator+NullableDoubleAverageAggregationOperatorEnumerator`1[System.__Canon]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.47 % of base) : 242617.dasm - System.Linq.Parallel.NullableDoubleAverageAggregationOperator+NullableDoubleAverageAggregationOperatorEnumerator`1[ubyte]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.47 % of base) : 242644.dasm - System.Linq.Parallel.NullableFloatAverageAggregationOperator+NullableFloatAverageAggregationOperatorEnumerator`1[System.__Canon]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.47 % of base) : 242647.dasm - System.Linq.Parallel.NullableFloatAverageAggregationOperator+NullableFloatAverageAggregationOperatorEnumerator`1[ubyte]:MoveNextCore(byref):ubyte: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)
          -4 (-1.20 % of base) : 242587.dasm - System.Linq.Parallel.NullableDecimalAverageAggregationOperator+NullableDecimalAverageAggregationOperatorEnumerator`1[ubyte]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.19 % of base) : 242584.dasm - System.Linq.Parallel.NullableDecimalAverageAggregationOperator+NullableDecimalAverageAggregationOperatorEnumerator`1[System.__Canon]:MoveNextCore(byref):ubyte: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: 38230684 (overridden on cmd)
Total bytes of diff: 38229644 (overridden on cmd)
Total bytes of delta: -1040 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          32 : 60251.dasm (2.41 % of base)
          28 : 37125.dasm (12.50 % of base)
          20 : 36472.dasm (2.37 % of base)
          20 : 39268.dasm (2.37 % of base)
          20 : 4016.dasm (2.37 % of base)
          20 : 49680.dasm (2.37 % of base)
          20 : 73163.dasm (2.37 % of base)
          20 : 78412.dasm (2.37 % of base)
          20 : 14788.dasm (2.37 % of base)
          20 : 39504.dasm (2.37 % of base)
          20 : 14652.dasm (2.37 % of base)
          20 : 15620.dasm (1.03 % of base)
          20 : 19824.dasm (2.37 % of base)
          20 : 38224.dasm (2.37 % of base)
          20 : 4148.dasm (2.37 % of base)
          20 : 53955.dasm (2.37 % of base)
          20 : 67183.dasm (2.37 % of base)
          20 : 70963.dasm (2.37 % of base)
          20 : 78472.dasm (2.37 % of base)
          20 : 13736.dasm (2.37 % of base)

Top file improvements (bytes):
         -48 : 60245.dasm (-3.37 % of base)
         -44 : 21740.dasm (-1.61 % of base)
         -36 : 85570.dasm (-1.33 % of base)
         -32 : 47557.dasm (-1.15 % of base)
         -32 : 56993.dasm (-1.75 % of base)
         -32 : 57193.dasm (-1.73 % of base)
         -28 : 32617.dasm (-4.73 % of base)
         -28 : 49538.dasm (-1.02 % of base)
         -28 : 53208.dasm (-4.73 % of base)
         -28 : 12904.dasm (-4.73 % of base)
         -28 : 38284.dasm (-4.73 % of base)
         -28 : 13052.dasm (-4.73 % of base)
         -28 : 4558.dasm (-4.73 % of base)
         -28 : 50648.dasm (-4.73 % of base)
         -24 : 15914.dasm (-2.01 % of base)
         -24 : 83932.dasm (-4.08 % of base)
         -20 : 14651.dasm (-2.46 % of base)
         -20 : 57074.dasm (-2.37 % of base)
         -20 : 44798.dasm (-2.10 % of base)
         -20 : 39426.dasm (-2.46 % of base)

72 total files with Code Size differences (32 improved, 40 regressed), 20 unchanged.

Top method regressions (bytes):
          32 (2.41 % of base) : 60251.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:PickPivotAndPartition(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]):int (Tier1-OSR)
          28 (12.50 % of base) : 37125.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
          20 (2.37 % of base) : 36472.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 39268.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 4016.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 49680.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 73163.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 78412.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 14788.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 39504.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 14652.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 19824.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 38224.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 4148.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 53955.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 67183.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 70963.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 78472.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          20 (2.37 % of base) : 13736.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          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)

Top method improvements (bytes):
         -48 (-3.37 % of base) : 60245.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:PickPivotAndPartition(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]):int (Tier1-OSR)
         -44 (-1.61 % of base) : 21740.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -36 (-1.33 % of base) : 85570.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -32 (-1.75 % of base) : 56993.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -32 (-1.73 % of base) : 57193.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -32 (-1.15 % of base) : 47557.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -28 (-4.73 % of base) : 32617.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 53208.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 12904.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 38284.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 13052.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 4558.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 50648.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-1.02 % of base) : 49538.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -24 (-4.08 % of base) : 83932.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-2.01 % of base) : 15914.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
         -20 (-2.46 % 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.46 % 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.46 % 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.10 % of base) : 44798.dasm - System.Linq.Enumerable+SelectEnumerableIterator`2[int,int]:ToArray():int[]:this (Tier1-OSR)

Top method regressions (percentages):
          28 (12.50 % of base) : 37125.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
          12 (4.29 % of base) : 3869.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(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) : 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)
           8 (3.92 % of base) : 25246.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) : 32351.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) : 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) : 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) : 37579.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) : 45938.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) : 49715.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
           4 (3.85 % of base) : 44813.dasm - System.Linq.EnumerableSorter`1[int]:ComputeMap(int[],int):int[]:this (Tier1-OSR)

Top method improvements (percentages):
          -4 (-4.76 % of base) : 15519.dasm - System.Reflection.MetadataToken:IsTokenOfType(int,int[]):ubyte (Tier1)
         -28 (-4.73 % of base) : 32617.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 53208.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 12904.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 38284.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 13052.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 4558.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 50648.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 83932.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
          -8 (-3.45 % of base) : 15625.dasm - System.RuntimeType:IsSubclassOf(System.Type):ubyte:this (Tier1)
         -48 (-3.37 % of base) : 60245.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:PickPivotAndPartition(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]):int (Tier1-OSR)
         -20 (-2.46 % 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.46 % 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.46 % 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.37 % of base) : 57074.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[ushort]:ToArray():ushort[]:this (Tier1-OSR)
          -4 (-2.13 % of base) : 3965.dasm - System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|87_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector128`1[short]](byref,short,int):int (Tier1)
          -4 (-2.13 % of base) : 42561.dasm - System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|87_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector128`1[short]](byref,short,int):int (Tier1)
          -4 (-2.13 % of base) : 12681.dasm - System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|87_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector128`1[short]](byref,short,int):int (Tier1)
          -4 (-2.13 % of base) : 5898.dasm - System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|87_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector128`1[short]](byref,short,int):int (Tier1)
          -4 (-2.13 % of base) : 78493.dasm - System.SpanHelpers:<LastIndexOfValueType>g__SimdImpl|87_0[short,System.SpanHelpers+DontNegate`1[short],System.Runtime.Intrinsics.Vector128`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: 161796492 (overridden on cmd)
Total bytes of diff: 161796592 (overridden on cmd)
Total bytes of delta: 100 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          52 : 87895.dasm (1.82 % of base)
          44 : 148574.dasm (3.15 % of base)
          40 : 281188.dasm (2.62 % of base)
          36 : 279670.dasm (2.65 % of base)
          36 : 280693.dasm (1.80 % of base)
          36 : 280727.dasm (1.67 % of base)
          36 : 281000.dasm (2.40 % of base)
          36 : 281011.dasm (2.18 % of base)
          28 : 159789.dasm (1.36 % of base)
          28 : 159883.dasm (1.36 % of base)
          28 : 158927.dasm (1.49 % of base)
          28 : 159102.dasm (1.36 % of base)
          24 : 158993.dasm (0.67 % of base)
          24 : 159271.dasm (0.67 % of base)
          24 : 279658.dasm (1.38 % of base)
          20 : 159123.dasm (0.54 % of base)
          20 : 63836.dasm (0.02 % of base)
          16 : 36060.dasm (0.67 % of base)
          16 : 92107.dasm (2.56 % of base)
          16 : 158920.dasm (0.41 % of base)

Top file improvements (bytes):
         -36 : 278614.dasm (-0.97 % of base)
         -32 : 164951.dasm (-0.40 % of base)
         -32 : 145892.dasm (-1.75 % of base)
         -32 : 164256.dasm (-1.73 % of base)
         -28 : 278520.dasm (-0.90 % of base)
         -28 : 278612.dasm (-0.79 % of base)
         -24 : 54273.dasm (-1.90 % of base)
         -24 : 170356.dasm (-3.31 % of base)
         -24 : 13628.dasm (-0.40 % of base)
         -20 : 277014.dasm (-1.34 % of base)
         -20 : 158990.dasm (-0.93 % of base)
         -16 : 141336.dasm (-0.73 % of base)
         -16 : 158917.dasm (-0.75 % of base)
         -16 : 271313.dasm (-0.63 % of base)
         -16 : 208719.dasm (-0.22 % of base)
         -16 : 289366.dasm (-0.64 % of base)
         -16 : 291056.dasm (-0.67 % of base)
         -16 : 208618.dasm (-0.22 % of base)
         -12 : 24859.dasm (-0.85 % of base)
         -12 : 49133.dasm (-0.82 % of base)

60 total files with Code Size differences (32 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
          52 (1.82 % of base) : 87895.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte: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 (1.49 % of base) : 158927.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long]](System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 159789.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 159102.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 159883.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ulong,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ulong]](System.ReadOnlySpan`1[ulong],System.ReadOnlySpan`1[ulong]):ulong (FullOpts)
          24 (0.67 % of base) : 158993.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanSpanScalarIntoSpan>g__Vectorized128|234_1[long,System.Numerics.Tensors.TensorPrimitives+AddMultiplyOperator`1[long]](byref,byref,long,byref,ulong) (FullOpts)
          24 (0.67 % of base) : 159271.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanSpanScalarIntoSpan>g__Vectorized128|234_1[ulong,System.Numerics.Tensors.TensorPrimitives+AddMultiplyOperator`1[ulong]](byref,byref,ulong,byref,ulong) (FullOpts)
          24 (1.38 % of base) : 279658.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3293_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (0.02 % of base) : 63836.dasm - System.CodeDom.Compiler.Tests.CSharpCodeGeneratorTests+<GenerateCodeFromType_TestData>d__25:MoveNext():ubyte:this (FullOpts)
          20 (0.54 % of base) : 159123.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanScalarSpanIntoSpan>g__Vectorized128|235_1[long,System.Numerics.Tensors.TensorPrimitives+MultiplyAddOperator`1[long]](byref,long,byref,byref,ulong) (FullOpts)
          16 (0.67 % of base) : 36060.dasm - DryIoc.Request:WithResolvedFactory(DryIoc.Factory,ubyte,ubyte,ubyte):DryIoc.Request: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 (0.41 % of base) : 158920.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanScalarIntoSpan>g__Vectorized128|232_1[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long]](byref,long,byref,ulong) (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)
         -32 (-1.75 % of base) : 145892.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-1.73 % of base) : 164256.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-0.40 % of base) : 164951.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,ubyte):this (FullOpts)
         -28 (-0.90 % of base) : 278520.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3215_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 (-1.90 % of base) : 54273.dasm - Microsoft.Extensions.Options.Generators.Parser:TrackRangeAttributeForSubstitution(Microsoft.CodeAnalysis.AttributeData,Microsoft.CodeAnalysis.ITypeSymbol,byref):this (FullOpts)
         -24 (-3.31 % of base) : 170356.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
         -20 (-0.93 % of base) : 158990.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanScalarIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+AddMultiplyOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],long,System.Span`1[long]) (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.73 % of base) : 141336.dasm - System.Buffers.SequenceReader`1[ushort]:TryReadToAnyInternal(byref,System.ReadOnlySpan`1[ushort],ubyte,int):ubyte:this (FullOpts)
         -16 (-0.75 % of base) : 158917.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanScalarIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long]](System.ReadOnlySpan`1[long],long,System.Span`1[long]) (FullOpts)
         -16 (-0.22 % of base) : 208719.dasm - System.Tests.NumberFormatTestHelper:TryFormatNumberTest[uint](uint,System.String,System.IFormatProvider,System.String,ubyte) (FullOpts)
         -16 (-0.22 % of base) : 208618.dasm - System.Tests.NumberFormatTestHelper:TryFormatNumberTest[ushort](ushort,System.String,System.IFormatProvider,System.String,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) : 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)

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)
          52 (1.82 % of base) : 87895.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (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)
          28 (1.49 % of base) : 158927.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long]](System.ReadOnlySpan`1[long]):long (FullOpts)
           4 (1.43 % of base) : 21021.dasm - System.Security.Cryptography.X509Certificates.CertificatePolicyChain:MatchesApplicationPolicies(System.Security.Cryptography.OidCollection):ubyte:this (FullOpts)
           4 (1.43 % of base) : 225247.dasm - System.Security.Cryptography.X509Certificates.CertificatePolicyChain:MatchesCertificatePolicies(System.Security.Cryptography.OidCollection):ubyte: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)
          28 (1.36 % of base) : 159789.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 159102.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 159883.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ulong,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ulong]](System.ReadOnlySpan`1[ulong],System.ReadOnlySpan`1[ulong]):ulong (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)
           8 (1.18 % of base) : 75469.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (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)
         -24 (-1.90 % of base) : 54273.dasm - Microsoft.Extensions.Options.Generators.Parser:TrackRangeAttributeForSubstitution(Microsoft.CodeAnalysis.AttributeData,Microsoft.CodeAnalysis.ITypeSymbol,byref):this (FullOpts)
         -32 (-1.75 % of base) : 145892.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-1.73 % of base) : 164256.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -8 (-1.43 % of base) : 42283.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetAddedProjects>d__3:MoveNext():ubyte:this (FullOpts)
          -8 (-1.43 % of base) : 48251.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetAddedProjects>d__3:MoveNext():ubyte:this (FullOpts)
          -8 (-1.43 % of base) : 42279.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetRemovedProjects>d__5:MoveNext():ubyte:this (FullOpts)
          -8 (-1.43 % of base) : 48247.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetRemovedProjects>d__5:MoveNext():ubyte:this (FullOpts)
          -8 (-1.41 % of base) : 12271.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetAddedProjects>d__3:MoveNext():ubyte:this (FullOpts)
          -8 (-1.41 % of base) : 29664.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetRemovedProjects>d__5:MoveNext():ubyte:this (FullOpts)
          -8 (-1.37 % of base) : 119340.dasm - System.Globalization.Tests.Factory+<GetDataset>d__4:MoveNext():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)
          -4 (-1.05 % of base) : 57609.dasm - Microsoft.Extensions.Primitives.StringValues:GetHashCode():int:this (FullOpts)
         -36 (-0.97 % of base) : 278614.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4363_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -20 (-0.93 % of base) : 158990.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanScalarIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+AddMultiplyOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],long,System.Span`1[long]) (FullOpts)
         -28 (-0.90 % of base) : 278520.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3215_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -4 (-0.88 % of base) : 293922.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon]:Alternate(System.Collections.Generic.List`1[System.__Canon]):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:this (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)
         -12 (-0.85 % of base) : 24859.dasm - Microsoft.CSharp.RuntimeBinder.Semantics.ExpressionBinder+GroupToArgsBinder:ReOrderArgsForNamedArguments(Microsoft.CSharp.RuntimeBinder.Semantics.MethodOrPropertySymbol,Microsoft.CSharp.RuntimeBinder.Semantics.TypeArray,Microsoft.CSharp.RuntimeBinder.Semantics.AggregateType,Microsoft.CSharp.RuntimeBinder.Semantics.ExprMemberGroup,Microsoft.CSharp.RuntimeBinder.Semantics.ArgInfos):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: 15928884 (overridden on cmd)
Total bytes of diff: 15928420 (overridden on cmd)
Total bytes of delta: -464 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          72 : 1621.dasm (0.60 % of base)
          36 : 1760.dasm (0.47 % of base)
          24 : 18268.dasm (0.62 % of base)
          24 : 1811.dasm (0.14 % of base)
          16 : 17222.dasm (1.35 % of base)
          12 : 22049.dasm (1.87 % of base)
          12 : 21787.dasm (1.16 % of base)
           8 : 12829.dasm (0.58 % of base)
           8 : 9374.dasm (0.89 % of base)
           8 : 24343.dasm (0.34 % of base)
           8 : 7907.dasm (0.18 % of base)
           4 : 20653.dasm (0.15 % of base)
           4 : 23228.dasm (0.16 % of base)
           4 : 23952.dasm (0.10 % of base)
           4 : 494.dasm (0.23 % of base)

Top file improvements (bytes):
        -392 : 1810.dasm (-3.49 % of base)
        -128 : 1918.dasm (-1.65 % of base)
         -68 : 1926.dasm (-0.46 % of base)
         -24 : 22871.dasm (-0.40 % of base)
         -16 : 1757.dasm (-0.48 % of base)
         -12 : 1625.dasm (-1.67 % of base)
         -12 : 33211.dasm (-0.75 % of base)
         -12 : 20364.dasm (-0.24 % of base)
          -8 : 21074.dasm (-0.14 % of base)
          -8 : 1735.dasm (-0.11 % of base)
          -4 : 20559.dasm (-0.12 % of base)
          -4 : 10128.dasm (-0.20 % of base)
          -4 : 24441.dasm (-0.11 % of base)
          -4 : 567.dasm (-0.37 % of base)
          -4 : 10573.dasm (-0.08 % of base)
          -4 : 10503.dasm (-0.14 % of base)
          -4 : 32238.dasm (-0.36 % of base)

32 total files with Code Size differences (17 improved, 15 regressed), 26 unchanged.

Top method regressions (bytes):
          72 (0.60 % of base) : 1621.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
          36 (0.47 % of base) : 1760.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]:FindClosestPoint(byref,byref,byref,byref,byref) (FullOpts)
          24 (0.14 % of base) : 1811.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
          24 (0.62 % of base) : 18268.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (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)
          12 (1.87 % of base) : 22049.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
          12 (1.16 % of base) : 21787.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           8 (0.89 % of base) : 9374.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
           8 (0.34 % of base) : 24343.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<FindMostSpecificImplementationInBases>g__findMostSpecificImplementationInBases|92_1(Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],byref,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbol (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)
           8 (0.18 % of base) : 7907.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
           4 (0.10 % of base) : 23952.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
           4 (0.16 % of base) : 23228.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.15 % of base) : 20653.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.23 % of base) : 494.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

Top method improvements (bytes):
        -392 (-3.49 % of base) : 1810.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
        -128 (-1.65 % of base) : 1918.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -68 (-0.46 % of base) : 1926.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):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)
         -16 (-0.48 % of base) : 1757.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
         -12 (-1.67 % of base) : 1625.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
         -12 (-0.24 % of base) : 20364.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (FullOpts)
         -12 (-0.75 % of base) : 33211.dasm - System.Management.Automation.ParameterBinderController:BindPositionalParameters(System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal],uint,uint,byref):System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]:this (FullOpts)
          -8 (-0.11 % of base) : 1735.dasm - BepuPhysics.Collidables.ConvexHullHelper:ComputeHull(System.Span`1[System.Numerics.Vector3],BepuUtilities.Memory.BufferPool,byref) (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.08 % of base) : 10573.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking:MakeCtorForIncrClassConstructionPhase2C(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs,FSharp.Compiler.TypedTree+Expr,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassConstructionBindingsPhase2C],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.CheckExpressions+SafeInitData):System.Tuple`4[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassReprInfo] (FullOpts)
          -4 (-0.14 % of base) : 10503.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2B_TypeCheckAndIncrementalGeneralization$cont@1927-2(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2A,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.Unit):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2B,System.Tuple`7[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]]] (FullOpts)
          -4 (-0.20 % of base) : 10128.dasm - FSharp.Compiler.CheckExpressions:TcIncrementalLetRecGeneralization(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]):System.Tuple`5[FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]] (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) : 20559.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -4 (-0.36 % of base) : 32238.dasm - System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
          -4 (-0.37 % of base) : 567.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (FullOpts)

Top method regressions (percentages):
          12 (1.87 % of base) : 22049.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (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)
          12 (1.16 % of base) : 21787.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           8 (0.89 % of base) : 9374.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
          24 (0.62 % of base) : 18268.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          72 (0.60 % of base) : 1621.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (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)
          36 (0.47 % of base) : 1760.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]:FindClosestPoint(byref,byref,byref,byref,byref) (FullOpts)
           8 (0.34 % of base) : 24343.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<FindMostSpecificImplementationInBases>g__findMostSpecificImplementationInBases|92_1(Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],byref,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
           4 (0.23 % of base) : 494.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           8 (0.18 % of base) : 7907.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
           4 (0.16 % of base) : 23228.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.15 % of base) : 20653.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
          24 (0.14 % of base) : 1811.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
           4 (0.10 % of base) : 23952.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)

Top method improvements (percentages):
        -392 (-3.49 % of base) : 1810.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -12 (-1.67 % of base) : 1625.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
        -128 (-1.65 % of base) : 1918.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -12 (-0.75 % of base) : 33211.dasm - System.Management.Automation.ParameterBinderController:BindPositionalParameters(System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal],uint,uint,byref):System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]:this (FullOpts)
         -16 (-0.48 % of base) : 1757.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
         -68 (-0.46 % of base) : 1926.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):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.37 % of base) : 567.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (FullOpts)
          -4 (-0.36 % of base) : 32238.dasm - System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -12 (-0.24 % of base) : 20364.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (FullOpts)
          -4 (-0.20 % of base) : 10128.dasm - FSharp.Compiler.CheckExpressions:TcIncrementalLetRecGeneralization(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]):System.Tuple`5[FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]] (FullOpts)
          -4 (-0.14 % of base) : 10503.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2B_TypeCheckAndIncrementalGeneralization$cont@1927-2(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2A,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.Unit):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2B,System.Tuple`7[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]]] (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)
          -8 (-0.11 % of base) : 1735.dasm - BepuPhysics.Collidables.ConvexHullHelper:ComputeHull(System.Span`1[System.Numerics.Vector3],BepuUtilities.Memory.BufferPool,byref) (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.08 % of base) : 10573.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking:MakeCtorForIncrClassConstructionPhase2C(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs,FSharp.Compiler.TypedTree+Expr,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassConstructionBindingsPhase2C],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.CheckExpressions+SafeInitData):System.Tuple`4[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassReprInfo] (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: 2851260 (overridden on cmd)
Total bytes of diff: 2851124 (overridden on cmd)
Total bytes of delta: -136 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
           8 : 19052.dasm (1.32 % of base)
           8 : 8198.dasm (0.87 % of base)
           4 : 8186.dasm (0.41 % of base)
           4 : 8176.dasm (0.21 % of base)
           4 : 9456.dasm (0.26 % of base)

Top file improvements (bytes):
         -68 : 8114.dasm (-2.07 % of base)
         -36 : 3212.dasm (-1.81 % of base)
         -32 : 15323.dasm (-2.19 % of base)
          -8 : 18143.dasm (-0.49 % of base)
          -8 : 7825.dasm (-0.49 % of base)
          -8 : 8227.dasm (-0.67 % of base)
          -4 : 13148.dasm (-0.39 % of base)

12 total files with Code Size differences (7 improved, 5 regressed), 42 unchanged.

Top method regressions (bytes):
           8 (1.32 % of base) : 19052.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)
           8 (0.87 % of base) : 8198.dasm - System.Threading.WaitSubsystem:Wait(System.Span`1[long],ubyte,int):int (FullOpts)
           4 (0.26 % of base) : 9456.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           4 (0.41 % of base) : 8186.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:RegisterWait(int,ubyte,ubyte):this (FullOpts)
           4 (0.21 % of base) : 8176.dasm - System.Threading.WaitSubsystem+WaitableObject:Wait(System.Threading.WaitSubsystem+WaitableObject[],int,ubyte,System.Threading.WaitSubsystem+ThreadWaitInfo,int,ubyte,ubyte):int (FullOpts)

Top method improvements (bytes):
         -68 (-2.07 % of base) : 8114.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
         -36 (-1.81 % of base) : 3212.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -32 (-2.19 % of base) : 15323.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -8 (-0.49 % of base) : 18143.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -8 (-0.49 % of base) : 7825.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -8 (-0.67 % of base) : 8227.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
          -4 (-0.39 % of base) : 13148.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (FullOpts)

Top method regressions (percentages):
           8 (1.32 % of base) : 19052.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)
           8 (0.87 % of base) : 8198.dasm - System.Threading.WaitSubsystem:Wait(System.Span`1[long],ubyte,int):int (FullOpts)
           4 (0.41 % of base) : 8186.dasm - System.Threading.WaitSubsystem+ThreadWaitInfo:RegisterWait(int,ubyte,ubyte):this (FullOpts)
           4 (0.26 % of base) : 9456.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           4 (0.21 % of base) : 8176.dasm - System.Threading.WaitSubsystem+WaitableObject:Wait(System.Threading.WaitSubsystem+WaitableObject[],int,ubyte,System.Threading.WaitSubsystem+ThreadWaitInfo,int,ubyte,ubyte):int (FullOpts)

Top method improvements (percentages):
         -32 (-2.19 % of base) : 15323.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -68 (-2.07 % of base) : 8114.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
         -36 (-1.81 % of base) : 3212.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
          -8 (-0.67 % of base) : 8227.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
          -8 (-0.49 % of base) : 7825.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -8 (-0.49 % of base) : 18143.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -4 (-0.39 % of base) : 13148.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (FullOpts)



linux x64

Diffs are based on 1,621,203 contexts (360,162 MinOpts, 1,261,041 FullOpts).

MISSED contexts: 2,647 (0.16%)

Overall (-162,350 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 11,931,736 -196
benchmarks.run_pgo.linux.x64.checked.mch 57,208,438 -178,358
benchmarks.run_tiered.linux.x64.checked.mch 18,554,476 -114
coreclr_tests.run.linux.x64.checked.mch 247,130,491 -130
libraries.crossgen2.linux.x64.checked.mch 44,619,341 -256
libraries.pmi.linux.x64.checked.mch 60,394,201 -98
libraries_tests.run.linux.x64.Release.mch 31,730,283 +18,122
librariestestsnotieredcompilation.run.linux.x64.Release.mch 130,013,252 -699
realworld.run.linux.x64.checked.mch 13,219,489 -639
smoke_tests.nativeaot.linux.x64.checked.mch 4,228,743 +18

FullOpts (-162,350 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.linux.x64.checked.mch 11,762,034 -196
benchmarks.run_pgo.linux.x64.checked.mch 39,461,926 -178,358
benchmarks.run_tiered.linux.x64.checked.mch 3,498,730 -114
coreclr_tests.run.linux.x64.checked.mch 106,763,610 -130
libraries.crossgen2.linux.x64.checked.mch 44,618,143 -256
libraries.pmi.linux.x64.checked.mch 60,281,344 -98
libraries_tests.run.linux.x64.Release.mch 15,802,466 +18,122
librariestestsnotieredcompilation.run.linux.x64.Release.mch 119,429,397 -699
realworld.run.linux.x64.checked.mch 12,830,953 -639
smoke_tests.nativeaot.linux.x64.checked.mch 4,227,794 +18

Example diffs

benchmarks.run.linux.x64.checked.mch

-20 (-3.10%) : 8351.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)

@@ -9,17 +9,17 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 9, 27.50) long -> r15 single-def
-; V01 arg1 [V01,T11] ( 7, 6.50) int -> r13 -; V02 arg2 [V02,T03] ( 10, 28 ) byref -> rbx single-def
+; V01 arg1 [V01,T10] ( 7, 8.50) int -> r13 +; V02 arg2 [V02,T03] ( 10, 30 ) byref -> rbx single-def
; V03 arg3 [V03,T06] ( 3, 18 ) ubyte -> r14 single-def ; V04 loc0 [V04,T05] ( 8, 26 ) int -> r12 ; V05 loc1 [V05,T07] ( 9, 14 ) int -> rdx ; V06 loc2 [V06,T13] ( 4, 5.50) ubyte -> [rbp-0x2C] ; V07 loc3 [V07,T14] ( 3, 5 ) ubyte -> r9
-; V08 loc4 [V08,T02] ( 6, 38 ) ubyte -> [rbp-0x30]
+; V08 loc4 [V08,T02] ( 6, 38.50) ubyte -> [rbp-0x30]
; V09 loc5 [V09,T09] ( 5, 13.50) ubyte -> [rbp-0x34] ; V10 loc6 [V10,T15] ( 3, 5 ) int -> [rbp-0x38]
-; V11 loc7 [V11 ] ( 20, 83.50) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
+; V11 loc7 [V11 ] ( 20, 87.50) int -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op
; V12 loc8 [V12,T16] ( 3, 1.50) int -> rcx ; V13 loc9 [V13,T08] ( 7, 14 ) ushort -> rcx ;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -33,7 +33,7 @@ ;* V22 tmp8 [V22 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V23 tmp9 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V24 cse0 [V24,T01] ( 3, 48 ) int -> rcx "CSE - aggressive"
-; V25 cse1 [V25,T10] ( 5, 10 ) int -> rcx multi-def "CSE - moderate"
+; V25 cse1 [V25,T11] ( 5, 10 ) int -> rcx multi-def "CSE - moderate"
; V26 cse2 [V26,T17] ( 3, 1.50) int -> rdi "CSE - moderate" ; ; Lcl frame size = 24 @@ -69,10 +69,10 @@ G_M23448_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr G_M23448_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref lea edi, [r13+0x01] cmp edi, dword ptr [rbx]
- jge G_M23448_IG29
+ jge G_M23448_IG30
movsxd rdi, edi cmp word ptr [r15+2*rdi], 58
- jne G_M23448_IG29
+ jne G_M23448_IG30
;; size=27 bbWeight=0.50 PerfScore 4.38 G_M23448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz mov dword ptr [rbp-0x40], r13d @@ -98,9 +98,8 @@ G_M23448_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr ;; size=38 bbWeight=2 PerfScore 19.50 G_M23448_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov dword ptr [rbp-0x30], r10d
- mov dword ptr [rbp-0x34], r11d
jmp G_M23448_IG23
- ;; size=13 bbWeight=0.25 PerfScore 1.00
+ ;; size=9 bbWeight=0.25 PerfScore 0.75
G_M23448_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz movsxd rcx, dword ptr [rbp-0x40] movzx rcx, word ptr [r15+2*rcx] @@ -112,11 +111,12 @@ G_M23448_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr inc edx xor r11d, r11d mov dword ptr [rbp-0x34], r11d
+ mov r11d, dword ptr [rbp-0x34]
jmp G_M23448_IG22
- ;; size=14 bbWeight=2 PerfScore 7.00
+ ;; size=18 bbWeight=2 PerfScore 9.00
G_M23448_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp edx, 4
- jg G_M23448_IG29
+ jg G_M23448_IG30
test edx, edx je SHORT G_M23448_IG11 inc r12d @@ -129,10 +129,10 @@ G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr cmp ecx, 37 je SHORT G_M23448_IG14 cmp ecx, 46
- jne G_M23448_IG29
+ jne G_M23448_IG30
test r9d, r9d mov dword ptr [rbp-0x34], r11d
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov edx, dword ptr [rbx] mov dword ptr [rbp-0x40], edx lea rdx, [rbp-0x40] @@ -144,28 +144,28 @@ G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr call [<unknown method>] ; gcr arg pop 0 test eax, eax
- je G_M23448_IG29
+ je G_M23448_IG30
jmp G_M23448_IG20 ;; size=78 bbWeight=2 PerfScore 35.50 G_M23448_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp ecx, 47
- je G_M23448_IG19
+ je SHORT G_M23448_IG19
cmp ecx, 58 je SHORT G_M23448_IG17 cmp ecx, 93 je SHORT G_M23448_IG16
- ;; size=19 bbWeight=2 PerfScore 7.50 -G_M23448_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=2 PerfScore 7.50 +G_M23448_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
- jmp G_M23448_IG29 - ;; size=5 bbWeight=0.50 PerfScore 1.00
+ jmp G_M23448_IG30 + ;; size=5 bbWeight=1 PerfScore 2.00
G_M23448_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz ; byrRegs +[rbx] mov ecx, dword ptr [rbp-0x40] inc ecx mov dword ptr [rbp-0x40], ecx cmp ecx, dword ptr [rbx]
- je G_M23448_IG29
+ je G_M23448_IG30
movsxd rcx, dword ptr [rbp-0x40] movzx rcx, word ptr [r15+2*rcx] cmp ecx, 93 @@ -176,13 +176,12 @@ G_M23448_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, by G_M23448_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz jmp SHORT G_M23448_IG19 ;; size=2 bbWeight=2 PerfScore 4.00
-G_M23448_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M23448_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov r13d, dword ptr [rbp-0x40] mov ecx, dword ptr [rbx] mov dword ptr [rbp-0x40], ecx
- mov dword ptr [rbp-0x34], r11d - jmp G_M23448_IG22 - ;; size=18 bbWeight=2 PerfScore 14.00
+ jmp SHORT G_M23448_IG22 + ;; size=11 bbWeight=4 PerfScore 24.00
G_M23448_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp dword ptr [rbp-0x40], 0 jle SHORT G_M23448_IG18 @@ -192,7 +191,7 @@ G_M23448_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr cmp word ptr [r15+2*rdx], 58 jne SHORT G_M23448_IG18 cmp dword ptr [rbp-0x2C], 0
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov eax, 1 xor r11d, r11d mov dword ptr [rbp-0x2C], eax @@ -210,7 +209,7 @@ G_M23448_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, by or r10d, dword ptr [rbp-0x30] movzx rcx, r14b or ecx, r10d
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov r10d, 1 mov dword ptr [rbp-0x30], r10d jmp SHORT G_M23448_IG18 @@ -226,59 +225,59 @@ G_M23448_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr ;; size=25 bbWeight=2 PerfScore 9.50 G_M23448_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref xor edx, edx
- mov dword ptr [rbp-0x34], r11d - ;; size=6 bbWeight=2 PerfScore 2.50
+ ;; size=2 bbWeight=2 PerfScore 0.50
G_M23448_IG22: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz mov ecx, dword ptr [rbp-0x40] inc ecx mov dword ptr [rbp-0x40], ecx mov ecx, dword ptr [rbp-0x40] cmp ecx, dword ptr [rbx]
- jl SHORT G_M23448_IG25
+ jl SHORT G_M23448_IG26
;; size=15 bbWeight=4 PerfScore 29.00
-G_M23448_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M23448_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov r10d, dword ptr [rbp-0x30] test r10d, r10d
- je SHORT G_M23448_IG24
+ je SHORT G_M23448_IG25 + ;; size=9 bbWeight=1 PerfScore 2.25 +G_M23448_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, edx sub ecx, 1 cmp ecx, 1
- ja SHORT G_M23448_IG29 - ;; size=19 bbWeight=0.50 PerfScore 2.00 -G_M23448_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ ja SHORT G_M23448_IG30 + ;; size=10 bbWeight=0.50 PerfScore 0.88 +G_M23448_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
xor ecx, ecx test r10d, r10d setne cl add ecx, 8
- cmp dword ptr [rbp-0x34], 0 - jne SHORT G_M23448_IG29
+ test r11d, r11d + jne SHORT G_M23448_IG30
cmp edx, 4
- jg SHORT G_M23448_IG29
+ jg SHORT G_M23448_IG30
cmp dword ptr [rbp-0x2C], 0
- jne SHORT G_M23448_IG26
+ jne SHORT G_M23448_IG27
cmp r12d, ecx
- jne SHORT G_M23448_IG29 - jmp SHORT G_M23448_IG27 - ;; size=35 bbWeight=0.50 PerfScore 6.12 -G_M23448_IG25: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ jne SHORT G_M23448_IG30 + jmp SHORT G_M23448_IG28 + ;; size=34 bbWeight=0.50 PerfScore 5.25 +G_M23448_IG26: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov r10d, dword ptr [rbp-0x30]
- mov r11d, dword ptr [rbp-0x34]
jmp G_M23448_IG05
- ;; size=13 bbWeight=2 PerfScore 8.00 -G_M23448_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - cmp r12d, ecx - jge SHORT G_M23448_IG29 - ;; size=5 bbWeight=0.50 PerfScore 0.62
+ ;; size=9 bbWeight=2 PerfScore 6.00
G_M23448_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp r12d, ecx + jge SHORT G_M23448_IG30 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M23448_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov eax, dword ptr [rbx] inc eax cmp dword ptr [rbp-0x40], eax
- jne SHORT G_M23448_IG29
+ jne SHORT G_M23448_IG30
inc r13d mov dword ptr [rbx], r13d mov eax, 1 ;; size=20 bbWeight=0.50 PerfScore 3.38
-G_M23448_IG28: ; bbWeight=0.50, epilog, nogc, extend
+G_M23448_IG29: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 24 pop rbx pop r12 @@ -288,11 +287,11 @@ G_M23448_IG28: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M23448_IG29: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23448_IG30: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rbx] xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M23448_IG30: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M23448_IG31: ; bbWeight=1, epilog, nogc, extend
...

-18 (-2.82%) : 9855.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan1[ushort],System.Span1[ubyte],byref,byref):ubyte (FullOpts)

@@ -10,19 +10,19 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T15] ( 5, 3.50) byref -> [rbp-0x30] single-def -; V03 arg3 [V03,T17] ( 4, 3 ) byref -> [rbp-0x38] single-def
+; V02 arg2 [V02,T13] ( 5, 4.50) byref -> r8 single-def +; V03 arg3 [V03,T16] ( 4, 3.50) byref -> [rbp-0x38] single-def
; V04 loc0 [V04,T11] ( 6, 7 ) byref -> rdi single-def ; V05 loc1 [V05,T12] ( 6, 7 ) byref -> r10 single-def
-; V06 loc2 [V06,T14] ( 10, 5.50) int -> r11
+; V06 loc2 [V06,T15] ( 10, 6 ) int -> r11
; V07 loc3 [V07,T22] ( 6, 3.50) int -> rcx
-; V08 loc4 [V08,T04] ( 10, 19.50) int -> rbx -; V09 loc5 [V09,T02] ( 19, 20.50) int -> r15
+; V08 loc4 [V08,T03] ( 10, 20 ) int -> rbx +; V09 loc5 [V09,T02] ( 19, 21 ) int -> r15
; V10 loc6 [V10,T06] ( 10, 11 ) byref -> r14 single-def
-; V11 loc7 [V11,T13] ( 5, 6 ) int -> r13
+; V11 loc7 [V11,T14] ( 5, 6.50) int -> r13
; V12 loc8 [V12,T10] ( 17, 8.50) int -> rax ; V13 loc9 [V13,T26] ( 3, 1.50) int -> rdx
-; V14 loc10 [V14,T24] ( 5, 2.50) int -> r8
+; V14 loc10 [V14,T24] ( 5, 2.50) int -> rsi
; V15 loc11 [V15,T25] ( 4, 2 ) int -> rdi ;* V16 loc12 [V16 ] ( 0, 0 ) int -> zero-ref ;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -31,7 +31,7 @@ ;* V20 tmp3 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V21 tmp4 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]> ;* V22 tmp5 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
-; V23 tmp6 [V23,T03] ( 6, 20 ) int -> r8 "Inline return value spill temp"
+; V23 tmp6 [V23,T04] ( 6, 20 ) int -> rsi "Inline return value spill temp"
; V24 tmp7 [V24,T00] ( 5, 40 ) byref -> rax "Inlining Arg" ; V25 tmp8 [V25,T05] ( 5, 14 ) int -> rdx "Inline stloc first use temp" ; V26 tmp9 [V26,T07] ( 3, 10 ) int -> r12 "Inline stloc first use temp" @@ -40,7 +40,7 @@ ; V29 tmp12 [V29,T01] ( 4, 32 ) byref -> rax "Inlining Arg" ; V30 tmp13 [V30,T18] ( 4, 4 ) byref -> r10 single-def "Inlining Arg" ; V31 tmp14 [V31,T19] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp15 [V32,T16] ( 4, 3.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V32 tmp15 [V32,T17] ( 4, 3.50) int -> [rbp-0x2C] single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V33 tmp16 [V33,T20] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V34 tmp17 [V34,T21] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP ;* V35 tmp18 [V35 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP @@ -66,23 +66,22 @@ G_M25359_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { push rbx sub rsp, 24 lea rbp, [rsp+0x40]
- mov bword ptr [rbp-0x30], r8 - ; GC ptr vars +{V02}
mov bword ptr [rbp-0x38], r9 ; GC ptr vars +{V03}
- ;; size=27 bbWeight=1 PerfScore 8.75 -G_M25359_IG02: ; bbWeight=1, gcVars=0000000000028000 {V02 V03}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref - ; byrRegs +[rdx rdi]
+ ;; size=23 bbWeight=1 PerfScore 7.75 +G_M25359_IG02: ; bbWeight=1, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0184 {rdx rdi r8}, gcvars, byref + ; byrRegs +[rdx rdi r8]
mov r10, rdx ; byrRegs +[r10] mov r11d, esi and r11d, -4 xor ebx, ebx xor r15d, r15d
+ mov dword ptr [rbp-0x2C], esi
test esi, esi
- je G_M25359_IG14 - ;; size=23 bbWeight=1 PerfScore 2.50 -G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0480 {rdi r10}, byref, isz
+ je G_M25359_IG15 + ;; size=26 bbWeight=1 PerfScore 3.50 +G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0580 {rdi r8 r10}, byref, isz
; byrRegs -[rdx] mov r14, 0xD1FFAB1E ; static handle mov eax, r11d @@ -93,7 +92,7 @@ G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0480 {rdi r1 lea r13d, [r11-0x04] jmp SHORT G_M25359_IG05 ;; size=29 bbWeight=0.50 PerfScore 2.62
-G_M25359_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref
+G_M25359_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref
; byrRegs +[r14] mov edx, 0xD1FFAB1E mov eax, edx @@ -103,11 +102,11 @@ G_M25359_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r1 add r13d, edx shl r13d, 2 ;; size=23 bbWeight=0.50 PerfScore 2.50
-G_M25359_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref
+G_M25359_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref
test r13d, r13d jle G_M25359_IG10 ;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref, isz
+G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref, isz
movsxd rax, ebx lea rax, bword ptr [rdi+2*rax] ; byrRegs +[rax] @@ -116,23 +115,23 @@ G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r movzx r9, word ptr [rax+0x04] movzx rax, word ptr [rax+0x06] ; byrRegs -[rax]
- mov r8d, edx - or r8d, r12d - or r8d, r9d - or r8d, eax - test r8d, -256
+ mov esi, edx + or esi, r12d + or esi, r9d + or esi, eax + test esi, -256
je SHORT G_M25359_IG08
- ;; size=45 bbWeight=4 PerfScore 44.00 -G_M25359_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref, isz - mov r8d, -1
+ ;; size=42 bbWeight=4 PerfScore 44.00 +G_M25359_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref, isz + mov esi, -1
jmp SHORT G_M25359_IG09
- ;; size=8 bbWeight=2 PerfScore 4.50 -G_M25359_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref
+ ;; size=7 bbWeight=2 PerfScore 4.50 +G_M25359_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref
movsxd rdx, edx movsx rdx, byte ptr [r14+rdx] shl edx, 18
- movsxd r8, eax - movsx rax, byte ptr [r14+r8]
+ movsxd rsi, eax + movsx rax, byte ptr [r14+rsi]
or edx, eax movsxd rax, r12d movsx rax, byte ptr [r14+rax] @@ -142,52 +141,54 @@ G_M25359_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r movsx rax, byte ptr [r14+rax] shl eax, 6 or edx, eax
- mov r8d, edx - ;; size=50 bbWeight=2 PerfScore 39.00 -G_M25359_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref - test r8d, r8d - jl G_M25359_IG16
+ mov esi, edx + ;; size=49 bbWeight=2 PerfScore 39.00 +G_M25359_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref + test esi, esi + jl G_M25359_IG17
movsxd rax, r15d add rax, r10 ; byrRegs +[rax]
- mov edx, r8d
+ mov edx, esi
sar edx, 16 mov byte ptr [rax], dl
- mov edx, r8d
+ mov edx, esi
sar edx, 8 mov byte ptr [rax+0x01], dl
- mov byte ptr [rax+0x02], r8b
+ mov byte ptr [rax+0x02], sil
add r15d, 3 add ebx, 4 cmp ebx, r13d jl G_M25359_IG06
- ;; size=52 bbWeight=4 PerfScore 32.00 -G_M25359_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref, isz
+ ;; size=49 bbWeight=4 PerfScore 32.00 +G_M25359_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref
; byrRegs -[rax] lea eax, [r11-0x04] cmp r13d, eax
- jne G_M25359_IG16
+ jne G_M25359_IG17 + ;; size=13 bbWeight=1 PerfScore 1.75 +G_M25359_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref, isz
cmp ebx, r11d
- je G_M25359_IG16
+ je G_M25359_IG17
lea eax, [r11-0x04] cdqe movzx rax, word ptr [rdi+2*rax] lea edx, [r11-0x03] movsxd rdx, edx movzx rdx, word ptr [rdi+2*rdx]
- lea r8d, [r11-0x02] - movsxd r8, r8d - movzx r8, word ptr [rdi+2*r8]
+ lea esi, [r11-0x02] + movsxd rsi, esi + movzx rsi, word ptr [rdi+2*rsi]
lea r9d, [r11-0x01] movsxd r9, r9d movzx rdi, word ptr [rdi+2*r9] ; byrRegs -[rdi] mov r9d, eax or r9d, edx
- or r9d, r8d
+ or r9d, esi
or r9d, edi test r9d, -256
- jne G_M25359_IG16
+ jne G_M25359_IG17
cdqe movsx rax, byte ptr [r14+rax] shl eax, 18 @@ -196,18 +197,18 @@ G_M25359_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r1 shl edx, 12 or eax, edx cmp edi, 61
- je SHORT G_M25359_IG11
+ je SHORT G_M25359_IG12
movsxd rdi, edi movsx rdi, byte ptr [r14+rdi] or eax, edi
- movsxd r8, r8d - movsx rdi, byte ptr [r14+r8]
+ movsxd rsi, esi + movsx rdi, byte ptr [r14+rsi]
shl edi, 6 or eax, edi
- jl G_M25359_IG16
+ jl G_M25359_IG17
add ecx, -3 cmp r15d, ecx
- jg G_M25359_IG16
+ jg G_M25359_IG17
movsxd rdi, r15d add r10, rdi mov edi, eax @@ -218,21 +219,21 @@ G_M25359_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r1 mov byte ptr [r10+0x01], dil mov byte ptr [r10+0x02], al add r15d, 3
- jmp SHORT G_M25359_IG13 - ;; size=194 bbWeight=0.50 PerfScore 23.25 -G_M25359_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4400 {r10 r14}, byref, isz - cmp r8d, 61 - je SHORT G_M25359_IG12 - movsxd rdi, r8d
+ jmp SHORT G_M25359_IG14 + ;; size=180 bbWeight=0.50 PerfScore 22.38 +G_M25359_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4500 {r8 r10 r14}, byref, isz + cmp esi, 61 + je SHORT G_M25359_IG13 + movsxd rdi, esi
movsx rdi, byte ptr [r14+rdi] shl edi, 6 or edi, eax ...

-31 (-2.10%) : 13163.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)

@@ -22,7 +22,7 @@ ; V11 loc7 [V11,T08] ( 19, 42 ) ushort -> [rbp-0x60] ptr ;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 loc9 [V13,T41] ( 3, 6 ) ubyte -> rax
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [rbp-0x68] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [rbp-0x68] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T16] ( 7, 14 ) ushort -> [rbp-0x6C] ptr ;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune> ; V17 loc13 [V17,T29] ( 4, 8 ) int -> [rbp-0x70] spill-single-def ptr @@ -351,15 +351,17 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byr mov word ptr [rcx+2*rdx], si inc edi mov dword ptr [rbp-0x50], edi
+ mov r14d, dword ptr [rbp-0x5C]
jmp G_M13139_IG48
- ;; size=40 bbWeight=2 PerfScore 27.50
+ ;; size=44 bbWeight=2 PerfScore 29.50
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref ; byrRegs -[rcx] lea rdi, [rbp-0x58] call [<unknown method>] ; gcr arg pop 0
+ mov r14d, dword ptr [rbp-0x5C]
jmp G_M13139_IG48
- ;; size=15 bbWeight=2 PerfScore 11.00
+ ;; size=19 bbWeight=2 PerfScore 13.00
G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz mov edi, dword ptr [rbp-0x60] cmp edi, 127 @@ -386,9 +388,8 @@ G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byr ;; size=16 bbWeight=2 PerfScore 11.00 G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref add r14d, 2
- mov dword ptr [rbp-0x5C], r14d
jmp G_M13139_IG48
- ;; size=13 bbWeight=2 PerfScore 6.50
+ ;; size=9 bbWeight=2 PerfScore 4.50
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref movsxd rdi, r14d lea rdi, [r13+2*rdi] @@ -402,9 +403,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byr call [<unknown method>] ; gcr arg pop 0 lea r14d, [rax+r14-0x01]
- mov dword ptr [rbp-0x5C], r14d
jmp G_M13139_IG48
- ;; size=52 bbWeight=2 PerfScore 24.00
+ ;; size=48 bbWeight=2 PerfScore 22.00
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz mov edi, dword ptr [rbp-0x50] mov rax, bword ptr [rbp-0x48] @@ -416,17 +416,15 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byr mov word ptr [rax+2*rcx], si inc edi mov dword ptr [rbp-0x50], edi
- mov dword ptr [rbp-0x5C], r14d
jmp G_M13139_IG48
- ;; size=34 bbWeight=2 PerfScore 19.50
+ ;; size=30 bbWeight=2 PerfScore 17.50
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref ; byrRegs -[rax] lea rdi, [rbp-0x58] call [<unknown method>] ; gcr arg pop 0
- mov dword ptr [rbp-0x5C], r14d
jmp G_M13139_IG48
- ;; size=19 bbWeight=2 PerfScore 13.00
+ ;; size=15 bbWeight=2 PerfScore 11.00
G_M13139_IG25: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref cmp edi, 127 jle G_M13139_IG46 @@ -654,18 +652,15 @@ G_M13139_IG43: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, by cmp ecx, eax jl G_M13139_IG38 ;; size=121 bbWeight=16 PerfScore 300.00
-G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
+G_M13139_IG44: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
; byrRegs -[rdi] cmp byte ptr [rbp-0x68], 0
- je SHORT G_M13139_IG45
+ je SHORT G_M13139_IG48 + ;; size=6 bbWeight=4 PerfScore 12.00 +G_M13139_IG45: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
inc r14d
- mov dword ptr [rbp-0x5C], r14d
jmp SHORT G_M13139_IG48
- ;; size=15 bbWeight=2 PerfScore 12.50 -G_M13139_IG45: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz - mov dword ptr [rbp-0x5C], r14d - jmp SHORT G_M13139_IG48 - ;; size=6 bbWeight=1 PerfScore 3.00
+ ;; size=5 bbWeight=2 PerfScore 4.50
G_M13139_IG46: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz mov edi, dword ptr [rbp-0x50] mov rax, bword ptr [rbp-0x48] @@ -677,23 +672,19 @@ G_M13139_IG46: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byr mov word ptr [rax+2*rcx], si inc edi mov dword ptr [rbp-0x50], edi
- mov dword ptr [rbp-0x5C], r14d
jmp SHORT G_M13139_IG48
- ;; size=31 bbWeight=2 PerfScore 19.50
+ ;; size=27 bbWeight=2 PerfScore 17.50
G_M13139_IG47: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref ; byrRegs -[rax] lea rdi, [rbp-0x58] call [<unknown method>] ; gcr arg pop 0
- mov dword ptr [rbp-0x5C], r14d - ;; size=14 bbWeight=2 PerfScore 9.00
+ ;; size=10 bbWeight=2 PerfScore 7.00
G_M13139_IG48: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
- mov eax, dword ptr [rbp-0x5C] - inc eax - cmp eax, r15d - mov r14d, eax
+ inc r14d + cmp r14d, r15d
jl G_M13139_IG07
- ;; size=17 bbWeight=4 PerfScore 11.00
+ ;; size=12 bbWeight=4 PerfScore 6.00
G_M13139_IG49: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r12] lea rdi, [rbp-0x58] @@ -738,7 +729,7 @@ G_M13139_IG54: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1477, prolog size 58, PerfScore 1206.83, instruction count 408, allocated bytes for code 1477 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
+; Total bytes of code 1446, prolog size 58, PerfScore 1194.83, instruction count 399, allocated bytes for code 1446 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
; ============================================================ Unwind Info:

+7 (+1.97%) : 14249.dasm - System.Reflection.RuntimePropertyInfo:SetValue(System.Object,System.Object,int,System.Reflection.Binder,System.Object[],System.Globalization.CultureInfo):this (FullOpts)

@@ -9,24 +9,24 @@ ; 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>
+; V01 arg1 [V01,T07] ( 4, 3.50) ref -> r15 class-hnd single-def <System.Object> +; V02 arg2 [V02,T08] ( 4, 3.50) ref -> r14 class-hnd single-def <System.Object> +; V03 arg3 [V03,T10] ( 4, 3.50) int -> r12 single-def +; V04 arg4 [V04,T09] ( 4, 3.50) 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[]>
+; V06 arg6 [V06,T13] ( 2, 1.50) ref -> [rbp+0x10] class-hnd single-def <System.Globalization.CultureInfo> +; V07 loc0 [V07,T11] ( 3, 3 ) ref -> [rbp-0x38] class-hnd exact spill-single-def <System.Reflection.RuntimeMethodInfo> +; V08 loc1 [V08,T04] ( 8, 7.79) 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,T05] ( 8, 7.75) 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=0000000000000810 {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, 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 PerfScore 3.00
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, 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 PerfScore 13.50 +G_M50642_IG15: ; bbWeight=1, 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 PerfScore 4.25 +G_M50642_IG16: ; bbWeight=0.02, gcVars=0000000000000810 {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 +{V04 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 -{V04 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 90.82, 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:

+17 (+2.10%) : 22431.dasm - System.Linq.Enumerable:Average(System.Collections.Generic.IEnumerable`1[int]):double (FullOpts)

@@ -8,88 +8,88 @@ ; 0 inlinees with PGO data; 14 single block inlinees; 14 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T05] ( 11, 7.50) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
+; V00 arg0 [V00,T06] ( 11, 7.50) ref -> rbx class-hnd single-def <System.Collections.Generic.IEnumerable`1[int]>
;* V01 loc0 [V01 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[int]>
-; V02 loc1 [V02,T08] ( 5, 9.50) long -> rbx
+; V02 loc1 [V02,T04] ( 5, 10.50) long -> rbx
; V03 loc2 [V03,T00] ( 13, 45 ) int -> r13
-; V04 loc3 [V04,T32] ( 4, 9 ) simd32 -> [rbp-0x50] ld-addr-op <System.Numerics.Vector`1[long]>
+; V04 loc3 [V04,T32] ( 4, 9.50) simd32 -> [rbp-0x50] ld-addr-op <System.Numerics.Vector`1[long]>
;* V05 loc4 [V05 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op <System.Numerics.Vector`1[long]> ;* V06 loc5 [V06 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op <System.Numerics.Vector`1[long]>
-; V07 loc6 [V07,T04] ( 9, 10 ) ref -> [rbp-0x98] class-hnd EH-live single-def <<unknown class>> -; V08 loc7 [V08,T09] ( 4, 9 ) long -> r15 -; V09 loc8 [V09,T10] ( 4, 9 ) long -> r14 -; V10 loc9 [V10,T33] ( 2, 1 ) double -> [rbp-0x58] spill-single-def
+; V07 loc6 [V07,T05] ( 9, 10 ) ref -> [rbp-0x98] class-hnd EH-live spill-single-def <<unknown class>> +; V08 loc7 [V08,T09] ( 4, 9.50) long -> rbx +; V09 loc8 [V09,T10] ( 4, 9.50) long -> r15 +; V10 loc9 [V10,T33] ( 2, 1.50) double -> [rbp-0x58] spill-single-def
;# V11 OutArgs [V11 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V12 tmp1 [V12 ] ( 0, 0 ) simd32 -> zero-ref ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[int]> ;* V13 tmp2 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[int]>
-;* V14 tmp3 [V14,T21] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
+;* V14 tmp3 [V14,T22] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
;* V15 tmp4 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <System.Collections.Generic.List`1[int]> ;* V16 tmp5 [V16 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[int]> ;* V17 tmp6 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "updating class info" <int[]> ;* V18 tmp7 [V18 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]> ;* V19 tmp8 [V19 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Span`1[int]> ;* V20 tmp9 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Span`1[int]>
-; V21 tmp10 [V21,T13] ( 4, 2 ) int -> r14 "Inline stloc first use temp" -; V22 tmp11 [V22,T12] ( 4, 2 ) ref -> r15 class-hnd single-def "Inline stloc first use temp" <int[]>
+; V21 tmp10 [V21,T15] ( 4, 2 ) int -> r14 "Inline stloc first use temp" +; V22 tmp11 [V22,T14] ( 4, 2 ) ref -> r15 class-hnd single-def "Inline stloc first use temp" <int[]>
;* V23 tmp12 [V23 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]> ;* V24 tmp13 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp14 [V25 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V26 tmp15 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V27 tmp16 [V27,T15] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V27 tmp16 [V27,T16] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
;* V28 tmp17 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp18 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp19 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[int]> ;* V31 tmp20 [V31 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
-; V32 tmp21 [V32,T17] ( 2, 2 ) int -> r14 "Inlining Arg" -; V33 tmp22 [V33,T16] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
+; V32 tmp21 [V32,T18] ( 2, 2 ) int -> r14 "Inlining Arg" +; V33 tmp22 [V33,T17] ( 2, 2 ) byref -> r15 single-def "Inlining Arg"
;* V34 tmp23 [V34 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V35 tmp24 [V35 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V36 tmp25 [V36 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[int]>
-; V37 tmp26 [V37,T01] ( 3, 24 ) int -> r12 "Inlining Arg"
+; V37 tmp26 [V37,T02] ( 3, 24 ) int -> r12 "Inlining Arg"
; V38 tmp27 [V38,T03] ( 2, 16 ) byref -> rbx "Inlining Arg" ;* V39 tmp28 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp29 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V41 tmp30 [V41 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]> ;* V42 tmp31 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[int]> ; V43 tmp32 [V43,T31] ( 3, 24 ) simd32 -> mm1 "Inlining Arg" <System.Numerics.Vector`1[int]>
-; V44 tmp33 [V44,T11] ( 6, 3 ) long -> rdi ld-addr-op "Inline ldloca(s) first use temp" -;* V45 tmp34 [V45,T30] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V46 tmp35 [V46 ] ( 5, 5 ) simd32 -> [rbp-0x90] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]>
+; V44 tmp33 [V44,T11] ( 6, 6 ) long -> rdi ld-addr-op "Inline ldloca(s) first use temp" +;* V45 tmp34 [V45,T29] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V46 tmp35 [V46 ] ( 5, 10 ) simd32 -> [rbp-0x90] do-not-enreg[XS] addr-exposed ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]>
;* V47 tmp36 [V47 ] ( 0, 0 ) long -> zero-ref "impAppendStmt" ;* V48 tmp37 [V48 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
-;* V49 tmp38 [V49,T14] ( 0, 0 ) int -> zero-ref
+;* V49 tmp38 [V49,T12] ( 0, 0 ) int -> zero-ref
;* V50 tmp39 [V50 ] ( 0, 0 ) byref -> zero-ref "Inline stloc first use temp" ;* V51 tmp40 [V51 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V52 tmp41 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V53 tmp42 [V53 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp"
-; V54 tmp43 [V54,T07] ( 4, 9 ) byref -> r15 "field V01._reference (fldOffset=0x0)" P-INDEP -; V55 tmp44 [V55,T02] ( 11, 23 ) int -> r14 "field V01._length (fldOffset=0x8)" P-INDEP
+; V54 tmp43 [V54,T08] ( 4, 9 ) byref -> r15 "field V01._reference (fldOffset=0x0)" P-INDEP +; V55 tmp44 [V55,T01] ( 11, 23.50) int -> r14 "field V01._length (fldOffset=0x8)" P-INDEP
;* V56 tmp45 [V56 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP ;* V57 tmp46 [V57 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP ;* V58 tmp47 [V58 ] ( 0, 0 ) byref -> zero-ref "field V16._reference (fldOffset=0x0)" P-INDEP ;* V59 tmp48 [V59 ] ( 0, 0 ) int -> zero-ref "field V16._length (fldOffset=0x8)" P-INDEP
-; V60 tmp49 [V60,T22] ( 2, 1 ) byref -> r15 "field V18._reference (fldOffset=0x0)" P-INDEP -; V61 tmp50 [V61,T25] ( 2, 1 ) int -> r14 "field V18._length (fldOffset=0x8)" P-INDEP
+; V60 tmp49 [V60,T23] ( 2, 1 ) byref -> r15 "field V18._reference (fldOffset=0x0)" P-INDEP +; V61 tmp50 [V61,T26] ( 2, 1 ) int -> r14 "field V18._length (fldOffset=0x8)" P-INDEP
;* V62 tmp51 [V62 ] ( 0, 0 ) byref -> zero-ref "field V19._reference (fldOffset=0x0)" P-INDEP ;* V63 tmp52 [V63 ] ( 0, 0 ) int -> zero-ref "field V19._length (fldOffset=0x8)" P-INDEP
-; V64 tmp53 [V64,T18] ( 2, 1 ) byref -> r15 "field V20._reference (fldOffset=0x0)" P-INDEP -; V65 tmp54 [V65,T19] ( 2, 1 ) int -> r14 "field V20._length (fldOffset=0x8)" P-INDEP -; V66 tmp55 [V66,T23] ( 2, 1 ) byref -> r15 single-def "field V23._reference (fldOffset=0x0)" P-INDEP -; V67 tmp56 [V67,T26] ( 2, 1 ) int -> r14 "field V23._length (fldOffset=0x8)" P-INDEP
+; V64 tmp53 [V64,T20] ( 2, 1 ) byref -> r15 "field V20._reference (fldOffset=0x0)" P-INDEP +; V65 tmp54 [V65,T21] ( 2, 1 ) int -> r14 "field V20._length (fldOffset=0x8)" P-INDEP +; V66 tmp55 [V66,T24] ( 2, 1 ) byref -> r15 single-def "field V23._reference (fldOffset=0x0)" P-INDEP +; V67 tmp56 [V67,T27] ( 2, 1 ) int -> r14 "field V23._length (fldOffset=0x8)" P-INDEP
;* V68 tmp57 [V68 ] ( 0, 0 ) byref -> zero-ref single-def "field V30._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp58 [V69 ] ( 0, 0 ) int -> zero-ref "field V30._length (fldOffset=0x8)" P-INDEP
-; V70 tmp59 [V70,T24] ( 2, 1 ) byref -> r15 single-def "field V31._reference (fldOffset=0x0)" P-INDEP -; V71 tmp60 [V71,T27] ( 2, 1 ) int -> r14 "field V31._length (fldOffset=0x8)" P-INDEP
+; V70 tmp59 [V70,T25] ( 2, 1 ) byref -> r15 single-def "field V31._reference (fldOffset=0x0)" P-INDEP +; V71 tmp60 [V71,T28] ( 2, 1 ) int -> r14 "field V31._length (fldOffset=0x8)" P-INDEP
;* V72 tmp61 [V72 ] ( 0, 0 ) byref -> zero-ref "field V36._reference (fldOffset=0x0)" P-INDEP ;* V73 tmp62 [V73 ] ( 0, 0 ) int -> zero-ref "field V36._length (fldOffset=0x8)" P-INDEP ;* V74 tmp63 [V74 ] ( 0, 0 ) byref -> zero-ref "field V41._reference (fldOffset=0x0)" P-INDEP ;* V75 tmp64 [V75 ] ( 0, 0 ) int -> zero-ref "field V41._length (fldOffset=0x8)" P-INDEP ;* V76 tmp65 [V76 ] ( 0, 0 ) byref -> zero-ref "field V42._reference (fldOffset=0x0)" P-INDEP ;* V77 tmp66 [V77 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP
-; V78 PSPSym [V78,T29] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym" -; V79 cse0 [V79,T20] ( 2, 1 ) long -> rbx "CSE - moderate" -; V80 cse1 [V80,T28] ( 2, 1 ) long -> rdi "CSE - moderate" -; V81 cse2 [V81,T06] ( 10, 9.50) ref -> rsi multi-def "CSE - aggressive"
+; V78 PSPSym [V78,T30] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym" +; V79 cse0 [V79,T13] ( 2, 2 ) long -> rbx "CSE - moderate" +; V80 cse1 [V80,T19] ( 2, 2 ) long -> rdi "CSE - moderate" +; V81 cse2 [V81,T07] ( 10, 9.50) ref -> rsi multi-def "CSE - aggressive"
; ; Lcl frame size = 120 @@ -212,7 +212,7 @@ G_M61600_IG10: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, vmovups ymmword ptr [rbp-0x50], ymm0 jle SHORT G_M61600_IG08 ;; size=61 bbWeight=4 PerfScore 71.33
-G_M61600_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+G_M61600_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
; byrRegs -[rbx] vmovups ymm0, ymmword ptr [rbp-0x50] vmovups ymmword ptr [rbp-0x90], ymm0 @@ -221,7 +221,7 @@ G_M61600_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, add rdi, qword ptr [rbp-0x80] mov rbx, rdi add rbx, qword ptr [rbp-0x78]
- ;; size=38 bbWeight=0.50 PerfScore 6.12
+ ;; size=38 bbWeight=1 PerfScore 12.25
G_M61600_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz cmp r13d, r14d jae SHORT G_M61600_IG14 @@ -236,15 +236,15 @@ G_M61600_IG13: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr cmp r13d, r14d jb SHORT G_M61600_IG13 ;; size=27 bbWeight=4 PerfScore 29.00
-G_M61600_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61600_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r15] vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, rbx vxorps xmm1, xmm1, xmm1 vcvtsi2sd xmm1, xmm1, r14d vdivsd xmm0, xmm0, xmm1
- ;; size=22 bbWeight=0.50 PerfScore 12.33 -G_M61600_IG15: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=22 bbWeight=1 PerfScore 24.67 +G_M61600_IG15: ; bbWeight=1, epilog, nogc, extend
vzeroupper add rsp, 120 pop rbx @@ -254,7 +254,7 @@ G_M61600_IG15: ; bbWeight=0.50, epilog, nogc, extend pop r15 pop rbp ret
- ;; size=18 bbWeight=0.50 PerfScore 2.62
+ ;; size=18 bbWeight=1 PerfScore 5.25
G_M61600_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs +[rbx] mov rdi, rbx @@ -263,30 +263,27 @@ G_M61600_IG16: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 call [r11]<unknown method> ; gcrRegs -[rbx rdi] +[rax] ; gcr arg pop 0
- mov rbx, rax - ; gcrRegs +[rbx] - mov gword ptr [rbp-0x98], rbx
+ mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V07}
- ;; size=26 bbWeight=0.50 PerfScore 2.38 -G_M61600_IG17: ; bbWeight=0.50, gcVars=0000000000000010 {V07}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - mov rdi, rbx
+ ;; size=23 bbWeight=0.50 PerfScore 2.25 +G_M61600_IG17: ; bbWeight=0.50, gcVars=0000000000000020 {V07}, gcrefRegs=0001 {rax}, byrefRegs=0000 {}, gcvars, byref, isz + mov rdi, rax
; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method>
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rax rdi]
; gcr arg pop 0 test eax, eax je G_M61600_IG21
- mov rdi, rbx
+ mov rdi, gword ptr [rbp-0x98]
; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0
- movsxd r15, eax - mov r14d, 1 - mov rdi, rbx
+ movsxd rbx, eax + mov r15d, 1 + mov rdi, gword ptr [rbp-0x98]
; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; function address call [r11]<unknown method> @@ -294,19 +291,19 @@ G_M61600_IG17: ; bbWeight=0.50, gcVars=0000000000000010 {V07}, gcrefRegs= ; gcr arg pop 0 test eax, eax je SHORT G_M61600_IG19
- ;; size=69 bbWeight=0.50 PerfScore 6.75 -G_M61600_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rdi, rbx
+ ;; size=77 bbWeight=0.50 PerfScore 7.50 +G_M61600_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov rdi, gword ptr [rbp-0x98]
; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rdi] ; gcr arg pop 0 movsxd rdi, eax
- add r15, rdi
+ add rbx, rdi
jo SHORT G_M61600_IG20
- inc r14 - mov rdi, rbx
+ inc r15 + mov rdi, gword ptr [rbp-0x98]
; gcrRegs +[rdi] mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> @@ -314,37 +311,35 @@ G_M61600_IG18: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcr arg pop 0 test eax, eax jne SHORT G_M61600_IG18
- ;; size=47 bbWeight=4 PerfScore 40.00 -G_M61600_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=55 bbWeight=4 PerfScore 46.00 +G_M61600_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
vxorps xmm0, xmm0, xmm0
- vcvtsi2sd xmm0, xmm0, r15
+ vcvtsi2sd xmm0, xmm0, rbx
vxorps xmm1, xmm1, xmm1
- vcvtsi2sd xmm1, xmm1, r14
+ vcvtsi2sd xmm1, xmm1, r15
vdivsd xmm0, xmm0, xmm1 vmovsd qword ptr [rbp-0x58], xmm0 jmp SHORT G_M61600_IG22 ...

+6 (+4.35%) : 2847.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)

@@ -10,14 +10,14 @@ ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ; V01 arg1 [V01,T04] ( 3, 3 ) int -> rdx single-def ; V02 arg2 [V02,T05] ( 3, 3 ) int -> rbx single-def
-; V03 arg3 [V03,T06] ( 3, 3 ) struct ( 8) [rbp-0x10] do-not-enreg[S] single-def <System.Formats.Asn1.Asn1Tag>
+; V03 arg3 [V03,T06] ( 3, 3 ) struct ( 8) [rbp-0x20] do-not-enreg[S] single-def <System.Formats.Asn1.Asn1Tag>
; V04 arg4 [V04,T07] ( 3, 3 ) int -> r8 single-def
-; V05 arg5 [V05,T10] ( 2, 1 ) byref -> [rbp+0x10] single-def -; V06 arg6 [V06,T11] ( 2, 1 ) byref -> [rbp+0x18] single-def
+; V05 arg5 [V05,T10] ( 2, 1.50) byref -> r15 single-def +; V06 arg6 [V06,T11] ( 2, 1.50) byref -> r14 single-def
;* V07 loc0 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V08 loc1 [V08 ] ( 2, 1.50) int -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op
+; V08 loc1 [V08 ] ( 2, 2 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op
;* V09 loc2 [V09 ] ( 0, 0 ) ubyte -> zero-ref
-; V10 loc3 [V10,T01] ( 4, 9 ) long -> rcx
+; V10 loc3 [V10,T01] ( 4, 9.50) long -> rcx
; V11 loc4 [V11,T00] ( 5, 16.50) int -> rdi ;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V13 tmp1 [V13,T12] ( 2, 1 ) int -> rcx @@ -30,45 +30,49 @@ G_M61562_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
+ push r15 + push r14
push rbx sub rsp, 24
- lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x10], r8
+ lea rbp, [rsp+0x30] + mov qword ptr [rbp-0x20], r8
mov ebx, ecx mov r8d, r9d
- ;; size=20 bbWeight=1 PerfScore 4.25 -G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ mov r15, bword ptr [rbp+0x10] + ; byrRegs +[r15] + mov r14, bword ptr [rbp+0x18] + ; byrRegs +[r14] + ;; size=32 bbWeight=1 PerfScore 8.25 +G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=C080 {rdi r14 r15}, byref, isz
; byrRegs +[rdi]
- lea r9, [rbp-0x18] - mov rcx, qword ptr [rbp-0x10]
+ lea r9, [rbp-0x28] + mov rcx, qword ptr [rbp-0x20]
call [System.Formats.Asn1.AsnDecoder:GetIntegerContents(System.ReadOnlySpan`1[ubyte],int,System.Formats.Asn1.Asn1Tag,int,byref):System.ReadOnlySpan`1[ubyte]] ; byrRegs -[rdi] +[rax] ; gcr arg pop 0 cmp edx, ebx jle SHORT G_M61562_IG06 ;; size=18 bbWeight=1 PerfScore 5.75
-G_M61562_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61562_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref
; byrRegs -[rax] xor eax, eax
- mov rbx, bword ptr [rbp+0x10] - ; byrRegs +[rbx] - mov qword ptr [rbx], rax - ;; size=9 bbWeight=0.50 PerfScore 1.12 -G_M61562_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[rbx] - mov rbx, bword ptr [rbp+0x18] - ; byrRegs +[rbx] - mov dword ptr [rbx], eax - ;; size=6 bbWeight=0.50 PerfScore 1.00
+ mov qword ptr [r15], rax + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M61562_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref + ; byrRegs -[r15] + mov dword ptr [r14], eax + ;; size=3 bbWeight=0.50 PerfScore 0.50
G_M61562_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rbx]
+ ; byrRegs -[r14]
add rsp, 24 pop rbx
+ pop r14 + pop r15
pop rbp ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M61562_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, gcvars, byref, isz - ; byrRegs +[rax]
+ ;; size=11 bbWeight=0.50 PerfScore 1.62 +G_M61562_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=C001 {rax r14 r15}, gcvars, byref, isz + ; byrRegs +[rax r14-r15]
test edx, edx je SHORT G_M61562_IG11 mov ecx, -1 @@ -77,11 +81,11 @@ G_M61562_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 cmove ecx, edi movsxd rcx, ecx ;; size=20 bbWeight=0.50 PerfScore 2.62
-G_M61562_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M61562_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=C001 {rax r14 r15}, byref, isz
test edx, edx jle SHORT G_M61562_IG09 ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M61562_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M61562_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=C001 {rax r14 r15}, byref, isz
mov esi, edi movzx rsi, byte ptr [rax+rsi] shl rcx, 8 @@ -90,30 +94,29 @@ G_M61562_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byr cmp edi, edx jl SHORT G_M61562_IG08 ;; size=20 bbWeight=4 PerfScore 18.00
-G_M61562_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61562_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref
; byrRegs -[rax]
- mov eax, dword ptr [rbp-0x18] - mov rbx, bword ptr [rbp+0x18] - ; byrRegs +[rbx] - mov dword ptr [rbx], eax - mov rbx, bword ptr [rbp+0x10] - mov qword ptr [rbx], rcx
+ mov eax, dword ptr [rbp-0x28] + mov dword ptr [r14], eax + mov qword ptr [r15], rcx
mov eax, 1
- ;; size=21 bbWeight=0.50 PerfScore 2.62 -G_M61562_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=14 bbWeight=1 PerfScore 3.25 +G_M61562_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 24 pop rbx
+ pop r14 + pop r15
pop rbp ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M61562_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rbx]
+ ; byrRegs -[r14-r15]
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 138, prolog size 20, PerfScore 38.25, instruction count 49, allocated bytes for code 138 (MethodHash=ead60f85) for method System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
+; Total bytes of code 144, prolog size 32, PerfScore 44.50, instruction count 53, allocated bytes for code 144 (MethodHash=ead60f85) for method System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
; ============================================================ Unwind Info: @@ -121,11 +124,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x0A + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + 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)

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,101.24) 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.99, 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.99 PerfScore 0.25 +G_M4100_IG06: ; bbWeight=0.99, epilog, nogc, extend
add rsp, 96 pop rbp ret
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=0.99 PerfScore 1.74 +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 352.33, instruction count 20, allocated bytes for code 53 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
; ============================================================ Unwind Info:

-30 (-15.54%) : 7814.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)

@@ -5,35 +5,33 @@ ; optimized using Dynamic PGO ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 5, 3 ) long -> rdi single-def -; V01 arg1 [V01,T01] ( 5, 4 ) ref -> rsi class-hnd single-def <System.Object>
+; V00 arg0 [V00,T04] ( 5, 3 ) long -> rdi single-def +; V01 arg1 [V01,T02] ( 5, 4 ) ref -> rsi class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V04 tmp1 [V04,T07] ( 2, 4 ) ref -> rcx class-hnd single-def "impAppendStmt" <int[]> -; V05 tmp2 [V05,T10] ( 5, 2 ) int -> r11 "Inline return value spill temp" -; V06 tmp3 [V06,T06] ( 4, 4.40) byref -> rcx single-def "Inline stloc first use temp" -; V07 tmp4 [V07,T00] ( 3, 6.40) long -> rdx "Inlining Arg" -; V08 tmp5 [V08,T05] ( 4, 4.60) int -> rax "Inline stloc first use temp" -; V09 tmp6 [V09,T02] ( 5, 5.80) int -> r8 "Inline stloc first use temp" -; V10 tmp7 [V10,T08] ( 5, 3.60) byref -> r9 "Inline stloc first use temp" -; V11 tmp8 [V11,T04] ( 5, 4.80) int -> r10 "Inline stloc first use temp" -; V12 tmp9 [V12,T09] ( 2, 2.40) long -> r11 "Inline stloc first use temp"
+; V04 tmp1 [V04,T08] ( 2, 4 ) ref -> rcx class-hnd single-def "impAppendStmt" <int[]> +; V05 tmp2 [V05,T00] ( 4,101 ) int -> r11 "Inline return value spill temp" +; V06 tmp3 [V06,T07] ( 4, 4.40) byref -> rcx single-def "Inline stloc first use temp" +; V07 tmp4 [V07,T01] ( 3, 6.40) long -> rdx "Inlining Arg" +; V08 tmp5 [V08,T06] ( 4, 4.60) int -> rax "Inline stloc first use temp" +; V09 tmp6 [V09,T03] ( 5, 5.80) int -> r8 "Inline stloc first use temp" +; V10 tmp7 [V10,T09] ( 5, 3.60) byref -> r9 "Inline stloc first use temp" +; V11 tmp8 [V11,T05] ( 5, 4.80) int -> r10 "Inline stloc first use temp" +; V12 tmp9 [V12,T10] ( 2, 2.40) long -> r11 "Inline stloc first use temp"
; V13 tmp10 [V13,T11] ( 3, 0 ) long -> r11 "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 = 8
+; Lcl frame size = 0
G_M32392_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- push rbx - push rax - lea rbp, [rsp+0x10] - ;; size=8 bbWeight=1 PerfScore 3.50
+ mov rbp, rsp + ;; size=4 bbWeight=1 PerfScore 1.25
G_M32392_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref ; gcrRegs +[rsi] mov rax, 0xD1FFAB1E ; data for <unknown class>:<unknown field> @@ -61,85 +59,67 @@ G_M32392_IG03: ; bbWeight=1.20, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx mov r11, qword ptr [r9+0x08] and r10d, -2 cmp r11, rdx
- je SHORT G_M32392_IG15
+ je SHORT G_M32392_IG12
;; size=31 bbWeight=1.20 PerfScore 8.70 G_M32392_IG04: ; bbWeight=1.20, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx}, byref, isz ; byrRegs -[r9] test r10d, r10d
- jne SHORT G_M32392_IG08 - ;; size=5 bbWeight=1.20 PerfScore 1.50 -G_M32392_IG05: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rcx] - mov r11d, 2 - cmp r11d, 1 - jne SHORT G_M32392_IG11 - ;; size=12 bbWeight=1 PerfScore 1.50 -G_M32392_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref - mov rax, rsi - ; gcrRegs +[rax] - ;; size=3 bbWeight=1 PerfScore 0.25 -G_M32392_IG07: ; bbWeight=1, epilog, nogc, extend - add rsp, 8 - pop rbx - pop rbp - ret - ;; size=7 bbWeight=1 PerfScore 2.25 -G_M32392_IG08: ; bbWeight=1.20, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx}, gcvars, byref, isz - ; gcrRegs -[rax] - ; byrRegs +[rcx]
+ je SHORT G_M32392_IG05
inc r8d add eax, r8d and eax, dword ptr [rcx+0x04] cmp r8d, 8 jl SHORT G_M32392_IG03
- ;; size=15 bbWeight=1.20 PerfScore 5.70 -G_M32392_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ ;; size=20 bbWeight=1.20 PerfScore 7.20 +G_M32392_IG05: ; bbWeight=100, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
- jmp SHORT G_M32392_IG05 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M32392_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ mov r11d, 2 + ;; size=6 bbWeight=100 PerfScore 25.00 +G_M32392_IG06: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
cmp r11d, 1
- je SHORT G_M32392_IG06 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M32392_IG11: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M32392_IG08 + mov rax, rsi + ; gcrRegs +[rax] + ;; size=9 bbWeight=1 PerfScore 1.50 +G_M32392_IG07: ; bbWeight=1, epilog, nogc, extend + pop rbp + ret + ;; size=2 bbWeight=1 PerfScore 1.50 +G_M32392_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax]
test r11d, r11d
- jne SHORT G_M32392_IG13
+ jne SHORT G_M32392_IG10
xor rax, rax ; gcrRegs +[rax] ;; size=7 bbWeight=0 PerfScore 0.00
-G_M32392_IG12: ; bbWeight=0, epilog, nogc, extend - add rsp, 8 - pop rbx
+G_M32392_IG09: ; bbWeight=0, epilog, nogc, extend
pop rbp ret
- ;; size=7 bbWeight=0 PerfScore 0.00 -G_M32392_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=2 bbWeight=0 PerfScore 0.00 +G_M32392_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] call <unknown method> ; gcrRegs -[rsi] +[rax] ; gcr arg pop 0 nop ;; size=6 bbWeight=0 PerfScore 0.00
-G_M32392_IG14: ; bbWeight=0, epilog, nogc, extend - add rsp, 8 - pop rbx
+G_M32392_IG11: ; bbWeight=0, epilog, nogc, extend
pop rbp ret
- ;; size=7 bbWeight=0 PerfScore 0.00 -G_M32392_IG15: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, gcvars, byref, isz
+ ;; size=2 bbWeight=0 PerfScore 0.00 +G_M32392_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, gcvars, byref, isz
; gcrRegs -[rax] +[rsi] ; byrRegs +[rcx r9]
- mov rbx, rdi - xor rbx, qword ptr [r9+0x10] - mov r11, rbx
+ mov r11, rdi + xor r11, qword ptr [r9+0x10]
cmp r11, 1 ja SHORT G_M32392_IG04 cmp r10d, dword ptr [r9] jne SHORT G_M32392_IG05
- jmp SHORT G_M32392_IG10 - ;; size=23 bbWeight=0 PerfScore 0.00
+ jmp SHORT G_M32392_IG06 + ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 193, prolog size 8, PerfScore 33.65, instruction count 63, allocated bytes for code 193 (MethodHash=b7ab8177) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 163, prolog size 4, PerfScore 55.40, instruction count 51, allocated bytes for code 163 (MethodHash=b7ab8177) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -147,11 +127,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 0 * 8 + 8 = 8 = 0x08 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-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,200.98) ubyte -> r15
; V02 loc1 [V02,T04] ( 4,199.98) ref -> r14 class-hnd <<unknown class>> ; V03 loc2 [V03,T07] ( 3,100 ) ref -> r13 class-hnd exact <<unknown class>>
-; V04 loc3 [V04,T00] ( 17,400.98) int -> rbx
+; 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=1.00, 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=1.00 PerfScore 0.25 +G_M16914_IG04: ; bbWeight=1.00, epilog, nogc, extend
add rsp, 120 pop rbx pop r12 @@ -130,9 +59,80 @@ G_M16914_IG10: ; bbWeight=0, epilog, nogc, extend pop r15 pop rbp ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=15 bbWeight=1.00 PerfScore 4.25 +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_IG12 + 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=1.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13-r14] + jmp SHORT G_M16914_IG03 + ;; size=2 bbWeight=1.00 PerfScore 2.00 +G_M16914_IG09: ; bbWeight=1.00, gcrefRegs=6000 {r13 r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r13-r14] + cmp ebx, r12d + jae SHORT G_M16914_IG11 + 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=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 + jmp SHORT G_M16914_IG03 + ;; size=18 bbWeight=1.00 PerfScore 4.25 +G_M16914_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r13-r14] + call CORINFO_HELP_RNGCHKFAIL + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M16914_IG12: ; 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_IG13: ; 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 1210.10, 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:

+49 (+10.54%) : 128276.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)

@@ -10,8 +10,8 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 20, 10.57) long -> rdi single-def
-; V01 loc0 [V01,T00] ( 49, 18.45) long -> rbx -; V02 loc1 [V02,T02] ( 16, 11.32) long -> rcx
+; V01 loc0 [V01,T00] ( 51, 25.79) long -> rbx +; V02 loc1 [V02,T02] ( 16, 12.56) long -> rcx
;* V03 loc2 [V03 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ubyte]> ;* V04 loc3 [V04 ] ( 0, 0 ) int -> zero-ref ;* V05 loc4 [V05 ] ( 0, 0 ) simd32 -> zero-ref <System.Runtime.Intrinsics.Vector256`1[ubyte]> @@ -33,7 +33,7 @@ ;* V21 loc20 [V21 ] ( 0, 0 ) int -> zero-ref ;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V23 tmp1 [V23 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V24 tmp2 [V24,T03] ( 12, 4.00) int -> rax "Single return block return value"
+; V24 tmp2 [V24,T03] ( 12, 7.77) int -> rax "Single return block return value"
; ; Lcl frame size = 8 @@ -57,41 +57,41 @@ G_M37155_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, cmp rcx, 8 jae SHORT G_M37155_IG06 ;; size=6 bbWeight=1 PerfScore 1.25
-G_M37155_IG04: ; bbWeight=0.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M37155_IG04: ; bbWeight=2.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp rcx, 4 jb G_M37155_IG18
- ;; size=10 bbWeight=0.82 PerfScore 1.02
+ ;; size=10 bbWeight=2.06 PerfScore 2.58
G_M37155_IG05: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz jmp SHORT G_M37155_IG14 ;; size=2 bbWeight=0.32 PerfScore 0.64 G_M37155_IG06: ; bbWeight=0.52, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add rcx, -8 cmp byte ptr [rdi+rbx], 0
- je G_M37155_IG28
+ je G_M37155_IG30
cmp byte ptr [rdi+rbx+0x01], 0
- je G_M37155_IG40 - cmp byte ptr [rdi+rbx+0x02], 0
je G_M37155_IG31
+ cmp byte ptr [rdi+rbx+0x02], 0 + je G_M37155_IG32
;; size=36 bbWeight=0.52 PerfScore 6.31 G_M37155_IG07: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp byte ptr [rdi+rbx+0x03], 0
- je G_M37155_IG30
+ je G_M37155_IG33
;; size=11 bbWeight=0.47 PerfScore 1.90 G_M37155_IG08: ; bbWeight=0.43, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp byte ptr [rdi+rbx+0x04], 0
- je G_M37155_IG32
+ je G_M37155_IG36
;; size=11 bbWeight=0.43 PerfScore 1.71 G_M37155_IG09: ; bbWeight=0.42, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp byte ptr [rdi+rbx+0x05], 0
- je G_M37155_IG33
+ je G_M37155_IG37
;; size=11 bbWeight=0.42 PerfScore 1.67 G_M37155_IG10: ; bbWeight=0.41, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp byte ptr [rdi+rbx+0x06], 0
- je G_M37155_IG29
+ je G_M37155_IG35
;; size=11 bbWeight=0.41 PerfScore 1.63 G_M37155_IG11: ; bbWeight=0.34, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp byte ptr [rdi+rbx+0x07], 0
- je G_M37155_IG34
+ je G_M37155_IG38
;; size=11 bbWeight=0.34 PerfScore 1.36 G_M37155_IG12: ; bbWeight=1.34, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add rbx, 8 @@ -104,17 +104,17 @@ G_M37155_IG13: ; bbWeight=0.82, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr G_M37155_IG14: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add rcx, -4 cmp byte ptr [rdi+rbx], 0
- je G_M37155_IG28
+ je G_M37155_IG30
;; size=14 bbWeight=0.32 PerfScore 1.36 G_M37155_IG15: ; bbWeight=0.31, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp byte ptr [rdi+rbx+0x01], 0
- je G_M37155_IG40 - cmp byte ptr [rdi+rbx+0x02], 0
je G_M37155_IG31
+ cmp byte ptr [rdi+rbx+0x02], 0 + je G_M37155_IG32
;; size=22 bbWeight=0.31 PerfScore 2.47 G_M37155_IG16: ; bbWeight=0.30, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp byte ptr [rdi+rbx+0x03], 0
- je G_M37155_IG30
+ je G_M37155_IG33
;; size=11 bbWeight=0.30 PerfScore 1.22 G_M37155_IG17: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref add rbx, 4 @@ -123,137 +123,147 @@ G_M37155_IG18: ; bbWeight=0.29, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr test rcx, rcx je SHORT G_M37155_IG21 ;; size=5 bbWeight=0.29 PerfScore 0.36
-G_M37155_IG19: ; bbWeight=1.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M37155_IG19: ; bbWeight=1.18, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
dec rcx cmp byte ptr [rdi+rbx], 0
- je SHORT G_M37155_IG28 - ;; size=9 bbWeight=1.18 PerfScore 4.99
+ je G_M37155_IG30 + ;; size=13 bbWeight=1.18 PerfScore 4.99
G_M37155_IG20: ; bbWeight=1.91, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz inc rbx test rcx, rcx jne SHORT G_M37155_IG19 ;; size=8 bbWeight=1.91 PerfScore 2.86
-G_M37155_IG21: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M37155_IG21: ; bbWeight=2.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp rbx, 0xD1FFAB1E
- jae G_M37155_IG39
+ jae G_M37155_IG42 + ;; size=13 bbWeight=2.06 PerfScore 2.58 +G_M37155_IG22: ; bbWeight=0.73, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov ecx, edi add rcx, rbx test cl, 31
- jne SHORT G_M37155_IG25 - ;; size=23 bbWeight=0.73 PerfScore 2.20 -G_M37155_IG22: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M37155_IG28 + ;; size=10 bbWeight=0.73 PerfScore 1.28 +G_M37155_IG23: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov eax, ebx neg eax add eax, 0xD1FFAB1E and eax, -32 mov ecx, eax cmp rcx, rbx
- jbe SHORT G_M37155_IG36
+ jbe SHORT G_M37155_IG26
;; size=19 bbWeight=0.47 PerfScore 1.19
-G_M37155_IG23: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M37155_IG24: ; bbWeight=0.47, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
vxorps ymm0, ymm0, ymm0 vpcmpeqb ymm0, ymm0, ymmword ptr [rdi+rbx] vpmovmskb eax, ymm0 test eax, eax
- je SHORT G_M37155_IG35
+ je G_M37155_IG39
tzcnt eax, eax add eax, ebx
- ;; size=23 bbWeight=0.47 PerfScore 4.66 -G_M37155_IG24: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=27 bbWeight=0.47 PerfScore 4.66 +G_M37155_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
vzeroupper add rsp, 8 pop rbx pop rbp ret ;; size=10 bbWeight=1 PerfScore 3.25
-G_M37155_IG25: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - vxorps xmm0, xmm0, xmm0 - vpcmpeqb xmm0, xmm0, xmmword ptr [rdi+rbx] - vpmovmskb eax, xmm0 - test eax, eax - je SHORT G_M37155_IG27 - ;; size=17 bbWeight=0.33 PerfScore 2.17 -G_M37155_IG26: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - tzcnt eax, eax - add eax, ebx - jmp SHORT G_M37155_IG24 - ;; size=8 bbWeight=0.26 PerfScore 1.10 -G_M37155_IG27: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add rbx, 16 - jmp SHORT G_M37155_IG22 - ;; size=6 bbWeight=0.07 PerfScore 0.16 -G_M37155_IG28: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M37155_IG26: ; bbWeight=2.06, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov eax, ebx
- jmp SHORT G_M37155_IG24 - ;; size=4 bbWeight=0.07 PerfScore 0.15 -G_M37155_IG29: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea eax, [rbx+0x06] - jmp SHORT G_M37155_IG24 - ;; size=5 bbWeight=0.07 PerfScore 0.17 -G_M37155_IG30: ; bbWeight=0.06, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea eax, [rbx+0x03] - jmp SHORT G_M37155_IG24 - ;; size=5 bbWeight=0.06 PerfScore 0.15 -G_M37155_IG31: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea eax, [rbx+0x02] - jmp SHORT G_M37155_IG24 - ;; size=5 bbWeight=0.05 PerfScore 0.12 -G_M37155_IG32: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea eax, [rbx+0x04] - jmp SHORT G_M37155_IG24 - ;; size=5 bbWeight=0.01 PerfScore 0.03 -G_M37155_IG33: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea eax, [rbx+0x05] - jmp SHORT G_M37155_IG24 - ;; size=5 bbWeight=0.01 PerfScore 0.03 -G_M37155_IG34: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - lea eax, [rbx+0x07] - jmp SHORT G_M37155_IG24 - ;; size=5 bbWeight=0.01 PerfScore 0.01 -G_M37155_IG35: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add rbx, 32 - cmp rcx, rbx - ja SHORT G_M37155_IG23 - ;; size=9 bbWeight=0 PerfScore 0.00 -G_M37155_IG36: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - mov ecx, ebx - neg ecx - add ecx, 0xD1FFAB1E - and ecx, -16 - mov eax, ecx
+ neg eax + add eax, 0xD1FFAB1E + and eax, -16
cmp rax, rbx
- jbe SHORT G_M37155_IG37 - vxorps xmm0, xmm0, xmm0 - vpcmpeqb xmm0, xmm0, xmmword ptr [rdi+rbx] - vpmovmskb eax, xmm0 - test eax, eax - jne SHORT G_M37155_IG38 - add rbx, 16 - ;; size=41 bbWeight=0 PerfScore 0.00 -G_M37155_IG37: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ja G_M37155_IG40 + ;; size=21 bbWeight=2.06 PerfScore 4.64 +G_M37155_IG27: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
cmp rbx, 0xD1FFAB1E
- jae SHORT G_M37155_IG39
+ jae G_M37155_IG42
mov rcx, rbx neg rcx add rcx, 0xD1FFAB1E jmp G_M37155_IG03
- ;; size=27 bbWeight=0 PerfScore 0.00 -G_M37155_IG38: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=31 bbWeight=0 PerfScore 0.00 +G_M37155_IG28: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + vxorps xmm0, xmm0, xmm0 + vpcmpeqb xmm0, xmm0, xmmword ptr [rdi+rbx] + vpmovmskb eax, xmm0 + test eax, eax + je SHORT G_M37155_IG34 + ;; size=17 bbWeight=0.33 PerfScore 2.17 +G_M37155_IG29: ; bbWeight=0.26, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
tzcnt eax, eax add eax, ebx
- jmp G_M37155_IG24 - ;; size=11 bbWeight=0 PerfScore 0.00
...

+11 (+14.29%) : 95709.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span1[System.Collections.IntStruct]) (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.IntStruct]>
-; V01 loc0 [V01,T06] ( 5, 97.80) int -> rax
+; V01 loc0 [V01,T04] ( 5, 97.80) int -> rax
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct> ; V03 loc2 [V03,T00] ( 8,247.78) int -> rax ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -22,12 +22,12 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> ; V16 tmp12 [V16,T01] ( 6,147.97) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V17 tmp13 [V17,T09] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 86.85) int -> rdx "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4,101.69) int -> rdx "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP @@ -36,7 +36,7 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 76.91) int -> r8 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 91.75) int -> r8 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ; V30 cse0 [V30,T08] ( 3, 39.77) int -> rsi "CSE - moderate" @@ -53,7 +53,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr xor eax, eax dec esi test esi, esi
- jle SHORT G_M24360_IG08
+ jle SHORT G_M24360_IG12
;; size=8 bbWeight=1 PerfScore 1.75 G_M24360_IG03: ; bbWeight=10.63, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz lea ecx, [rax+0x01] @@ -74,15 +74,18 @@ G_M24360_IG04: ; bbWeight=30.06, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, G_M24360_IG05: ; bbWeight=40.69, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs -[r8] test eax, eax
- jl SHORT G_M24360_IG07
+ jl SHORT G_M24360_IG08
;; size=4 bbWeight=40.69 PerfScore 50.86 G_M24360_IG06: ; bbWeight=38.45, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz movsxd r8, eax mov r8d, dword ptr [rdi+4*r8] cmp edx, r8d
- jl SHORT G_M24360_IG04
+ jge SHORT G_M24360_IG10
;; size=12 bbWeight=38.45 PerfScore 134.58
-G_M24360_IG07: ; bbWeight=37.77, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M24360_IG07: ; bbWeight=22.93, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + jmp SHORT G_M24360_IG04 + ;; size=2 bbWeight=22.93 PerfScore 45.86 +G_M24360_IG08: ; bbWeight=37.77, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
inc eax cdqe mov dword ptr [rdi+4*rax], edx @@ -90,13 +93,25 @@ G_M24360_IG07: ; bbWeight=37.77, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, cmp eax, esi jl SHORT G_M24360_IG03 ;; size=13 bbWeight=37.77 PerfScore 113.31
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rdi] + jmp SHORT G_M24360_IG12 + ;; size=2 bbWeight=1 PerfScore 2.00 +G_M24360_IG10: ; bbWeight=14.84, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + ; byrRegs +[rdi] + cmp edx, r8d + jle SHORT G_M24360_IG08 + ;; size=5 bbWeight=14.84 PerfScore 18.55 +G_M24360_IG11: ; bbWeight=14.83, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + jmp SHORT G_M24360_IG08 + ;; size=2 bbWeight=14.83 PerfScore 29.67 +G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 77, prolog size 4, PerfScore 496.52, instruction count 31, allocated bytes for code 77 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 88, prolog size 4, PerfScore 592.60, instruction count 36, allocated bytes for code 88 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================ Unwind Info:

+11 (+14.29%) : 84874.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span1[System.Collections.IntStruct]) (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.IntStruct]>
-; V01 loc0 [V01,T06] ( 5, 96.19) int -> rax
+; V01 loc0 [V01,T04] ( 5, 96.19) int -> rax
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct> ; V03 loc2 [V03,T00] ( 8,240.54) int -> rax ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -22,12 +22,12 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> ; V16 tmp12 [V16,T01] ( 6,143.99) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V17 tmp13 [V17,T09] ( 2, 2 ) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 84.95) int -> rdx "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4, 99.72) int -> rdx "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP @@ -36,7 +36,7 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 74.70) int -> r8 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 89.48) int -> r8 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ; V30 cse0 [V30,T08] ( 3, 39.32) int -> rsi "CSE - moderate" @@ -53,7 +53,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byr xor eax, eax dec esi test esi, esi
- jle SHORT G_M24360_IG08
+ jle SHORT G_M24360_IG12
;; size=8 bbWeight=1 PerfScore 1.75 G_M24360_IG03: ; bbWeight=10.28, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz lea ecx, [rax+0x01] @@ -74,15 +74,18 @@ G_M24360_IG04: ; bbWeight=29.02, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, G_M24360_IG05: ; bbWeight=39.52, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz ; byrRegs -[r8] test eax, eax
- jl SHORT G_M24360_IG07
+ jl SHORT G_M24360_IG08
;; size=4 bbWeight=39.52 PerfScore 49.40 G_M24360_IG06: ; bbWeight=37.35, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz movsxd r8, eax mov r8d, dword ptr [rdi+4*r8] cmp edx, r8d
- jl SHORT G_M24360_IG04
+ jge SHORT G_M24360_IG10
;; size=12 bbWeight=37.35 PerfScore 130.73
-G_M24360_IG07: ; bbWeight=37.32, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+G_M24360_IG07: ; bbWeight=22.55, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + jmp SHORT G_M24360_IG04 + ;; size=2 bbWeight=22.55 PerfScore 45.09 +G_M24360_IG08: ; bbWeight=37.32, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
inc eax cdqe mov dword ptr [rdi+4*rax], edx @@ -90,13 +93,25 @@ G_M24360_IG07: ; bbWeight=37.32, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, cmp eax, esi jl SHORT G_M24360_IG03 ;; size=13 bbWeight=37.32 PerfScore 111.96
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rdi] + jmp SHORT G_M24360_IG12 + ;; size=2 bbWeight=1 PerfScore 2.00 +G_M24360_IG10: ; bbWeight=14.78, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + ; byrRegs +[rdi] + cmp edx, r8d + jle SHORT G_M24360_IG08 + ;; size=5 bbWeight=14.78 PerfScore 18.47 +G_M24360_IG11: ; bbWeight=14.77, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz + jmp SHORT G_M24360_IG08 + ;; size=2 bbWeight=14.77 PerfScore 29.53 +G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rdi] pop rbp ret ;; size=2 bbWeight=1 PerfScore 1.50
-; Total bytes of code 77, prolog size 4, PerfScore 483.24, instruction count 31, allocated bytes for code 77 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 88, prolog size 4, PerfScore 578.34, instruction count 36, allocated bytes for code 88 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_tiered.linux.x64.checked.mch

-31 (-2.10%) : 30113.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)

@@ -22,7 +22,7 @@ ; V11 loc7 [V11,T08] ( 19, 42 ) ushort -> [rbp-0x60] ptr ;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 loc9 [V13,T41] ( 3, 6 ) ubyte -> rax
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [rbp-0x68] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [rbp-0x68] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T16] ( 7, 14 ) ushort -> [rbp-0x6C] ptr ;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune> ; V17 loc13 [V17,T29] ( 4, 8 ) int -> [rbp-0x70] spill-single-def ptr @@ -352,15 +352,17 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byr mov word ptr [rcx+2*rdx], si inc edi mov dword ptr [rbp-0x50], edi
+ mov r14d, dword ptr [rbp-0x5C]
jmp G_M13139_IG48
- ;; size=40 bbWeight=2 PerfScore 27.50
+ ;; size=44 bbWeight=2 PerfScore 29.50
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref ; byrRegs -[rcx] lea rdi, [rbp-0x58] call [<unknown method>] ; gcr arg pop 0
+ mov r14d, dword ptr [rbp-0x5C]
jmp G_M13139_IG48
- ;; size=15 bbWeight=2 PerfScore 11.00
+ ;; size=19 bbWeight=2 PerfScore 13.00
G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz mov edi, dword ptr [rbp-0x60] cmp edi, 127 @@ -387,9 +389,8 @@ G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byr ;; size=16 bbWeight=2 PerfScore 11.00 G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref add r14d, 2
- mov dword ptr [rbp-0x5C], r14d
jmp G_M13139_IG48
- ;; size=13 bbWeight=2 PerfScore 6.50
+ ;; size=9 bbWeight=2 PerfScore 4.50
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref movsxd rdi, r14d lea rdi, [r13+2*rdi] @@ -403,9 +404,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byr call [<unknown method>] ; gcr arg pop 0 lea r14d, [rax+r14-0x01]
- mov dword ptr [rbp-0x5C], r14d
jmp G_M13139_IG48
- ;; size=52 bbWeight=2 PerfScore 24.00
+ ;; size=48 bbWeight=2 PerfScore 22.00
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz mov edi, dword ptr [rbp-0x50] mov rax, bword ptr [rbp-0x48] @@ -417,17 +417,15 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byr mov word ptr [rax+2*rcx], si inc edi mov dword ptr [rbp-0x50], edi
- mov dword ptr [rbp-0x5C], r14d
jmp G_M13139_IG48
- ;; size=34 bbWeight=2 PerfScore 19.50
+ ;; size=30 bbWeight=2 PerfScore 17.50
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref ; byrRegs -[rax] lea rdi, [rbp-0x58] call [<unknown method>] ; gcr arg pop 0
- mov dword ptr [rbp-0x5C], r14d
jmp G_M13139_IG48
- ;; size=19 bbWeight=2 PerfScore 13.00
+ ;; size=15 bbWeight=2 PerfScore 11.00
G_M13139_IG25: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref cmp edi, 127 jle G_M13139_IG46 @@ -655,18 +653,15 @@ G_M13139_IG43: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, by cmp ecx, eax jl G_M13139_IG38 ;; size=121 bbWeight=16 PerfScore 300.00
-G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
+G_M13139_IG44: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
; byrRegs -[rdi] cmp byte ptr [rbp-0x68], 0
- je SHORT G_M13139_IG45
+ je SHORT G_M13139_IG48 + ;; size=6 bbWeight=4 PerfScore 12.00 +G_M13139_IG45: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz
inc r14d
- mov dword ptr [rbp-0x5C], r14d
jmp SHORT G_M13139_IG48
- ;; size=15 bbWeight=2 PerfScore 12.50 -G_M13139_IG45: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz - mov dword ptr [rbp-0x5C], r14d - jmp SHORT G_M13139_IG48 - ;; size=6 bbWeight=1 PerfScore 3.00
+ ;; size=5 bbWeight=2 PerfScore 4.50
G_M13139_IG46: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz mov edi, dword ptr [rbp-0x50] mov rax, bword ptr [rbp-0x48] @@ -678,23 +673,19 @@ G_M13139_IG46: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byr mov word ptr [rax+2*rcx], si inc edi mov dword ptr [rbp-0x50], edi
- mov dword ptr [rbp-0x5C], r14d
jmp SHORT G_M13139_IG48
- ;; size=31 bbWeight=2 PerfScore 19.50
+ ;; size=27 bbWeight=2 PerfScore 17.50
G_M13139_IG47: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref ; byrRegs -[rax] lea rdi, [rbp-0x58] call [<unknown method>] ; gcr arg pop 0
- mov dword ptr [rbp-0x5C], r14d - ;; size=14 bbWeight=2 PerfScore 9.00
+ ;; size=10 bbWeight=2 PerfScore 7.00
G_M13139_IG48: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref
- mov eax, dword ptr [rbp-0x5C] - inc eax - cmp eax, r15d - mov r14d, eax
+ inc r14d + cmp r14d, r15d
jl G_M13139_IG07
- ;; size=17 bbWeight=4 PerfScore 11.00
+ ;; size=12 bbWeight=4 PerfScore 6.00
G_M13139_IG49: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r12] lea rdi, [rbp-0x58] @@ -739,7 +730,7 @@ G_M13139_IG54: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1477, prolog size 58, PerfScore 1206.83, instruction count 408, allocated bytes for code 1477 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
+; Total bytes of code 1446, prolog size 58, PerfScore 1194.83, instruction count 399, allocated bytes for code 1446 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
; ============================================================ Unwind Info:

-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.50) long -> r15 +; V01 arg1 [V01,T34] ( 15, 11 ) int -> r13 +; V02 arg2 [V02,T01] ( 61,1294 ) long -> rbx +; V03 arg3 [V03,T03] ( 47,1058 ) int -> r14 +; V04 arg4 [V04,T44] ( 4, 3 ) byref -> r12 single-def +; V05 arg5 [V05,T45] ( 4, 3 ) byref -> [rbp-0x60] single-def +; V06 loc0 [V06,T05] ( 11, 232 ) 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,2261 ) int -> [rbp-0x4C] +; V10 loc4 [V10,T40] ( 12, 6.50) int -> rax +; V11 loc5 [V11,T47] ( 5, 3.50) int -> rax +; V12 loc6 [V12,T43] ( 6, 5 ) long -> rax +;* V13 loc7 [V13 ] ( 0, 0 ) int -> zero-ref +;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref +; V15 loc9 [V15,T39] ( 3, 8 ) int -> rsi +; V16 loc10 [V16,T28] ( 3, 20 ) int -> rdi +; V17 loc11 [V17,T29] ( 9, 18 ) long -> [rbp-0x58] +; V18 loc12 [V18,T24] ( 6, 56 ) 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,T46] ( 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,T42] ( 3, 6 ) 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=0000200000000000 {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=0000200000000000 {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_IG59
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
...

-40 (-1.49%) : 9193.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)

@@ -9,30 +9,30 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 70, 40 ) ref -> [rbp-0xF0] this class-hnd single-def <System.Threading.PortableThreadPool+HillClimbing>
-; V01 arg1 [V01,T07] ( 10, 6.50) int -> r15 single-def -; V02 arg2 [V02,T54] ( 9, 7 ) double -> [rbp-0x30] -; V03 arg3 [V03,T08] ( 8, 6.50) int -> r14 -; V04 loc0 [V04,T83] ( 4, 2 ) double -> [rbp-0x38] spill-single-def
+; V01 arg1 [V01,T08] ( 10, 6.50) int -> r15 single-def +; V02 arg2 [V02,T56] ( 9, 7 ) double -> [rbp-0x30] +; V03 arg3 [V03,T09] ( 8, 6.50) int -> r14 +; V04 loc0 [V04,T84] ( 4, 2 ) double -> [rbp-0x38] spill-single-def
; V05 loc1 [V05,T32] ( 4, 2 ) int -> rdx ;* V06 loc2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex> ;* V07 loc3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex>
-; V08 loc4 [V08,T58] ( 8, 4 ) double -> [rbp-0x40]
+; V08 loc4 [V08,T60] ( 8, 4 ) double -> [rbp-0x40]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex> ; V10 loc6 [V10,T82] ( 5, 2.50) double -> [rbp-0x48] ; V11 loc7 [V11,T33] ( 4, 2 ) int -> [rbp-0x4C]
-; V12 loc8 [V12,T09] ( 10, 8.25) int -> [rbp-0x50] spill-single-def
+; V12 loc8 [V12,T07] ( 10, 8.75) int -> [rbp-0x50] spill-single-def
; V13 loc9 [V13,T57] ( 11, 5.50) double -> [rbp-0x58] ; V14 loc10 [V14,T104] ( 2, 1 ) double -> [rbp-0x60] spill-single-def ; V15 loc11 [V15,T31] ( 4, 2 ) ref -> rdi class-hnd exact single-def <System.Threading.PortableThreadPool>
-; V16 loc12 [V16,T37] ( 3, 1.50) int -> rax
+; V16 loc12 [V16,T37] ( 3, 1.50) int -> r14
; V17 loc13 [V17,T34] ( 4, 2 ) int -> [rbp-0x64] spill-single-def ; V18 loc14 [V18,T28] ( 5, 2.50) int -> [rbp-0x68] spill-single-def ; V19 loc15 [V19,T38] ( 3, 1.50) int -> rcx ; V20 loc16 [V20,T39] ( 3, 1.50) int -> rcx
-; V21 loc17 [V21,T55] ( 4, 9 ) double -> mm6 -; V22 loc18 [V22,T56] ( 4, 9 ) double -> mm8 -; V23 loc19 [V23,T59] ( 8, 4 ) double -> [rbp-0x70] spill-single-def -; V24 loc20 [V24,T84] ( 4, 2 ) double -> [rbp-0x78] spill-single-def
+; V21 loc17 [V21,T54] ( 4, 9.50) double -> mm6 +; V22 loc18 [V22,T55] ( 4, 9.50) double -> mm8 +; V23 loc19 [V23,T58] ( 8, 5 ) double -> [rbp-0x70] spill-single-def +; V24 loc20 [V24,T83] ( 4, 2.50) double -> [rbp-0x78] spill-single-def
; V25 loc21 [V25,T03] ( 5, 16.50) int -> [rbp-0x7C] ; V26 loc22 [V26,T105] ( 2, 1 ) double -> [rbp-0x88] spill-single-def ; V27 loc23 [V27,T94] ( 3, 1.50) double -> [rbp-0x90] spill-single-def @@ -94,7 +94,7 @@ ;* V83 tmp53 [V83 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V84 tmp54 [V84 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V85 tmp55 [V85 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inlining Arg" <System.Threading.PortableThreadPool+HillClimbing+Complex>
-; V86 tmp56 [V86,T60] ( 3, 3 ) double -> mm3 "impAppendStmt"
+; V86 tmp56 [V86,T61] ( 3, 3 ) double -> mm3 "impAppendStmt"
;* V87 tmp57 [V87 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Threading.PortableThreadPool+HillClimbing+Complex> ; V88 tmp58 [V88,T80] ( 3, 3 ) double -> mm2 "Inlining Arg" ;* V89 tmp59 [V89 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" @@ -115,11 +115,11 @@ ;* V104 tmp74 [V104 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V105 tmp75 [V105 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V106 tmp76 [V106 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
-; V107 tmp77 [V107,T40] ( 3, 1.50) int -> rax "Inline return value spill temp" -; V108 tmp78 [V108,T25] ( 3, 3 ) int -> rcx "Inlining Arg" -; V109 tmp79 [V109,T35] ( 4, 2 ) int -> [rbp-0xB4] spill-single-def "Inline return value spill temp"
+; V107 tmp77 [V107,T40] ( 3, 1.50) int -> r14 "Inline return value spill temp" +; V108 tmp78 [V108,T25] ( 3, 3 ) int -> rax "Inlining Arg" +; V109 tmp79 [V109,T35] ( 4, 2 ) int -> r14 "Inline return value spill temp"
; V110 tmp80 [V110,T41] ( 3, 1.50) int -> rsi "Inline return value spill temp"
-; V111 tmp81 [V111,T29] ( 5, 2.50) int -> [rbp-0xB8] spill-single-def "Inline return value spill temp"
+; V111 tmp81 [V111,T29] ( 5, 2.50) int -> [rbp-0xB4] spill-single-def "Inline return value spill temp"
;* V112 tmp82 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Diagnostics.Tracing.NativeRuntimeEventSource> ;* V113 tmp83 [V113 ] ( 0, 0 ) double -> zero-ref "Inlining Arg" ; V114 tmp84 [V114,T93] ( 2, 2 ) double -> [rbp-0xC0] spill-single-def "Inlining Arg" @@ -133,7 +133,7 @@ ;* V122 tmp92 [V122 ] ( 0, 0 ) double -> zero-ref "field V07.<Imaginary>k__BackingField (fldOffset=0x0)" P-INDEP ; V123 tmp93 [V123,T85] ( 4, 2 ) double -> [rbp-0xD0] "field V07.<Real>k__BackingField (fldOffset=0x8)" P-INDEP ; V124 tmp94 [V124,T117] ( 1, 0.50) double -> mm0 "field V09.<Imaginary>k__BackingField (fldOffset=0x0)" P-INDEP
-; V125 tmp95 [V125,T61] ( 7, 3.50) double -> [rbp-0xD8] "field V09.<Real>k__BackingField (fldOffset=0x8)" P-INDEP
+; V125 tmp95 [V125,T62] ( 7, 3.50) double -> [rbp-0xD8] "field V09.<Real>k__BackingField (fldOffset=0x8)" P-INDEP
;* V126 tmp96 [V126 ] ( 0, 0 ) double -> zero-ref "field V29.<Imaginary>k__BackingField (fldOffset=0x0)" P-INDEP ;* V127 tmp97 [V127 ] ( 0, 0 ) double -> zero-ref "field V29.<Real>k__BackingField (fldOffset=0x8)" P-INDEP ; V128 tmp98 [V128,T46] ( 2, 1.50) int -> [rbp-0x98] do-not-enreg[] "field V41.Item1 (fldOffset=0x0)" P-DEP @@ -194,7 +194,7 @@ ; V183 cse5 [V183,T42] ( 3, 1.50) int -> rsi "CSE - conservative" ; V184 cse6 [V184,T43] ( 3, 1.50) int -> rsi "CSE - conservative" ; V185 cse7 [V185,T16] ( 2, 4.25) long -> rsi hoist "CSE - moderate"
-; V186 cse8 [V186,T62] ( 7, 3.50) double -> [rbp-0xE8] spill-single-def "CSE - moderate"
+; V186 cse8 [V186,T59] ( 7, 5 ) double -> [rbp-0xE8] spill-single-def "CSE - moderate"
; V187 cse9 [V187,T36] ( 4, 1.75) long -> rsi "CSE - conservative" ; V188 cse10 [V188,T12] ( 4, 5.50) long -> rdi "CSE - moderate" ; V189 cse11 [V189,T27] ( 5, 2.50) ref -> [rbp-0xF8] spill-single-def "CSE - moderate" @@ -307,7 +307,7 @@ G_M16266_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov dword ptr [rbp-0xA8], r15d mov dword ptr [rbp-0xA4], 10 mov rax, qword ptr [rbp-0xA8]
- jmp G_M16266_IG42
+ jmp G_M16266_IG43
;; size=81 bbWeight=0.50 PerfScore 21.83 G_M16266_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor esi, esi @@ -342,7 +342,7 @@ G_M16266_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rbx rdi r14] ; gcr arg pop 0 test eax, eax
- je G_M16266_IG24
+ je G_M16266_IG25
vmovsd xmm0, qword ptr [rbp-0x38] xor edi, edi mov rax, 0xD1FFAB1E ; function address @@ -388,7 +388,7 @@ G_M16266_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, ; gcrRegs +[rax] mov r8d, dword ptr [rax+0x08] cmp edx, r8d
- jae G_M16266_IG43
+ jae G_M16266_IG44
mov r9d, edx vmovsd xmm1, qword ptr [rbp-0x38] vmovsd qword ptr [rax+8*r9+0x10], xmm1 @@ -397,7 +397,7 @@ G_M16266_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, mov rax, r10 mov r11d, dword ptr [rax+0x08] cmp edx, r11d
- jae G_M16266_IG43
+ jae G_M16266_IG44
vxorps xmm2, xmm2, xmm2 vcvtsi2sd xmm2, xmm2, r15d vmovsd qword ptr [rax+8*r9+0x10], xmm2 @@ -422,12 +422,12 @@ G_M16266_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, imul edx, r9d mov dword ptr [rbp-0x50], edx cmp edx, r9d
- jle G_M16266_IG23
+ jle G_M16266_IG24
vxorps xmm6, xmm6, xmm6 vxorps xmm8, xmm8, xmm8 xor eax, eax test edx, edx
- jle G_M16266_IG22
+ jle G_M16266_IG23
;; size=193 bbWeight=0.50 PerfScore 69.96 G_M16266_IG14: ; bbWeight=0.25, gcVars=00000000000000000000000008000000 {V189}, gcrefRegs=040A {rcx rbx r10}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r14] @@ -446,14 +446,14 @@ G_M16266_IG15: ; bbWeight=4, gcrefRegs=040A {rcx rbx r10}, byrefRegs=0000 mov rax, rdx mov r12d, r8d cmp rax, r12
- jae G_M16266_IG43
+ jae G_M16266_IG44
vaddsd xmm6, xmm6, qword ptr [r14+8*rax+0x10] mov rax, r10 ; gcrRegs +[rax] mov r14d, r11d ; gcrRegs -[r14] cmp rdx, r14
- jae G_M16266_IG43
+ jae G_M16266_IG44
vaddsd xmm8, xmm8, qword ptr [rax+8*rdx+0x10] mov r14d, dword ptr [rbp-0x7C] inc r14d @@ -461,9 +461,9 @@ G_M16266_IG15: ; bbWeight=4, gcrefRegs=040A {rcx rbx r10}, byrefRegs=0000 cmp r14d, r12d mov eax, r14d ; gcrRegs -[rax]
- jl G_M16266_IG21
+ jl G_M16266_IG22
;; size=84 bbWeight=4 PerfScore 359.00
-G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M16266_IG16: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r10] vxorps xmm9, xmm9, xmm9 vcvtsi2sd xmm9, xmm9, r12d @@ -474,13 +474,15 @@ G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 vmovsd qword ptr [rbp-0x78], xmm8 vxorps xmm10, xmm10, xmm10 vucomisd xmm6, xmm10
- jbe G_M16266_IG20
+ jbe G_M16266_IG21 + ;; size=54 bbWeight=1 PerfScore 36.67 +G_M16266_IG17: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
vxorps xmm10, xmm10, xmm10 vucomisd xmm8, xmm10 vmovsd qword ptr [rbp-0x40], xmm4 vmovsd qword ptr [rbp-0xC8], xmm2 vmovsd qword ptr [rbp-0xD0], xmm3
- jbe G_M16266_IG19
+ jbe G_M16266_IG20
vxorps xmm2, xmm2, xmm2 vcvtsi2sd xmm2, xmm2, r9d vdivsd xmm3, xmm9, xmm2 @@ -524,14 +526,12 @@ G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 vmovsd xmm9, qword ptr [rbp-0xE8] vmovsd xmm3, qword ptr [rbp-0x90] vucomisd xmm9, xmm3
- jb SHORT G_M16266_IG18
+ jb SHORT G_M16266_IG19
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov rdi, rbx ; gcrRegs +[rdi] mov edx, r12d
- ;; size=282 bbWeight=0.50 PerfScore 99.67 -G_M16266_IG17: ; bbWeight=0.50, extend
vmovaps xmm0, xmm3 call [<unknown method>] ; gcrRegs -[rsi rdi] @@ -544,12 +544,14 @@ G_M16266_IG17: ; bbWeight=0.50, extend vaddsd xmm0, xmm1, xmm0 vsqrtsd xmm0, xmm0, xmm0 vmovsd xmm1, qword ptr [rbp-0x40]
+ ;; size=272 bbWeight=0.50 PerfScore 108.46 +G_M16266_IG18: ; bbWeight=0.50, extend
vrangesd xmm4, xmm1, xmm0, 5 vfixupimmsd xmm1, xmm0, xmmword ptr [reloc @RWD16], 0 vfixupimmsd xmm4, xmm1, xmmword ptr [reloc @RWD16], 0 vmovsd qword ptr [rbp-0x40], xmm4
- ;; size=78 bbWeight=0.50 PerfScore 34.12 -G_M16266_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=0.50 PerfScore 7.00 +G_M16266_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, dword ptr [rbx+0x98] mov rsi, gword ptr [rbx+0x10] @@ -568,53 +570,48 @@ G_M16266_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, vmovsd xmm1, qword ptr [rbx+0x78] vxorps xmm5, xmm5, xmm5 vucomisd xmm1, xmm5
- jp G_M16266_IG25 - jne SHORT G_M16266_IG25
+ jp SHORT G_M16266_IG26 + jne SHORT G_M16266_IG26
vmovsd xmm5, qword ptr [rbp-0x40] vmovsd qword ptr [rbx+0x78], xmm5
- jmp G_M16266_IG26 - ;; size=87 bbWeight=0.50 PerfScore 28.83 -G_M16266_IG19: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov r12d, dword ptr [rbp-0x4C] - mov r14, gword ptr [rbp-0xF8] - ; gcrRegs +[r14] - jmp G_M16266_IG30 - ;; size=16 bbWeight=0.25 PerfScore 1.00
+ jmp G_M16266_IG27 + ;; size=83 bbWeight=0.50 PerfScore 28.83
G_M16266_IG20: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
+ mov r12d, dword ptr [rbp-0x4C] + jmp G_M16266_IG31 + ;; size=9 bbWeight=0.25 PerfScore 0.75 +G_M16266_IG21: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
vmovsd qword ptr [rbp-0x40], xmm4 vmovsd qword ptr [rbp-0xC8], xmm2 vmovsd qword ptr [rbp-0xD0], xmm3 mov r12d, dword ptr [rbp-0x4C]
- mov r14, gword ptr [rbp-0xF8] - ; gcrRegs +[r14] - jmp G_M16266_IG30 - ;; size=37 bbWeight=0.25 PerfScore 1.75
...

+3 (+1.65%) : 41317.dasm - Roslyn.Utilities.TextKeyedCache1[System.__Canon]:AddSharedEntry(int,Roslyn.Utilities.TextKeyedCache1+SharedEntryValue[System.__Canon]):this (Tier1)

@@ -8,22 +8,22 @@ ; 0 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 4, 3.50) ref -> r15 this class-hnd single-def <Roslyn.Utilities.TextKeyedCache`1[System.__Canon]> -; V01 arg1 [V01,T03] ( 5, 5 ) int -> rbx single-def -; V02 arg2 [V02,T08] ( 3, 3 ) ref -> r14 class-hnd single-def <Roslyn.Utilities.TextKeyedCache`1+SharedEntryValue[System.__Canon]>
+; V00 this [V00,T03] ( 4, 4 ) ref -> rbx this class-hnd single-def <Roslyn.Utilities.TextKeyedCache`1[System.__Canon]> +; V01 arg1 [V01,T04] ( 5, 5 ) int -> r15 single-def +; V02 arg2 [V02,T09] ( 3, 3 ) ref -> r14 class-hnd single-def <Roslyn.Utilities.TextKeyedCache`1+SharedEntryValue[System.__Canon]>
; V03 loc0 [V03,T02] ( 5, 8 ) ref -> r13 class-hnd exact single-def <<unknown class>>
-; V04 loc1 [V04,T07] ( 7, 5.50) int -> r12
+; V04 loc1 [V04,T05] ( 7, 6.50) int -> r12
; V05 loc2 [V05,T00] ( 6, 17.50) int -> rdi
-; V06 loc3 [V06,T12] ( 4, 2 ) int -> rax single-def
+; V06 loc3 [V06,T11] ( 4, 4 ) int -> rax single-def
; V07 loc4 [V07,T01] ( 5, 17 ) int -> rax ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V10 cse0 [V10,T10] ( 3, 3 ) long -> rdi "CSE - aggressive" -; V11 cse1 [V11,T05] ( 3, 6 ) int -> [rbp-0x2C] spill-single-def hoist "CSE - aggressive" -;* V12 rat0 [V12,T09] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
+; V10 cse0 [V10,T12] ( 3, 3 ) long -> rdi "CSE - aggressive" +; V11 cse1 [V11,T06] ( 3, 6 ) int -> [rbp-0x2C] spill-single-def hoist "CSE - aggressive" +;* V12 rat0 [V12,T10] ( 0, 0 ) long -> zero-ref "Spilling to split statement for tree"
;* V13 rat1 [V13,T13] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V14 rat2 [V14,T06] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" -; V15 rat3 [V15,T11] ( 3, 3 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
+;* V14 rat2 [V14,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" +; V15 rat3 [V15,T07] ( 3, 6 ) int -> rdi "ReplaceWithLclVar is creating a new local variable"
; ; Lcl frame size = 8 @@ -36,25 +36,25 @@ G_M5347_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx push rax lea rbp, [rsp+0x30]
- mov r15, rdi - ; gcrRegs +[r15] - mov ebx, esi
+ mov rbx, rdi + ; gcrRegs +[rbx] + mov r15d, esi
mov r14, rdx ; gcrRegs +[r14]
- ;; size=24 bbWeight=1 PerfScore 8.25 -G_M5347_IG02: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref - mov r13, gword ptr [r15+0x10]
+ ;; size=25 bbWeight=1 PerfScore 8.25 +G_M5347_IG02: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref + mov r13, gword ptr [rbx+0x10]
; gcrRegs +[r13]
- mov edi, ebx
+ mov edi, r15d
sar edi, 11
- xor edi, ebx
+ xor edi, r15d
movzx r12, di mov edi, r12d mov eax, 1 mov ecx, dword ptr [r13+0x08] mov dword ptr [rbp-0x2C], ecx
- ;; size=30 bbWeight=1 PerfScore 6.75 -G_M5347_IG03: ; bbWeight=4, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=32 bbWeight=1 PerfScore 6.75 +G_M5347_IG03: ; bbWeight=4, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
cmp edi, ecx jae SHORT G_M5347_IG09 mov edx, edi @@ -67,8 +67,8 @@ G_M5347_IG03: ; bbWeight=4, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 cmp eax, 17 jl SHORT G_M5347_IG05 ;; size=30 bbWeight=4 PerfScore 32.00
-G_M5347_IG04: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz - mov rdi, r15
+G_M5347_IG04: ; bbWeight=1, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz + mov rdi, rbx
; gcrRegs +[rdi] call [Roslyn.Utilities.TextKeyedCache`1[System.__Canon]:NextRandom():int:this] ; gcrRegs -[rdi] @@ -84,20 +84,20 @@ G_M5347_IG04: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=00 add edi, r12d movzx r12, di jmp SHORT G_M5347_IG07
- ;; size=37 bbWeight=0.50 PerfScore 5.00 -G_M5347_IG05: ; bbWeight=2, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=37 bbWeight=1 PerfScore 10.00 +G_M5347_IG05: ; bbWeight=2, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
mov ecx, dword ptr [rbp-0x2C] jmp SHORT G_M5347_IG03 ;; size=5 bbWeight=2 PerfScore 6.00
-G_M5347_IG06: ; bbWeight=0.50, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M5347_IG06: ; bbWeight=0.50, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref
mov r12d, edi ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M5347_IG07: ; bbWeight=1, gcrefRegs=E000 {r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M5347_IG07: ; bbWeight=1, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=0000 {}, byref, isz
cmp r12d, dword ptr [rbp-0x2C] jae SHORT G_M5347_IG09 mov edi, r12d shl rdi, 4
- mov dword ptr [r13+rdi+0x18], ebx
+ mov dword ptr [r13+rdi+0x18], r15d
lea rdi, bword ptr [r13+rdi+0x10] ; byrRegs +[rdi] mov rsi, r14 @@ -117,13 +117,13 @@ G_M5347_IG08: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M5347_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, gcvars, byref
+G_M5347_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 182, prolog size 24, PerfScore 70.62, instruction count 66, allocated bytes for code 182 (MethodHash=33a1eb1c) for method Roslyn.Utilities.TextKeyedCache`1[System.__Canon]:AddSharedEntry(int,Roslyn.Utilities.TextKeyedCache`1+SharedEntryValue[System.__Canon]):this (Tier1)
+; Total bytes of code 185, prolog size 25, PerfScore 75.62, instruction count 66, allocated bytes for code 185 (MethodHash=33a1eb1c) for method Roslyn.Utilities.TextKeyedCache`1[System.__Canon]:AddSharedEntry(int,Roslyn.Utilities.TextKeyedCache`1+SharedEntryValue[System.__Canon]):this (Tier1)
; ============================================================ Unwind Info:

+28 (+1.73%) : 56960.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (Tier1)

@@ -9,41 +9,41 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T23] ( 11, 8 ) byref -> r15 single-def
-; V01 arg1 [V01,T20] ( 14, 8.50) byref -> rbx single-def -; V02 arg2 [V02,T24] ( 8, 6 ) ubyte -> r14 -; V03 loc0 [V03,T05] ( 43, 53.50) long -> registers -; V04 loc1 [V04,T09] ( 41, 35 ) int -> registers -; V05 loc2 [V05,T22] ( 18, 10 ) int -> [rbp-0x2C]
+; V01 arg1 [V01,T21] ( 14, 9.50) byref -> rbx single-def +; V02 arg2 [V02,T24] ( 8, 7 ) ubyte -> r14 +; V03 loc0 [V03,T05] ( 43, 55.50) long -> registers +; V04 loc1 [V04,T08] ( 41, 37 ) int -> registers +; V05 loc2 [V05,T20] ( 18, 11.50) int -> [rbp-0x2C]
; V06 loc3 [V06,T36] ( 3, 2.50) int -> rsi
-; V07 loc4 [V07,T32] ( 3, 3 ) int -> rax -; V08 loc5 [V08,T33] ( 5, 2.50) int -> rdi
+; V07 loc4 [V07,T33] ( 3, 3 ) int -> rax +; V08 loc5 [V08,T34] ( 5, 2.50) int -> rdi
; V09 loc6 [V09,T03] ( 28, 75.50) int -> [rbp-0x30]
-; V10 loc7 [V10,T08] ( 10, 36 ) int -> registers -; V11 loc8 [V11,T00] ( 23,209 ) long -> [rbp-0x38] -; V12 loc9 [V12,T10] ( 6, 24 ) long -> rdi -; V13 loc10 [V13 ] ( 12, 9.50) struct (24) [rbp-0x50] do-not-enreg[XSF] addr-exposed ld-addr-op <System.Decimal+DecCalc+Buf24> -; V14 loc11 [V14,T06] ( 14, 46 ) int -> r12 -; V15 loc12 [V15,T30] ( 7, 3.50) int -> rcx -; V16 loc13 [V16,T34] ( 5, 2.50) int -> rsi
+; V10 loc7 [V10,T09] ( 10, 36 ) int -> registers +; V11 loc8 [V11,T00] ( 23,209.50) long -> [rbp-0x38] +; V12 loc9 [V12,T11] ( 6, 24 ) long -> rdi +; V13 loc10 [V13 ] ( 12, 13 ) struct (24) [rbp-0x50] do-not-enreg[XSF] addr-exposed ld-addr-op <System.Decimal+DecCalc+Buf24> +; V14 loc11 [V14,T06] ( 14, 46.50) int -> r12 +; V15 loc12 [V15,T30] ( 7, 4 ) int -> rcx +; V16 loc13 [V16,T35] ( 5, 2.50) int -> rsi
;* V17 loc14 [V17 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[uint]> ; V18 loc15 [V18,T04] ( 4, 70 ) long -> [rbp-0x58] spill-single-def ; V19 loc16 [V19,T01] ( 6,140 ) int -> [rbp-0x5C] ; V20 loc17 [V20,T26] ( 3, 5 ) long -> r14
-; V21 loc18 [V21,T21] ( 4, 10.50) int -> [rbp-0x60] -; V22 loc19 [V22,T11] ( 6, 24 ) int -> r8
+; V21 loc18 [V21,T22] ( 4, 10.50) int -> [rbp-0x60] +; V22 loc19 [V22,T12] ( 6, 24 ) int -> r8
; V23 loc20 [V23,T27] ( 3, 5 ) long -> r14 ; V24 loc21 [V24,T19] ( 7, 13.50) int -> [rbp-0x64] ; V25 loc22 [V25,T28] ( 9, 4.50) long -> rdi ; V26 loc23 [V26,T29] ( 9, 4.50) int -> rdx
-; V27 loc24 [V27,T35] ( 5, 2.50) long -> rdx -; V28 loc25 [V28,T31] ( 7, 3.50) int -> rdi
+; V27 loc24 [V27,T32] ( 5, 3 ) long -> rdx +; V28 loc25 [V28,T31] ( 7, 4 ) int -> rdi
;# V29 OutArgs [V29 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V30 tmp1 [V30,T37] ( 2, 2 ) long -> r13 "dup spill" ; V31 tmp2 [V31,T25] ( 2, 8 ) int -> r12 "dup spill"
-; V32 tmp3 [V32,T12] ( 3, 24 ) int -> rdi "impSpillLclRefs" -; V33 tmp4 [V33,T13] ( 3, 24 ) long -> rdi "dup spill" -; V34 tmp5 [V34,T14] ( 3, 24 ) int -> rdi "impSpillLclRefs" -; V35 tmp6 [V35,T15] ( 3, 24 ) long -> rdi "dup spill"
+; V32 tmp3 [V32,T13] ( 3, 24 ) int -> rdi "impSpillLclRefs" +; V33 tmp4 [V33,T14] ( 3, 24 ) long -> rdi "dup spill" +; V34 tmp5 [V34,T15] ( 3, 24 ) int -> rdi "impSpillLclRefs" +; V35 tmp6 [V35,T16] ( 3, 24 ) long -> rdi "dup spill"
; V36 tmp7 [V36,T38] ( 2, 2 ) int -> r12 "dup spill" ; V37 tmp8 [V37,T18] ( 2, 16 ) int -> rsi "dup spill" ;* V38 tmp9 [V38 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[uint]> @@ -78,7 +78,7 @@ ;* V67 tmp38 [V67 ] ( 0, 0 ) int -> zero-ref "field V45._length (fldOffset=0x8)" P-INDEP ;* V68 tmp39 [V68 ] ( 0, 0 ) byref -> zero-ref "field V48._reference (fldOffset=0x0)" P-INDEP ;* V69 tmp40 [V69 ] ( 0, 0 ) int -> zero-ref "field V48._length (fldOffset=0x8)" P-INDEP
-; V70 cse0 [V70,T16] ( 15, 21 ) ref -> rsi multi-def "CSE - moderate"
+; V70 cse0 [V70,T10] ( 15, 28.50) ref -> rsi multi-def "CSE - moderate"
; V71 cse1 [V71,T07] ( 2, 38 ) long -> rsi hoist "CSE - aggressive" ; V72 cse2 [V72,T02] ( 3, 96 ) long -> r9 "CSE - aggressive" ; V73 cse3 [V73,T17] ( 4, 16 ) long -> rdx "CSE - moderate" @@ -176,7 +176,7 @@ G_M36253_IG06: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=000 ;; size=7 bbWeight=0.25 PerfScore 0.56 G_M36253_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref mov eax, edi
- jmp G_M36253_IG57
+ jmp G_M36253_IG58
;; size=7 bbWeight=0.50 PerfScore 1.12 G_M36253_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz cmp esi, 9 @@ -195,7 +195,7 @@ G_M36253_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, ;; size=11 bbWeight=4 PerfScore 6.00 G_M36253_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref cmp esi, 10
- jae G_M36253_IG67
+ jae G_M36253_IG69
mov edi, esi mov rcx, 0xD1FFAB1E ; static handle mov r12d, dword ptr [rcx+4*rdi] @@ -219,7 +219,7 @@ G_M36253_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, add esi, -9 mov ecx, esi test ecx, ecx
- jle G_M36253_IG57
+ jle G_M36253_IG58
test r12d, r12d je G_M36253_IG16 ;; size=73 bbWeight=4 PerfScore 45.00 @@ -230,7 +230,7 @@ G_M36253_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, ;; size=10 bbWeight=4 PerfScore 6.00 G_M36253_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref cmp ecx, 10
- jae G_M36253_IG67
+ jae G_M36253_IG69
mov edx, ecx mov rdi, 0xD1FFAB1E ; static handle mov edx, dword ptr [rdi+4*rdx] @@ -266,7 +266,7 @@ G_M36253_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, jg SHORT G_M36253_IG12 ;; size=87 bbWeight=4 PerfScore 59.00 G_M36253_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
- jmp G_M36253_IG57
+ jmp G_M36253_IG58
;; size=5 bbWeight=0.50 PerfScore 1.00 G_M36253_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref mov esi, ecx @@ -275,12 +275,12 @@ G_M36253_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, G_M36253_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref mov r13d, r13d cmp esi, 10
- jae G_M36253_IG67
+ jae G_M36253_IG69
mov esi, esi mov rdi, 0xD1FFAB1E ; static handle mov edi, dword ptr [rdi+4*rsi] imul r13, rdi
- jmp G_M36253_IG57
+ jmp G_M36253_IG58
;; size=36 bbWeight=0.50 PerfScore 4.00 G_M36253_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref mov qword ptr [rbp-0x50], r8 @@ -296,7 +296,7 @@ G_M36253_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, ;; size=11 bbWeight=4 PerfScore 6.00 G_M36253_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref cmp ecx, 10
- jae G_M36253_IG67
+ jae G_M36253_IG69
mov dword ptr [rbp-0x30], ecx mov edi, ecx mov rsi, 0xD1FFAB1E ; static handle @@ -356,7 +356,7 @@ G_M36253_IG27: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, mov ecx, dword ptr [rbp-0x30] jmp SHORT G_M36253_IG29 ;; size=43 bbWeight=2 PerfScore 22.50
-G_M36253_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
+G_M36253_IG28: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
mov qword ptr [rbp-0x38], rdx mov dword ptr [rbp-0x30], ecx mov dword ptr [rbp-0x2C], eax @@ -373,7 +373,7 @@ G_M36253_IG28: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, mov edi, dword ptr [rbp-0x5C] mov r8, qword ptr [rbp-0x58] jmp G_M36253_IG22
- ;; size=51 bbWeight=2 PerfScore 27.00
+ ;; size=51 bbWeight=4 PerfScore 54.00
G_M36253_IG29: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref inc r12d mov edi, r12d @@ -386,7 +386,7 @@ G_M36253_IG30: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, test ecx, ecx jg G_M36253_IG19 ;; size=11 bbWeight=4 PerfScore 6.00
-G_M36253_IG31: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref, isz
+G_M36253_IG31: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r15}, byref
mov rdx, qword ptr [rbp-0x50] mov r8, qword ptr [rbx+0x08] mov r13, r8 @@ -395,7 +395,9 @@ G_M36253_IG31: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r1 mov ebx, edi ; byrRegs -[rbx] test r14b, r14b
- je G_M36253_IG40
+ je G_M36253_IG41 + ;; size=28 bbWeight=1 PerfScore 7.75 +G_M36253_IG32: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
mov r14, rdx sub r14, r13 mov r13, r14 @@ -403,30 +405,30 @@ G_M36253_IG31: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8008 {rbx r1 sub r14d, ebx mov ebx, r14d cmp r13, rdx
- jbe SHORT G_M36253_IG32
+ jbe SHORT G_M36253_IG33
dec ebx cmp ebx, ecx
- jae SHORT G_M36253_IG33 - jmp G_M36253_IG48 - ;; size=62 bbWeight=0.50 PerfScore 7.00 -G_M36253_IG32: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+ jae SHORT G_M36253_IG34 + jmp G_M36253_IG49 + ;; size=34 bbWeight=0.50 PerfScore 3.12 +G_M36253_IG33: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
cmp ebx, ecx
- jbe G_M36253_IG48
+ jbe G_M36253_IG49
;; size=8 bbWeight=0.50 PerfScore 0.62
-G_M36253_IG33: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M36253_IG34: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
lea r14, [rbp-0x50] mov edi, 3
- jmp SHORT G_M36253_IG36
+ jmp SHORT G_M36253_IG37
;; size=11 bbWeight=0.50 PerfScore 1.38
-G_M36253_IG34: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M36253_IG35: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
mov dword ptr [rbp-0x60], ecx cmp ecx, 6
- jae SHORT G_M36253_IG38
+ jae SHORT G_M36253_IG39
;; size=8 bbWeight=2 PerfScore 4.50
-G_M36253_IG35: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
+G_M36253_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
mov edi, dword ptr [rbp-0x60] ;; size=3 bbWeight=1 PerfScore 1.00
-G_M36253_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M36253_IG37: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
lea esi, [rdi+0x01] mov ecx, esi mov edi, edi @@ -435,11 +437,11 @@ G_M36253_IG36: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr lea esi, [r8-0x01] mov dword ptr [rdi], esi test r8d, r8d
- je SHORT G_M36253_IG34
+ je SHORT G_M36253_IG35
;; size=25 bbWeight=4 PerfScore 25.00
-G_M36253_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M36253_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
cmp r12d, 6
- jb SHORT G_M36253_IG39
+ jb SHORT G_M36253_IG40
mov dword ptr [rbp-0x2C], eax mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] @@ -449,9 +451,9 @@ G_M36253_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, ; gcrRegs -[rsi rdi] ; gcr arg pop 0 mov eax, dword ptr [rbp-0x2C]
- jmp SHORT G_M36253_IG39
+ jmp SHORT G_M36253_IG40
;; size=33 bbWeight=0.50 PerfScore 4.38
-G_M36253_IG38: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M36253_IG39: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
mov dword ptr [rbp-0x2C], eax mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] ...

+6 (+4.35%) : 8118.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (Tier1)

@@ -10,14 +10,14 @@ ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ; V01 arg1 [V01,T04] ( 3, 3 ) int -> rdx single-def ; V02 arg2 [V02,T05] ( 3, 3 ) int -> rbx single-def
-; V03 arg3 [V03,T06] ( 3, 3 ) struct ( 8) [rbp-0x10] do-not-enreg[S] single-def <System.Formats.Asn1.Asn1Tag>
+; V03 arg3 [V03,T06] ( 3, 3 ) struct ( 8) [rbp-0x20] do-not-enreg[S] single-def <System.Formats.Asn1.Asn1Tag>
; V04 arg4 [V04,T07] ( 3, 3 ) int -> r8 single-def
-; V05 arg5 [V05,T10] ( 2, 1 ) byref -> [rbp+0x10] single-def -; V06 arg6 [V06,T11] ( 2, 1 ) byref -> [rbp+0x18] single-def
+; V05 arg5 [V05,T10] ( 2, 1.50) byref -> r15 single-def +; V06 arg6 [V06,T11] ( 2, 1.50) byref -> r14 single-def
;* V07 loc0 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.ReadOnlySpan`1[ubyte]>
-; V08 loc1 [V08 ] ( 2, 1.50) int -> [rbp-0x18] do-not-enreg[X] addr-exposed ld-addr-op
+; V08 loc1 [V08 ] ( 2, 2 ) int -> [rbp-0x28] do-not-enreg[X] addr-exposed ld-addr-op
;* V09 loc2 [V09 ] ( 0, 0 ) ubyte -> zero-ref
-; V10 loc3 [V10,T01] ( 4, 9 ) long -> rcx
+; V10 loc3 [V10,T01] ( 4, 9.50) long -> rcx
; V11 loc4 [V11,T00] ( 5, 16.50) int -> rdi ;# V12 OutArgs [V12 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V13 tmp1 [V13,T12] ( 2, 1 ) int -> rcx @@ -30,45 +30,49 @@ G_M61562_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
+ push r15 + push r14
push rbx sub rsp, 24
- lea rbp, [rsp+0x20] - mov qword ptr [rbp-0x10], r8
+ lea rbp, [rsp+0x30] + mov qword ptr [rbp-0x20], r8
mov ebx, ecx mov r8d, r9d
- ;; size=20 bbWeight=1 PerfScore 4.25 -G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0080 {rdi}, byref, isz
+ mov r15, bword ptr [rbp+0x10] + ; byrRegs +[r15] + mov r14, bword ptr [rbp+0x18] + ; byrRegs +[r14] + ;; size=32 bbWeight=1 PerfScore 8.25 +G_M61562_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=C080 {rdi r14 r15}, byref, isz
; byrRegs +[rdi]
- lea r9, [rbp-0x18] - mov rcx, qword ptr [rbp-0x10]
+ lea r9, [rbp-0x28] + mov rcx, qword ptr [rbp-0x20]
call [System.Formats.Asn1.AsnDecoder:GetIntegerContents(System.ReadOnlySpan`1[ubyte],int,System.Formats.Asn1.Asn1Tag,int,byref):System.ReadOnlySpan`1[ubyte]] ; byrRegs -[rdi] +[rax] ; gcr arg pop 0 cmp edx, ebx jle SHORT G_M61562_IG06 ;; size=18 bbWeight=1 PerfScore 5.75
-G_M61562_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61562_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref
; byrRegs -[rax] xor eax, eax
- mov rbx, bword ptr [rbp+0x10] - ; byrRegs +[rbx] - mov qword ptr [rbx], rax - ;; size=9 bbWeight=0.50 PerfScore 1.12 -G_M61562_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[rbx] - mov rbx, bword ptr [rbp+0x18] - ; byrRegs +[rbx] - mov dword ptr [rbx], eax - ;; size=6 bbWeight=0.50 PerfScore 1.00
+ mov qword ptr [r15], rax + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M61562_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4000 {r14}, byref + ; byrRegs -[r15] + mov dword ptr [r14], eax + ;; size=3 bbWeight=0.50 PerfScore 0.50
G_M61562_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- ; byrRegs -[rbx]
+ ; byrRegs -[r14]
add rsp, 24 pop rbx
+ pop r14 + pop r15
pop rbp ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12 -G_M61562_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, gcvars, byref, isz - ; byrRegs +[rax]
+ ;; size=11 bbWeight=0.50 PerfScore 1.62 +G_M61562_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=C001 {rax r14 r15}, gcvars, byref, isz + ; byrRegs +[rax r14-r15]
test edx, edx je SHORT G_M61562_IG11 mov ecx, -1 @@ -77,11 +81,11 @@ G_M61562_IG06: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 cmove ecx, edi movsxd rcx, ecx ;; size=20 bbWeight=0.50 PerfScore 2.62
-G_M61562_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M61562_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=C001 {rax r14 r15}, byref, isz
test edx, edx jle SHORT G_M61562_IG09 ;; size=4 bbWeight=0.50 PerfScore 0.62
-G_M61562_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M61562_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=C001 {rax r14 r15}, byref, isz
mov esi, edi movzx rsi, byte ptr [rax+rsi] shl rcx, 8 @@ -90,30 +94,29 @@ G_M61562_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byr cmp edi, edx jl SHORT G_M61562_IG08 ;; size=20 bbWeight=4 PerfScore 18.00
-G_M61562_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M61562_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=C000 {r14 r15}, byref
; byrRegs -[rax]
- mov eax, dword ptr [rbp-0x18] - mov rbx, bword ptr [rbp+0x18] - ; byrRegs +[rbx] - mov dword ptr [rbx], eax - mov rbx, bword ptr [rbp+0x10] - mov qword ptr [rbx], rcx
+ mov eax, dword ptr [rbp-0x28] + mov dword ptr [r14], eax + mov qword ptr [r15], rcx
mov eax, 1
- ;; size=21 bbWeight=0.50 PerfScore 2.62 -G_M61562_IG10: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=14 bbWeight=1 PerfScore 3.25 +G_M61562_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 24 pop rbx
+ pop r14 + pop r15
pop rbp ret
- ;; size=7 bbWeight=0.50 PerfScore 1.12
+ ;; size=11 bbWeight=1 PerfScore 3.25
G_M61562_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- ; byrRegs -[rbx]
+ ; byrRegs -[r14-r15]
call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 138, prolog size 20, PerfScore 38.25, instruction count 49, allocated bytes for code 138 (MethodHash=ead60f85) for method System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (Tier1)
+; Total bytes of code 144, prolog size 32, PerfScore 44.50, instruction count 53, allocated bytes for code 144 (MethodHash=ead60f85) for method System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (Tier1)
; ============================================================ Unwind Info: @@ -121,11 +124,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x0A + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18 + CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + 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)

coreclr_tests.run.linux.x64.checked.mch

-13 (-9.70%) : 62645.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -9,91 +9,89 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 8, 5.33) long -> rdi single-def -; V01 arg1 [V01,T01] ( 7, 5 ) ref -> rsi class-hnd <System.Object> -; V02 loc0 [V02,T04] ( 4, 3 ) long -> rbx -; V03 loc1 [V03,T03] ( 10, 3 ) long -> r15 -; V04 loc2 [V04,T02] ( 10, 4.33) long -> r14
+; V00 arg0 [V00,T02] ( 8, 5.33) long -> rdi single-def +; V01 arg1 [V01,T00] ( 7, 29 ) ref -> rsi class-hnd <System.Object> +; V02 loc0 [V02,T01] ( 4, 28 ) long -> rbx +; V03 loc1 [V03,T04] ( 10, 3 ) long -> rcx +; V04 loc2 [V04,T03] ( 10, 4.33) 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 r15 - push r14
push rbx
- lea rbp, [rsp+0x18] - ;; size=11 bbWeight=1 PerfScore 4.50
+ lea rbp, [rsp+0x08] + ;; size=7 bbWeight=1 PerfScore 2.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi] test rsi, rsi je SHORT G_M24157_IG04 mov rbx, qword ptr [rsi]
- movzx r15, word ptr [rbx+0x0E] - test r15, r15 - je SHORT G_M24157_IG08 - mov r14, qword ptr [rbx+0x40] - cmp r15, 4 - jl SHORT G_M24157_IG06 - ;; size=28 bbWeight=1 PerfScore 9.75
+ movzx rcx, word ptr [rbx+0x0E] + test rcx, rcx + je SHORT G_M24157_IG06 + mov rdx, qword ptr [rbx+0x40] + cmp rcx, 4 + jl SHORT G_M24157_IG09 + ;; size=27 bbWeight=1 PerfScore 9.75
G_M24157_IG03: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r14], rdi
+ cmp qword ptr [rdx], rdi
je SHORT G_M24157_IG04
- cmp qword ptr [r14+0x08], rdi
+ cmp qword ptr [rdx+0x08], rdi
je SHORT G_M24157_IG04
- cmp qword ptr [r14+0x10], rdi - jne SHORT G_M24157_IG10
+ cmp qword ptr [rdx+0x10], rdi + jne SHORT G_M24157_IG08
;; size=17 bbWeight=1 PerfScore 12.00
-G_M24157_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M24157_IG04: ; bbWeight=25, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, rsi ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25 -G_M24157_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=3 bbWeight=25 PerfScore 6.25 +G_M24157_IG05: ; bbWeight=25, epilog, nogc, extend
pop rbx
- pop r14 - pop r15
pop rbp ret
- ;; size=7 bbWeight=1 PerfScore 3.00 -G_M24157_IG06: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=3 bbWeight=25 PerfScore 50.00 +G_M24157_IG06: ; bbWeight=25, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- cmp qword ptr [r14], rdi - je SHORT G_M24157_IG04 - ;; size=5 bbWeight=0.33 PerfScore 1.33 -G_M24157_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - add r14, 8 - dec r15 - test r15, r15 - jg SHORT G_M24157_IG06 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M24157_IG08: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test dword ptr [rbx], 0xD1FFAB1E
- jne SHORT G_M24157_IG09 - xor rsi, rsi - jmp SHORT G_M24157_IG04 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M24157_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M24157_IG11 + ;; size=8 bbWeight=25 PerfScore 100.00 +G_M24157_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbx
- pop r14 - pop r15
pop rbp tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M24157_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz - cmp qword ptr [r14+0x18], rdi
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M24157_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz + cmp qword ptr [rdx+0x18], rdi
je SHORT G_M24157_IG04
- add r14, 32 - add r15, -4 - cmp r15, 4
+ add rdx, 32 + add rcx, -4 + cmp rcx, 4
jge SHORT G_M24157_IG03
- test r15, r15 - je SHORT G_M24157_IG08
+ test rcx, rcx + je SHORT G_M24157_IG06 + ;; size=25 bbWeight=0 PerfScore 0.00 +G_M24157_IG09: ; bbWeight=0.33, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz + cmp qword ptr [rdx], rdi + je SHORT G_M24157_IG04 + ;; size=5 bbWeight=0.33 PerfScore 1.33 +G_M24157_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz + add rdx, 8 + dec rcx + test rcx, rcx + jg SHORT G_M24157_IG09
jmp SHORT G_M24157_IG06
- ;; size=27 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00 +G_M24157_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + xor rsi, rsi + ; gcrRegs +[rsi] + jmp SHORT G_M24157_IG04 + ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 134, prolog size 11, PerfScore 30.83, instruction count 50, allocated bytes for code 134 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 121, prolog size 7, PerfScore 181.83, instruction count 44, allocated bytes for code 121 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -101,12 +99,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x02 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-13 (-9.70%) : 92969.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -9,91 +9,89 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 8, 3.93) long -> rdi single-def -; V01 arg1 [V01,T00] ( 7, 5 ) ref -> rsi class-hnd <System.Object> -; V02 loc0 [V02,T03] ( 4, 3 ) long -> rbx -; V03 loc1 [V03,T02] ( 10, 3 ) long -> r15 -; V04 loc2 [V04,T04] ( 10, 2.93) long -> r14
+; V00 arg0 [V00,T02] ( 8, 3.93) long -> rdi single-def +; V01 arg1 [V01,T00] ( 7, 16.50) ref -> rsi class-hnd <System.Object> +; V02 loc0 [V02,T01] ( 4, 15.50) long -> rbx +; V03 loc1 [V03,T03] ( 10, 3 ) long -> rcx +; V04 loc2 [V04,T04] ( 10, 2.93) 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 r15 - push r14
push rbx
- lea rbp, [rsp+0x18] - ;; size=11 bbWeight=1 PerfScore 4.50
+ lea rbp, [rsp+0x08] + ;; size=7 bbWeight=1 PerfScore 2.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi] test rsi, rsi je SHORT G_M24157_IG04 mov rbx, qword ptr [rsi]
- movzx r15, word ptr [rbx+0x0E] - test r15, r15 - je SHORT G_M24157_IG08 - mov r14, qword ptr [rbx+0x40] - cmp r15, 4 - jl SHORT G_M24157_IG06 - ;; size=28 bbWeight=1 PerfScore 9.75
+ movzx rcx, word ptr [rbx+0x0E] + test rcx, rcx + je SHORT G_M24157_IG06 + mov rdx, qword ptr [rbx+0x40] + cmp rcx, 4 + jl SHORT G_M24157_IG09 + ;; size=27 bbWeight=1 PerfScore 9.75
G_M24157_IG03: ; bbWeight=0.93, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r14], rdi - jne SHORT G_M24157_IG10
+ cmp qword ptr [rdx], rdi + jne SHORT G_M24157_IG08
;; size=5 bbWeight=0.93 PerfScore 3.70
-G_M24157_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M24157_IG04: ; bbWeight=12.50, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, rsi ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25 -G_M24157_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=3 bbWeight=12.50 PerfScore 3.12 +G_M24157_IG05: ; bbWeight=12.50, epilog, nogc, extend
pop rbx
- pop r14 - pop r15
pop rbp ret
- ;; size=7 bbWeight=1 PerfScore 3.00 -G_M24157_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=3 bbWeight=12.50 PerfScore 25.00 +G_M24157_IG06: ; bbWeight=12.50, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- cmp qword ptr [r14], rdi - je SHORT G_M24157_IG04 - ;; size=5 bbWeight=1 PerfScore 4.00 -G_M24157_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - add r14, 8 - dec r15 - test r15, r15 - jg SHORT G_M24157_IG06 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M24157_IG08: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test dword ptr [rbx], 0xD1FFAB1E
- jne SHORT G_M24157_IG09 - xor rsi, rsi - jmp SHORT G_M24157_IG04 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M24157_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M24157_IG11 + ;; size=8 bbWeight=12.50 PerfScore 50.00 +G_M24157_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbx
- pop r14 - pop r15
pop rbp tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M24157_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz - cmp qword ptr [r14+0x08], rdi
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M24157_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz + cmp qword ptr [rdx+0x08], rdi
je SHORT G_M24157_IG04
- cmp qword ptr [r14+0x10], rdi
+ cmp qword ptr [rdx+0x10], rdi
je SHORT G_M24157_IG04
- cmp qword ptr [r14+0x18], rdi
+ cmp qword ptr [rdx+0x18], rdi
je SHORT G_M24157_IG04
- add r14, 32 - add r15, -4 - cmp r15, 4
+ add rdx, 32 + add rcx, -4 + cmp rcx, 4
jge SHORT G_M24157_IG03
- test r15, r15 - je SHORT G_M24157_IG08
+ test rcx, rcx + je SHORT G_M24157_IG06 + ;; size=37 bbWeight=0 PerfScore 0.00 +G_M24157_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz + cmp qword ptr [rdx], rdi + je SHORT G_M24157_IG04 + ;; size=5 bbWeight=1 PerfScore 4.00 +G_M24157_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz + add rdx, 8 + dec rcx + test rcx, rcx + jg SHORT G_M24157_IG09
jmp SHORT G_M24157_IG06
- ;; size=39 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00 +G_M24157_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + xor rsi, rsi + ; gcrRegs +[rsi] + jmp SHORT G_M24157_IG04 + ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 134, prolog size 11, PerfScore 25.20, instruction count 50, allocated bytes for code 134 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 121, prolog size 7, PerfScore 98.08, instruction count 44, allocated bytes for code 121 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -101,12 +99,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x02 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

-13 (-9.70%) : 97277.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -9,91 +9,89 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 8, 3.89) long -> rdi single-def -; V01 arg1 [V01,T00] ( 7, 5 ) ref -> rsi class-hnd <System.Object> -; V02 loc0 [V02,T03] ( 4, 3 ) long -> rbx -; V03 loc1 [V03,T02] ( 10, 3 ) long -> r15 -; V04 loc2 [V04,T04] ( 10, 2.89) long -> r14
+; V00 arg0 [V00,T02] ( 8, 3.89) long -> rdi single-def +; V01 arg1 [V01,T00] ( 7, 12.33) ref -> rsi class-hnd <System.Object> +; V02 loc0 [V02,T01] ( 4, 11.33) long -> rbx +; V03 loc1 [V03,T03] ( 10, 3 ) long -> rcx +; V04 loc2 [V04,T04] ( 10, 2.89) 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 r15 - push r14
push rbx
- lea rbp, [rsp+0x18] - ;; size=11 bbWeight=1 PerfScore 4.50
+ lea rbp, [rsp+0x08] + ;; size=7 bbWeight=1 PerfScore 2.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi] test rsi, rsi je SHORT G_M24157_IG04 mov rbx, qword ptr [rsi]
- movzx r15, word ptr [rbx+0x0E] - test r15, r15 - je SHORT G_M24157_IG08 - mov r14, qword ptr [rbx+0x40] - cmp r15, 4 - jl SHORT G_M24157_IG06 - ;; size=28 bbWeight=1 PerfScore 9.75
+ movzx rcx, word ptr [rbx+0x0E] + test rcx, rcx + je SHORT G_M24157_IG06 + mov rdx, qword ptr [rbx+0x40] + cmp rcx, 4 + jl SHORT G_M24157_IG09 + ;; size=27 bbWeight=1 PerfScore 9.75
G_M24157_IG03: ; bbWeight=0.89, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r14], rdi - jne SHORT G_M24157_IG10
+ cmp qword ptr [rdx], rdi + jne SHORT G_M24157_IG08
;; size=5 bbWeight=0.89 PerfScore 3.57
-G_M24157_IG04: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
+G_M24157_IG04: ; bbWeight=8.33, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
mov rax, rsi ; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25 -G_M24157_IG05: ; bbWeight=1, epilog, nogc, extend
+ ;; size=3 bbWeight=8.33 PerfScore 2.08 +G_M24157_IG05: ; bbWeight=8.33, epilog, nogc, extend
pop rbx
- pop r14 - pop r15
pop rbp ret
- ;; size=7 bbWeight=1 PerfScore 3.00 -G_M24157_IG06: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=3 bbWeight=8.33 PerfScore 16.67 +G_M24157_IG06: ; bbWeight=8.33, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- cmp qword ptr [r14], rdi - je SHORT G_M24157_IG04 - ;; size=5 bbWeight=1 PerfScore 4.00 -G_M24157_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - add r14, 8 - dec r15 - test r15, r15 - jg SHORT G_M24157_IG06 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M24157_IG08: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
test dword ptr [rbx], 0xD1FFAB1E
- jne SHORT G_M24157_IG09 - xor rsi, rsi - jmp SHORT G_M24157_IG04 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M24157_IG09: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M24157_IG11 + ;; size=8 bbWeight=8.33 PerfScore 33.33 +G_M24157_IG07: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbx
- pop r14 - pop r15
pop rbp tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=12 bbWeight=0 PerfScore 0.00 -G_M24157_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz - cmp qword ptr [r14+0x08], rdi
+ ;; size=8 bbWeight=0 PerfScore 0.00 +G_M24157_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz + cmp qword ptr [rdx+0x08], rdi
je SHORT G_M24157_IG04
- cmp qword ptr [r14+0x10], rdi
+ cmp qword ptr [rdx+0x10], rdi
je SHORT G_M24157_IG04
- cmp qword ptr [r14+0x18], rdi
+ cmp qword ptr [rdx+0x18], rdi
je SHORT G_M24157_IG04
- add r14, 32 - add r15, -4 - cmp r15, 4
+ add rdx, 32 + add rcx, -4 + cmp rcx, 4
jge SHORT G_M24157_IG03
- test r15, r15 - je SHORT G_M24157_IG08
+ test rcx, rcx + je SHORT G_M24157_IG06 + ;; size=37 bbWeight=0 PerfScore 0.00 +G_M24157_IG09: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz + cmp qword ptr [rdx], rdi + je SHORT G_M24157_IG04 + ;; size=5 bbWeight=1 PerfScore 4.00 +G_M24157_IG10: ; bbWeight=0, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz + add rdx, 8 + dec rcx + test rcx, rcx + jg SHORT G_M24157_IG09
jmp SHORT G_M24157_IG06
- ;; size=39 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00 +G_M24157_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rsi] + xor rsi, rsi + ; gcrRegs +[rsi] + jmp SHORT G_M24157_IG04 + ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 134, prolog size 11, PerfScore 25.07, instruction count 50, allocated bytes for code 134 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 121, prolog size 7, PerfScore 71.90, instruction count 44, allocated bytes for code 121 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -101,12 +99,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x02 + CountOfUnwindCodes: 2
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r14 (14) - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r15 (15)
+ CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)

+33 (+13.15%) : 29243.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

@@ -49,32 +49,32 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rsi rdi] ; gcr arg pop 0 ;; size=32 bbWeight=1 PerfScore 8.00
-G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rbx+0x18] test r15d, r15d
- jne SHORT G_M27413_IG09 - ;; size=9 bbWeight=1.50 PerfScore 4.88 -G_M27413_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M27413_IG11 + ;; size=13 bbWeight=1.50 PerfScore 4.88 +G_M27413_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
test r14d, -4
- je G_M27413_IG14
+ je G_M27413_IG10
mov eax, r14d and eax, -3 cmp eax, 4
- je SHORT G_M27413_IG10 - ;; size=24 bbWeight=1.00 PerfScore 3.00
+ je G_M27413_IG12 + ;; size=28 bbWeight=1.00 PerfScore 3.00
G_M27413_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor r13d, r13d ;; size=3 bbWeight=1.00 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r12, r13b lea ecx, [r14-0x04] mov eax, r14d and eax, -4 cmp eax, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test r15d, r15d
- jne SHORT G_M27413_IG12 - ;; size=24 bbWeight=1.00 PerfScore 3.75
+ jne G_M27413_IG14 + ;; size=32 bbWeight=1.00 PerfScore 3.75
G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rdx, bword ptr [rbx+0x18] ; byrRegs +[rdx] @@ -84,7 +84,7 @@ G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, cmp eax, r14d jne SHORT G_M27413_IG03 test r12d, r12d
- je SHORT G_M27413_IG13
+ je SHORT G_M27413_IG09
call <unknown method> ; byrRegs -[rdx] ; gcr arg pop 0 @@ -109,15 +109,34 @@ G_M27413_IG08: ; bbWeight=1.00, epilog, nogc, extend jmp <unknown method> ; gcr arg pop 0 ;; size=19 bbWeight=1.00 PerfScore 5.25
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + add rsp, 8 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.02 PerfScore 0.07 +G_M27413_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx] + mov rdi, rbx + ; gcrRegs +[rdi] + call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] + ; gcrRegs -[rbx rdi] + ; gcr arg pop 0 + int3 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] test r14b, 2
- jne SHORT G_M27413_IG13 - jmp SHORT G_M27413_IG04 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG09 + jmp G_M27413_IG04 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x1C], 0
- je SHORT G_M27413_IG05
+ je G_M27413_IG05
mov rdi, rbx ; gcrRegs +[rdi] mov rax, qword ptr [rbx] @@ -128,39 +147,19 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r13d, r13d test eax, eax sete r13b
- jmp SHORT G_M27413_IG06 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06 + ;; size=37 bbWeight=0 PerfScore 0.00 +G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or ecx, 1 test r15d, r15d
- je SHORT G_M27413_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M27413_IG07 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or ecx, 2
- jmp SHORT G_M27413_IG07 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 8 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx] - mov rdi, rbx - ; gcrRegs +[rdi] - call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] - ; gcrRegs -[rbx rdi] - ; gcr arg pop 0 - int3 - ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M27413_IG07 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 251, prolog size 19, PerfScore 62.88, instruction count 86, allocated bytes for code 251 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 284, prolog size 19, PerfScore 62.94, instruction count 86, allocated bytes for code 284 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================ Unwind Info:

+33 (+13.15%) : 84507.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

@@ -49,32 +49,32 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rsi rdi] ; gcr arg pop 0 ;; size=32 bbWeight=1 PerfScore 8.00
-G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rbx+0x18] test r15d, r15d
- jne SHORT G_M27413_IG09 - ;; size=9 bbWeight=1.50 PerfScore 4.88 -G_M27413_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne G_M27413_IG11 + ;; size=13 bbWeight=1.50 PerfScore 4.88 +G_M27413_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
test r14d, -4
- je G_M27413_IG14
+ je G_M27413_IG10
mov eax, r14d and eax, -3 cmp eax, 4
- je SHORT G_M27413_IG10 - ;; size=24 bbWeight=1.00 PerfScore 3.00
+ je G_M27413_IG12 + ;; size=28 bbWeight=1.00 PerfScore 3.00
G_M27413_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor r13d, r13d ;; size=3 bbWeight=1.00 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r12, r13b lea ecx, [r14-0x04] mov eax, r14d and eax, -4 cmp eax, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test r15d, r15d
- jne SHORT G_M27413_IG12 - ;; size=24 bbWeight=1.00 PerfScore 3.75
+ jne G_M27413_IG14 + ;; size=32 bbWeight=1.00 PerfScore 3.75
G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rdx, bword ptr [rbx+0x18] ; byrRegs +[rdx] @@ -84,7 +84,7 @@ G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, cmp eax, r14d jne SHORT G_M27413_IG03 test r12d, r12d
- je SHORT G_M27413_IG13
+ je SHORT G_M27413_IG09
call <unknown method> ; byrRegs -[rdx] ; gcr arg pop 0 @@ -109,15 +109,34 @@ G_M27413_IG08: ; bbWeight=1.00, epilog, nogc, extend jmp <unknown method> ; gcr arg pop 0 ;; size=19 bbWeight=1.00 PerfScore 5.25
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + add rsp, 8 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=0.01 PerfScore 0.03 +G_M27413_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx] + mov rdi, rbx + ; gcrRegs +[rdi] + call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] + ; gcrRegs -[rbx rdi] + ; gcr arg pop 0 + int3 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] test r14b, 2
- jne SHORT G_M27413_IG13 - jmp SHORT G_M27413_IG04 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG09 + jmp G_M27413_IG04 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x1C], 0
- je SHORT G_M27413_IG05
+ je G_M27413_IG05
mov rdi, rbx ; gcrRegs +[rdi] mov rax, qword ptr [rbx] @@ -128,39 +147,19 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r13d, r13d test eax, eax sete r13b
- jmp SHORT G_M27413_IG06 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06 + ;; size=37 bbWeight=0 PerfScore 0.00 +G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or ecx, 1 test r15d, r15d
- je SHORT G_M27413_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M27413_IG07 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or ecx, 2
- jmp SHORT G_M27413_IG07 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 8 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx] - mov rdi, rbx - ; gcrRegs +[rdi] - call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] - ; gcrRegs -[rbx rdi] - ; gcr arg pop 0 - int3 - ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M27413_IG07 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 251, prolog size 19, PerfScore 62.88, instruction count 86, allocated bytes for code 251 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 284, prolog size 19, PerfScore 62.90, instruction count 86, allocated bytes for code 284 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================ Unwind Info:

+26 (+14.94%) : 98102.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)

@@ -5,24 +5,24 @@ ; optimized using Dynamic PGO ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 6, 2.67) long -> rdi single-def -; V01 arg1 [V01,T00] ( 7, 4.17) ref -> rsi class-hnd <System.Object> -; V02 loc0 [V02,T07] ( 4, 0.73) long -> rax
+; V00 arg0 [V00,T02] ( 6, 2.67) long -> rdi single-def +; V01 arg1 [V01,T01] ( 7, 4.17) ref -> rsi class-hnd <System.Object> +; V02 loc0 [V02,T08] ( 4, 0.73) long -> rax
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T08] ( 4, 0.50) int -> r11 "Inline return value spill temp"
+; V05 tmp1 [V05,T00] ( 4, 17.17) int -> rcx "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V07 tmp3 [V07,T06] ( 4, 0.79) byref -> rcx single-def "Inline stloc first use temp" -; V08 tmp4 [V08,T05] ( 4, 0.85) int -> rdx "Inline stloc first use temp" -; V09 tmp5 [V09,T02] ( 5, 1.08) int -> r8 "Inline stloc first use temp" -; V10 tmp6 [V10,T03] ( 5, 1.01) byref -> r9 "Inline stloc first use temp" -; V11 tmp7 [V11,T04] ( 5, 0.91) int -> r10 "Inline stloc first use temp"
+; V07 tmp3 [V07,T07] ( 4, 0.79) byref -> rcx single-def "Inline stloc first use temp" +; V08 tmp4 [V08,T06] ( 4, 0.85) int -> rdx "Inline stloc first use temp" +; V09 tmp5 [V09,T03] ( 5, 1.08) int -> r8 "Inline stloc first use temp" +; V10 tmp6 [V10,T04] ( 5, 1.01) byref -> r9 "Inline stloc first use temp" +; V11 tmp7 [V11,T05] ( 5, 0.91) int -> r10 "Inline stloc first use temp"
; V12 tmp8 [V12,T10] ( 2, 0.46) long -> r11 "Inline stloc first use temp"
-; V13 tmp9 [V13,T09] ( 3, 0.50) long -> r11 "Inline stloc first use temp"
+; V13 tmp9 [V13,T09] ( 3, 0.50) long -> rbx "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,T11] ( 2, 0.33) ref -> rcx single-def "Field obj" @@ -31,23 +31,40 @@ G_M60590_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp
- mov rbp, rsp - ;; size=4 bbWeight=1 PerfScore 1.25
+ push rbx + lea rbp, [rsp+0x08] + ;; size=7 bbWeight=1 PerfScore 2.50
G_M60590_IG02: ; bbWeight=1, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rsi] test rsi, rsi
- jne SHORT G_M60590_IG05
+ jne SHORT G_M60590_IG08
;; size=5 bbWeight=1 PerfScore 1.25 G_M60590_IG03: ; bbWeight=0.83, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref mov rax, rsi ; gcrRegs +[rax] ;; size=3 bbWeight=0.83 PerfScore 0.21 G_M60590_IG04: ; bbWeight=0.83, epilog, nogc, extend
+ pop rbx
pop rbp ret
- ;; size=2 bbWeight=0.83 PerfScore 1.25 -G_M60590_IG05: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=3 bbWeight=0.83 PerfScore 1.67 +G_M60590_IG05: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
+ mov ecx, 2 + ;; size=5 bbWeight=16.67 PerfScore 4.17 +G_M60590_IG06: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz + cmp ecx, 1 + je SHORT G_M60590_IG03 + test ecx, ecx + je G_M60590_IG15 + ;; size=13 bbWeight=0.17 PerfScore 0.42 +G_M60590_IG07: ; bbWeight=0.17, epilog, nogc, extend + pop rbx + pop rbp + jmp <unknown method> + ; gcr arg pop 0 + ;; size=7 bbWeight=0.17 PerfScore 0.50 +G_M60590_IG08: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, gcvars, byref, isz
mov rax, qword ptr [rsi] cmp rax, rdi je SHORT G_M60590_IG03 @@ -65,7 +82,7 @@ G_M60590_IG05: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=004 shrx rdx, rdx, r8 xor r8d, r8d ;; size=59 bbWeight=0.17 PerfScore 1.92
-G_M60590_IG06: ; bbWeight=0.23, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx}, byref, isz
+G_M60590_IG09: ; bbWeight=0.23, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx}, byref, isz
lea r9d, [rdx+0x01] movsxd r9, r9d lea r9, [r9+2*r9] @@ -75,56 +92,46 @@ G_M60590_IG06: ; bbWeight=0.23, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx mov r11, qword ptr [r9+0x08] and r10d, -2 cmp r11, rax
- jne SHORT G_M60590_IG11
+ jne SHORT G_M60590_IG12
;; size=31 bbWeight=0.23 PerfScore 1.65
-G_M60590_IG07: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, byref, isz - mov r11, rdi - xor r11, qword ptr [r9+0x10] - cmp r11, 1 - ja SHORT G_M60590_IG11
+G_M60590_IG10: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, byref, isz + mov rbx, rdi + xor rbx, qword ptr [r9+0x10] + cmp rbx, 1 + ja SHORT G_M60590_IG12
;; size=13 bbWeight=0.17 PerfScore 0.74
-G_M60590_IG08: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0200 {r9}, byref, isz
+G_M60590_IG11: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0200 {r9}, byref, isz
; byrRegs -[rcx] cmp r10d, dword ptr [r9]
- jne SHORT G_M60590_IG13 - ;; size=5 bbWeight=0.17 PerfScore 0.66 -G_M60590_IG09: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r9] - cmp r11d, 1 - je SHORT G_M60590_IG03 - test r11d, r11d - je SHORT G_M60590_IG14 - ;; size=11 bbWeight=0.17 PerfScore 0.42 -G_M60590_IG10: ; bbWeight=0.17, epilog, nogc, extend - pop rbp - jmp <unknown method> - ; gcr arg pop 0 - ;; size=6 bbWeight=0.17 PerfScore 0.42 -G_M60590_IG11: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx}, gcvars, byref, isz - ; byrRegs +[rcx]
+ jne G_M60590_IG05 + jmp SHORT G_M60590_IG14 + ;; size=11 bbWeight=0.17 PerfScore 0.99 +G_M60590_IG12: ; bbWeight=0.06, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx}, byref + ; byrRegs -[r9] +[rcx]
test r10d, r10d
- je SHORT G_M60590_IG13 - ;; size=5 bbWeight=0.06 PerfScore 0.08 -G_M60590_IG12: ; bbWeight=0.23, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx}, byref, isz
+ je G_M60590_IG05 + ;; size=9 bbWeight=0.06 PerfScore 0.08 +G_M60590_IG13: ; bbWeight=0.23, gcrefRegs=0040 {rsi}, byrefRegs=0002 {rcx}, byref, isz
inc r8d add edx, r8d and edx, dword ptr [rcx+0x04] cmp r8d, 8
- jl SHORT G_M60590_IG06 - ;; size=15 bbWeight=0.23 PerfScore 1.08 -G_M60590_IG13: ; bbWeight=0.00, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M60590_IG09 + jmp G_M60590_IG05 + ;; size=20 bbWeight=0.23 PerfScore 1.54 +G_M60590_IG14: ; bbWeight=0.17, gcrefRegs=0040 {rsi}, byrefRegs=0000 {}, byref
; byrRegs -[rcx]
- mov r11d, 2 - jmp SHORT G_M60590_IG09 - ;; size=8 bbWeight=0.00 PerfScore 0.00 -G_M60590_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov ecx, ebx + jmp G_M60590_IG06 + ;; size=7 bbWeight=0.17 PerfScore 0.37 +G_M60590_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] xor rsi, rsi ; gcrRegs +[rsi] jmp G_M60590_IG03 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 174, prolog size 4, PerfScore 10.93, instruction count 52, allocated bytes for code 174 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 200, prolog size 7, PerfScore 18.00, instruction count 58, allocated bytes for code 200 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -132,9 +139,10 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x01 - CountOfUnwindCodes: 1
+ SizeOfProlog : 0x02 + CountOfUnwindCodes: 2
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)

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, 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 PerfScore 2.00 +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, 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 PerfScore 2.00 +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] ...

-20 (-3.13%) : 233222.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)

@@ -9,23 +9,23 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 10, 9 ) ref -> [rbp-0x38] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter> -; V01 arg1 [V01,T16] ( 3, 2.50) ref -> r15 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
+; V00 this [V00,T04] ( 10, 10 ) ref -> [rbp-0x40] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter> +; V01 arg1 [V01,T16] ( 3, 2.50) ref -> r14 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
; V02 arg2 [V02,T03] ( 7, 10.50) ref -> rbx class-hnd single-def <System.Globalization.CultureInfo>
-; V03 arg3 [V03,T11] ( 7, 4.50) ref -> [rbp-0x40] class-hnd EH-live single-def <System.Object> -; V04 loc0 [V04,T19] ( 5, 3.50) ref -> r14 class-hnd single-def <<unknown class>> -; V05 loc1 [V05,T17] ( 2, 4.50) ubyte -> r15 -; V06 loc2 [V06,T05] ( 4, 9 ) long -> r13
+; V03 arg3 [V03,T11] ( 7, 4.50) ref -> [rbp-0x48] class-hnd EH-live single-def <System.Object> +; V04 loc0 [V04,T19] ( 5, 3.50) ref -> r13 class-hnd single-def <<unknown class>> +; V05 loc1 [V05,T17] ( 2, 4.50) ubyte -> r14 +; V06 loc2 [V06,T05] ( 4, 9.50) long -> r12
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>>
-; V08 loc4 [V08,T12] ( 3, 5 ) ref -> r14 class-hnd single-def <<unknown class>> -; V09 loc5 [V09,T00] ( 5, 16.50) int -> r12
+; V08 loc4 [V08,T12] ( 3, 5 ) ref -> r13 class-hnd single-def <<unknown class>> +; V09 loc5 [V09,T00] ( 5, 16.50) int -> [rbp-0x2C]
; V10 loc6 [V10,T10] ( 2, 8 ) ref -> rsi class-hnd <<unknown class>>
-; V11 loc7 [V11,T20] ( 3, 1.50) ref -> rax class-hnd <System.Object>
+; V11 loc7 [V11,T20] ( 3, 2 ) ref -> rax class-hnd <System.Object>
;* V12 loc8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V13 loc9 [V13,T18] ( 2, 4.50) ubyte -> r15 -; V14 loc10 [V14,T06] ( 4, 9 ) long -> r14 -; V15 loc11 [V15,T13] ( 3, 5 ) ref -> r13 class-hnd single-def <<unknown class>> -; V16 loc12 [V16,T01] ( 5, 16.50) int -> r12
+; V13 loc9 [V13,T18] ( 2, 4.50) ubyte -> r14 +; V14 loc10 [V14,T06] ( 4, 9.50) long -> r13 +; V15 loc11 [V15,T13] ( 3, 5 ) ref -> r12 class-hnd single-def <<unknown class>> +; V16 loc12 [V16,T01] ( 5, 16.50) int -> [rbp-0x30]
; V17 loc13 [V17,T07] ( 3, 8 ) ref -> rdi class-hnd <<unknown class>> ;# V18 OutArgs [V18 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V19 tmp1 [V19,T23] ( 2, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> @@ -41,8 +41,8 @@ ; V29 tmp11 [V29,T27] ( 2, 0 ) ref -> r14 single-def "argument with side effect" ; V30 tmp12 [V30,T28] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ; V31 PSPSym [V31,T21] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
-; V32 cse0 [V32,T14] ( 3, 5 ) int -> [rbp-0x2C] spill-single-def "CSE - moderate" -; V33 cse1 [V33,T15] ( 3, 5 ) int -> [rbp-0x30] spill-single-def "CSE - moderate"
+; V32 cse0 [V32,T14] ( 3, 5 ) int -> [rbp-0x34] spill-single-def "CSE - moderate" +; V33 cse1 [V33,T15] ( 3, 5 ) int -> [rbp-0x38] spill-single-def "CSE - moderate"
; ; Lcl frame size = 40 @@ -56,31 +56,31 @@ G_M63242_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub rsp, 40 lea rbp, [rsp+0x50] mov qword ptr [rbp-0x50], rsp
- mov gword ptr [rbp-0x38], rdi
+ mov gword ptr [rbp-0x40], rdi
; GC ptr vars +{V00}
- mov gword ptr [rbp-0x40], rcx
+ mov gword ptr [rbp-0x48], rcx
; GC ptr vars +{V03}
- mov r15, rsi
+ mov r15, rdi
; gcrRegs +[r15]
+ mov r14, rsi + ; gcrRegs +[r14]
mov rbx, rdx ; gcrRegs +[rbx]
- mov rax, rcx - ; gcrRegs +[rax] - ;; size=40 bbWeight=1 PerfScore 10.50 -G_M63242_IG02: ; bbWeight=1, gcVars=0000000000000810 {V00 V03}, gcrefRegs=8009 {rax rbx r15}, byrefRegs=0000 {}, gcvars, byref - mov rdi, rax
+ mov rdi, rcx
; gcrRegs +[rdi]
+ ;; size=43 bbWeight=1 PerfScore 10.75 +G_M63242_IG02: ; bbWeight=1, gcVars=0000000000000810 {V00 V03}, gcrefRegs=C088 {rbx rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref
call [CORINFO_HELP_READYTORUN_ISINSTANCEOF]
- ; gcrRegs -[rdi]
+ ; gcrRegs -[rdi] +[rax]
; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14] - test r14, r14
+ mov r13, rax + ; gcrRegs +[r13] + test r13, r13
je G_M63242_IG10
- ;; size=21 bbWeight=1 PerfScore 4.75 -G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax r15] - mov rdi, r14
+ ;; size=18 bbWeight=1 PerfScore 4.50 +G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax r14] + mov rdi, r13
; gcrRegs +[rdi] lea r11, [(reloc)] ; function address mov esi, 44 @@ -89,54 +89,53 @@ G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 ; gcr arg pop 0 test eax, eax je G_M63242_IG09
- mov rdi, gword ptr [rbp-0x38]
+ mov rdi, gword ptr [r15+0x08]
; gcrRegs +[rdi]
- mov rdi, gword ptr [rdi+0x08]
call [<unknown method>] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0
- mov r15, rax - ; gcrRegs +[r15]
+ mov r14, rax + ; gcrRegs +[r14]
mov rdi, qword ptr [(reloc)] ; <unknown class> call [CORINFO_HELP_TYPEHANDLE_TO_RUNTIMETYPE] ; gcr arg pop 0
- cmp r15, rax - sete r15b - ; gcrRegs -[r15] - movzx r15, r15b - xor r13d, r13d - mov rdi, r14
+ cmp r14, rax + sete r14b + ; gcrRegs -[r14] + movzx r14, r14b + xor r12d, r12d + mov rdi, r13
; gcrRegs +[rdi] lea r11, [(reloc)] ; function address mov esi, 44 xor edx, edx call [r11]<unknown method>
- ; gcrRegs -[rdi r14]
+ ; gcrRegs -[rdi r13]
; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14] - xor r12d, r12d - mov eax, dword ptr [r14+0x08]
+ mov r13, rax + ; gcrRegs +[r13] + xor eax, eax
; gcrRegs -[rax]
- mov dword ptr [rbp-0x2C], eax - test eax, eax
+ mov ecx, dword ptr [r13+0x08] + mov dword ptr [rbp-0x34], ecx + test ecx, ecx
jle SHORT G_M63242_IG07
- ;; size=107 bbWeight=0.50 PerfScore 13.62 -G_M63242_IG04: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz - mov edi, r12d - mov rsi, gword ptr [r14+8*rdi+0x10]
+ ;; size=102 bbWeight=0.50 PerfScore 13.12 +G_M63242_IG04: ; bbWeight=4, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz + mov dword ptr [rbp-0x2C], eax + mov edi, eax + mov rsi, gword ptr [r13+8*rdi+0x10]
; gcrRegs +[rsi]
- mov rdi, gword ptr [rbp-0x38]
+ mov rdi, gword ptr [r15+0x08]
; gcrRegs +[rdi]
- mov rdi, gword ptr [rdi+0x08]
mov edx, 1 call [<unknown method>] ; gcrRegs -[rsi rdi] +[rax] ; gcr arg pop 0
- test r15d, r15d
+ test r14d, r14d
jne SHORT G_M63242_IG08
- ;; size=32 bbWeight=4 PerfScore 39.00 -G_M63242_IG05: ; bbWeight=2, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, byref
+ ;; size=30 bbWeight=4 PerfScore 39.00 +G_M63242_IG05: ; bbWeight=2, gcrefRegs=A009 {rax rbx r13 r15}, byrefRegs=0000 {}, byref
mov rdi, rax ; gcrRegs +[rdi] mov rsi, rbx @@ -145,26 +144,26 @@ G_M63242_IG05: ; bbWeight=2, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 ; gcrRegs -[rax rsi rdi] ; gcr arg pop 0 ;; size=12 bbWeight=2 PerfScore 7.00
-G_M63242_IG06: ; bbWeight=4, gcrefRegs=4008 {rbx r14}, byrefRegs=0000 {}, byref, isz - or r13, rax - inc r12d - mov edi, dword ptr [rbp-0x2C] - cmp edi, r12d
+G_M63242_IG06: ; bbWeight=4, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz + or r12, rax + mov eax, dword ptr [rbp-0x2C] + inc eax + mov edi, dword ptr [rbp-0x34] + cmp edi, eax
jg SHORT G_M63242_IG04
- ;; size=14 bbWeight=4 PerfScore 11.00 -G_M63242_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[rbx r14] - mov rdi, gword ptr [rbp-0x38]
+ ;; size=15 bbWeight=4 PerfScore 15.00 +G_M63242_IG07: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx r13] + mov rdi, gword ptr [r15+0x08]
; gcrRegs +[rdi]
- mov rdi, gword ptr [rdi+0x08] - mov rsi, r13
+ mov rsi, r12
call [<unknown method>] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0 jmp G_M63242_IG19
- ;; size=22 bbWeight=0.50 PerfScore 4.12 -G_M63242_IG08: ; bbWeight=2, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx r14]
+ ;; size=18 bbWeight=1 PerfScore 7.25 +G_M63242_IG08: ; bbWeight=2, gcrefRegs=A009 {rax rbx r13 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbx r13]
mov rdi, rax ; gcrRegs +[rdi] mov rsi, rbx @@ -174,67 +173,66 @@ G_M63242_IG08: ; bbWeight=2, gcrefRegs=4009 {rax rbx r14}, byrefRegs=0000 ; gcr arg pop 0 jmp SHORT G_M63242_IG06 ;; size=14 bbWeight=2 PerfScore 11.00
-G_M63242_IG09: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+G_M63242_IG09: ; bbWeight=0.50, gcrefRegs=A000 {r13 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx]
- mov rdi, gword ptr [rbp-0x38]
+ mov rdi, gword ptr [r15+0x08]
; gcrRegs +[rdi]
- mov rdi, gword ptr [rdi+0x08] - mov rsi, r14
+ mov rsi, r13
; gcrRegs +[rsi] mov edx, 1 call [<unknown method>]
- ; gcrRegs -[rsi rdi r14] +[rax]
+ ; gcrRegs -[rsi rdi r13] +[rax]
; gcr arg pop 0 jmp G_M63242_IG19
- ;; size=27 bbWeight=0.50 PerfScore 4.25 -G_M63242_IG10: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax] +[rbx r15] - mov rdi, gword ptr [rbp-0x40]
+ ;; size=23 bbWeight=0.50 PerfScore 3.75 +G_M63242_IG10: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rax] +[rbx r14] + mov rdi, gword ptr [rbp-0x48]
; gcrRegs +[rdi] call [CORINFO_HELP_READYTORUN_ISINSTANCEOF] ; gcrRegs -[rdi] +[rax] ; gcr arg pop 0 test rax, rax ...

+33 (+4.51%) : 124630.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)

@@ -9,14 +9,14 @@ ; 0 inlinees with PGO data; 12 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T12] ( 4, 4.50) ref -> r13 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder> -; V01 arg1 [V01,T13] ( 5, 4.50) ref -> r12 class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]> -; V02 arg2 [V02,T03] ( 3, 18 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> -; V03 arg3 [V03,T15] ( 3, 4 ) ref -> [rbp-0x50] class-hnd single-def <System.String> -; V04 arg4 [V04,T08] ( 4, 6 ) int -> r14 single-def -; V05 arg5 [V05,T07] ( 7, 12 ) byref -> r15 single-def
+; V00 this [V00,T13] ( 4, 4.50) ref -> r12 this class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Binder> +; V01 arg1 [V01,T14] ( 5, 4.50) ref -> [rbp-0x50] class-hnd single-def <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol]> +; V02 arg2 [V02,T04] ( 3, 18 ) ref -> rbx class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> +; V03 arg3 [V03,T15] ( 3, 4 ) ref -> [rbp-0x58] class-hnd single-def <System.String> +; V04 arg4 [V04,T09] ( 4, 6 ) int -> r13 single-def +; V05 arg5 [V05,T07] ( 7, 14 ) byref -> r15 single-def
; V06 arg6 [V06,T29] ( 1, 2 ) byref -> [rbp+0x10] single-def
-; V07 arg7 [V07,T14] ( 4, 6 ) byref -> [rbp+0x18] single-def
+; V07 arg7 [V07,T08] ( 4, 8 ) byref -> r14 single-def
; V08 arg8 [V08,T30] ( 1, 1 ) byref -> [rbp+0x20] single-def ;* V09 loc0 [V09 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.ExtensionMethodScopeEnumerator> ;* V10 loc1 [V10 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <Microsoft.CodeAnalysis.CSharp.ExtensionMethodScopes> @@ -34,37 +34,37 @@ ;* V22 tmp9 [V22 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.ExtensionMethodScopes> ;* V23 tmp10 [V23 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SR] multireg-ret "Return value temp for multireg return" <Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbol]> ; V24 tmp11 [V24,T00] ( 3, 96 ) ref -> rax class-hnd "impAppendStmt" <<unknown class>>
-; V25 tmp12 [V25,T19] ( 4, 4 ) ref -> [rbp-0x58] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V26 tmp13 [V26,T26] ( 2, 2 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "finalizable newobj spill" <<unknown class>> -; V27 tmp14 [V27,T20] ( 4, 4 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> -; V28 tmp15 [V28,T27] ( 2, 2 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "finalizable newobj spill" <<unknown class>>
+; V25 tmp12 [V25,T19] ( 4, 4 ) ref -> [rbp-0x60] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V26 tmp13 [V26,T26] ( 2, 2 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "finalizable newobj spill" <<unknown class>> +; V27 tmp14 [V27,T20] ( 4, 4 ) ref -> [rbp-0x70] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>> +; V28 tmp15 [V28,T27] ( 2, 2 ) ref -> [rbp-0x78] class-hnd exact spill-single-def "finalizable newobj spill" <<unknown class>>
;* V29 tmp16 [V29 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <Microsoft.CodeAnalysis.CSharp.ExtensionMethodScopeEnumerator> ;* V30 tmp17 [V30 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Binder> ; V31 tmp18 [V31,T17] ( 3, 6 ) int -> r9 "Inline stloc first use temp"
-; V32 tmp19 [V32,T09] ( 2, 8 ) ref -> rdx class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.LookupResult> -; V33 tmp20 [V33,T10] ( 2, 8 ) ref -> r11 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.LookupResult>
+; V32 tmp19 [V32,T10] ( 2, 8 ) ref -> rdx class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.LookupResult> +; V33 tmp20 [V33,T11] ( 2, 8 ) ref -> r11 class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.LookupResult>
;* V34 tmp21 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.LookupResult> ; V35 tmp22 [V35,T01] ( 2, 64 ) ref -> rdx class-hnd exact "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.CSharpCompilation> ; V36 tmp23 [V36 ] ( 2, 32 ) ubyte -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op "Inline ldloca(s) first use temp"
-; V37 tmp24 [V37,T06] ( 4, 16 ) ref -> [rbp-0x78] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.LookupResult>
+; V37 tmp24 [V37,T03] ( 4, 32 ) ref -> [rbp-0x80] class-hnd spill-single-def "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.LookupResult>
;* V38 tmp25 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V39 tmp26 [V39 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <Microsoft.CodeAnalysis.CSharp.Binder>
-; V40 tmp27 [V40,T04] ( 3, 18.50) ref -> r12 single-def "field V09._binder (fldOffset=0x0)" P-INDEP -; V41 tmp28 [V41,T05] ( 7, 16.50) ref -> [rbp-0x80] do-not-enreg[F] "field V09._current (fldOffset=0x8)" P-INDEP
+; V40 tmp27 [V40,T05] ( 3, 18.50) ref -> [rbp-0x88] spill-single-def "field V09._binder (fldOffset=0x0)" P-INDEP +; V41 tmp28 [V41,T06] ( 7, 16.50) ref -> [rbp-0x90] do-not-enreg[F] "field V09._current (fldOffset=0x8)" P-INDEP
;* V42 tmp29 [V42 ] ( 0, 0 ) ref -> zero-ref single-def "field V10._binder (fldOffset=0x0)" P-INDEP
-; V43 tmp30 [V43,T23] ( 2, 4 ) ref -> [rbp-0x88] spill-single-def "field V11.Binder (fldOffset=0x0)" P-INDEP
+; V43 tmp30 [V43,T23] ( 2, 4 ) ref -> [rbp-0x98] spill-single-def "field V11.Binder (fldOffset=0x0)" P-INDEP
; V44 tmp31 [V44 ] ( 4, 36 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V12._builder (fldOffset=0x0)" P-DEP ; V45 tmp32 [V45 ] ( 4, 36 ) int -> [rbp-0x30] do-not-enreg[X] addr-exposed "field V12._index (fldOffset=0x8)" P-DEP ;* V46 tmp33 [V46 ] ( 0, 0 ) ref -> zero-ref single-def "field V22._binder (fldOffset=0x0)" P-INDEP ;* V47 tmp34 [V47,T31] ( 0, 0 ) ref -> zero-ref single-def "field V29._binder (fldOffset=0x0)" P-INDEP ;* V48 tmp35 [V48,T32] ( 0, 0 ) ref -> zero-ref single-def "field V29._current (fldOffset=0x8)" P-INDEP ; V49 tmp36 [V49,T28] ( 2, 2 ) ref -> rdi single-def "argument with side effect"
-; V50 tmp37 [V50,T11] ( 2, 8 ) ref -> rdi "argument with side effect" -; V51 cse0 [V51,T18] ( 7, 5 ) byref -> [rbp-0x90] spill-single-def "CSE - moderate"
+; V50 tmp37 [V50,T12] ( 2, 8 ) ref -> rdi "argument with side effect" +; V51 cse0 [V51,T18] ( 7, 5 ) byref -> [rbp-0xA0] spill-single-def "CSE - moderate"
; V52 cse1 [V52,T02] ( 4, 36 ) long -> [rbp-0x48] spill-single-def "CSE - aggressive" ; V53 cse2 [V53,T16] ( 3, 6 ) ref -> rdi "CSE - moderate" ;
-; Lcl frame size = 120
+; Lcl frame size = 136
G_M56612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -73,139 +73,137 @@ G_M56612_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push r13 push r12 push rbx
- sub rsp, 120 - lea rbp, [rsp+0xA0]
+ sub rsp, 136 + lea rbp, [rsp+0xB0]
xorps xmm8, xmm8 movaps xmmword ptr [rbp-0x40], xmm8 xor eax, eax mov qword ptr [rbp-0x30], rax
- mov gword ptr [rbp-0x50], rcx
+ mov gword ptr [rbp-0x50], rsi + ; GC ptr vars +{V01} + mov gword ptr [rbp-0x58], rcx
; GC ptr vars +{V03}
- mov r13, rdi - ; gcrRegs +[r13] - mov r12, rsi
+ mov r12, rdi
; gcrRegs +[r12] mov rbx, rdx ; gcrRegs +[rbx]
- mov r14d, r8d
+ mov r13d, r8d
mov r15, r9 ; byrRegs +[r15]
- ;; size=56 bbWeight=1 PerfScore 12.58 -G_M56612_IG02: ; bbWeight=1, gcVars=0000000000008000 {V03}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
+ mov r14, bword ptr [rbp+0x18] + ; byrRegs +[r14] + ;; size=64 bbWeight=1 PerfScore 14.33 +G_M56612_IG02: ; bbWeight=1, gcVars=000000000000C000 {V01 V03}, gcrefRegs=1008 {rbx r12}, byrefRegs=C000 {r14 r15}, gcvars, byref
call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] ; byrRegs +[rax]
- mov bword ptr [rbp-0x90], rax
+ mov bword ptr [rbp-0xA0], rax
; GC ptr vars +{V51} mov rdx, gword ptr [rax+0x0BA8] ; gcrRegs +[rdx] test rdx, rdx jne G_M56612_IG08 ;; size=29 bbWeight=1 PerfScore 7.25
-G_M56612_IG03: ; bbWeight=0.50, gcVars=0000000000048000 {V03 V51}, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8001 {rax r15}, gcvars, byref
+G_M56612_IG03: ; bbWeight=0.50, gcVars=000000000004C000 {V01 V03 V51}, gcrefRegs=1008 {rbx r12}, byrefRegs=C001 {rax r14 r15}, gcvars, byref
; gcrRegs -[rdx] mov rcx, gword ptr [rax+0x0A08] ; gcrRegs +[rcx]
- mov gword ptr [rbp-0x70], rcx
+ mov gword ptr [rbp-0x78], rcx
; GC ptr vars +{V28} call [CORINFO_HELP_READYTORUN_NEW] ; gcrRegs -[rcx] +[rax] ; byrRegs -[rax] mov rdx, rax ; gcrRegs +[rdx]
- mov gword ptr [rbp-0x68], rdx
+ mov gword ptr [rbp-0x70], rdx
; GC ptr vars +{V27} mov rdi, rdx ; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x70]
+ mov rsi, gword ptr [rbp-0x78]
; gcrRegs +[rsi] ; GC ptr vars -{V27 V28} call [CORINFO_HELP_READYTORUN_DELEGATE_CTOR] ; gcrRegs -[rax rdx rsi rdi]
- mov rax, bword ptr [rbp-0x90]
+ mov rax, bword ptr [rbp-0xA0]
; byrRegs +[rax] lea rdi, bword ptr [rax+0x0BA8] ; byrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x68]
+ mov rsi, gword ptr [rbp-0x70]
; gcrRegs +[rsi] call [CORINFO_HELP_ASSIGN_REF] ; gcrRegs -[rsi] ; byrRegs -[rax rdi]
- mov rdx, gword ptr [rbp-0x68]
+ mov rdx, gword ptr [rbp-0x70]
; gcrRegs +[rdx] ;; size=65 bbWeight=0.50 PerfScore 9.00
-G_M56612_IG04: ; bbWeight=1, gcVars=0000000000048000 {V03 V51}, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M56612_IG04: ; bbWeight=1, gcVars=000000000004C000 {V01 V03 V51}, gcrefRegs=100C {rdx rbx r12}, byrefRegs=C000 {r14 r15}, gcvars, byref, isz
mov rdi, qword ptr [(reloc)] ; <unknown method>
- mov rsi, r12
+ mov rsi, gword ptr [rbp-0x50]
; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rdx rsi]
- mov rcx, bword ptr [rbp+0x18] - ; byrRegs +[rcx] - mov byte ptr [rcx], al - mov rax, bword ptr [rbp-0x90]
+ mov byte ptr [r14], al + mov rax, bword ptr [rbp-0xA0]
; byrRegs +[rax] mov rdx, gword ptr [rax+0x0BB0] ; gcrRegs +[rdx] test rdx, rdx jne SHORT G_M56612_IG06
- ;; size=41 bbWeight=1 PerfScore 11.50 -G_M56612_IG05: ; bbWeight=0.50, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8001 {rax r15}, byref
+ ;; size=39 bbWeight=1 PerfScore 11.25 +G_M56612_IG05: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=C001 {rax r14 r15}, byref
; gcrRegs -[rdx]
- ; byrRegs -[rcx] - mov rdx, gword ptr [rax+0x0A08] - ; gcrRegs +[rdx] - mov gword ptr [rbp-0x60], rdx
+ mov rcx, gword ptr [rax+0x0A08] + ; gcrRegs +[rcx] + mov gword ptr [rbp-0x68], rcx
; GC ptr vars +{V26} call [CORINFO_HELP_READYTORUN_NEW]
- ; gcrRegs -[rdx] +[rax]
+ ; gcrRegs -[rcx] +[rax]
; byrRegs -[rax] mov rdx, rax ; gcrRegs +[rdx]
- mov gword ptr [rbp-0x58], rdx
+ mov gword ptr [rbp-0x60], rdx
; GC ptr vars +{V25} mov rdi, rdx ; gcrRegs +[rdi]
- mov rsi, gword ptr [rbp-0x60]
+ mov rsi, gword ptr [rbp-0x68]
; gcrRegs +[rsi] ; GC ptr vars -{V26} call [CORINFO_HELP_READYTORUN_DELEGATE_CTOR] ; gcrRegs -[rax rdx rsi rdi]
- mov rdi, bword ptr [rbp-0x90]
+ mov rdi, bword ptr [rbp-0xA0]
; byrRegs +[rdi] lea rdi, bword ptr [rdi+0x0BB0]
- mov rsi, gword ptr [rbp-0x58]
+ mov rsi, gword ptr [rbp-0x60]
; gcrRegs +[rsi] ; GC ptr vars -{V51} call [CORINFO_HELP_ASSIGN_REF] ; gcrRegs -[rsi] ; byrRegs -[rdi]
- mov rdx, gword ptr [rbp-0x58]
+ mov rdx, gword ptr [rbp-0x60]
; gcrRegs +[rdx] ;; size=65 bbWeight=0.50 PerfScore 9.00
-G_M56612_IG06: ; bbWeight=1, gcVars=0000000000008000 {V03}, gcrefRegs=300C {rdx rbx r12 r13}, byrefRegs=8000 {r15}, gcvars, byref
+G_M56612_IG06: ; bbWeight=1, gcVars=000000000000C000 {V01 V03}, gcrefRegs=100C {rdx rbx r12}, byrefRegs=C000 {r14 r15}, gcvars, byref
; GC ptr vars -{V25} mov rdi, qword ptr [(reloc)] ; <unknown method>
- mov rsi, r12
+ mov rsi, gword ptr [rbp-0x50]
; gcrRegs +[rsi] call [<unknown method>] ; gcrRegs -[rdx rsi] mov rdi, bword ptr [rbp+0x20] ; byrRegs +[rdi] mov byte ptr [rdi], al
- mov rax, bword ptr [rbp+0x18] - ; byrRegs +[rax] - cmp byte ptr [rax], 0
+ cmp byte ptr [r14], 0
jne G_M56612_IG22
- ;; size=35 bbWeight=1 PerfScore 12.25 -G_M56612_IG07: ; bbWeight=0.50, gcrefRegs=3008 {rbx r12 r13}, byrefRegs=8000 {r15}, byref - ; byrRegs -[rax rdi] - mov rdi, r12
+ ;; size=33 bbWeight=1 PerfScore 12.00 +G_M56612_IG07: ; bbWeight=0.50, gcrefRegs=1008 {rbx r12}, byrefRegs=C000 {r14 r15}, byref + ; byrRegs -[rdi] + mov rdi, gword ptr [rbp-0x50]
; gcrRegs +[rdi] lea r11, [(reloc)] ; function address xor esi, esi cmp dword ptr [rdi], edi
+ ; GC ptr vars -{V01}
...

+22 (+5.99%) : 190196.dasm - System.Linq.Expressions.ExpressionVisitor:VisitSystem.__Canon:System.Collections.ObjectModel.ReadOnlyCollection`1System.__Canon

@@ -12,10 +12,10 @@ ; V00 TypeCtx [V00,T10] ( 5, 5.50) long -> r14 single-def ; V01 arg0 [V01,T03] ( 8, 26.50) ref -> rbx class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ; V02 arg1 [V02,T06] ( 5, 11 ) ref -> r15 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V03 loc0 [V03,T04] ( 7, 26.50) ref -> [rbp-0x40] class-hnd <System.__Canon[]> -; V04 loc1 [V04,T02] ( 9, 39 ) int -> r12 -; V05 loc2 [V05,T07] ( 4, 8 ) int -> [rbp-0x34] spill-single-def -; V06 loc3 [V06,T08] ( 3, 8 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.__Canon>
+; V03 loc0 [V03,T04] ( 7, 28.50) ref -> [rbp-0x40] class-hnd <System.__Canon[]> +; V04 loc1 [V04,T02] ( 9, 41 ) int -> r12 +; V05 loc2 [V05,T08] ( 4, 8 ) int -> [rbp-0x34] spill-single-def +; V06 loc3 [V06,T07] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.__Canon>
; V07 loc4 [V07,T00] ( 6, 82 ) int -> [rbp-0x38] ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T11] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.__Canon]> @@ -67,7 +67,7 @@ G_M17509_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs -[rdi] mov dword ptr [rbp-0x34], eax test eax, eax
- jle G_M17509_IG08
+ jle G_M17509_IG14
;; size=70 bbWeight=1 PerfScore 24.00 G_M17509_IG03: ; bbWeight=4, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -85,9 +85,9 @@ G_M17509_IG03: ; bbWeight=4, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V06} test r13, r13
- jne G_M17509_IG11
+ jne G_M17509_IG13
;; size=40 bbWeight=4 PerfScore 46.00
-G_M17509_IG04: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M17509_IG04: ; bbWeight=2, gcVars=0000000000000080 {V06}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -96,8 +96,11 @@ G_M17509_IG04: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=A00 call [r11]<unknown method> ; gcrRegs -[rdi] +[rax] cmp rax, gword ptr [rbp-0x48]
- je SHORT G_M17509_IG07
+ mov gword ptr [rbp-0x40], r13 + ; GC ptr vars +{V03} + je G_M17509_IG12
mov rdi, r14
+ ; GC ptr vars -{V03}
call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcrRegs -[rax r13] mov rdi, rax @@ -110,8 +113,8 @@ G_M17509_IG04: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=A00 xor ecx, ecx test r12d, r12d jle SHORT G_M17509_IG06
- ;; size=58 bbWeight=2 PerfScore 34.50 -G_M17509_IG05: ; bbWeight=16, gcVars=0000000000000110 {V03 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=66 bbWeight=2 PerfScore 36.50 +G_M17509_IG05: ; bbWeight=16, gcVars=0000000000000090 {V03 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -133,7 +136,7 @@ G_M17509_IG05: ; bbWeight=16, gcVars=0000000000000110 {V03 V06}, gcrefReg mov ecx, eax jl SHORT G_M17509_IG05 ;; size=47 bbWeight=16 PerfScore 240.00
-G_M17509_IG06: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M17509_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
movsxd rsi, r12d mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi] @@ -142,23 +145,22 @@ G_M17509_IG06: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; GC ptr vars -{V06} call [CORINFO_HELP_ARRADDR_ST] ; gcrRegs -[rdx rdi]
+ ;; size=17 bbWeight=4 PerfScore 21.00 +G_M17509_IG07: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + inc r12d + cmp r12d, r13d + jl SHORT G_M17509_IG11 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M17509_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15]
mov r13, gword ptr [rbp-0x40] ; gcrRegs +[r13]
- ;; size=21 bbWeight=2 PerfScore 12.50 -G_M17509_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V03} - inc r12d - mov eax, dword ptr [rbp-0x34] - cmp r12d, eax - jl G_M17509_IG03 - ;; size=15 bbWeight=4 PerfScore 10.00 -G_M17509_IG08: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r15]
test r13, r13
- jne SHORT G_M17509_IG12 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M17509_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M17509_IG15 + ;; size=9 bbWeight=1 PerfScore 2.25 +G_M17509_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r13]
+ ; GC ptr vars -{V03}
mov rax, rbx ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 @@ -172,18 +174,37 @@ G_M17509_IG10: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M17509_IG11: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[r13 r15] - ; GC ptr vars +{V06}
+G_M17509_IG11: ; bbWeight=2, gcVars=0000000000000010 {V03}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[r15] + ; GC ptr vars +{V03 V04} + mov r13, gword ptr [rbp-0x40] + ; gcrRegs +[r13] + jmp G_M17509_IG03 + ;; size=9 bbWeight=2 PerfScore 6.00 +G_M17509_IG12: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13] + mov r13d, dword ptr [rbp-0x34] + jmp SHORT G_M17509_IG07 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M17509_IG13: ; bbWeight=2, gcVars=0000000000000080 {V06}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r13] + ; GC ptr vars -{V03 V04} +{V06 V07}
mov gword ptr [rbp-0x40], r13 ; GC ptr vars +{V03} mov r13d, dword ptr [rbp-0x34] ; gcrRegs -[r13] jmp SHORT G_M17509_IG06 ;; size=10 bbWeight=2 PerfScore 8.00
-G_M17509_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx r15] +[r13] - ; GC ptr vars -{V03 V06}
+G_M17509_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r15] +[r13] + ; GC ptr vars -{V03 V06 V07} + mov gword ptr [rbp-0x40], r13 + ; GC ptr vars +{V03} + jmp SHORT G_M17509_IG08 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M17509_IG15: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + ; GC ptr vars -{V03}
mov rdi, r14 call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] mov rdi, rax @@ -200,7 +221,7 @@ G_M17509_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200 mov rax, rbx ; gcrRegs +[rax] ;; size=36 bbWeight=0.50 PerfScore 5.25
-G_M17509_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M17509_IG16: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop r12 @@ -211,7 +232,7 @@ G_M17509_IG13: ; bbWeight=0.50, epilog, nogc, extend ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-; Total bytes of code 367, prolog size 23, PerfScore 394.38, instruction count 109, allocated bytes for code 367 (MethodHash=a42cbb9a) for method System.Linq.Expressions.ExpressionVisitor:Visit[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
+; Total bytes of code 389, prolog size 23, PerfScore 412.38, instruction count 115, allocated bytes for code 389 (MethodHash=a42cbb9a) for method System.Linq.Expressions.ExpressionVisitor:Visit[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
; ============================================================ Unwind Info:

+19 (+7.34%) : 190511.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression

@@ -8,14 +8,14 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T07] ( 3, 6 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
+; V00 arg0 [V00,T08] ( 3, 6 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
; V01 arg1 [V01,T04] ( 5, 23 ) ref -> rbx class-hnd single-def <System.Linq.Expressions.IParameterProvider>
-; V02 arg2 [V02,T08] ( 3, 6 ) ref -> r14 class-hnd single-def <System.String> -; V03 loc0 [V03,T03] ( 6, 26 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.ParameterExpression[]> -; V04 loc1 [V04,T02] ( 8, 37 ) int -> r12 -; V05 loc2 [V05,T06] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
+; V02 arg2 [V02,T09] ( 3, 6 ) ref -> r14 class-hnd single-def <System.String> +; V03 loc0 [V03,T03] ( 6, 28 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.ParameterExpression[]> +; V04 loc1 [V04,T02] ( 8, 39 ) int -> r12 +; V05 loc2 [V05,T07] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
; V06 loc3 [V06,T05] ( 3, 10 ) ref -> [rbp-0x40] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
-; V07 loc4 [V07,T09] ( 3, 8 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
+; V07 loc4 [V07,T06] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
; V08 loc5 [V08,T00] ( 6, 82 ) int -> [rbp-0x30] ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10,T01] ( 2, 64 ) ref -> rdx "argument with side effect" @@ -49,7 +49,7 @@ G_M18588_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; gcrRegs -[rdi] mov dword ptr [rbp-0x2C], eax test eax, eax
- jle G_M18588_IG08
+ jle G_M18588_IG13
;; size=30 bbWeight=1 PerfScore 6.50 G_M18588_IG03: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -73,26 +73,28 @@ G_M18588_IG03: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V07} test r13, r13
- jne G_M18588_IG10
+ jne G_M18588_IG12
;; size=57 bbWeight=4 PerfScore 64.00
-G_M18588_IG04: ; bbWeight=2, gcVars=0000000000000220 {V06 V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M18588_IG04: ; bbWeight=2, gcVars=0000000000000060 {V06 V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi] cmp rax, rdi
- je SHORT G_M18588_IG07
+ mov gword ptr [rbp-0x38], r13 + ; GC ptr vars +{V03} + je G_M18588_IG11
mov r13d, dword ptr [rbp-0x2C] ; gcrRegs -[r13] movsxd rdi, r13d ; gcrRegs -[rdi]
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V03 V06}
call [CORINFO_HELP_READYTORUN_NEWARR_1] mov gword ptr [rbp-0x38], rax ; GC ptr vars +{V03} xor ecx, ecx test r12d, r12d jle SHORT G_M18588_IG06
- ;; size=33 bbWeight=2 PerfScore 18.00 -G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000208 {V03 V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=41 bbWeight=2 PerfScore 20.00 +G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000048 {V03 V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -114,7 +116,7 @@ G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000208 {V03 V07}, gcrefReg mov ecx, eax jl SHORT G_M18588_IG05 ;; size=47 bbWeight=16 PerfScore 240.00
-G_M18588_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M18588_IG06: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
movsxd rsi, r12d mov rdi, gword ptr [rbp-0x38] ; gcrRegs +[rdi] @@ -123,21 +125,17 @@ G_M18588_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; GC ptr vars -{V07} call [CORINFO_HELP_ARRADDR_ST] ; gcrRegs -[rdx rdi]
- mov r13, gword ptr [rbp-0x38] - ; gcrRegs +[r13] - ;; size=21 bbWeight=2 PerfScore 12.50 -G_M18588_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V03}
+ ;; size=17 bbWeight=4 PerfScore 21.00 +G_M18588_IG07: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
inc r12d
- mov eax, dword ptr [rbp-0x2C] - cmp r12d, eax - jl G_M18588_IG03 - ;; size=15 bbWeight=4 PerfScore 10.00 -G_M18588_IG08: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+ cmp r12d, r13d + jl SHORT G_M18588_IG10 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M18588_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r14-r15]
- mov rax, r13
+ mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M18588_IG09: ; bbWeight=1, epilog, nogc, extend add rsp, 40 pop rbx @@ -148,17 +146,35 @@ G_M18588_IG09: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M18588_IG10: ; bbWeight=2, gcVars=0000000000000200 {V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx r14-r15] - ; GC ptr vars +{V07}
+G_M18588_IG10: ; bbWeight=2, gcVars=0000000000000008 {V03}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[rbx r14-r15] + mov r13, gword ptr [rbp-0x38] + ; gcrRegs +[r13] + jmp G_M18588_IG03 + ;; size=9 bbWeight=2 PerfScore 6.00 +G_M18588_IG11: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13] + mov r13d, dword ptr [rbp-0x2C] + jmp SHORT G_M18588_IG07 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M18588_IG12: ; bbWeight=2, gcVars=0000000000000040 {V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rax r13] + ; GC ptr vars -{V03} +{V06 V07}
mov gword ptr [rbp-0x38], r13 ; GC ptr vars +{V03} mov r13d, dword ptr [rbp-0x2C] ; gcrRegs -[r13] jmp SHORT G_M18588_IG06 ;; size=10 bbWeight=2 PerfScore 8.00
+G_M18588_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax rbx r14-r15] +[r13] + ; GC ptr vars -{V03 V06 V07} + mov gword ptr [rbp-0x38], r13 + ; GC ptr vars +{V03} + jmp SHORT G_M18588_IG08 + ;; size=6 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 259, prolog size 19, PerfScore 371.00, instruction count 78, allocated bytes for code 259 (MethodHash=3086b763) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
+; Total bytes of code 278, prolog size 19, PerfScore 388.75, instruction count 83, allocated bytes for code 278 (MethodHash=3086b763) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
; ============================================================ Unwind Info:

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, 18 ) 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=1, 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
+ ;; size=5 bbWeight=1 PerfScore 0.25 +G_M35228_IG07: ; bbWeight=1, 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
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M35228_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop rbp + ret + ;; size=2 bbWeight=1 PerfScore 1.50
-; 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 34.48, 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, 19 ) 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=1, 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
+ ;; size=5 bbWeight=1 PerfScore 0.25 +G_M34838_IG07: ; bbWeight=1, 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
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M34838_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + pop rbp + ret + ;; size=2 bbWeight=1 PerfScore 1.50
-; 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 33.73, instruction count 22, allocated bytes for code 50 (MethodHash=781577e9) for method System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================ Unwind Info:

-17 (-6.20%) : 187886.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan1[ubyte],System.ReadOnlySpan1[ubyte],int,byref):ubyte:this (FullOpts)

@@ -12,27 +12,27 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ; V03 arg3 [V03,T06] ( 4, 7 ) int -> r15 single-def
-; V04 arg4 [V04,T17] ( 2, 1 ) byref -> [rbp+0x10] single-def
+; V04 arg4 [V04,T17] ( 2, 1.50) byref -> [rbp+0x10] single-def
; V05 loc0 [V05,T16] ( 3, 3 ) int -> rdx single-def ; V06 loc1 [V06,T02] ( 7, 22 ) int -> [rbp-0x2C]
-; V07 loc2 [V07,T09] ( 4, 6.50) ref -> [rbp-0x48] class-hnd <<unknown class>>
+; V07 loc2 [V07,T09] ( 4, 6.50) ref -> [rbp-0x40] class-hnd <<unknown class>>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V11 tmp3 [V11,T11] ( 2, 3 ) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp4 [V12,T13] ( 2, 3 ) int -> [rbp-0x30] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V12 tmp4 [V12,T13] ( 2, 3 ) int -> r12 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V13 tmp5 [V13,T12] ( 2, 3 ) byref -> r13 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp6 [V14,T14] ( 2, 3 ) int -> [rbp-0x34] single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp6 [V14,T14] ( 2, 3 ) int -> [rbp-0x30] single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V15 tmp7 [V15,T10] ( 3, 6 ) ref -> rcx single-def "arr expr" ; V16 tmp8 [V16,T00] ( 3, 24 ) ref -> r8 "arr expr" ; V17 tmp9 [V17,T07] ( 2, 8 ) ref -> rcx "arr expr" ; V18 tmp10 [V18,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V19 cse0 [V19,T03] ( 4, 14 ) long -> [rbp-0x40] spill-single-def "CSE - aggressive"
+; V19 cse0 [V19,T03] ( 4, 14 ) long -> [rbp-0x38] spill-single-def "CSE - aggressive"
; V20 cse1 [V20,T05] ( 3, 10 ) ref -> rcx "CSE - aggressive" ; V21 cse2 [V21,T15] ( 3, 3 ) ref -> rcx "CSE - moderate" ; V22 cse3 [V22,T08] ( 2, 8 ) int -> rsi "CSE - aggressive" ;
-; Lcl frame size = 40
+; Lcl frame size = 24
G_M28200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -41,8 +41,8 @@ G_M28200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push r13 push r12 push rbx
- sub rsp, 40 - lea rbp, [rsp+0x50]
+ sub rsp, 24 + lea rbp, [rsp+0x40]
mov rbx, rdi ; gcrRegs +[rbx] mov r14, rsi @@ -53,7 +53,7 @@ G_M28200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, r9d mov r9d, r8d ;; size=37 bbWeight=1 PerfScore 8.25
-G_M28200_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M28200_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
mov eax, r15d and eax, 0xD1FFAB1E mov rcx, gword ptr [rbx+0x08] @@ -65,8 +65,8 @@ G_M28200_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r1 mov r8d, edx mov eax, dword ptr [rcx+4*r8+0x10] cmp eax, -1
- je G_M28200_IG06 - ;; size=42 bbWeight=1 PerfScore 35.50
+ je SHORT G_M28200_IG06 + ;; size=38 bbWeight=1 PerfScore 35.50
G_M28200_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz ; gcrRegs -[rcx] mov rcx, gword ptr [rbx+0x10] @@ -77,41 +77,37 @@ G_M28200_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r1 cmp eax, esi jae G_M28200_IG10 mov dword ptr [rbp-0x2C], eax
- mov r10d, eax - shl r10, 4 - mov qword ptr [rbp-0x40], r10 - cmp dword ptr [r8+r10+0x18], r15d
+ mov r11d, eax + shl r11, 4 + mov qword ptr [rbp-0x38], r11 + cmp dword ptr [r8+r11+0x18], r15d
jne SHORT G_M28200_IG05 ;; size=40 bbWeight=4 PerfScore 49.00 G_M28200_IG04: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=6000 {r13 r14}, byref, isz ; gcrRegs -[r8]
- mov r11, gword ptr [rcx+r10+0x10] - ; gcrRegs +[r11]
+ mov rdi, gword ptr [rcx+r11+0x10] + ; gcrRegs +[rdi]
mov rcx, r13 ; gcrRegs -[rcx] ; byrRegs +[rcx]
- mov dword ptr [rbp-0x34], r9d
+ mov dword ptr [rbp-0x30], r9d
mov r8d, r9d mov rsi, r14 ; byrRegs +[rsi]
- mov dword ptr [rbp-0x30], r12d
mov edx, r12d
- mov rdi, r11 - ; gcrRegs +[rdi] - mov gword ptr [rbp-0x48], r11
+ mov gword ptr [rbp-0x40], rdi
; GC ptr vars +{V07}
- mov r12, qword ptr [r11] - mov r12, qword ptr [r12+0xE8] - call [r12+0x38]<unknown method> - ; gcrRegs -[rdi r11]
+ mov r10, qword ptr [rdi] + mov r10, qword ptr [r10+0xE8] + call [r10+0x38]<unknown method> + ; gcrRegs -[rdi]
; byrRegs -[rcx rsi] ; gcr arg pop 0 test eax, eax
- mov r9d, dword ptr [rbp-0x34] - mov r10, qword ptr [rbp-0x40] - mov r12d, dword ptr [rbp-0x30]
+ mov r9d, dword ptr [rbp-0x30] + mov r11, qword ptr [rbp-0x38]
jne SHORT G_M28200_IG08
- ;; size=64 bbWeight=2 PerfScore 35.00
+ ;; size=51 bbWeight=2 PerfScore 30.50
G_M28200_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz ; GC ptr vars -{V07} mov rdi, gword ptr [rbx+0x10] @@ -119,23 +115,23 @@ G_M28200_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 { mov eax, dword ptr [rbp-0x2C] cmp eax, dword ptr [rdi+0x08] jae SHORT G_M28200_IG10
- mov eax, dword ptr [rdi+r10+0x1C]
+ mov eax, dword ptr [rdi+r11+0x1C]
cmp eax, -1 jne SHORT G_M28200_IG03 ;; size=22 bbWeight=4 PerfScore 41.00
-G_M28200_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28200_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi] ; byrRegs -[r13-r14] xor rax, rax ; gcrRegs +[rax]
- mov rbx, bword ptr [rbp+0x10] - ; byrRegs +[rbx] - mov gword ptr [rbx], rax - ;; size=9 bbWeight=0.50 PerfScore 1.12 -G_M28200_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ mov r10, bword ptr [rbp+0x10] + ; byrRegs +[r10] + mov gword ptr [r10], rax + ;; size=9 bbWeight=1 PerfScore 2.25 +G_M28200_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
- ; byrRegs -[rbx] - add rsp, 40
+ ; byrRegs -[r10] + add rsp, 24
pop rbx pop r12 pop r13 @@ -143,25 +139,25 @@ G_M28200_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=15 bbWeight=1 PerfScore 4.25
G_M28200_IG08: ; bbWeight=0.50, gcVars=0000000000000200 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars +{V07}
- mov rbx, bword ptr [rbp+0x10] - ; byrRegs +[rbx] - mov r15, gword ptr [rbp-0x48] - ; gcrRegs +[r15] - mov rdi, rbx
+ mov rbx, gword ptr [rbp-0x40] + ; gcrRegs +[rbx] + mov r10, bword ptr [rbp+0x10] + ; byrRegs +[r10] + mov rdi, r10
; byrRegs +[rdi]
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi] ; GC ptr vars -{V07} call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rsi r15] - ; byrRegs -[rbx rdi]
+ ; gcrRegs -[rbx rsi] + ; byrRegs -[rdi r10]
mov eax, 1 ;; size=24 bbWeight=0.50 PerfScore 1.88 G_M28200_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 24
pop rbx pop r12 pop r13 @@ -176,7 +172,7 @@ G_M28200_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 274, prolog size 37, PerfScore 176.00, instruction count 87, allocated bytes for code 274 (MethodHash=724891d7) for method System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
+; Total bytes of code 257, prolog size 37, PerfScore 174.75, instruction count 84, allocated bytes for code 257 (MethodHash=724891d7) for method System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -189,7 +185,7 @@ Unwind Info: FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12) CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)

+32 (+5.99%) : 208429.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)

@@ -8,10 +8,10 @@ ; 5 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 11, 18 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriverCache> -; V01 arg1 [V01,T09] ( 8, 12.97) ref -> r15 class-hnd single-def <System.String> -; V02 arg2 [V02,T15] ( 7, 5.50) ref -> r14 class-hnd <Microsoft.CodeAnalysis.GeneratorDriver> -; V03 loc0 [V03,T23] ( 4, 1.50) ref -> [rbp-0x38] class-hnd EH-live spill-single-def <System.Object>
+; V00 this [V00,T06] ( 11, 19.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriverCache> +; V01 arg1 [V01,T09] ( 8, 13.47) ref -> r15 class-hnd single-def <System.String> +; V02 arg2 [V02,T12] ( 7, 6.50) ref -> r14 class-hnd <Microsoft.CodeAnalysis.GeneratorDriver> +; V03 loc0 [V03,T26] ( 4, 1.50) ref -> [rbp-0x38] class-hnd EH-live spill-single-def <System.Object>
; V04 loc1 [V04 ] ( 5, 4 ) ubyte -> [rbp-0x30] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V05 loc2 [V05,T00] ( 17, 44 ) int -> r13 ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriver> @@ -19,34 +19,34 @@ ; V08 tmp1 [V08,T08] ( 2, 16 ) ref -> rsi class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "Strict ordering of exceptions for Array store" <System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.GeneratorDriver]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.GeneratorDriver]>
-; V11 tmp4 [V11,T19] ( 3, 3.00) ref -> r13 class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V12 tmp5 [V12,T18] ( 2, 4 ) ubyte -> rdi "Inlining Arg"
+; V11 tmp4 [V11,T16] ( 3, 6 ) ref -> r13 class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V12 tmp5 [V12,T21] ( 2, 4 ) ubyte -> rdi "Inlining Arg"
; V13 tmp6 [V13,T01] ( 7, 32.95) ref -> r12 class-hnd "Inlining Arg" <System.__Canon>
-; V14 tmp7 [V14,T16] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" -; V15 tmp8 [V15,T12] ( 2, 8 ) byref -> rdi "impAppendStmt"
+; V14 tmp7 [V14,T19] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" +; V15 tmp8 [V15,T13] ( 2, 8 ) byref -> rdi "impAppendStmt"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T26] ( 2, 1.00) int -> r13 "Inline return value spill temp" -; V22 tmp15 [V22,T27] ( 2, 1.00) int -> rax "Inline return value spill temp" -; V23 tmp16 [V23,T22] ( 3, 3.00) int -> rdi "Inlining Arg" -; V24 tmp17 [V24,T13] ( 2, 8 ) ref -> rcx "field V09.Item1 (fldOffset=0x0)" P-INDEP -; V25 tmp18 [V25,T14] ( 2, 8 ) ref -> [rbp-0x40] spill-single-def "field V09.Item2 (fldOffset=0x8)" P-INDEP -; V26 tmp19 [V26,T24] ( 2, 1.00) ref -> rsi single-def "field V10.Item1 (fldOffset=0x0)" P-INDEP -; V27 tmp20 [V27,T25] ( 2, 1.00) ref -> r15 single-def "field V10.Item2 (fldOffset=0x8)" P-INDEP
+; V21 tmp14 [V21,T27] ( 2, 1.00) int -> r13 "Inline return value spill temp" +; V22 tmp15 [V22,T25] ( 2, 2 ) int -> rax "Inline return value spill temp" +; V23 tmp16 [V23,T18] ( 3, 6 ) int -> rdi "Inlining Arg" +; V24 tmp17 [V24,T14] ( 2, 8 ) ref -> rcx "field V09.Item1 (fldOffset=0x0)" P-INDEP +; V25 tmp18 [V25,T15] ( 2, 8 ) ref -> [rbp-0x40] spill-single-def "field V09.Item2 (fldOffset=0x8)" P-INDEP +; V26 tmp19 [V26,T23] ( 2, 2 ) ref -> rsi single-def "field V10.Item1 (fldOffset=0x0)" P-INDEP +; V27 tmp20 [V27,T24] ( 2, 2 ) ref -> r15 single-def "field V10.Item2 (fldOffset=0x8)" P-INDEP
; V28 tmp21 [V28,T02] ( 3, 24 ) ref -> rdx "arr expr"
-; V29 tmp22 [V29,T20] ( 3, 3 ) ref -> rdi "arr expr"
+; V29 tmp22 [V29,T22] ( 3, 3 ) ref -> rdi "arr expr"
; V30 tmp23 [V30,T03] ( 3, 24 ) ref -> rdi "arr expr" ; V31 tmp24 [V31,T04] ( 3, 24 ) byref -> rdi "BlockOp address local" ; V32 tmp25 [V32,T05] ( 3, 24 ) byref -> r13 "BlockOp address local"
-; V33 tmp26 [V33,T21] ( 3, 3.00) byref -> r13 single-def "BlockOp address local"
+; V33 tmp26 [V33,T17] ( 3, 6 ) byref -> r13 single-def "BlockOp address local"
; V34 PSPSym [V34,T28] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" ; V35 cse0 [V35,T10] ( 3, 12 ) ref -> rdi "CSE - moderate" ; V36 cse1 [V36,T07] ( 4, 16 ) int -> r12 "CSE - moderate" ; V37 cse2 [V37,T11] ( 3, 12 ) int -> rax "CSE - moderate"
-; V38 cse3 [V38,T17] ( 6, 4.71) ref -> rsi multi-def "CSE - moderate"
+; V38 cse3 [V38,T20] ( 6, 4.71) ref -> rsi multi-def "CSE - moderate"
; ; Lcl frame size = 40 @@ -75,9 +75,9 @@ G_M51982_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov gword ptr [rbp-0x38], rdi ; GC ptr vars +{V03} ;; 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
+G_M51982_IG03: ; bbWeight=1, gcVars=0000000004000000 {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_IG19
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,74 @@ 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_IG14 + ;; 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_IG18
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_IG22 + ;; 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_IG22 + ;; 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_IG22 + ;; 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_IG21 + ;; 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_IG20 + ;; size=5 bbWeight=1.07 PerfScore 2.14 +G_M51982_IG12: ; bbWeight=1, 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_IG14 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M51982_IG13: ; bbWeight=0.50, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14]
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] cmp r13d, dword ptr [rdi+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG18
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
+ ; gcrRegs +[r14] + ;; size=26 bbWeight=0.50 PerfScore 4.38 +G_M51982_IG14: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdi] test r14, r14
- je G_M51982_IG23
+ je G_M51982_IG24
;; size=9 bbWeight=1 PerfScore 1.25
-G_M51982_IG20: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG15: ; 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_IG17
;; size=18 bbWeight=0.50 PerfScore 1.00
-G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG16: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdi, gword ptr [rbx+0x08] ; gcrRegs +[rdi] mov rsi, rdi @@ -207,7 +170,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_IG18
mov ecx, r12d shl rcx, 4 lea rdi, bword ptr [rdi+rcx+0x10] @@ -220,7 +183,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_IG18
mov edi, r13d ; byrRegs -[rdi] shl rdi, 4 @@ -242,16 +205,16 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ...

+19 (+6.83%) : 191952.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression

@@ -7,14 +7,14 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T07] ( 3, 6 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
+; V00 arg0 [V00,T08] ( 3, 6 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
; V01 arg1 [V01,T04] ( 5, 23 ) ref -> rbx class-hnd single-def <System.Linq.Expressions.IParameterProvider>
-; V02 arg2 [V02,T08] ( 3, 6 ) ref -> r14 class-hnd single-def <System.String> -; V03 loc0 [V03,T03] ( 6, 26 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.ParameterExpression[]> -; V04 loc1 [V04,T02] ( 8, 37 ) int -> r12 -; V05 loc2 [V05,T06] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
+; V02 arg2 [V02,T09] ( 3, 6 ) ref -> r14 class-hnd single-def <System.String> +; V03 loc0 [V03,T03] ( 6, 28 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.ParameterExpression[]> +; V04 loc1 [V04,T02] ( 8, 39 ) int -> r12 +; V05 loc2 [V05,T07] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
; V06 loc3 [V06,T05] ( 3, 10 ) ref -> [rbp-0x40] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
-; V07 loc4 [V07,T09] ( 3, 8 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
+; V07 loc4 [V07,T06] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
; V08 loc5 [V08,T00] ( 6, 82 ) int -> [rbp-0x30] ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10,T01] ( 2, 64 ) ref -> rdx "argument with side effect" @@ -48,7 +48,7 @@ G_M18588_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; gcrRegs -[rdi] mov dword ptr [rbp-0x2C], eax test eax, eax
- jle G_M18588_IG08
+ jle G_M18588_IG13
;; size=33 bbWeight=1 PerfScore 6.25 G_M18588_IG03: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -72,27 +72,29 @@ G_M18588_IG03: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V07} test r13, r13
- jne G_M18588_IG10
+ jne G_M18588_IG12
;; size=63 bbWeight=4 PerfScore 56.00
-G_M18588_IG04: ; bbWeight=2, gcVars=0000000000000220 {V06 V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M18588_IG04: ; bbWeight=2, gcVars=0000000000000060 {V06 V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rsi, gword ptr [rbp-0x40] ; gcrRegs +[rsi] cmp rax, rsi
- je SHORT G_M18588_IG07
+ mov gword ptr [rbp-0x38], r13 + ; GC ptr vars +{V03} + je G_M18588_IG11
mov r13d, dword ptr [rbp-0x2C] ; gcrRegs -[r13] movsxd rsi, r13d ; gcrRegs -[rsi] mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.ParameterExpression[]
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V03 V06}
call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-0x38], rax ; GC ptr vars +{V03} xor ecx, ecx test r12d, r12d jle SHORT G_M18588_IG06
- ;; size=42 bbWeight=2 PerfScore 14.50 -G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000208 {V03 V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=50 bbWeight=2 PerfScore 16.50 +G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000048 {V03 V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -114,7 +116,7 @@ G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000208 {V03 V07}, gcrefReg mov ecx, eax jl SHORT G_M18588_IG05 ;; size=49 bbWeight=16 PerfScore 204.00
-G_M18588_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M18588_IG06: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
movsxd rsi, r12d mov rdi, gword ptr [rbp-0x38] ; gcrRegs +[rdi] @@ -123,21 +125,17 @@ G_M18588_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; GC ptr vars -{V07} call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[rdx rdi]
- mov r13, gword ptr [rbp-0x38] - ; gcrRegs +[r13] - ;; size=20 bbWeight=2 PerfScore 8.50 -G_M18588_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V03}
+ ;; size=16 bbWeight=4 PerfScore 13.00 +G_M18588_IG07: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
inc r12d
- mov eax, dword ptr [rbp-0x2C] - cmp r12d, eax - jl G_M18588_IG03 - ;; size=15 bbWeight=4 PerfScore 10.00 -G_M18588_IG08: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+ cmp r12d, r13d + jl SHORT G_M18588_IG10 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M18588_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r14-r15]
- mov rax, r13
+ mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M18588_IG09: ; bbWeight=1, epilog, nogc, extend add rsp, 40 pop rbx @@ -148,17 +146,35 @@ G_M18588_IG09: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M18588_IG10: ; bbWeight=2, gcVars=0000000000000200 {V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx r14-r15] - ; GC ptr vars +{V07}
+G_M18588_IG10: ; bbWeight=2, gcVars=0000000000000008 {V03}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[rbx r14-r15] + mov r13, gword ptr [rbp-0x38] + ; gcrRegs +[r13] + jmp G_M18588_IG03 + ;; size=9 bbWeight=2 PerfScore 6.00 +G_M18588_IG11: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13] + mov r13d, dword ptr [rbp-0x2C] + jmp SHORT G_M18588_IG07 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M18588_IG12: ; bbWeight=2, gcVars=0000000000000040 {V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rax r13] + ; GC ptr vars -{V03} +{V06 V07}
mov gword ptr [rbp-0x38], r13 ; GC ptr vars +{V03} mov r13d, dword ptr [rbp-0x2C] ; gcrRegs -[r13] jmp SHORT G_M18588_IG06 ;; size=10 bbWeight=2 PerfScore 8.00
+G_M18588_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax rbx r14-r15] +[r13] + ; GC ptr vars -{V03 V06 V07} + mov gword ptr [rbp-0x38], r13 + ; GC ptr vars +{V03} + jmp SHORT G_M18588_IG08 + ;; size=6 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 278, prolog size 19, PerfScore 319.25, instruction count 79, allocated bytes for code 278 (MethodHash=3086b763) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
+; Total bytes of code 297, prolog size 19, PerfScore 333.00, instruction count 84, allocated bytes for code 297 (MethodHash=3086b763) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
; ============================================================ Unwind Info:

+19 (+7.69%) : 191951.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression

@@ -8,12 +8,12 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T06] ( 4, 10 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
-; V01 arg1 [V01,T03] ( 6, 24 ) ref -> rbx class-hnd single-def <System.Linq.Expressions.BlockExpression> -; V02 loc0 [V02,T04] ( 6, 26 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.Expression[]> -; V03 loc1 [V03,T02] ( 8, 37 ) int -> r13 -; V04 loc2 [V04,T08] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
+; V01 arg1 [V01,T04] ( 6, 24 ) ref -> rbx class-hnd single-def <System.Linq.Expressions.BlockExpression> +; V02 loc0 [V02,T03] ( 6, 28 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.Expression[]> +; V03 loc1 [V03,T02] ( 8, 39 ) int -> r13 +; V04 loc2 [V04,T09] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
; V05 loc3 [V05,T07] ( 3, 10 ) ref -> [rbp-0x40] class-hnd spill-single-def <System.Linq.Expressions.Expression>
-; V06 loc4 [V06,T09] ( 3, 8 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.Expression>
+; V06 loc4 [V06,T08] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.Expression>
; V07 loc5 [V07,T00] ( 6, 82 ) int -> [rbp-0x30] ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T01] ( 2, 64 ) ref -> rdx "argument with side effect" @@ -47,7 +47,7 @@ G_M22799_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs -[rdi] mov dword ptr [rbp-0x2C], eax test eax, eax
- jle G_M22799_IG08
+ jle G_M22799_IG13
;; size=32 bbWeight=1 PerfScore 10.00 G_M22799_IG03: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -68,27 +68,29 @@ G_M22799_IG03: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V06} test r14, r14
- jne G_M22799_IG10
+ jne G_M22799_IG12
;; size=44 bbWeight=4 PerfScore 57.00
-G_M22799_IG04: ; bbWeight=2, gcVars=0000000000000280 {V05 V06}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M22799_IG04: ; bbWeight=2, gcVars=0000000000000180 {V05 V06}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rsi, gword ptr [rbp-0x40] ; gcrRegs +[rsi] cmp rax, rsi
- je SHORT G_M22799_IG07
+ mov gword ptr [rbp-0x38], r14 + ; GC ptr vars +{V02} + je G_M22799_IG11
mov r14d, dword ptr [rbp-0x2C] ; gcrRegs -[r14] movsxd rsi, r14d ; gcrRegs -[rsi] mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
- ; GC ptr vars -{V05}
+ ; GC ptr vars -{V02 V05}
call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-0x38], rax ; GC ptr vars +{V02} xor ecx, ecx test r13d, r13d jle SHORT G_M22799_IG06
- ;; size=42 bbWeight=2 PerfScore 14.50 -G_M22799_IG05: ; bbWeight=16, gcVars=0000000000000210 {V02 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=50 bbWeight=2 PerfScore 16.50 +G_M22799_IG05: ; bbWeight=16, gcVars=0000000000000108 {V02 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -109,7 +111,7 @@ G_M22799_IG05: ; bbWeight=16, gcVars=0000000000000210 {V02 V06}, gcrefReg mov ecx, eax jl SHORT G_M22799_IG05 ;; size=41 bbWeight=16 PerfScore 200.00
-G_M22799_IG06: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M22799_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
movsxd rsi, r13d mov rdi, gword ptr [rbp-0x38] ; gcrRegs +[rdi] @@ -118,21 +120,17 @@ G_M22799_IG06: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; GC ptr vars -{V06} call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[rdx rdi]
- mov r14, gword ptr [rbp-0x38] - ; gcrRegs +[r14] - ;; size=20 bbWeight=2 PerfScore 8.50 -G_M22799_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V02}
+ ;; size=16 bbWeight=4 PerfScore 13.00 +G_M22799_IG07: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
inc r13d
- mov eax, dword ptr [rbp-0x2C] - cmp r13d, eax - jl G_M22799_IG03 - ;; size=15 bbWeight=4 PerfScore 10.00 -G_M22799_IG08: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ cmp r13d, r14d + jl SHORT G_M22799_IG10 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M22799_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r15]
- mov rax, r14
+ mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M22799_IG09: ; bbWeight=1, epilog, nogc, extend add rsp, 40 pop rbx @@ -143,17 +141,35 @@ G_M22799_IG09: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M22799_IG10: ; bbWeight=2, gcVars=0000000000000200 {V06}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx r15] - ; GC ptr vars +{V06 V09}
+G_M22799_IG10: ; bbWeight=2, gcVars=0000000000000008 {V02}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[rbx r15] + mov r14, gword ptr [rbp-0x38] + ; gcrRegs +[r14] + jmp G_M22799_IG03 + ;; size=9 bbWeight=2 PerfScore 6.00 +G_M22799_IG11: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14] + mov r14d, dword ptr [rbp-0x2C] + jmp SHORT G_M22799_IG07 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M22799_IG12: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rax r14] + ; GC ptr vars -{V02} +{V06}
mov gword ptr [rbp-0x38], r14 ; GC ptr vars +{V02} mov r14d, dword ptr [rbp-0x2C] ; gcrRegs -[r14] jmp SHORT G_M22799_IG06 ;; size=10 bbWeight=2 PerfScore 8.00
+G_M22799_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax rbx r15] +[r14] + ; GC ptr vars -{V02 V06} + mov gword ptr [rbp-0x38], r14 + ; GC ptr vars +{V02} + jmp SHORT G_M22799_IG08 + ;; size=6 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 247, prolog size 19, PerfScore 319.75, instruction count 76, allocated bytes for code 247 (MethodHash=26a6a6f0) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression[] (FullOpts)
+; Total bytes of code 266, prolog size 19, PerfScore 333.50, instruction count 81, allocated bytes for code 266 (MethodHash=26a6a6f0) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression[] (FullOpts)
; ============================================================ Unwind Info:

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

-20 (-4.81%) : 9456.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)

@@ -5,17 +5,17 @@ ; optimized using Dynamic PGO ; rbp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 49
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 49
; 0 inlinees with PGO data; 11 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 7, 6.53) long -> r14 single-def
-; V01 arg1 [V01,T02] ( 8, 7.18) long -> rbx single-def -; V02 arg2 [V02,T03] ( 8, 6.92) long -> r15 single-def -; V03 loc0 [V03,T00] ( 30, 25.63) long -> r13 -; V04 loc1 [V04,T06] ( 5, 4.76) long -> r15
+; V01 arg1 [V01,T03] ( 8, 7.18) long -> r15 single-def +; V02 arg2 [V02,T02] ( 8, 7.96) long -> rbx single-def +; V03 loc0 [V03,T00] ( 30, 26.67) long -> r13 +; V04 loc1 [V04,T05] ( 5, 5.80) long -> rbx
; V05 loc2 [V05,T01] ( 15, 11.33) int -> r12
-; V06 loc3 [V06,T05] ( 9, 4.88) long -> rdi
+; V06 loc3 [V06,T06] ( 9, 4.88) long -> rdi
;* V07 loc4 [V07 ] ( 0, 0 ) long -> zero-ref ;* V08 loc5 [V08 ] ( 0, 0 ) simd64 -> zero-ref <System.Runtime.Intrinsics.Vector512`1[ubyte]> ;* V09 loc6 [V09 ] ( 0, 0 ) simd64 -> zero-ref <System.Runtime.Intrinsics.Vector512`1[ushort]> @@ -71,27 +71,27 @@ G_M26761_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, vzeroupper lea rbp, [rsp+0x30] mov r14, rdi
- mov rbx, rsi - mov r15, rdx
+ mov r15, rsi + mov rbx, 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.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rdi, rbx - cmp r15, 32 - jb G_M26761_IG16 - ;; size=13 bbWeight=0.96 PerfScore 1.44
+ cmp rbx, 16 + jb G_M26761_IG09 + ;; size=13 bbWeight=1 PerfScore 1.50 +G_M26761_IG03: ; bbWeight=0.96, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + mov rdi, r15 + cmp rbx, 32 + jb SHORT G_M26761_IG07 + ;; size=9 bbWeight=0.96 PerfScore 1.44
G_M26761_IG04: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- lea rsi, [r15-0x20]
+ lea rsi, [rbx-0x20]
;; size=4 bbWeight=0.76 PerfScore 0.38 G_M26761_IG05: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz vmovups ymm0, ymmword ptr [r14+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,31 @@ G_M26761_IG05: ; bbWeight=0.78, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr cmp r13, rsi jbe SHORT G_M26761_IG05 ;; size=56 bbWeight=0.78 PerfScore 16.48
-G_M26761_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp r13, r15 - jbe SHORT G_M26761_IG07
+G_M26761_IG06: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M26761_IG09 + ;; size=2 bbWeight=0.76 PerfScore 1.51 +G_M26761_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rsi, [rbx-0x10] + ;; size=4 bbWeight=0.20 PerfScore 0.10 +G_M26761_IG08: ; bbWeight=0.20, 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.20 PerfScore 3.83 +G_M26761_IG09: ; bbWeight=2.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + cmp r13, rbx + jbe SHORT G_M26761_IG11 + ;; size=5 bbWeight=2.04 PerfScore 2.55 +G_M26761_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rsi, 0xD1FFAB1E ; gcrRegs +[rsi] mov rdi, rsi @@ -113,55 +135,55 @@ G_M26761_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; 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 - sub r15, r13 - cmp r15, 4 - jb SHORT G_M26761_IG10
+ ;; size=19 bbWeight=1 PerfScore 3.50 +G_M26761_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + sub rbx, r13 + cmp rbx, 4 + jb SHORT G_M26761_IG14
;; size=9 bbWeight=1 PerfScore 1.50
-G_M26761_IG08: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - lea rax, [r13+r15-0x04]
+G_M26761_IG12: ; bbWeight=0.76, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + lea rax, [r13+rbx-0x04]
;; size=5 bbWeight=0.76 PerfScore 1.51
-G_M26761_IG09: ; bbWeight=2.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG13: ; bbWeight=2.08, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov r12d, dword ptr [r14+r13] test r12d, 0xD1FFAB1E
- jne G_M26761_IG18
+ jne SHORT G_M26761_IG20
vmovd xmm0, r12 vpmovzxbw xmm0, xmm0
- vmovd qword ptr [rbx+2*r13], xmm0
+ vmovd qword ptr [r15+2*r13], xmm0
add r13, 4 cmp r13, rax
- jbe SHORT G_M26761_IG09 - ;; size=42 bbWeight=2.08 PerfScore 20.30 -G_M26761_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test r15b, 2 - je SHORT G_M26761_IG12 - ;; size=6 bbWeight=1 PerfScore 1.25 -G_M26761_IG11: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jbe SHORT G_M26761_IG13 + ;; size=38 bbWeight=2.08 PerfScore 20.30 +G_M26761_IG14: ; bbWeight=2.04, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test bl, 2 + je SHORT G_M26761_IG16 + ;; size=5 bbWeight=2.04 PerfScore 2.55 +G_M26761_IG15: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx r12, word ptr [r14+r13] test r12d, 0xD1FFAB1E
- jne G_M26761_IG18
+ jne SHORT G_M26761_IG20
movzx rax, r12b
- mov word ptr [rbx+2*r13], ax
+ mov word ptr [r15+2*r13], ax
shr r12d, 8
- mov word ptr [rbx+2*r13+0x02], r12w
+ mov word ptr [r15+2*r13+0x02], r12w
add r13, 2
- ;; size=41 bbWeight=0.67 PerfScore 4.21 -G_M26761_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - test r15b, 1 - je SHORT G_M26761_IG14 - ;; size=6 bbWeight=1 PerfScore 1.25 -G_M26761_IG13: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ ;; size=37 bbWeight=0.67 PerfScore 4.21 +G_M26761_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + test bl, 1 + je SHORT G_M26761_IG18 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M26761_IG17: ; bbWeight=0.80, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
movzx r12, byte ptr [r14+r13] test r12b, 128
- jne SHORT G_M26761_IG14 - mov word ptr [rbx+2*r13], r12w
+ jne SHORT G_M26761_IG18 + mov word ptr [r15+2*r13], r12w
inc r13 ;; size=19 bbWeight=0.80 PerfScore 3.58
-G_M26761_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26761_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov rax, r13 ;; size=3 bbWeight=1 PerfScore 0.25
-G_M26761_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M26761_IG19: ; bbWeight=1, epilog, nogc, extend
vzeroupper add rsp, 8 pop rbx @@ -172,27 +194,9 @@ G_M26761_IG15: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=18 bbWeight=1 PerfScore 5.25
-G_M26761_IG16: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - lea rsi, [r15-0x10] - ;; size=4 bbWeight=0.20 PerfScore 0.10 -G_M26761_IG17: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - vmovups xmm0, xmmword ptr [r14+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_IG17 - jmp G_M26761_IG06 - ;; size=63 bbWeight=0.20 PerfScore 4.23 -G_M26761_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M26761_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
test r12d, 0xD1FFAB1E
- jne SHORT G_M26761_IG20
+ jne SHORT G_M26761_IG22
mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] mov rsi, 0xD1FFAB1E @@ -200,24 +204,24 @@ G_M26761_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, call [<unknown method>] ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- jmp SHORT G_M26761_IG20
+ jmp SHORT G_M26761_IG22
;; size=37 bbWeight=0 PerfScore 0.00
-G_M26761_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M26761_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movzx rax, r12b
- mov word ptr [rbx+2*r13], ax
+ mov word ptr [r15+2*r13], ax
inc r13 shr r12d, 8 ;; size=16 bbWeight=0 PerfScore 0.00
-G_M26761_IG20: ; 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_IG19 - jmp G_M26761_IG14 - ;; 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 416, prolog size 28, PerfScore 77.23, instruction count 106, allocated bytes for code 416 (MethodHash=eb059776) for method System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
+; Total bytes of code 396, prolog size 28, PerfScore 80.93, instruction count 106, allocated bytes for code 396 (MethodHash=eb059776) for method System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
; ============================================================ Unwind Info:

+19 (+7.28%) : 10048.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)

@@ -11,9 +11,9 @@ ; ; V00 arg0 [V00,T01] ( 9, 3.06) byref -> r15 single-def ; V01 arg1 [V01,T02] ( 9, 3.06) short -> r14 single-def
-; V02 arg2 [V02,T00] ( 15, 6.24) int -> rbx
+; V02 arg2 [V02,T00] ( 15, 6.41) int -> rbx
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
-; V04 loc1 [V04,T03] ( 14, 0.13) long -> rax
+; V04 loc1 [V04,T04] ( 14, 0.88) long -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V07 tmp2 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -43,7 +43,7 @@ ;* V31 tmp26 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp27 [V32 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V33 tmp28 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V34 tmp29 [V34,T04] ( 5, 0 ) int -> rax "Single return block return value"
+; V34 tmp29 [V34,T03] ( 5, 1.50) int -> rax "Single return block return value"
; ; Lcl frame size = 8 @@ -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_IG12 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M21910_IG04: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ jl G_M21910_IG18 + ;; size=9 bbWeight=1 PerfScore 1.25 +G_M21910_IG04: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
cmp ebx, 16
- jl SHORT G_M21910_IG10 - ;; size=5 bbWeight=0.98 PerfScore 1.23
+ jl G_M21910_IG16 + ;; size=9 bbWeight=0.98 PerfScore 1.23
G_M21910_IG05: ; bbWeight=0.90, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref movsx rsi, r14w mov rdi, r15 @@ -93,16 +93,20 @@ G_M21910_IG06: ; bbWeight=0.90, epilog, nogc, extend tail.jmp [<unknown method>] ; gcr arg pop 0 ;; size=16 bbWeight=0.90 PerfScore 3.84
-G_M21910_IG07: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+G_M21910_IG07: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
; byrRegs -[rdi]
+ cmp ebx, 4 + jge SHORT G_M21910_IG15 + ;; size=5 bbWeight=0.19 PerfScore 0.23 +G_M21910_IG08: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
test ebx, ebx
- jg G_M21910_IG14
+ jg G_M21910_IG20
;; size=8 bbWeight=0.19 PerfScore 0.23
-G_M21910_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21910_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r15] mov eax, -1 ;; size=5 bbWeight=0.02 PerfScore 0.00
-G_M21910_IG09: ; bbWeight=0.02, epilog, nogc, extend
+G_M21910_IG10: ; bbWeight=0.02, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -110,14 +114,52 @@ G_M21910_IG09: ; bbWeight=0.02, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0.02 PerfScore 0.06
-G_M21910_IG10: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+G_M21910_IG11: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + add eax, -3 + jmp SHORT G_M21910_IG19 + ;; size=5 bbWeight=0.19 PerfScore 0.42 +G_M21910_IG12: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add eax, -2 + jmp SHORT G_M21910_IG19 + ;; size=5 bbWeight=0.19 PerfScore 0.42 +G_M21910_IG13: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + dec eax + jmp SHORT G_M21910_IG19 + ;; size=4 bbWeight=0.19 PerfScore 0.42 +G_M21910_IG14: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M21910_IG19 + ;; size=2 bbWeight=0.19 PerfScore 0.37 +G_M21910_IG15: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
; byrRegs +[r15]
+ add ebx, -4 + movsx rsi, word ptr [r15+2*rax] + movsx rdi, r14w + cmp esi, edi + je SHORT G_M21910_IG14 + movsx rsi, word ptr [r15+2*rax-0x02] + movsx rdi, r14w + cmp esi, edi + je SHORT G_M21910_IG13 + movsx rsi, word ptr [r15+2*rax-0x04] + movsx rdi, r14w + cmp esi, edi + je SHORT G_M21910_IG12 + movsx rsi, word ptr [r15+2*rax-0x06] + movsx rdi, r14w + cmp esi, edi + je SHORT G_M21910_IG11 + add rax, -4 + test ebx, ebx + jg SHORT G_M21910_IG20 + jmp SHORT G_M21910_IG09 + ;; size=68 bbWeight=0.02 PerfScore 0.48 +G_M21910_IG16: ; bbWeight=0.08, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
movsx rsi, r14w mov rdi, r15 ; byrRegs +[rdi] mov edx, ebx ;; size=9 bbWeight=0.08 PerfScore 0.06
-G_M21910_IG11: ; bbWeight=0.08, epilog, nogc, extend
+G_M21910_IG17: ; bbWeight=0.08, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -126,35 +168,13 @@ G_M21910_IG11: ; bbWeight=0.08, epilog, nogc, extend tail.jmp [<unknown method>] ; gcr arg pop 0 ;; size=16 bbWeight=0.08 PerfScore 0.33
-G_M21910_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M21910_IG18: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs -[rdi] movsxd rax, ebx dec rax
- cmp ebx, 4 - jl SHORT G_M21910_IG07 - add ebx, -4 - movsx rsi, word ptr [r15+2*rax] - movsx rdi, r14w - cmp esi, edi - je SHORT G_M21910_IG13 - movsx rsi, word ptr [r15+2*rax-0x02] - movsx rdi, r14w - cmp esi, edi - je SHORT G_M21910_IG17 - movsx rsi, word ptr [r15+2*rax-0x04] - movsx rdi, r14w - cmp esi, edi - je SHORT G_M21910_IG16 - movsx rsi, word ptr [r15+2*rax-0x06] - movsx rdi, r14w - cmp esi, edi - je SHORT G_M21910_IG15 - add rax, -4 - test ebx, ebx - jg SHORT G_M21910_IG14 - jmp SHORT G_M21910_IG08 - ;; size=79 bbWeight=0.02 PerfScore 0.51 -G_M21910_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jmp G_M21910_IG07 + ;; size=11 bbWeight=0.02 PerfScore 0.05 +G_M21910_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r15] add rsp, 8 pop rbx @@ -163,31 +183,18 @@ G_M21910_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp ret ;; size=11 bbWeight=0 PerfScore 0.00
-G_M21910_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M21910_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs +[r15] dec ebx movsx rcx, word ptr [r15+2*rax] movsx rdx, r14w cmp ecx, edx
- je SHORT G_M21910_IG13
+ je G_M21910_IG14
dec rax
- jmp G_M21910_IG07 - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M21910_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r15] - add eax, -3 - jmp SHORT G_M21910_IG13 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M21910_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add eax, -2 - jmp SHORT G_M21910_IG13 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M21910_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - dec eax - jmp SHORT G_M21910_IG13 - ;; size=4 bbWeight=0 PerfScore 0.00
+ jmp G_M21910_IG08 + ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 261, prolog size 20, PerfScore 19.20, instruction count 89, allocated bytes for code 261 (MethodHash=9eddaa69) for method System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
+; Total bytes of code 280, prolog size 20, PerfScore 21.08, instruction count 91, allocated bytes for code 280 (MethodHash=9eddaa69) for method System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
; ============================================================ Unwind Info:

+19 (+7.28%) : 11288.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)

@@ -11,9 +11,9 @@ ; ; V00 arg0 [V00,T01] ( 9, 3.05) byref -> r15 single-def ; V01 arg1 [V01,T02] ( 9, 3.05) short -> r14 single-def
-; V02 arg2 [V02,T00] ( 15, 6.24) int -> rbx
+; V02 arg2 [V02,T00] ( 15, 6.41) int -> rbx
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
-; V04 loc1 [V04,T03] ( 14, 0.12) long -> rax
+; V04 loc1 [V04,T04] ( 14, 0.86) long -> rax
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V06 tmp1 [V06 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V07 tmp2 [V07 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -43,7 +43,7 @@ ;* V31 tmp26 [V31 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V32 tmp27 [V32 ] ( 0, 0 ) short -> zero-ref "Inlining Arg" ;* V33 tmp28 [V33 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V34 tmp29 [V34,T04] ( 5, 0 ) int -> rax "Single return block return value"
+; V34 tmp29 [V34,T03] ( 5, 1.49) int -> rax "Single return block return value"
; ; Lcl frame size = 8 @@ -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_IG12 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M21910_IG04: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+ jl G_M21910_IG18 + ;; size=9 bbWeight=1 PerfScore 1.25 +G_M21910_IG04: ; bbWeight=0.98, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
cmp ebx, 16
- jl SHORT G_M21910_IG10 - ;; size=5 bbWeight=0.98 PerfScore 1.23
+ jl G_M21910_IG16 + ;; size=9 bbWeight=0.98 PerfScore 1.23
G_M21910_IG05: ; bbWeight=0.91, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref movsx rsi, r14w mov rdi, r15 @@ -93,16 +93,20 @@ G_M21910_IG06: ; bbWeight=0.91, epilog, nogc, extend tail.jmp [<unknown method>] ; gcr arg pop 0 ;; size=16 bbWeight=0.91 PerfScore 3.87
-G_M21910_IG07: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+G_M21910_IG07: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
; byrRegs -[rdi]
+ cmp ebx, 4 + jge SHORT G_M21910_IG15 + ;; size=5 bbWeight=0.19 PerfScore 0.23 +G_M21910_IG08: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
test ebx, ebx
- jg G_M21910_IG14
+ jg G_M21910_IG20
;; size=8 bbWeight=0.19 PerfScore 0.23
-G_M21910_IG08: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M21910_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[r15] mov eax, -1 ;; size=5 bbWeight=0.02 PerfScore 0.00
-G_M21910_IG09: ; bbWeight=0.02, epilog, nogc, extend
+G_M21910_IG10: ; bbWeight=0.02, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -110,14 +114,52 @@ G_M21910_IG09: ; bbWeight=0.02, epilog, nogc, extend pop rbp ret ;; size=11 bbWeight=0.02 PerfScore 0.05
-G_M21910_IG10: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
+G_M21910_IG11: ; bbWeight=0.19, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + add eax, -3 + jmp SHORT G_M21910_IG19 + ;; size=5 bbWeight=0.19 PerfScore 0.42 +G_M21910_IG12: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + add eax, -2 + jmp SHORT G_M21910_IG19 + ;; size=5 bbWeight=0.19 PerfScore 0.42 +G_M21910_IG13: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + dec eax + jmp SHORT G_M21910_IG19 + ;; size=4 bbWeight=0.19 PerfScore 0.42 +G_M21910_IG14: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M21910_IG19 + ;; size=2 bbWeight=0.19 PerfScore 0.37 +G_M21910_IG15: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
; byrRegs +[r15]
+ add ebx, -4 + movsx rsi, word ptr [r15+2*rax] + movsx rdi, r14w + cmp esi, edi + je SHORT G_M21910_IG14 + movsx rsi, word ptr [r15+2*rax-0x02] + movsx rdi, r14w + cmp esi, edi + je SHORT G_M21910_IG13 + movsx rsi, word ptr [r15+2*rax-0x04] + movsx rdi, r14w + cmp esi, edi + je SHORT G_M21910_IG12 + movsx rsi, word ptr [r15+2*rax-0x06] + movsx rdi, r14w + cmp esi, edi + je SHORT G_M21910_IG11 + add rax, -4 + test ebx, ebx + jg SHORT G_M21910_IG20 + jmp SHORT G_M21910_IG09 + ;; size=68 bbWeight=0.02 PerfScore 0.43 +G_M21910_IG16: ; bbWeight=0.07, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
movsx rsi, r14w mov rdi, r15 ; byrRegs +[rdi] mov edx, ebx ;; size=9 bbWeight=0.07 PerfScore 0.05
-G_M21910_IG11: ; bbWeight=0.07, epilog, nogc, extend
+G_M21910_IG17: ; bbWeight=0.07, epilog, nogc, extend
add rsp, 8 pop rbx pop r14 @@ -126,35 +168,13 @@ G_M21910_IG11: ; bbWeight=0.07, epilog, nogc, extend tail.jmp [<unknown method>] ; gcr arg pop 0 ;; size=16 bbWeight=0.07 PerfScore 0.31
-G_M21910_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M21910_IG18: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs -[rdi] movsxd rax, ebx dec rax
- cmp ebx, 4 - jl SHORT G_M21910_IG07 - add ebx, -4 - movsx rsi, word ptr [r15+2*rax] - movsx rdi, r14w - cmp esi, edi - je SHORT G_M21910_IG13 - movsx rsi, word ptr [r15+2*rax-0x02] - movsx rdi, r14w - cmp esi, edi - je SHORT G_M21910_IG17 - movsx rsi, word ptr [r15+2*rax-0x04] - movsx rdi, r14w - cmp esi, edi - je SHORT G_M21910_IG16 - movsx rsi, word ptr [r15+2*rax-0x06] - movsx rdi, r14w - cmp esi, edi - je SHORT G_M21910_IG15 - add rax, -4 - test ebx, ebx - jg SHORT G_M21910_IG14 - jmp SHORT G_M21910_IG08 - ;; size=79 bbWeight=0.02 PerfScore 0.46 -G_M21910_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ jmp G_M21910_IG07 + ;; size=11 bbWeight=0.02 PerfScore 0.04 +G_M21910_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[r15] add rsp, 8 pop rbx @@ -163,31 +183,18 @@ G_M21910_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop rbp ret ;; size=11 bbWeight=0 PerfScore 0.00
-G_M21910_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M21910_IG20: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs +[r15] dec ebx movsx rcx, word ptr [r15+2*rax] movsx rdx, r14w cmp ecx, edx
- je SHORT G_M21910_IG13
+ je G_M21910_IG14
dec rax
- jmp G_M21910_IG07 - ;; size=23 bbWeight=0 PerfScore 0.00 -G_M21910_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r15] - add eax, -3 - jmp SHORT G_M21910_IG13 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M21910_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - add eax, -2 - jmp SHORT G_M21910_IG13 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M21910_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - dec eax - jmp SHORT G_M21910_IG13 - ;; size=4 bbWeight=0 PerfScore 0.00
+ jmp G_M21910_IG08 + ;; size=27 bbWeight=0 PerfScore 0.00
-; Total bytes of code 261, prolog size 20, PerfScore 19.15, instruction count 89, allocated bytes for code 261 (MethodHash=9eddaa69) for method System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
+; Total bytes of code 280, prolog size 20, PerfScore 21.03, instruction count 91, allocated bytes for code 280 (MethodHash=9eddaa69) for method System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
; ============================================================ Unwind Info:

+25 (+10.20%) : 8129.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

@@ -50,31 +50,31 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rsi rdi] ; gcr arg pop 0 ;; size=32 bbWeight=1 PerfScore 8.00
-G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r14d, dword ptr [rbx+0x18] test r15d, r15d
- jne SHORT G_M27413_IG09 - ;; size=9 bbWeight=1.50 PerfScore 4.88
+ jne G_M27413_IG11 + ;; size=13 bbWeight=1.50 PerfScore 4.88
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov r13d, r14d and r13d, -4
- je G_M27413_IG14
+ je G_M27413_IG15
mov eax, r14d and eax, -3 cmp eax, 4
- je SHORT G_M27413_IG10
+ je SHORT G_M27413_IG12
;; size=24 bbWeight=1 PerfScore 3.25 G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor r12d, r12d ;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx rcx, r12b lea edx, [r14-0x04] cmp r13d, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test r15d, r15d
- jne SHORT G_M27413_IG12 - ;; size=19 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14 + ;; size=27 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rdi, bword ptr [rbx+0x18] ; byrRegs +[rdi] @@ -84,9 +84,23 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp eax, r14d jne SHORT G_M27413_IG03 test ecx, ecx
- je SHORT G_M27413_IG13 - call <unknown method>
+ jne SHORT G_M27413_IG09 + ;; size=20 bbWeight=1 PerfScore 21.25 +G_M27413_IG08: ; bbWeight=12.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbx]
; byrRegs -[rdi]
+ add rsp, 8 + pop rbx + pop r12 + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=15 bbWeight=12.50 PerfScore 53.12 +G_M27413_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx] + call <unknown method>
; gcr arg pop 0 mov r14d, eax mov rdi, rbx @@ -97,8 +111,8 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rbx rdi] ; gcr arg pop 0 mov edi, r14d
- ;; size=44 bbWeight=1 PerfScore 30.00 -G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=24 bbWeight=1 PerfScore 8.75 +G_M27413_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 8 pop rbx pop r12 @@ -109,13 +123,13 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend jmp <unknown method> ; gcr arg pop 0 ;; size=19 bbWeight=1 PerfScore 5.25
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx] test r14b, 2
- jne SHORT G_M27413_IG13 - jmp SHORT G_M27413_IG04 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG08 + jmp G_M27413_IG04 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x1C], 0 je SHORT G_M27413_IG05 mov rdi, rbx @@ -128,30 +142,18 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r12d, r12d test eax, eax sete r12b
- jmp SHORT G_M27413_IG06 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06 + ;; size=33 bbWeight=0 PerfScore 0.00 +G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or edx, 1 test r15d, r15d
- je SHORT G_M27413_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M27413_IG07 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or edx, 2
- jmp SHORT G_M27413_IG07 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 8 - pop rbx - pop r12 - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jmp G_M27413_IG07 + ;; size=8 bbWeight=0 PerfScore 0.00 +G_M27413_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rdi, rbx ; gcrRegs +[rdi] call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] @@ -160,7 +162,7 @@ G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 { int3 ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 245, prolog size 19, PerfScore 62.62, instruction count 85, allocated bytes for code 245 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 270, prolog size 19, PerfScore 115.75, instruction count 85, allocated bytes for code 270 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================ Unwind Info:

librariestestsnotieredcompilation.run.linux.x64.Release.mch

-17 (-6.20%) : 179350.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan1[ubyte],System.ReadOnlySpan1[ubyte],int,byref):ubyte:this (FullOpts)

@@ -12,27 +12,27 @@ ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ubyte]> ; V03 arg3 [V03,T06] ( 4, 7 ) int -> r15 single-def
-; V04 arg4 [V04,T17] ( 2, 1 ) byref -> [rbp+0x10] single-def
+; V04 arg4 [V04,T17] ( 2, 1.50) byref -> [rbp+0x10] single-def
; V05 loc0 [V05,T16] ( 3, 3 ) int -> rdx single-def ; V06 loc1 [V06,T02] ( 7, 22 ) int -> [rbp-0x2C]
-; V07 loc2 [V07,T09] ( 4, 6.50) ref -> [rbp-0x48] class-hnd <<unknown class>>
+; V07 loc2 [V07,T09] ( 4, 6.50) ref -> [rbp-0x40] class-hnd <<unknown class>>
;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V10 tmp2 [V10 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V11 tmp3 [V11,T11] ( 2, 3 ) byref -> r14 single-def "field V01._reference (fldOffset=0x0)" P-INDEP
-; V12 tmp4 [V12,T13] ( 2, 3 ) int -> [rbp-0x30] single-def "field V01._length (fldOffset=0x8)" P-INDEP
+; V12 tmp4 [V12,T13] ( 2, 3 ) int -> r12 single-def "field V01._length (fldOffset=0x8)" P-INDEP
; V13 tmp5 [V13,T12] ( 2, 3 ) byref -> r13 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
-; V14 tmp6 [V14,T14] ( 2, 3 ) int -> [rbp-0x34] single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V14 tmp6 [V14,T14] ( 2, 3 ) int -> [rbp-0x30] single-def "field V02._length (fldOffset=0x8)" P-INDEP
; V15 tmp7 [V15,T10] ( 3, 6 ) ref -> rcx single-def "arr expr" ; V16 tmp8 [V16,T00] ( 3, 24 ) ref -> r8 "arr expr" ; V17 tmp9 [V17,T07] ( 2, 8 ) ref -> rcx "arr expr" ; V18 tmp10 [V18,T01] ( 3, 24 ) ref -> rdi "arr expr"
-; V19 cse0 [V19,T03] ( 4, 14 ) long -> [rbp-0x40] spill-single-def "CSE - aggressive"
+; V19 cse0 [V19,T03] ( 4, 14 ) long -> [rbp-0x38] spill-single-def "CSE - aggressive"
; V20 cse1 [V20,T05] ( 3, 10 ) ref -> rcx "CSE - aggressive" ; V21 cse2 [V21,T15] ( 3, 3 ) ref -> rcx "CSE - moderate" ; V22 cse3 [V22,T08] ( 2, 8 ) int -> rsi "CSE - aggressive" ;
-; Lcl frame size = 40
+; Lcl frame size = 24
G_M28200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -41,8 +41,8 @@ G_M28200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push r13 push r12 push rbx
- sub rsp, 40 - lea rbp, [rsp+0x50]
+ sub rsp, 24 + lea rbp, [rsp+0x40]
mov rbx, rdi ; gcrRegs +[rbx] mov r14, rsi @@ -53,7 +53,7 @@ G_M28200_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15d, r9d mov r9d, r8d ;; size=37 bbWeight=1 PerfScore 8.25
-G_M28200_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M28200_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
mov eax, r15d and eax, 0xD1FFAB1E mov rcx, gword ptr [rbx+0x08] @@ -65,8 +65,8 @@ G_M28200_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r1 mov r8d, edx mov eax, dword ptr [rcx+4*r8+0x10] cmp eax, -1
- je G_M28200_IG06 - ;; size=42 bbWeight=1 PerfScore 35.50
+ je SHORT G_M28200_IG06 + ;; size=38 bbWeight=1 PerfScore 35.50
G_M28200_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz ; gcrRegs -[rcx] mov rcx, gword ptr [rbx+0x10] @@ -77,41 +77,37 @@ G_M28200_IG03: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r1 cmp eax, esi jae G_M28200_IG10 mov dword ptr [rbp-0x2C], eax
- mov r10d, eax - shl r10, 4 - mov qword ptr [rbp-0x40], r10 - cmp dword ptr [r8+r10+0x18], r15d
+ mov r11d, eax + shl r11, 4 + mov qword ptr [rbp-0x38], r11 + cmp dword ptr [r8+r11+0x18], r15d
jne SHORT G_M28200_IG05 ;; size=40 bbWeight=4 PerfScore 49.00 G_M28200_IG04: ; bbWeight=2, gcrefRegs=000A {rcx rbx}, byrefRegs=6000 {r13 r14}, byref, isz ; gcrRegs -[r8]
- mov r11, gword ptr [rcx+r10+0x10] - ; gcrRegs +[r11]
+ mov rdi, gword ptr [rcx+r11+0x10] + ; gcrRegs +[rdi]
mov rcx, r13 ; gcrRegs -[rcx] ; byrRegs +[rcx]
- mov dword ptr [rbp-0x34], r9d
+ mov dword ptr [rbp-0x30], r9d
mov r8d, r9d mov rsi, r14 ; byrRegs +[rsi]
- mov dword ptr [rbp-0x30], r12d
mov edx, r12d
- mov rdi, r11 - ; gcrRegs +[rdi] - mov gword ptr [rbp-0x48], r11
+ mov gword ptr [rbp-0x40], rdi
; GC ptr vars +{V07}
- mov r12, qword ptr [r11] - mov r12, qword ptr [r12+0xE8] - call [r12+0x38]<unknown method> - ; gcrRegs -[rdi r11]
+ mov r10, qword ptr [rdi] + mov r10, qword ptr [r10+0xE8] + call [r10+0x38]<unknown method> + ; gcrRegs -[rdi]
; byrRegs -[rcx rsi] ; gcr arg pop 0 test eax, eax
- mov r9d, dword ptr [rbp-0x34] - mov r10, qword ptr [rbp-0x40] - mov r12d, dword ptr [rbp-0x30]
+ mov r9d, dword ptr [rbp-0x30] + mov r11, qword ptr [rbp-0x38]
jne SHORT G_M28200_IG08
- ;; size=64 bbWeight=2 PerfScore 35.00
+ ;; size=51 bbWeight=2 PerfScore 30.50
G_M28200_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz ; GC ptr vars -{V07} mov rdi, gword ptr [rbx+0x10] @@ -119,23 +115,23 @@ G_M28200_IG05: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=0008 { mov eax, dword ptr [rbp-0x2C] cmp eax, dword ptr [rdi+0x08] jae SHORT G_M28200_IG10
- mov eax, dword ptr [rdi+r10+0x1C]
+ mov eax, dword ptr [rdi+r11+0x1C]
cmp eax, -1 jne SHORT G_M28200_IG03 ;; size=22 bbWeight=4 PerfScore 41.00
-G_M28200_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M28200_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx rdi] ; byrRegs -[r13-r14] xor rax, rax ; gcrRegs +[rax]
- mov rbx, bword ptr [rbp+0x10] - ; byrRegs +[rbx] - mov gword ptr [rbx], rax - ;; size=9 bbWeight=0.50 PerfScore 1.12 -G_M28200_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ mov r10, bword ptr [rbp+0x10] + ; byrRegs +[r10] + mov gword ptr [r10], rax + ;; size=9 bbWeight=1 PerfScore 2.25 +G_M28200_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rax]
- ; byrRegs -[rbx] - add rsp, 40
+ ; byrRegs -[r10] + add rsp, 24
pop rbx pop r12 pop r13 @@ -143,25 +139,25 @@ G_M28200_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr pop r15 pop rbp ret
- ;; size=15 bbWeight=0.50 PerfScore 2.12
+ ;; size=15 bbWeight=1 PerfScore 4.25
G_M28200_IG08: ; bbWeight=0.50, gcVars=0000000000000200 {V07}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars +{V07}
- mov rbx, bword ptr [rbp+0x10] - ; byrRegs +[rbx] - mov r15, gword ptr [rbp-0x48] - ; gcrRegs +[r15] - mov rdi, rbx
+ mov rbx, gword ptr [rbp-0x40] + ; gcrRegs +[rbx] + mov r10, bword ptr [rbp+0x10] + ; byrRegs +[r10] + mov rdi, r10
; byrRegs +[rdi]
- mov rsi, r15
+ mov rsi, rbx
; gcrRegs +[rsi] ; GC ptr vars -{V07} call CORINFO_HELP_CHECKED_ASSIGN_REF
- ; gcrRegs -[rsi r15] - ; byrRegs -[rbx rdi]
+ ; gcrRegs -[rbx rsi] + ; byrRegs -[rdi r10]
mov eax, 1 ;; size=24 bbWeight=0.50 PerfScore 1.88 G_M28200_IG09: ; bbWeight=0.50, epilog, nogc, extend
- add rsp, 40
+ add rsp, 24
pop rbx pop r12 pop r13 @@ -176,7 +172,7 @@ G_M28200_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 274, prolog size 37, PerfScore 176.00, instruction count 87, allocated bytes for code 274 (MethodHash=724891d7) for method System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
+; Total bytes of code 257, prolog size 37, PerfScore 174.75, instruction count 84, allocated bytes for code 257 (MethodHash=724891d7) for method System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -189,7 +185,7 @@ Unwind Info: FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28
+ CodeOffset: 0x0E UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 2 * 8 + 8 = 24 = 0x18
CodeOffset: 0x0A UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x09 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r12 (12) CodeOffset: 0x07 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: r13 (13)

-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, 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 PerfScore 2.00 +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] ...

-30 (-4.64%) : 277510.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4901_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

@@ -35,7 +35,7 @@ ;* V24 tmp14 [V24 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V25 tmp15 [V25 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ; V26 tmp16 [V26,T05] ( 3, 6.00) int -> [rbp-0x30] spill-single-def "Inlining Arg"
-; V27 tmp17 [V27,T13] ( 3, 3.00) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
+; V27 tmp17 [V27,T14] ( 3, 3.00) byref -> [rbp-0x38] spill-single-def "Inlining Arg"
;* V28 tmp18 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp19 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V30 tmp20 [V30 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -53,8 +53,8 @@ ;* V42 tmp32 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[ubyte]> ;* V43 tmp33 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V44 tmp34 [V44 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V45 tmp35 [V45,T15] ( 3, 3.00) int -> r12 "Inlining Arg" -; V46 tmp36 [V46,T18] ( 3, 2.00) byref -> r15 single-def "Inlining Arg"
+; V45 tmp35 [V45,T08] ( 3, 5.00) int -> r12 "Inlining Arg" +; V46 tmp36 [V46,T15] ( 3, 3.00) byref -> r15 single-def "Inlining Arg"
;* V47 tmp37 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp38 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V49 tmp39 [V49 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> @@ -62,15 +62,15 @@ ;* V51 tmp41 [V51 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V52 tmp42 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V53 tmp43 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V54 tmp44 [V54,T09] ( 4, 4 ) int -> r12 "Inlining Arg"
+; V54 tmp44 [V54,T10] ( 4, 4 ) int -> r12 "Inlining Arg"
; V55 tmp45 [V55,T07] ( 5, 5 ) int -> r14 "Inlining Arg" ;* V56 tmp46 [V56 ] ( 0, 0 ) int -> zero-ref single-def "Inline stloc first use temp"
-; V57 tmp47 [V57,T17] ( 4, 2 ) int -> rdi single-def "Inline stloc first use temp" -; V58 tmp48 [V58,T14] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>> -; V59 tmp49 [V59,T10] ( 2, 2.00) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V60 tmp50 [V60,T11] ( 2, 2.00) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP -; V61 tmp51 [V61,T12] ( 5, 3.50) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V62 tmp52 [V62,T08] ( 6, 4.50) int -> r14 single-def "field V02._length (fldOffset=0x8)" P-INDEP
+; V57 tmp47 [V57,T18] ( 4, 2 ) int -> rdi single-def "Inline stloc first use temp" +; V58 tmp48 [V58,T16] ( 3, 3 ) ref -> rcx class-hnd single-def "impAppendStmt" <<unknown class>> +; V59 tmp49 [V59,T11] ( 2, 2.00) byref -> rsi single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V60 tmp50 [V60,T12] ( 2, 2.00) int -> rdx single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V61 tmp51 [V61,T13] ( 5, 3.50) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V62 tmp52 [V62,T09] ( 6, 4.50) int -> r14 single-def "field V02._length (fldOffset=0x8)" P-INDEP
;* V63 tmp53 [V63 ] ( 0, 0 ) byref -> zero-ref "field V05._reference (fldOffset=0x0)" P-INDEP ;* V64 tmp54 [V64 ] ( 0, 0 ) int -> zero-ref "field V05._length (fldOffset=0x8)" P-INDEP ;* V65 tmp55 [V65 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP @@ -95,9 +95,9 @@ ;* V84 tmp74 [V84 ] ( 0, 0 ) int -> zero-ref single-def "field V44._length (fldOffset=0x8)" P-INDEP ;* V85 tmp75 [V85 ] ( 0, 0 ) byref -> zero-ref single-def "field V49._reference (fldOffset=0x0)" P-INDEP ;* V86 tmp76 [V86 ] ( 0, 0 ) int -> zero-ref single-def "field V49._length (fldOffset=0x8)" P-INDEP
-; V87 cse0 [V87,T16] ( 3, 2.50) byref -> [rbp-0x40] spill-single-def "CSE - moderate"
+; V87 cse0 [V87,T17] ( 3, 3.00) byref -> [rbp-0x40] spill-single-def "CSE - moderate"
; V88 cse1 [V88,T00] ( 19, 9.50) ref -> [rbp-0x48] multi-def "CSE - aggressive"
-; V89 cse2 [V89,T06] ( 6, 5.00) int -> r12 "CSE - moderate"
+; V89 cse2 [V89,T06] ( 6, 5.50) int -> r12 "CSE - moderate"
; V90 cse3 [V90,T19] ( 3, 1.50) int -> rdi "CSE - conservative" ; ; Lcl frame size = 40 @@ -166,7 +166,7 @@ G_M61499_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15 test edx, edx jge SHORT G_M61499_IG09 ;; size=25 bbWeight=1.00 PerfScore 5.25
-G_M61499_IG08: ; bbWeight=0.50, gcVars=0000000000012000 {V27 V87}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
+G_M61499_IG08: ; bbWeight=0.50, gcVars=0000000000024000 {V27 V87}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref
; byrRegs -[rax] mov rdi, 0xD1FFAB1E ; gcrRegs +[rdi] @@ -191,7 +191,7 @@ G_M61499_IG09: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15 cmp dword ptr [rbp-0x30], 3 jge SHORT G_M61499_IG14 ;; size=6 bbWeight=1.00 PerfScore 3.00
-G_M61499_IG10: ; bbWeight=0.50, gcVars=0000000000010000 {V87}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
+G_M61499_IG10: ; bbWeight=0.50, gcVars=0000000000020000 {V87}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
; GC ptr vars -{V27} test r12d, r12d jge SHORT G_M61499_IG11 @@ -208,22 +208,22 @@ G_M61499_IG10: ; bbWeight=0.50, gcVars=0000000000010000 {V87}, gcrefRegs= G_M61499_IG11: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref lea edi, [r13-0x01] cmp edi, r14d
- jae G_M61499_IG33
+ jae G_M61499_IG28
;; size=13 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_IG20
;; 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
+ ja G_M61499_IG28 + jmp SHORT G_M61499_IG21
;; size=14 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}
+G_M61499_IG14: ; bbWeight=0.25, gcVars=0000000000024000 {V27 V87}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz + ; GC ptr vars +{V14 V27}
mov rcx, bword ptr [rbp-0x38] ; byrRegs +[rcx] mov edi, dword ptr [rcx] @@ -231,16 +231,24 @@ 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
+ je G_M61499_IG28
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
+G_M61499_IG15: ; bbWeight=0.25, gcVars=0000000000020000 {V87}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rcx r15]
- ; GC ptr vars -{V27}
+ ; GC ptr vars -{V14 V27} + call [System.Globalization.CharUnicodeInfo:GetUnicodeCategoryNoBoundsChecks(uint):int] + cmp eax, 8 + jne G_M61499_IG28 + ;; size=15 bbWeight=0.25 PerfScore 1.06 +G_M61499_IG16: ; bbWeight=1, 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_IG18 + ;; size=9 bbWeight=1 PerfScore 2.25 +G_M61499_IG17: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref + ; GC ptr vars -{V87}
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov r14, rcx @@ -249,7 +257,6 @@ G_M61499_IG15: ; bbWeight=0.50, gcVars=0000000000010000 {V87}, gcrefRegs= ; gcrRegs +[rdi] mov rsi, r14 ; gcrRegs +[rsi]
- ; GC ptr vars -{V87}
call [<unknown method>] ; gcrRegs -[rcx rsi rdi] mov rdi, r14 @@ -258,84 +265,90 @@ G_M61499_IG15: ; bbWeight=0.50, gcVars=0000000000010000 {V87}, gcrefRegs= ; gcrRegs +[rsi] 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
+ ;; size=37 bbWeight=0.50 PerfScore 3.75 +G_M61499_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
cmp r12d, 3
- jl G_M61499_IG33 - ;; 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
+ jl SHORT G_M61499_IG28 + ;; size=6 bbWeight=0.50 PerfScore 0.63 +G_M61499_IG19: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref + jmp G_M61499_IG30
;; 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
+G_M61499_IG20: ; bbWeight=0.25, gcVars=0000000000020000 {V87}, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, gcvars, byref, isz
; 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
+ jne SHORT G_M61499_IG28 + ;; size=11 bbWeight=0.25 PerfScore 1.06 +G_M61499_IG21: ; 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 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
+ jae SHORT G_M61499_IG28 + ;; size=14 bbWeight=0.50 PerfScore 1.25 +G_M61499_IG22: ; 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
+ jae SHORT G_M61499_IG24
;; size=19 bbWeight=0.50 PerfScore 2.38
-G_M61499_IG21: ; bbWeight=0.24, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
+G_M61499_IG23: ; 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
+ ja SHORT G_M61499_IG28 + jmp SHORT G_M61499_IG25 + ;; size=10 bbWeight=0.24 PerfScore 0.85 +G_M61499_IG24: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref, isz
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
+ jne SHORT G_M61499_IG28 + ;; size=11 bbWeight=0.25 PerfScore 1.06 +G_M61499_IG25: ; 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 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
+ jae SHORT G_M61499_IG28 + ;; size=13 bbWeight=0.50 PerfScore 1.50 +G_M61499_IG26: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=8000 {r15}, byref
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
+ jae G_M61499_IG15 + ;; size=19 bbWeight=0.50 PerfScore 1.75 +G_M61499_IG27: ; 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]
+ jbe G_M61499_IG16 + ;; size=12 bbWeight=0.24 PerfScore 0.36 +G_M61499_IG28: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rbx]
; GC ptr vars -{V87}
+ xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M61499_IG29: ; bbWeight=1, epilog, nogc, extend + add rsp, 40 + pop rbx
...

+43 (+4.59%) : 127721.dasm - System.IO.Packaging.ZipPackage+ContentTypeHelper:SaveToFile():this (FullOpts)

@@ -8,48 +8,48 @@ ; 6 inlinees with PGO data; 18 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T02] ( 17, 17 ) ref -> rbx this class-hnd single-def <System.IO.Packaging.ZipPackage+ContentTypeHelper>
+; V00 this [V00,T02] ( 17, 18 ) ref -> rbx this class-hnd single-def <System.IO.Packaging.ZipPackage+ContentTypeHelper>
; V01 loc0 [V01,T36] ( 2, 1 ) ref -> r15 class-hnd exact single-def <System.String>
-; V02 loc1 [V02,T30] ( 3, 1.50) ref -> r14 class-hnd single-def <System.IO.Compression.ZipArchive> -; V03 loc2 [V03,T29] ( 6, 1.50) ref -> [rbp-0x68] class-hnd EH-live spill-single-def <System.IO.Stream> -; V04 loc3 [V04,T07] ( 12, 11.50) ref -> [rbp-0x70] class-hnd EH-live spill-single-def <System.Xml.XmlWriter>
+; V02 loc1 [V02,T33] ( 3, 1.50) ref -> r14 class-hnd single-def <System.IO.Compression.ZipArchive> +; V03 loc2 [V03,T32] ( 6, 1.50) ref -> [rbp-0x68] class-hnd EH-live spill-single-def <System.IO.Stream> +; V04 loc3 [V04,T03] ( 12, 12.50) ref -> [rbp-0x70] class-hnd EH-live single-def <System.Xml.XmlWriter>
; V05 loc4 [V05 ] ( 7, 10.50) struct (24) [rbp-0x40] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.String,System.IO.Packaging.ContentType]>
-; V06 loc5 [V06,T03] ( 4, 12 ) ref -> r12 class-hnd exact <System.String>
+; V06 loc5 [V06,T04] ( 4, 12 ) ref -> [rbp-0x78] class-hnd exact spill-single-def <System.String>
; V07 loc6 [V07 ] ( 7, 10.50) struct (24) [rbp-0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.ContentType]>
-; V08 loc7 [V08,T04] ( 4, 12 ) ref -> r12 class-hnd exact <System.IO.Packaging.PackUriHelper+ValidatedPartUri>
+; V08 loc7 [V08,T05] ( 4, 12 ) ref -> [rbp-0x80] class-hnd exact spill-single-def <System.IO.Packaging.PackUriHelper+ValidatedPartUri>
;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10,T11] ( 5, 5 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Xml.XmlWriterSettings> ; V11 tmp2 [V11,T16] ( 3, 3 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.IO.Compression.ZipArchive>
-; V12 tmp3 [V12,T26] ( 2, 2 ) int -> rdx "Inlining Arg"
+; V12 tmp3 [V12,T29] ( 2, 2 ) int -> rdx "Inlining Arg"
;* V13 tmp4 [V13 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.Nullable`1[int]> ;* V14 tmp5 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Compression.ZipArchiveEntry> ;* V15 tmp6 [V15 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.IO.Compression.ZipArchiveEntry> ;* V16 tmp7 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Nullable`1[int]>
-; V17 tmp8 [V17,T20] ( 2, 2 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V18 tmp9 [V18,T21] ( 2, 2 ) ref -> rdi class-hnd "Inlining Arg" <System.Xml.XmlWriterSettings>
+; V17 tmp8 [V17,T23] ( 2, 2 ) ref -> r14 class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V18 tmp9 [V18,T24] ( 2, 2 ) ref -> rdi class-hnd "Inlining Arg" <System.Xml.XmlWriterSettings>
;* V19 tmp10 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>>
-; V20 tmp11 [V20,T14] ( 4, 3.39) ref -> r13 class-hnd single-def "Inlining Arg" <<unknown class>> -; V21 tmp12 [V21,T22] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,System.__Canon]> -; V22 tmp13 [V22,T27] ( 4, 1.85) ref -> rax -; V23 tmp14 [V23,T17] ( 4, 2.78) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V20 tmp11 [V20,T14] ( 4, 3.39) ref -> r12 class-hnd single-def "Inlining Arg" <<unknown class>> +; V21 tmp12 [V21,T25] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,System.__Canon]> +; V22 tmp13 [V22,T30] ( 4, 1.85) ref -> rax +; V23 tmp14 [V23,T17] ( 4, 2.78) ref -> [rbp-0x88] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V24 tmp15 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> ;* V25 tmp16 [V25 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.String,System.IO.Packaging.ContentType]>
-; V26 tmp17 [V26,T23] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
+; V26 tmp17 [V26,T26] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
; V27 tmp18 [V27,T08] ( 2, 8 ) ref -> rdx class-hnd "Inline return value spill temp" <System.IO.Packaging.ContentType> ; V28 tmp19 [V28,T00] ( 3, 24 ) ref -> rdi class-hnd "Inlining Arg" <<unknown class>>
-; V29 tmp20 [V29,T05] ( 3, 12 ) byref -> rax "Inline stloc first use temp"
+; V29 tmp20 [V29,T06] ( 3, 12 ) byref -> rax "Inline stloc first use temp"
;* V30 tmp21 [V30 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.IO.Packaging.ContentType> ;* V31 tmp22 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline return value spill temp" <<unknown class>> ; V32 tmp23 [V32,T15] ( 4, 3.39) ref -> r12 class-hnd single-def "Inlining Arg" <<unknown class>>
-; V33 tmp24 [V33,T24] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,System.__Canon]> -; V34 tmp25 [V34,T28] ( 4, 1.85) ref -> rax -; V35 tmp26 [V35,T18] ( 4, 2.78) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V33 tmp24 [V33,T27] ( 2, 2 ) ref -> rax class-hnd exact single-def "dup spill" <System.Collections.Generic.Dictionary`2+KeyCollection[System.__Canon,System.__Canon]> +; V34 tmp25 [V34,T31] ( 4, 1.85) ref -> rax +; V35 tmp26 [V35,T18] ( 4, 2.78) ref -> [rbp-0x90] class-hnd exact spill-single-def "NewObj constructor temp" <<unknown class>>
;* V36 tmp27 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inline stloc first use temp" <<unknown class>> ;* V37 tmp28 [V37 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op "NewObj constructor temp" <System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.IO.Packaging.PackUriHelper+ValidatedPartUri,System.IO.Packaging.ContentType]>
-; V38 tmp29 [V38,T25] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
+; V38 tmp29 [V38,T28] ( 2, 2 ) ref -> rdi class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]>
; V39 tmp30 [V39,T09] ( 2, 8 ) ref -> rdx class-hnd "Inline return value spill temp" <System.IO.Packaging.ContentType> ; V40 tmp31 [V40,T01] ( 3, 24 ) ref -> rdi class-hnd "Inlining Arg" <<unknown class>>
-; V41 tmp32 [V41,T06] ( 3, 12 ) byref -> rax "Inline stloc first use temp"
+; V41 tmp32 [V41,T07] ( 3, 12 ) byref -> rax "Inline stloc first use temp"
;* V42 tmp33 [V42 ] ( 0, 0 ) ref -> zero-ref ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.IO.Packaging.ContentType> ; V43 tmp34 [V43 ] ( 3, 5 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V05._dictionary (fldOffset=0x0)" P-DEP ; V44 tmp35 [V44 ] ( 4, 9 ) ref -> [rbp-0x38] do-not-enreg[X] addr-exposed "field V05._currentKey (fldOffset=0x8)" P-DEP @@ -63,24 +63,24 @@ ; V52 tmp43 [V52,T37] ( 2, 1 ) int -> rdx single-def "field V13.value (fldOffset=0x4)" P-INDEP ;* V53 tmp44 [V53,T44] ( 0, 0 ) ubyte -> zero-ref single-def "field V16.hasValue (fldOffset=0x0)" P-INDEP ;* V54 tmp45 [V54,T45] ( 0, 0 ) int -> zero-ref single-def "field V16.value (fldOffset=0x4)" P-INDEP
-; V55 tmp46 [V55,T31] ( 3, 1.50) ref -> rdi single-def "field V25._dictionary (fldOffset=0x0)" P-INDEP
+; V55 tmp46 [V55,T34] ( 3, 1.50) ref -> rdi single-def "field V25._dictionary (fldOffset=0x0)" P-INDEP
;* V56 tmp47 [V56,T41] ( 0, 0 ) ref -> zero-ref single-def "field V25._currentKey (fldOffset=0x8)" P-INDEP ;* V57 tmp48 [V57,T46] ( 0, 0 ) int -> zero-ref single-def "field V25._index (fldOffset=0x10)" P-INDEP ; V58 tmp49 [V58,T38] ( 2, 1 ) int -> rsi single-def "field V25._version (fldOffset=0x14)" P-INDEP
-; V59 tmp50 [V59,T32] ( 3, 1.50) ref -> rdi single-def "field V37._dictionary (fldOffset=0x0)" P-INDEP
+; V59 tmp50 [V59,T35] ( 3, 1.50) ref -> rdi single-def "field V37._dictionary (fldOffset=0x0)" P-INDEP
;* V60 tmp51 [V60,T42] ( 0, 0 ) ref -> zero-ref single-def "field V37._currentKey (fldOffset=0x8)" P-INDEP ;* V61 tmp52 [V61,T47] ( 0, 0 ) int -> zero-ref single-def "field V37._index (fldOffset=0x10)" P-INDEP ; V62 tmp53 [V62,T39] ( 2, 1 ) int -> rsi single-def "field V37._version (fldOffset=0x14)" P-INDEP ; V63 tmp54 [V63,T10] ( 6, 6 ) struct ( 8) [rbp-0x60] do-not-enreg[SF] "by-value struct argument" <System.Nullable`1[int]>
-; V64 PSPSym [V64,T40] ( 1, 1 ) long -> [rbp-0x80] do-not-enreg[V] "PSPSym" -; V65 cse0 [V65,T34] ( 3, 1.50) long -> r14 "CSE - moderate" -; V66 cse1 [V66,T35] ( 3, 1.50) long -> r15 "CSE - moderate" -; V67 cse2 [V67,T19] ( 4, 2 ) ref -> rdi "CSE - moderate" -; V68 cse3 [V68,T33] ( 3, 1.50) ref -> r12 "CSE - moderate" -; V69 cse4 [V69,T12] ( 3, 5 ) long -> r13 "CSE - moderate" -; V70 cse5 [V70,T13] ( 3, 5 ) long -> r13 "CSE - moderate"
+; V64 PSPSym [V64,T40] ( 1, 1 ) long -> [rbp-0xA0] do-not-enreg[V] "PSPSym" +; V65 cse0 [V65,T21] ( 3, 2 ) long -> r13 "CSE - moderate" +; V66 cse1 [V66,T22] ( 3, 2 ) long -> r14 "CSE - moderate" +; V67 cse2 [V67,T20] ( 4, 2 ) ref -> rdi "CSE - moderate" +; V68 cse3 [V68,T19] ( 3, 2.50) ref -> r12 "CSE - moderate" +; V69 cse4 [V69,T12] ( 3, 5 ) long -> r12 "CSE - moderate" +; V70 cse5 [V70,T13] ( 3, 5 ) long -> r12 "CSE - moderate"
;
-; Lcl frame size = 88
+; Lcl frame size = 120
G_M28374_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -89,20 +89,20 @@ G_M28374_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push r13 push r12 push rbx
- sub rsp, 88 - lea rbp, [rsp+0x80]
+ sub rsp, 120 + lea rbp, [rsp+0xA0]
xor eax, eax mov qword ptr [rbp-0x58], rax vxorps xmm8, xmm8, xmm8 vmovdqu ymmword ptr [rbp-0x50], ymm8 mov qword ptr [rbp-0x30], rax
- mov qword ptr [rbp-0x80], rsp
+ mov qword ptr [rbp-0xA0], rsp
mov rbx, rdi ; gcrRegs +[rbx]
- ;; size=49 bbWeight=1 PerfScore 12.58
+ ;; size=52 bbWeight=1 PerfScore 12.58
G_M28374_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref cmp byte ptr [rbx+0x3D], 0
- je G_M28374_IG22
+ je G_M28374_IG23
;; size=10 bbWeight=1 PerfScore 4.00 G_M28374_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz cmp byte ptr [rbx+0x3C], 0 @@ -172,7 +172,7 @@ G_M28374_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov gword ptr [rbp-0x68], rax ; GC ptr vars +{V03} ;; size=25 bbWeight=0.50 PerfScore 5.62
-G_M28374_IG06: ; bbWeight=0.50, gcVars=0000000020000000 {V03}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
+G_M28374_IG06: ; bbWeight=0.50, gcVars=0000000100000000 {V03}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] mov rdi, 0xD1FFAB1E ; System.Xml.XmlWriterSettings call CORINFO_HELP_NEWSFAST @@ -209,18 +209,21 @@ G_M28374_IG06: ; bbWeight=0.50, gcVars=0000000020000000 {V03}, gcrefRegs= call [<unknown method>] ; gcrRegs -[rsi rdi r15] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x70], rax
+ mov r15, rax + ; gcrRegs +[r15] + mov gword ptr [rbp-0x70], r15
; GC ptr vars +{V04}
- ;; size=88 bbWeight=0.50 PerfScore 8.75 -G_M28374_IG07: ; bbWeight=0.50, gcVars=0000000020000080 {V03 V04}, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, gcvars, byref, isz - mov rdi, rax
+ ;; size=91 bbWeight=0.50 PerfScore 8.88 +G_M28374_IG07: ; bbWeight=0.50, gcVars=0000000100000008 {V03 V04}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax] + mov rdi, r15
; gcrRegs +[rdi]
- mov rcx, qword ptr [rax] - mov r15, qword ptr [rcx+0x48] - call [r15+0x28]<unknown method> - ; gcrRegs -[rax rdi]
+ mov rax, qword ptr [r15] + mov r14, qword ptr [rax+0x48] + call [r14+0x28]<unknown method> + ; gcrRegs -[rdi]
; gcr arg pop 0
- mov rdi, gword ptr [rbp-0x70]
+ mov rdi, r15
; gcrRegs +[rdi] xor rsi, rsi ; gcrRegs +[rsi] @@ -228,114 +231,27 @@ G_M28374_IG07: ; bbWeight=0.50, gcVars=0000000020000080 {V03 V04}, gcrefR ; gcrRegs +[rdx] mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx]
- mov rax, qword ptr [rdi] - mov r14, qword ptr [rax+0x50] - call [r14+0x08]<unknown method>
+ mov rax, qword ptr [r15] + mov r13, qword ptr [rax+0x50] + call [r13+0x08]<unknown method>
; gcrRegs -[rcx rdx rsi rdi] ; gcr arg pop 0
- mov r13, gword ptr [rbx+0x10] - ; gcrRegs +[r13] - mov rax, gword ptr [r13+0x20] - ; gcrRegs +[rax] - test rax, rax - jne SHORT G_M28374_IG09 - ;; size=64 bbWeight=0.50 PerfScore 10.62 -G_M28374_IG08: ; bbWeight=0.35, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref - ; gcrRegs -[rax] - mov rdi, 0xD1FFAB1E ; <unknown class> - call CORINFO_HELP_NEWSFAST - ; gcrRegs +[rax] - ; gcr arg pop 0 - mov r12, rax
+ mov r12, gword ptr [rbx+0x10]
; gcrRegs +[r12]
- lea rdi, bword ptr [r12+0x08] - ; byrRegs +[rdi] - mov rsi, r13 - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rsi] - ; byrRegs -[rdi] - lea rdi, bword ptr [r13+0x20] - ; byrRegs +[rdi] - mov rsi, r12 - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rsi r13] - ; byrRegs -[rdi] - mov rax, r12 - ; gcrRegs +[rax] - ;; size=46 bbWeight=0.35 PerfScore 1.83 -G_M28374_IG09: ; bbWeight=0.50, gcrefRegs=0009 {rax rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[r12] - mov rdi, gword ptr [rax+0x08] - ; gcrRegs +[rdi] - mov esi, dword ptr [rdi+0x44] - mov gword ptr [rbp-0x40], rdi - xor rdi, rdi - mov gword ptr [rbp-0x38], rdi - ;; size=17 bbWeight=0.50 PerfScore 3.12 -G_M28374_IG10: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rax rdi] - mov dword ptr [rbp-0x30], edi - mov dword ptr [rbp-0x2C], esi - lea rdi, [rbp-0x40] - mov r13, 0xD1FFAB1E ; System.Collections.Generic.Dictionary`2+KeyCollection+Enumerator[System.String,System.IO.Packaging.ContentType] - mov rsi, r13 - call [<unknown method>] - ; gcr arg pop 0 - test eax, eax - je SHORT G_M28374_IG12 - ;; size=33 bbWeight=0.50 PerfScore 3.62 -G_M28374_IG11: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov r12, gword ptr [rbp-0x38] - ; gcrRegs +[r12] - mov rdi, gword ptr [rbx+0x10] - ; gcrRegs +[rdi] - cmp byte ptr [rdi], dil - mov rsi, r12 - ; gcrRegs +[rsi] - call [<unknown method>] - ; gcrRegs -[rsi rdi] - ; byrRegs +[rax] - ; gcr arg pop 0 - test rax, rax - je SHORT G_M28374_IG14
...

+19 (+6.83%) : 37410.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression

@@ -7,14 +7,14 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T07] ( 3, 6 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
+; V00 arg0 [V00,T08] ( 3, 6 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
; V01 arg1 [V01,T04] ( 5, 23 ) ref -> rbx class-hnd single-def <System.Linq.Expressions.IParameterProvider>
-; V02 arg2 [V02,T08] ( 3, 6 ) ref -> r14 class-hnd single-def <System.String> -; V03 loc0 [V03,T03] ( 6, 26 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.ParameterExpression[]> -; V04 loc1 [V04,T02] ( 8, 37 ) int -> r12 -; V05 loc2 [V05,T06] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
+; V02 arg2 [V02,T09] ( 3, 6 ) ref -> r14 class-hnd single-def <System.String> +; V03 loc0 [V03,T03] ( 6, 28 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.ParameterExpression[]> +; V04 loc1 [V04,T02] ( 8, 39 ) int -> r12 +; V05 loc2 [V05,T07] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
; V06 loc3 [V06,T05] ( 3, 10 ) ref -> [rbp-0x40] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
-; V07 loc4 [V07,T09] ( 3, 8 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
+; V07 loc4 [V07,T06] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
; V08 loc5 [V08,T00] ( 6, 82 ) int -> [rbp-0x30] ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10,T01] ( 2, 64 ) ref -> rdx "argument with side effect" @@ -48,7 +48,7 @@ G_M18588_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; gcrRegs -[rdi] mov dword ptr [rbp-0x2C], eax test eax, eax
- jle G_M18588_IG08
+ jle G_M18588_IG13
;; size=33 bbWeight=1 PerfScore 6.25 G_M18588_IG03: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -72,27 +72,29 @@ G_M18588_IG03: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V07} test r13, r13
- jne G_M18588_IG10
+ jne G_M18588_IG12
;; size=63 bbWeight=4 PerfScore 56.00
-G_M18588_IG04: ; bbWeight=2, gcVars=0000000000000220 {V06 V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M18588_IG04: ; bbWeight=2, gcVars=0000000000000060 {V06 V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rsi, gword ptr [rbp-0x40] ; gcrRegs +[rsi] cmp rax, rsi
- je SHORT G_M18588_IG07
+ mov gword ptr [rbp-0x38], r13 + ; GC ptr vars +{V03} + je G_M18588_IG11
mov r13d, dword ptr [rbp-0x2C] ; gcrRegs -[r13] movsxd rsi, r13d ; gcrRegs -[rsi] mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.ParameterExpression[]
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V03 V06}
call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-0x38], rax ; GC ptr vars +{V03} xor ecx, ecx test r12d, r12d jle SHORT G_M18588_IG06
- ;; size=42 bbWeight=2 PerfScore 14.50 -G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000208 {V03 V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=50 bbWeight=2 PerfScore 16.50 +G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000048 {V03 V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -114,7 +116,7 @@ G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000208 {V03 V07}, gcrefReg mov ecx, eax jl SHORT G_M18588_IG05 ;; size=49 bbWeight=16 PerfScore 204.00
-G_M18588_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M18588_IG06: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
movsxd rsi, r12d mov rdi, gword ptr [rbp-0x38] ; gcrRegs +[rdi] @@ -123,21 +125,17 @@ G_M18588_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; GC ptr vars -{V07} call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[rdx rdi]
- mov r13, gword ptr [rbp-0x38] - ; gcrRegs +[r13] - ;; size=20 bbWeight=2 PerfScore 8.50 -G_M18588_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V03}
+ ;; size=16 bbWeight=4 PerfScore 13.00 +G_M18588_IG07: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
inc r12d
- mov eax, dword ptr [rbp-0x2C] - cmp r12d, eax - jl G_M18588_IG03 - ;; size=15 bbWeight=4 PerfScore 10.00 -G_M18588_IG08: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+ cmp r12d, r13d + jl SHORT G_M18588_IG10 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M18588_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r14-r15]
- mov rax, r13
+ mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M18588_IG09: ; bbWeight=1, epilog, nogc, extend add rsp, 40 pop rbx @@ -148,17 +146,35 @@ G_M18588_IG09: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M18588_IG10: ; bbWeight=2, gcVars=0000000000000200 {V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx r14-r15] - ; GC ptr vars +{V07}
+G_M18588_IG10: ; bbWeight=2, gcVars=0000000000000008 {V03}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[rbx r14-r15] + mov r13, gword ptr [rbp-0x38] + ; gcrRegs +[r13] + jmp G_M18588_IG03 + ;; size=9 bbWeight=2 PerfScore 6.00 +G_M18588_IG11: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13] + mov r13d, dword ptr [rbp-0x2C] + jmp SHORT G_M18588_IG07 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M18588_IG12: ; bbWeight=2, gcVars=0000000000000040 {V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rax r13] + ; GC ptr vars -{V03} +{V06 V07}
mov gword ptr [rbp-0x38], r13 ; GC ptr vars +{V03} mov r13d, dword ptr [rbp-0x2C] ; gcrRegs -[r13] jmp SHORT G_M18588_IG06 ;; size=10 bbWeight=2 PerfScore 8.00
+G_M18588_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax rbx r14-r15] +[r13] + ; GC ptr vars -{V03 V06 V07} + mov gword ptr [rbp-0x38], r13 + ; GC ptr vars +{V03} + jmp SHORT G_M18588_IG08 + ;; size=6 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 278, prolog size 19, PerfScore 319.25, instruction count 79, allocated bytes for code 278 (MethodHash=3086b763) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
+; Total bytes of code 297, prolog size 19, PerfScore 333.00, instruction count 84, allocated bytes for code 297 (MethodHash=3086b763) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
; ============================================================ Unwind Info:

+19 (+7.69%) : 135608.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression

@@ -8,12 +8,12 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T06] ( 4, 10 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
-; V01 arg1 [V01,T03] ( 6, 24 ) ref -> rbx class-hnd single-def <System.Linq.Expressions.BlockExpression> -; V02 loc0 [V02,T04] ( 6, 26 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.Expression[]> -; V03 loc1 [V03,T02] ( 8, 37 ) int -> r13 -; V04 loc2 [V04,T08] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
+; V01 arg1 [V01,T04] ( 6, 24 ) ref -> rbx class-hnd single-def <System.Linq.Expressions.BlockExpression> +; V02 loc0 [V02,T03] ( 6, 28 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.Expression[]> +; V03 loc1 [V03,T02] ( 8, 39 ) int -> r13 +; V04 loc2 [V04,T09] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
; V05 loc3 [V05,T07] ( 3, 10 ) ref -> [rbp-0x40] class-hnd spill-single-def <System.Linq.Expressions.Expression>
-; V06 loc4 [V06,T09] ( 3, 8 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.Expression>
+; V06 loc4 [V06,T08] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.Expression>
; V07 loc5 [V07,T00] ( 6, 82 ) int -> [rbp-0x30] ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T01] ( 2, 64 ) ref -> rdx "argument with side effect" @@ -47,7 +47,7 @@ G_M22799_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs -[rdi] mov dword ptr [rbp-0x2C], eax test eax, eax
- jle G_M22799_IG08
+ jle G_M22799_IG13
;; size=32 bbWeight=1 PerfScore 10.00 G_M22799_IG03: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -68,27 +68,29 @@ G_M22799_IG03: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V06} test r14, r14
- jne G_M22799_IG10
+ jne G_M22799_IG12
;; size=44 bbWeight=4 PerfScore 57.00
-G_M22799_IG04: ; bbWeight=2, gcVars=0000000000000280 {V05 V06}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M22799_IG04: ; bbWeight=2, gcVars=0000000000000180 {V05 V06}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rsi, gword ptr [rbp-0x40] ; gcrRegs +[rsi] cmp rax, rsi
- je SHORT G_M22799_IG07
+ mov gword ptr [rbp-0x38], r14 + ; GC ptr vars +{V02} + je G_M22799_IG11
mov r14d, dword ptr [rbp-0x2C] ; gcrRegs -[r14] movsxd rsi, r14d ; gcrRegs -[rsi] mov rdi, 0xD1FFAB1E ; System.Linq.Expressions.Expression[]
- ; GC ptr vars -{V05}
+ ; GC ptr vars -{V02 V05}
call CORINFO_HELP_NEWARR_1_OBJ mov gword ptr [rbp-0x38], rax ; GC ptr vars +{V02} xor ecx, ecx test r13d, r13d jle SHORT G_M22799_IG06
- ;; size=42 bbWeight=2 PerfScore 14.50 -G_M22799_IG05: ; bbWeight=16, gcVars=0000000000000210 {V02 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=50 bbWeight=2 PerfScore 16.50 +G_M22799_IG05: ; bbWeight=16, gcVars=0000000000000108 {V02 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -109,7 +111,7 @@ G_M22799_IG05: ; bbWeight=16, gcVars=0000000000000210 {V02 V06}, gcrefReg mov ecx, eax jl SHORT G_M22799_IG05 ;; size=41 bbWeight=16 PerfScore 200.00
-G_M22799_IG06: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M22799_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
movsxd rsi, r13d mov rdi, gword ptr [rbp-0x38] ; gcrRegs +[rdi] @@ -118,21 +120,17 @@ G_M22799_IG06: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; GC ptr vars -{V06} call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[rdx rdi]
- mov r14, gword ptr [rbp-0x38] - ; gcrRegs +[r14] - ;; size=20 bbWeight=2 PerfScore 8.50 -G_M22799_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V02}
+ ;; size=16 bbWeight=4 PerfScore 13.00 +G_M22799_IG07: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
inc r13d
- mov eax, dword ptr [rbp-0x2C] - cmp r13d, eax - jl G_M22799_IG03 - ;; size=15 bbWeight=4 PerfScore 10.00 -G_M22799_IG08: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ cmp r13d, r14d + jl SHORT G_M22799_IG10 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M22799_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r15]
- mov rax, r14
+ mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M22799_IG09: ; bbWeight=1, epilog, nogc, extend add rsp, 40 pop rbx @@ -143,17 +141,35 @@ G_M22799_IG09: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M22799_IG10: ; bbWeight=2, gcVars=0000000000000200 {V06}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx r15] - ; GC ptr vars +{V06 V09}
+G_M22799_IG10: ; bbWeight=2, gcVars=0000000000000008 {V02}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[rbx r15] + mov r14, gword ptr [rbp-0x38] + ; gcrRegs +[r14] + jmp G_M22799_IG03 + ;; size=9 bbWeight=2 PerfScore 6.00 +G_M22799_IG11: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14] + mov r14d, dword ptr [rbp-0x2C] + jmp SHORT G_M22799_IG07 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M22799_IG12: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rax r14] + ; GC ptr vars -{V02} +{V06}
mov gword ptr [rbp-0x38], r14 ; GC ptr vars +{V02} mov r14d, dword ptr [rbp-0x2C] ; gcrRegs -[r14] jmp SHORT G_M22799_IG06 ;; size=10 bbWeight=2 PerfScore 8.00
+G_M22799_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax rbx r15] +[r14] + ; GC ptr vars -{V02 V06} + mov gword ptr [rbp-0x38], r14 + ; GC ptr vars +{V02} + jmp SHORT G_M22799_IG08 + ;; size=6 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 247, prolog size 19, PerfScore 319.75, instruction count 76, allocated bytes for code 247 (MethodHash=26a6a6f0) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression[] (FullOpts)
+; Total bytes of code 266, prolog size 19, PerfScore 333.50, instruction count 81, allocated bytes for code 266 (MethodHash=26a6a6f0) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression[] (FullOpts)
; ============================================================ Unwind Info:

realworld.run.linux.x64.checked.mch

-18 (-2.82%) : 15283.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan1[ushort],System.Span1[ubyte],byref,byref):ubyte (FullOpts)

@@ -10,19 +10,19 @@ ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ;* V01 arg1 [V01 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ubyte]>
-; V02 arg2 [V02,T15] ( 5, 3.50) byref -> [rbp-0x30] single-def -; V03 arg3 [V03,T17] ( 4, 3 ) byref -> [rbp-0x38] single-def
+; V02 arg2 [V02,T13] ( 5, 4.50) byref -> r8 single-def +; V03 arg3 [V03,T16] ( 4, 3.50) byref -> [rbp-0x38] single-def
; V04 loc0 [V04,T11] ( 6, 7 ) byref -> rdi single-def ; V05 loc1 [V05,T12] ( 6, 7 ) byref -> r10 single-def
-; V06 loc2 [V06,T14] ( 10, 5.50) int -> r11
+; V06 loc2 [V06,T15] ( 10, 6 ) int -> r11
; V07 loc3 [V07,T22] ( 6, 3.50) int -> rcx
-; V08 loc4 [V08,T04] ( 10, 19.50) int -> rbx -; V09 loc5 [V09,T02] ( 19, 20.50) int -> r15
+; V08 loc4 [V08,T03] ( 10, 20 ) int -> rbx +; V09 loc5 [V09,T02] ( 19, 21 ) int -> r15
; V10 loc6 [V10,T06] ( 10, 11 ) byref -> r14 single-def
-; V11 loc7 [V11,T13] ( 5, 6 ) int -> r13
+; V11 loc7 [V11,T14] ( 5, 6.50) int -> r13
; V12 loc8 [V12,T10] ( 17, 8.50) int -> rax ; V13 loc9 [V13,T26] ( 3, 1.50) int -> rdx
-; V14 loc10 [V14,T24] ( 5, 2.50) int -> r8
+; V14 loc10 [V14,T24] ( 5, 2.50) int -> rsi
; V15 loc11 [V15,T25] ( 4, 2 ) int -> rdi ;* V16 loc12 [V16 ] ( 0, 0 ) int -> zero-ref ;# V17 OutArgs [V17 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -31,7 +31,7 @@ ;* V20 tmp3 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V21 tmp4 [V21 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[byte]> ;* V22 tmp5 [V22 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[byte]>
-; V23 tmp6 [V23,T03] ( 6, 20 ) int -> r8 "Inline return value spill temp"
+; V23 tmp6 [V23,T04] ( 6, 20 ) int -> rsi "Inline return value spill temp"
; V24 tmp7 [V24,T00] ( 5, 40 ) byref -> rax "Inlining Arg" ; V25 tmp8 [V25,T05] ( 5, 14 ) int -> rdx "Inline stloc first use temp" ; V26 tmp9 [V26,T07] ( 3, 10 ) int -> r12 "Inline stloc first use temp" @@ -40,7 +40,7 @@ ; V29 tmp12 [V29,T01] ( 4, 32 ) byref -> rax "Inlining Arg" ; V30 tmp13 [V30,T18] ( 4, 4 ) byref -> r10 single-def "Inlining Arg" ; V31 tmp14 [V31,T19] ( 2, 2 ) byref -> rdi single-def "field V00._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp15 [V32,T16] ( 4, 3.50) int -> rsi single-def "field V00._length (fldOffset=0x8)" P-INDEP
+; V32 tmp15 [V32,T17] ( 4, 3.50) int -> [rbp-0x2C] single-def "field V00._length (fldOffset=0x8)" P-INDEP
; V33 tmp16 [V33,T20] ( 2, 2 ) byref -> rdx single-def "field V01._reference (fldOffset=0x0)" P-INDEP ; V34 tmp17 [V34,T21] ( 2, 2 ) int -> rcx single-def "field V01._length (fldOffset=0x8)" P-INDEP ;* V35 tmp18 [V35 ] ( 0, 0 ) byref -> zero-ref "field V18._reference (fldOffset=0x0)" P-INDEP @@ -66,23 +66,22 @@ G_M25359_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 { push rbx sub rsp, 24 lea rbp, [rsp+0x40]
- mov bword ptr [rbp-0x30], r8 - ; GC ptr vars +{V02}
mov bword ptr [rbp-0x38], r9 ; GC ptr vars +{V03}
- ;; size=27 bbWeight=1 PerfScore 8.75 -G_M25359_IG02: ; bbWeight=1, gcVars=0000000000028000 {V02 V03}, gcrefRegs=0000 {}, byrefRegs=0084 {rdx rdi}, gcvars, byref - ; byrRegs +[rdx rdi]
+ ;; size=23 bbWeight=1 PerfScore 7.75 +G_M25359_IG02: ; bbWeight=1, gcVars=0000000000010000 {V03}, gcrefRegs=0000 {}, byrefRegs=0184 {rdx rdi r8}, gcvars, byref + ; byrRegs +[rdx rdi r8]
mov r10, rdx ; byrRegs +[r10] mov r11d, esi and r11d, -4 xor ebx, ebx xor r15d, r15d
+ mov dword ptr [rbp-0x2C], esi
test esi, esi
- je G_M25359_IG14 - ;; size=23 bbWeight=1 PerfScore 2.50 -G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0480 {rdi r10}, byref, isz
+ je G_M25359_IG15 + ;; size=26 bbWeight=1 PerfScore 3.50 +G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0580 {rdi r8 r10}, byref, isz
; byrRegs -[rdx] mov r14, 0xD1FFAB1E ; static handle mov eax, r11d @@ -93,7 +92,7 @@ G_M25359_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0480 {rdi r1 lea r13d, [r11-0x04] jmp SHORT G_M25359_IG05 ;; size=29 bbWeight=0.50 PerfScore 2.62
-G_M25359_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref
+G_M25359_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref
; byrRegs +[r14] mov edx, 0xD1FFAB1E mov eax, edx @@ -103,11 +102,11 @@ G_M25359_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r1 add r13d, edx shl r13d, 2 ;; size=23 bbWeight=0.50 PerfScore 2.50
-G_M25359_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref
+G_M25359_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref
test r13d, r13d jle G_M25359_IG10 ;; size=9 bbWeight=0.50 PerfScore 0.62
-G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref, isz
+G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref, isz
movsxd rax, ebx lea rax, bword ptr [rdi+2*rax] ; byrRegs +[rax] @@ -116,23 +115,23 @@ G_M25359_IG06: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r movzx r9, word ptr [rax+0x04] movzx rax, word ptr [rax+0x06] ; byrRegs -[rax]
- mov r8d, edx - or r8d, r12d - or r8d, r9d - or r8d, eax - test r8d, -256
+ mov esi, edx + or esi, r12d + or esi, r9d + or esi, eax + test esi, -256
je SHORT G_M25359_IG08
- ;; size=45 bbWeight=4 PerfScore 44.00 -G_M25359_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref, isz - mov r8d, -1
+ ;; size=42 bbWeight=4 PerfScore 44.00 +G_M25359_IG07: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref, isz + mov esi, -1
jmp SHORT G_M25359_IG09
- ;; size=8 bbWeight=2 PerfScore 4.50 -G_M25359_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref
+ ;; size=7 bbWeight=2 PerfScore 4.50 +G_M25359_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref
movsxd rdx, edx movsx rdx, byte ptr [r14+rdx] shl edx, 18
- movsxd r8, eax - movsx rax, byte ptr [r14+r8]
+ movsxd rsi, eax + movsx rax, byte ptr [r14+rsi]
or edx, eax movsxd rax, r12d movsx rax, byte ptr [r14+rax] @@ -142,52 +141,54 @@ G_M25359_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r movsx rax, byte ptr [r14+rax] shl eax, 6 or edx, eax
- mov r8d, edx - ;; size=50 bbWeight=2 PerfScore 39.00 -G_M25359_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref - test r8d, r8d - jl G_M25359_IG16
+ mov esi, edx + ;; size=49 bbWeight=2 PerfScore 39.00 +G_M25359_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref + test esi, esi + jl G_M25359_IG17
movsxd rax, r15d add rax, r10 ; byrRegs +[rax]
- mov edx, r8d
+ mov edx, esi
sar edx, 16 mov byte ptr [rax], dl
- mov edx, r8d
+ mov edx, esi
sar edx, 8 mov byte ptr [rax+0x01], dl
- mov byte ptr [rax+0x02], r8b
+ mov byte ptr [rax+0x02], sil
add r15d, 3 add ebx, 4 cmp ebx, r13d jl G_M25359_IG06
- ;; size=52 bbWeight=4 PerfScore 32.00 -G_M25359_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r10 r14}, byref, isz
+ ;; size=49 bbWeight=4 PerfScore 32.00 +G_M25359_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref
; byrRegs -[rax] lea eax, [r11-0x04] cmp r13d, eax
- jne G_M25359_IG16
+ jne G_M25359_IG17 + ;; size=13 bbWeight=1 PerfScore 1.75 +G_M25359_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4580 {rdi r8 r10 r14}, byref, isz
cmp ebx, r11d
- je G_M25359_IG16
+ je G_M25359_IG17
lea eax, [r11-0x04] cdqe movzx rax, word ptr [rdi+2*rax] lea edx, [r11-0x03] movsxd rdx, edx movzx rdx, word ptr [rdi+2*rdx]
- lea r8d, [r11-0x02] - movsxd r8, r8d - movzx r8, word ptr [rdi+2*r8]
+ lea esi, [r11-0x02] + movsxd rsi, esi + movzx rsi, word ptr [rdi+2*rsi]
lea r9d, [r11-0x01] movsxd r9, r9d movzx rdi, word ptr [rdi+2*r9] ; byrRegs -[rdi] mov r9d, eax or r9d, edx
- or r9d, r8d
+ or r9d, esi
or r9d, edi test r9d, -256
- jne G_M25359_IG16
+ jne G_M25359_IG17
cdqe movsx rax, byte ptr [r14+rax] shl eax, 18 @@ -196,18 +197,18 @@ G_M25359_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r1 shl edx, 12 or eax, edx cmp edi, 61
- je SHORT G_M25359_IG11
+ je SHORT G_M25359_IG12
movsxd rdi, edi movsx rdi, byte ptr [r14+rdi] or eax, edi
- movsxd r8, r8d - movsx rdi, byte ptr [r14+r8]
+ movsxd rsi, esi + movsx rdi, byte ptr [r14+rsi]
shl edi, 6 or eax, edi
- jl G_M25359_IG16
+ jl G_M25359_IG17
add ecx, -3 cmp r15d, ecx
- jg G_M25359_IG16
+ jg G_M25359_IG17
movsxd rdi, r15d add r10, rdi mov edi, eax @@ -218,21 +219,21 @@ G_M25359_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4480 {rdi r1 mov byte ptr [r10+0x01], dil mov byte ptr [r10+0x02], al add r15d, 3
- jmp SHORT G_M25359_IG13 - ;; size=194 bbWeight=0.50 PerfScore 23.25 -G_M25359_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4400 {r10 r14}, byref, isz - cmp r8d, 61 - je SHORT G_M25359_IG12 - movsxd rdi, r8d
+ jmp SHORT G_M25359_IG14 + ;; size=180 bbWeight=0.50 PerfScore 22.38 +G_M25359_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=4500 {r8 r10 r14}, byref, isz + cmp esi, 61 + je SHORT G_M25359_IG13 + movsxd rdi, esi
movsx rdi, byte ptr [r14+rdi] shl edi, 6 or edi, eax ...

-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.50) long -> r15 +; V01 arg1 [V01,T34] ( 15, 11 ) int -> r13 +; V02 arg2 [V02,T01] ( 61,1294 ) long -> rbx +; V03 arg3 [V03,T03] ( 47,1058 ) int -> r14 +; V04 arg4 [V04,T44] ( 4, 3 ) byref -> r12 single-def +; V05 arg5 [V05,T45] ( 4, 3 ) byref -> [rbp-0x60] single-def +; V06 loc0 [V06,T05] ( 11, 232 ) 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,2261 ) int -> [rbp-0x4C] +; V10 loc4 [V10,T40] ( 12, 6.50) int -> rax +; V11 loc5 [V11,T47] ( 5, 3.50) int -> rax +; V12 loc6 [V12,T43] ( 6, 5 ) long -> rax +;* V13 loc7 [V13 ] ( 0, 0 ) int -> zero-ref +;* V14 loc8 [V14 ] ( 0, 0 ) int -> zero-ref +; V15 loc9 [V15,T39] ( 3, 8 ) int -> rsi +; V16 loc10 [V16,T28] ( 3, 20 ) int -> rdi +; V17 loc11 [V17,T29] ( 9, 18 ) long -> [rbp-0x58] +; V18 loc12 [V18,T24] ( 6, 56 ) 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,T46] ( 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,T42] ( 3, 6 ) 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=0000200000000000 {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=0000200000000000 {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_IG59
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
...

-40 (-1.49%) : 4746.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -9,30 +9,30 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 70, 40 ) ref -> [rbp-0xF0] this class-hnd single-def <System.Threading.PortableThreadPool+HillClimbing>
-; V01 arg1 [V01,T07] ( 10, 6.50) int -> r15 single-def -; V02 arg2 [V02,T54] ( 9, 7 ) double -> [rbp-0x30] -; V03 arg3 [V03,T08] ( 8, 6.50) int -> r14 -; V04 loc0 [V04,T83] ( 4, 2 ) double -> [rbp-0x38] spill-single-def
+; V01 arg1 [V01,T08] ( 10, 6.50) int -> r15 single-def +; V02 arg2 [V02,T56] ( 9, 7 ) double -> [rbp-0x30] +; V03 arg3 [V03,T09] ( 8, 6.50) int -> r14 +; V04 loc0 [V04,T84] ( 4, 2 ) double -> [rbp-0x38] spill-single-def
; V05 loc1 [V05,T32] ( 4, 2 ) int -> rdx ;* V06 loc2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex> ;* V07 loc3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex>
-; V08 loc4 [V08,T58] ( 8, 4 ) double -> [rbp-0x40]
+; V08 loc4 [V08,T60] ( 8, 4 ) double -> [rbp-0x40]
;* V09 loc5 [V09 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex> ; V10 loc6 [V10,T82] ( 5, 2.50) double -> [rbp-0x48] ; V11 loc7 [V11,T33] ( 4, 2 ) int -> [rbp-0x4C]
-; V12 loc8 [V12,T09] ( 10, 8.25) int -> [rbp-0x50] spill-single-def
+; V12 loc8 [V12,T07] ( 10, 8.75) int -> [rbp-0x50] spill-single-def
; V13 loc9 [V13,T57] ( 11, 5.50) double -> [rbp-0x58] ; V14 loc10 [V14,T104] ( 2, 1 ) double -> [rbp-0x60] spill-single-def ; V15 loc11 [V15,T31] ( 4, 2 ) ref -> rdi class-hnd exact single-def <System.Threading.PortableThreadPool>
-; V16 loc12 [V16,T37] ( 3, 1.50) int -> rax
+; V16 loc12 [V16,T37] ( 3, 1.50) int -> r14
; V17 loc13 [V17,T34] ( 4, 2 ) int -> [rbp-0x64] spill-single-def ; V18 loc14 [V18,T28] ( 5, 2.50) int -> [rbp-0x68] spill-single-def ; V19 loc15 [V19,T38] ( 3, 1.50) int -> rcx ; V20 loc16 [V20,T39] ( 3, 1.50) int -> rcx
-; V21 loc17 [V21,T55] ( 4, 9 ) double -> mm6 -; V22 loc18 [V22,T56] ( 4, 9 ) double -> mm8 -; V23 loc19 [V23,T59] ( 8, 4 ) double -> [rbp-0x70] spill-single-def -; V24 loc20 [V24,T84] ( 4, 2 ) double -> [rbp-0x78] spill-single-def
+; V21 loc17 [V21,T54] ( 4, 9.50) double -> mm6 +; V22 loc18 [V22,T55] ( 4, 9.50) double -> mm8 +; V23 loc19 [V23,T58] ( 8, 5 ) double -> [rbp-0x70] spill-single-def +; V24 loc20 [V24,T83] ( 4, 2.50) double -> [rbp-0x78] spill-single-def
; V25 loc21 [V25,T03] ( 5, 16.50) int -> [rbp-0x7C] ; V26 loc22 [V26,T105] ( 2, 1 ) double -> [rbp-0x88] spill-single-def ; V27 loc23 [V27,T94] ( 3, 1.50) double -> [rbp-0x90] spill-single-def @@ -94,7 +94,7 @@ ;* V83 tmp53 [V83 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V84 tmp54 [V84 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V85 tmp55 [V85 ] ( 0, 0 ) struct (16) zero-ref multireg-ret ld-addr-op "Inlining Arg" <System.Threading.PortableThreadPool+HillClimbing+Complex>
-; V86 tmp56 [V86,T60] ( 3, 3 ) double -> mm3 "impAppendStmt"
+; V86 tmp56 [V86,T61] ( 3, 3 ) double -> mm3 "impAppendStmt"
;* V87 tmp57 [V87 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.Threading.PortableThreadPool+HillClimbing+Complex> ; V88 tmp58 [V88,T80] ( 3, 3 ) double -> mm2 "Inlining Arg" ;* V89 tmp59 [V89 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" @@ -115,11 +115,11 @@ ;* V104 tmp74 [V104 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V105 tmp75 [V105 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V106 tmp76 [V106 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
-; V107 tmp77 [V107,T40] ( 3, 1.50) int -> rax "Inline return value spill temp" -; V108 tmp78 [V108,T25] ( 3, 3 ) int -> rcx "Inlining Arg" -; V109 tmp79 [V109,T35] ( 4, 2 ) int -> [rbp-0xB4] spill-single-def "Inline return value spill temp"
+; V107 tmp77 [V107,T40] ( 3, 1.50) int -> r14 "Inline return value spill temp" +; V108 tmp78 [V108,T25] ( 3, 3 ) int -> rax "Inlining Arg" +; V109 tmp79 [V109,T35] ( 4, 2 ) int -> r14 "Inline return value spill temp"
; V110 tmp80 [V110,T41] ( 3, 1.50) int -> rsi "Inline return value spill temp"
-; V111 tmp81 [V111,T29] ( 5, 2.50) int -> [rbp-0xB8] spill-single-def "Inline return value spill temp"
+; V111 tmp81 [V111,T29] ( 5, 2.50) int -> [rbp-0xB4] spill-single-def "Inline return value spill temp"
;* V112 tmp82 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Diagnostics.Tracing.NativeRuntimeEventSource> ;* V113 tmp83 [V113 ] ( 0, 0 ) double -> zero-ref "Inlining Arg" ; V114 tmp84 [V114,T93] ( 2, 2 ) double -> [rbp-0xC0] spill-single-def "Inlining Arg" @@ -133,7 +133,7 @@ ;* V122 tmp92 [V122 ] ( 0, 0 ) double -> zero-ref "field V07.<Imaginary>k__BackingField (fldOffset=0x0)" P-INDEP ; V123 tmp93 [V123,T85] ( 4, 2 ) double -> [rbp-0xD0] "field V07.<Real>k__BackingField (fldOffset=0x8)" P-INDEP ; V124 tmp94 [V124,T117] ( 1, 0.50) double -> mm0 "field V09.<Imaginary>k__BackingField (fldOffset=0x0)" P-INDEP
-; V125 tmp95 [V125,T61] ( 7, 3.50) double -> [rbp-0xD8] "field V09.<Real>k__BackingField (fldOffset=0x8)" P-INDEP
+; V125 tmp95 [V125,T62] ( 7, 3.50) double -> [rbp-0xD8] "field V09.<Real>k__BackingField (fldOffset=0x8)" P-INDEP
;* V126 tmp96 [V126 ] ( 0, 0 ) double -> zero-ref "field V29.<Imaginary>k__BackingField (fldOffset=0x0)" P-INDEP ;* V127 tmp97 [V127 ] ( 0, 0 ) double -> zero-ref "field V29.<Real>k__BackingField (fldOffset=0x8)" P-INDEP ; V128 tmp98 [V128,T46] ( 2, 1.50) int -> [rbp-0x98] do-not-enreg[] "field V41.Item1 (fldOffset=0x0)" P-DEP @@ -194,7 +194,7 @@ ; V183 cse5 [V183,T42] ( 3, 1.50) int -> rsi "CSE - conservative" ; V184 cse6 [V184,T43] ( 3, 1.50) int -> rsi "CSE - conservative" ; V185 cse7 [V185,T16] ( 2, 4.25) long -> rsi hoist "CSE - moderate"
-; V186 cse8 [V186,T62] ( 7, 3.50) double -> [rbp-0xE8] spill-single-def "CSE - moderate"
+; V186 cse8 [V186,T59] ( 7, 5 ) double -> [rbp-0xE8] spill-single-def "CSE - moderate"
; V187 cse9 [V187,T36] ( 4, 1.75) long -> rsi "CSE - conservative" ; V188 cse10 [V188,T12] ( 4, 5.50) long -> rdi "CSE - moderate" ; V189 cse11 [V189,T27] ( 5, 2.50) ref -> [rbp-0xF8] spill-single-def "CSE - moderate" @@ -307,7 +307,7 @@ G_M16266_IG07: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, mov dword ptr [rbp-0xA8], r15d mov dword ptr [rbp-0xA4], 10 mov rax, qword ptr [rbp-0xA8]
- jmp G_M16266_IG42
+ jmp G_M16266_IG43
;; size=81 bbWeight=0.50 PerfScore 21.83 G_M16266_IG08: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor esi, esi @@ -342,7 +342,7 @@ G_M16266_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, ; gcrRegs -[rbx rdi r14] ; gcr arg pop 0 test eax, eax
- je G_M16266_IG24
+ je G_M16266_IG25
vmovsd xmm0, qword ptr [rbp-0x38] xor edi, edi mov rax, 0xD1FFAB1E ; function address @@ -388,7 +388,7 @@ G_M16266_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, ; gcrRegs +[rax] mov r8d, dword ptr [rax+0x08] cmp edx, r8d
- jae G_M16266_IG43
+ jae G_M16266_IG44
mov r9d, edx vmovsd xmm1, qword ptr [rbp-0x38] vmovsd qword ptr [rax+8*r9+0x10], xmm1 @@ -397,7 +397,7 @@ G_M16266_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, mov rax, r10 mov r11d, dword ptr [rax+0x08] cmp edx, r11d
- jae G_M16266_IG43
+ jae G_M16266_IG44
vxorps xmm2, xmm2, xmm2 vcvtsi2sd xmm2, xmm2, r15d vmovsd qword ptr [rax+8*r9+0x10], xmm2 @@ -422,12 +422,12 @@ G_M16266_IG13: ; bbWeight=0.50, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, imul edx, r9d mov dword ptr [rbp-0x50], edx cmp edx, r9d
- jle G_M16266_IG23
+ jle G_M16266_IG24
vxorps xmm6, xmm6, xmm6 vxorps xmm8, xmm8, xmm8 xor eax, eax test edx, edx
- jle G_M16266_IG22
+ jle G_M16266_IG23
;; size=193 bbWeight=0.50 PerfScore 69.96 G_M16266_IG14: ; bbWeight=0.25, gcVars=00000000000000000000000008000000 {V189}, gcrefRegs=040A {rcx rbx r10}, byrefRegs=0000 {}, gcvars, byref ; gcrRegs -[r14] @@ -446,14 +446,14 @@ G_M16266_IG15: ; bbWeight=4, gcrefRegs=040A {rcx rbx r10}, byrefRegs=0000 mov rax, rdx mov r12d, r8d cmp rax, r12
- jae G_M16266_IG43
+ jae G_M16266_IG44
vaddsd xmm6, xmm6, qword ptr [r14+8*rax+0x10] mov rax, r10 ; gcrRegs +[rax] mov r14d, r11d ; gcrRegs -[r14] cmp rdx, r14
- jae G_M16266_IG43
+ jae G_M16266_IG44
vaddsd xmm8, xmm8, qword ptr [rax+8*rdx+0x10] mov r14d, dword ptr [rbp-0x7C] inc r14d @@ -461,9 +461,9 @@ G_M16266_IG15: ; bbWeight=4, gcrefRegs=040A {rcx rbx r10}, byrefRegs=0000 cmp r14d, r12d mov eax, r14d ; gcrRegs -[rax]
- jl G_M16266_IG21
+ jl G_M16266_IG22
;; size=84 bbWeight=4 PerfScore 359.00
-G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
+G_M16266_IG16: ; bbWeight=1, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r10] vxorps xmm9, xmm9, xmm9 vcvtsi2sd xmm9, xmm9, r12d @@ -474,13 +474,15 @@ G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 vmovsd qword ptr [rbp-0x78], xmm8 vxorps xmm10, xmm10, xmm10 vucomisd xmm6, xmm10
- jbe G_M16266_IG20
+ jbe G_M16266_IG21 + ;; size=54 bbWeight=1 PerfScore 36.67 +G_M16266_IG17: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref, isz
vxorps xmm10, xmm10, xmm10 vucomisd xmm8, xmm10 vmovsd qword ptr [rbp-0x40], xmm4 vmovsd qword ptr [rbp-0xC8], xmm2 vmovsd qword ptr [rbp-0xD0], xmm3
- jbe G_M16266_IG19
+ jbe G_M16266_IG20
vxorps xmm2, xmm2, xmm2 vcvtsi2sd xmm2, xmm2, r9d vdivsd xmm3, xmm9, xmm2 @@ -524,14 +526,12 @@ G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 vmovsd xmm9, qword ptr [rbp-0xE8] vmovsd xmm3, qword ptr [rbp-0x90] vucomisd xmm9, xmm3
- jb SHORT G_M16266_IG18
+ jb SHORT G_M16266_IG19
mov rsi, gword ptr [rbx+0x08] ; gcrRegs +[rsi] mov rdi, rbx ; gcrRegs +[rdi] mov edx, r12d
- ;; size=282 bbWeight=0.50 PerfScore 99.67 -G_M16266_IG17: ; bbWeight=0.50, extend
vmovaps xmm0, xmm3 call [<unknown method>] ; gcrRegs -[rsi rdi] @@ -544,12 +544,14 @@ G_M16266_IG17: ; bbWeight=0.50, extend vaddsd xmm0, xmm1, xmm0 vsqrtsd xmm0, xmm0, xmm0 vmovsd xmm1, qword ptr [rbp-0x40]
+ ;; size=272 bbWeight=0.50 PerfScore 108.46 +G_M16266_IG18: ; bbWeight=0.50, extend
vrangesd xmm4, xmm1, xmm0, 5 vfixupimmsd xmm1, xmm0, xmmword ptr [reloc @RWD16], 0 vfixupimmsd xmm4, xmm1, xmmword ptr [reloc @RWD16], 0 vmovsd qword ptr [rbp-0x40], xmm4
- ;; size=78 bbWeight=0.50 PerfScore 34.12 -G_M16266_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ ;; size=34 bbWeight=0.50 PerfScore 7.00 +G_M16266_IG19: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, dword ptr [rbx+0x98] mov rsi, gword ptr [rbx+0x10] @@ -568,53 +570,48 @@ G_M16266_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, vmovsd xmm1, qword ptr [rbx+0x78] vxorps xmm5, xmm5, xmm5 vucomisd xmm1, xmm5
- jp G_M16266_IG25 - jne SHORT G_M16266_IG25
+ jp SHORT G_M16266_IG26 + jne SHORT G_M16266_IG26
vmovsd xmm5, qword ptr [rbp-0x40] vmovsd qword ptr [rbx+0x78], xmm5
- jmp G_M16266_IG26 - ;; size=87 bbWeight=0.50 PerfScore 28.83 -G_M16266_IG19: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov r12d, dword ptr [rbp-0x4C] - mov r14, gword ptr [rbp-0xF8] - ; gcrRegs +[r14] - jmp G_M16266_IG30 - ;; size=16 bbWeight=0.25 PerfScore 1.00
+ jmp G_M16266_IG27 + ;; size=83 bbWeight=0.50 PerfScore 28.83
G_M16266_IG20: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[r14]
+ mov r12d, dword ptr [rbp-0x4C] + jmp G_M16266_IG31 + ;; size=9 bbWeight=0.25 PerfScore 0.75 +G_M16266_IG21: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
vmovsd qword ptr [rbp-0x40], xmm4 vmovsd qword ptr [rbp-0xC8], xmm2 vmovsd qword ptr [rbp-0xD0], xmm3 mov r12d, dword ptr [rbp-0x4C]
- mov r14, gword ptr [rbp-0xF8] - ; gcrRegs +[r14] - jmp G_M16266_IG30 - ;; size=37 bbWeight=0.25 PerfScore 1.75
...

+18 (+1.88%) : 16721.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:ParseCommaSeparatedSyntaxListSystem.__Canon:Microsoft.CodeAnalysis.Syntax.InternalSyntax.SeparatedSyntaxList`1[System.__Canon]:this (FullOpts)

@@ -8,88 +8,89 @@ ; 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 -> [rbp-0x38] single-def -; V02 arg1 [V02,T31] ( 4, 14 ) byref -> r12 single-def -; V03 arg2 [V03,T18] ( 7, 48 ) ushort -> r15 single-def -; V04 arg3 [V04,T45] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]> -; V05 arg4 [V05,T29] ( 6, 26 ) ref -> r14 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]> -; V06 arg5 [V06,T30] ( 4, 24 ) ref -> r13 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]> -; V07 arg6 [V07,T34] ( 1, 16 ) ubyte -> [rbp+0x18] single-def -; V08 arg7 [V08,T38] ( 2, 12 ) ubyte -> [rbp+0x20] -; V09 arg8 [V09,T49] ( 1, 1 ) ubyte -> [rbp+0x28] 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 -> [rbp-0x38] single-def +; V02 arg1 [V02,T30] ( 4, 14 ) byref -> r13 single-def +; V03 arg2 [V03,T34] ( 4, 12 ) ushort -> r12 single-def +; V04 arg3 [V04,T46] ( 3, 3 ) ref -> r8 class-hnd single-def <System.Func`2[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser,ubyte]> +; V05 arg4 [V05,T27] ( 6, 22 ) ref -> r15 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]> +; V06 arg5 [V06,T28] ( 4, 24 ) ref -> r14 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser+SkipBadTokens`1[System.__Canon]> +; V07 arg6 [V07,T42] ( 1, 8 ) ubyte -> [rbp+0x18] single-def +; V08 arg7 [V08,T37] ( 2, 10 ) ubyte -> [rbp+0x20] +; V09 arg8 [V09,T50] ( 1, 1 ) ubyte -> [rbp+0x28] 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) [rbp-0x40] 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 -> [rbp-0x44] ld-addr-op
+; V11 loc1 [V11 ] ( 7, 32 ) struct ( 8) [rbp-0x40] 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 -> [rbp-0x44] ld-addr-op
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T47] ( 3, 4 ) long -> rsi "spilling helperCall"
+; V14 tmp1 [V14,T48] ( 3, 4 ) long -> rsi "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 -> rsi "spilling helperCall"
+; V17 tmp4 [V17,T49] ( 3, 4 ) long -> rsi "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 -> [rbp-0x50] spill-single-def -; V21 tmp8 [V21,T25] ( 3, 32 ) ref -> rax
+; V20 tmp7 [V20,T31] ( 2, 16 ) byref -> [rbp-0x58] spill-single-def +; V21 tmp8 [V21,T29] ( 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 -> rcx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V28 tmp15 [V28,T40] ( 4, 8 ) ref -> rcx -; V29 tmp16 [V29,T36] ( 3, 12 ) ref -> [rbp-0x58] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V27 tmp14 [V27,T40] ( 2, 8 ) ref -> rcx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V28 tmp15 [V28,T39] ( 4, 8 ) ref -> rcx +; V29 tmp16 [V29,T35] ( 3, 12 ) ref -> [rbp-0x60] 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 -> rcx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V34 tmp21 [V34,T35] ( 4, 14 ) ref -> rcx -; V35 tmp22 [V35,T37] ( 3, 12 ) ref -> [rbp-0x60] 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 -> [rbp-0x68] 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 -> [rbp-0x68] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V38 tmp25 [V38,T06] ( 2, 64 ) ref -> rsi class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V39 tmp26 [V39,T07] ( 4, 56 ) ref -> rsi +; V40 tmp27 [V40,T08] ( 3, 48 ) ref -> [rbp-0x70] 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 -> rsi class-hnd "Inlining Arg" <System.__Canon>
+; V42 tmp29 [V42,T41] ( 2, 8 ) ref -> rsi 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 -> [rbp-0x70] 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 -> [rbp-0x78] 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 -> [rbp-0x78] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V50 tmp37 [V50,T22] ( 2, 32 ) ref -> rsi class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V51 tmp38 [V51,T18] ( 4, 32 ) ref -> rsi +; V52 tmp39 [V52,T10] ( 3, 48 ) ref -> [rbp-0x80] 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 -> rsi class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V56 tmp43 [V56,T02] ( 4,224 ) ref -> rsi -; V57 tmp44 [V57,T04] ( 3,192 ) ref -> [rbp-0x80] class-hnd spill-single-def "dup spill" <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,T03] ( 3,192 ) ref -> [rbp-0x88] 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 -> rsi class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V61 tmp48 [V61,T15] ( 4, 56 ) ref -> rsi -; V62 tmp49 [V62,T22] ( 3, 48 ) ref -> [rbp-0x88] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V60 tmp47 [V60,T23] ( 2, 32 ) ref -> r8 class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V61 tmp48 [V61,T19] ( 4, 32 ) ref -> r8 +; V62 tmp49 [V62,T11] ( 3, 48 ) ref -> [rbp-0x90] 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 -> rcx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> -; V66 tmp53 [V66,T16] ( 4, 56 ) ref -> rcx -; V67 tmp54 [V67,T23] ( 3, 48 ) ref -> [rbp-0x90] class-hnd spill-single-def "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken>
+; V65 tmp52 [V65,T24] ( 2, 32 ) ref -> rcx class-hnd "dup spill" <Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken> +; V66 tmp53 [V66,T20] ( 4, 32 ) ref -> rcx +; V67 tmp54 [V67,T12] ( 3, 48 ) ref -> [rbp-0x98] 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 -> rsi 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 -> rdi "Inline stloc first use temp"
+; V69 tmp56 [V69,T25] ( 2, 32 ) ref -> rsi 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 -> rdi "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 -> [rbp-0x98] 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
+; V73 tmp60 [V73,T04] ( 7,177 ) ref -> [rbp-0xA0] 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 -> [rbp-0x48] spill-single-def "field V10.allowSemicolonAsSeparator (fldOffset=0x12)" P-INDEP
-; V76 tmp63 [V76 ] ( 7, 42 ) ref -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V11._builder (fldOffset=0x0)" P-DEP
+; V76 tmp63 [V76 ] ( 7, 32 ) ref -> [rbp-0x40] 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 -> rsi "fgMakeTemp is creating a new local variable" -; V80 rat1 [V80,T44] ( 3, 5.60) long -> rdi "spilling expr" -; V81 rat2 [V81,T46] ( 3, 4.48) long -> rsi "fgMakeTemp is creating a new local variable"
+; V79 cse0 [V79,T14] ( 7, 40 ) int -> [rbp-0x4C] multi-def "CSE - moderate" +; V80 rat0 [V80,T44] ( 3, 5.60) long -> rsi "fgMakeTemp is creating a new local variable" +; V81 rat1 [V81,T45] ( 3, 5.60) long -> rdi "spilling expr" +; V82 rat2 [V82,T47] ( 3, 4.48) long -> rsi "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 120 @@ -107,39 +108,39 @@ G_M39451_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov qword ptr [rbp-0x30], rsi mov rbx, rdi ; gcrRegs +[rbx]
- mov r12, rdx - ; byrRegs +[r12] - mov r15d, ecx - mov r14, r9 - ; gcrRegs +[r14]
+ mov r13, rdx + ; byrRegs +[r13] + mov r12d, ecx + mov r15, r9 + ; gcrRegs +[r15]
mov rdx, rsi
- mov r13, gword ptr [rbp+0x10] - ; gcrRegs +[r13]
+ mov r14, gword ptr [rbp+0x10] + ; gcrRegs +[r14]
;; size=51 bbWeight=1 PerfScore 11.25
-G_M39451_IG02: ; bbWeight=1, gcrefRegs=6108 {rbx r8 r13 r14}, byrefRegs=1000 {r12}, byref, isz
+G_M39451_IG02: ; bbWeight=1, gcrefRegs=C108 {rbx r8 r14 r15}, byrefRegs=2000 {r13}, byref, isz
; gcrRegs +[r8] movzx r9, byte ptr [rbp+0x28] mov byte ptr [rbp-0x48], r9b
- mov gword ptr [rbp-0x98], r8
+ mov gword ptr [rbp-0xA0], r8
; GC ptr vars +{V73} mov rdi, qword ptr [rdx+0x38] mov rsi, qword ptr [rdi+0x10] test rsi, rsi je SHORT G_M39451_IG04 ;; size=29 bbWeight=1 PerfScore 8.25
-G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000008 {V73}, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=1000 {r12}, gcvars, byref, isz
+G_M39451_IG03: ; bbWeight=0.80, gcVars=0000000000000010 {V73}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
; gcrRegs -[r8] mov qword ptr [rbp-0x38], rdx jmp SHORT G_M39451_IG05 ;; size=6 bbWeight=0.80 PerfScore 2.40
-G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=1000 {r12}, byref
+G_M39451_IG04: ; bbWeight=0.20, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
mov qword ptr [rbp-0x38], rdx mov rdi, rdx mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rsi, rax ;; size=25 bbWeight=0.20 PerfScore 0.55
-G_M39451_IG05: ; bbWeight=1, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=1000 {r12}, byref
+G_M39451_IG05: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
mov rdi, gword ptr [rbx+0x108] ; gcrRegs +[rdi] cmp dword ptr [rdi], edi @@ -147,12 +148,12 @@ G_M39451_IG05: ; bbWeight=1, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=1000 ; gcrRegs -[rdi] +[rax] mov gword ptr [rbp-0x40], rax ;; size=19 bbWeight=1 PerfScore 9.00
-G_M39451_IG06: ; bbWeight=8, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=1000 {r12}, byref
+G_M39451_IG06: ; bbWeight=8, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref
; gcrRegs -[rax] cmp byte ptr [rbp+0x20], 0 jne G_M39451_IG16 ;; size=10 bbWeight=8 PerfScore 24.00
-G_M39451_IG07: ; bbWeight=2, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=1000 {r12}, byref, isz
+G_M39451_IG07: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov rcx, gword ptr [rbx+0x10] ; gcrRegs +[rcx] test rcx, rcx @@ -163,42 +164,8 @@ G_M39451_IG07: ; bbWeight=2, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=1000 ; gcrRegs -[rcx rdi] +[rax] mov rcx, rax ; gcrRegs +[rcx]
- mov gword ptr [rbp-0x58], rcx - ; GC ptr vars +{V29} - lea rdi, bword ptr [rbx+0x10] - ; byrRegs +[rdi] - mov rsi, rcx - ; gcrRegs +[rsi] - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rax rcx rsi] - ; byrRegs -[rdi] - mov rcx, gword ptr [rbp-0x58] - ; gcrRegs +[rcx] - ;; size=41 bbWeight=2 PerfScore 21.00 -G_M39451_IG08: ; bbWeight=2, gcVars=0000000000000008 {V73}, gcrefRegs=600A {rcx rbx r13 r14}, byrefRegs=1000 {r12}, gcvars, byref - ; GC ptr vars -{V29} - movzx rdi, word ptr [rcx+0x0C] - movzx rcx, r15w - ; gcrRegs -[rcx] - cmp edi, ecx - je G_M39451_IG39 - ;; size=16 bbWeight=2 PerfScore 7.00 -G_M39451_IG09: ; bbWeight=4, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=1000 {r12}, byref, isz - mov rcx, gword ptr [rbx+0x10] - ; gcrRegs +[rcx] - test rcx, rcx - jne SHORT G_M39451_IG11 - ;; size=9 bbWeight=4 PerfScore 13.00 -G_M39451_IG10: ; bbWeight=2, gcrefRegs=6008 {rbx r13 r14}, byrefRegs=1000 {r12}, byref - ; gcrRegs -[rcx] - mov rdi, rbx - ; gcrRegs +[rdi] - call [Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:FetchCurrentToken():Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken:this] - ; gcrRegs -[rdi] +[rax] - mov rcx, rax - ; gcrRegs +[rcx]
mov gword ptr [rbp-0x60], rcx
- ; GC ptr vars +{V35}
+ ; GC ptr vars +{V29}
...

+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, 7.96) 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, 6.96) 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,61 +23,61 @@ 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 - mov eax, 1 - ;; size=9 bbWeight=0.50 PerfScore 1.62 -G_M24588_IG06: ; bbWeight=0.50, epilog, nogc, extend - pop rbx - pop r13 - pop r14 - pop r15 - pop rbp - ret - ;; size=9 bbWeight=0.50 PerfScore 1.75 -G_M24588_IG07: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=33 bbWeight=3.96 PerfScore 33.66 +G_M24588_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[r15]
- xor eax, eax - ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M24588_IG08: ; bbWeight=0.50, epilog, nogc, extend
+ add dword ptr [rbx+0x24], r14d + mov eax, 1 + ;; size=9 bbWeight=1 PerfScore 3.25 +G_M24588_IG06: ; bbWeight=1, 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 PerfScore 3.50 +G_M24588_IG07: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rbx] + xor eax, eax + ;; size=2 bbWeight=1 PerfScore 0.25 +G_M24588_IG08: ; bbWeight=1, epilog, nogc, extend + pop rbx + pop r13 + pop r14 + pop r15 + pop rbp + ret + ;; size=9 bbWeight=1 PerfScore 3.50
-; 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 54.66, 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:

+10 (+2.27%) : 32265.dasm - System.Linq.Expressions.ExpressionVisitor:VisitSystem.__Canon:System.Collections.ObjectModel.ReadOnlyCollection`1System.__Canon

@@ -8,13 +8,13 @@ ; 0 inlinees with PGO data; 2 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 TypeCtx [V00,T08] ( 7, 6.08) long -> r14 single-def
+; V00 TypeCtx [V00,T09] ( 7, 6.08) long -> r14 single-def
; V01 arg0 [V01,T03] ( 8, 26.50) ref -> rbx class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ; V02 arg1 [V02,T06] ( 5, 11 ) ref -> r15 class-hnd single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V03 loc0 [V03,T04] ( 7, 26.50) ref -> [rbp-0x40] class-hnd <System.__Canon[]> -; V04 loc1 [V04,T02] ( 9, 39 ) int -> r12 -; V05 loc2 [V05,T09] ( 4, 8 ) int -> [rbp-0x34] spill-single-def -; V06 loc3 [V06,T10] ( 3, 8 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.__Canon>
+; V03 loc0 [V03,T04] ( 7, 28.50) ref -> [rbp-0x40] class-hnd <System.__Canon[]> +; V04 loc1 [V04,T02] ( 9, 41 ) int -> r12 +; V05 loc2 [V05,T10] ( 4, 8 ) int -> [rbp-0x34] spill-single-def +; V06 loc3 [V06,T08] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.__Canon>
; V07 loc4 [V07,T00] ( 6, 82 ) int -> [rbp-0x38] ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V09 tmp1 [V09 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -47,11 +47,11 @@ G_M17509_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov r15, rdx ; gcrRegs +[r15] ;; size=32 bbWeight=1 PerfScore 8.50
-G_M17509_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M17509_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
test rbx, rbx
- je G_M17509_IG21
+ je G_M17509_IG24
test r15, r15
- je G_M17509_IG22
+ je G_M17509_IG25
xor r13, r13 ; gcrRegs +[r13] xor r12d, r12d @@ -61,8 +61,8 @@ G_M17509_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs -[rdi] mov dword ptr [rbp-0x34], eax test eax, eax
- jle G_M17509_IG12 - ;; size=44 bbWeight=1 PerfScore 8.50
+ jle SHORT G_M17509_IG08 + ;; size=40 bbWeight=1 PerfScore 8.50
G_M17509_IG03: ; bbWeight=4, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz mov rdi, rbx ; gcrRegs +[rdi] @@ -78,9 +78,9 @@ G_M17509_IG03: ; bbWeight=4, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V06} test r13, r13
- jne SHORT G_M17509_IG06
+ jne SHORT G_M17509_IG07
;; size=32 bbWeight=4 PerfScore 44.00
-G_M17509_IG04: ; bbWeight=2, gcVars=0000000000000400 {V06}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M17509_IG04: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -88,32 +88,49 @@ G_M17509_IG04: ; bbWeight=2, gcVars=0000000000000400 {V06}, gcrefRegs=A00 call [System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:get_Item(int):System.__Canon:this] ; gcrRegs -[rdi] +[rax] cmp rax, gword ptr [rbp-0x48]
- je G_M17509_IG11
+ mov gword ptr [rbp-0x40], r13 + ; GC ptr vars +{V03} + je SHORT G_M17509_IG06
mov rdi, qword ptr [r14+0x38] mov rdi, qword ptr [rdi+0x10] test rdi, rdi
- je SHORT G_M17509_IG07 - ;; size=35 bbWeight=2 PerfScore 23.50
+ je SHORT G_M17509_IG09 + ;; size=35 bbWeight=2 PerfScore 25.50
G_M17509_IG05: ; bbWeight=1.60, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rax r13]
- jmp SHORT G_M17509_IG08
+ ; GC ptr vars -{V03} + jmp SHORT G_M17509_IG10
;; size=2 bbWeight=1.60 PerfScore 3.20
-G_M17509_IG06: ; bbWeight=2, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref, isz
+G_M17509_IG06: ; bbWeight=1, gcVars=0000000000000010 {V03}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; GC ptr vars -{V06} +{V03 V04} + mov r13d, dword ptr [rbp-0x34] + jmp SHORT G_M17509_IG13 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M17509_IG07: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[r13]
+ ; GC ptr vars -{V03 V04} +{V06}
mov gword ptr [rbp-0x40], r13 ; GC ptr vars +{V03} mov r13d, dword ptr [rbp-0x34] ; gcrRegs -[r13]
- jmp SHORT G_M17509_IG10
+ jmp SHORT G_M17509_IG12
;; size=10 bbWeight=2 PerfScore 8.00
-G_M17509_IG07: ; bbWeight=0.40, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref - ; GC ptr vars -{V03}
+G_M17509_IG08: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r15] +[r13] + ; GC ptr vars -{V03 V06} + mov gword ptr [rbp-0x40], r13 + ; GC ptr vars +{V03} + jmp SHORT G_M17509_IG14 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M17509_IG09: ; bbWeight=0.40, gcVars=0000000000000100 {V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[r13] +[r15] + ; GC ptr vars -{V03} +{V06}
mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdi, rax ;; size=21 bbWeight=0.40 PerfScore 0.70
-G_M17509_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
+G_M17509_IG10: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
mov r13d, dword ptr [rbp-0x34] movsxd rsi, r13d call CORINFO_HELP_NEWARR_1_OBJ @@ -122,9 +139,9 @@ G_M17509_IG08: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; GC ptr vars +{V03} xor ecx, ecx test r12d, r12d
- jle SHORT G_M17509_IG10
+ jle SHORT G_M17509_IG12
;; size=23 bbWeight=2 PerfScore 9.50
-G_M17509_IG09: ; bbWeight=16, gcVars=0000000000000410 {V03 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M17509_IG11: ; bbWeight=16, gcVars=0000000000000110 {V03 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -143,9 +160,9 @@ G_M17509_IG09: ; bbWeight=16, gcVars=0000000000000410 {V03 V06}, gcrefReg inc eax cmp eax, r12d mov ecx, eax
- jl SHORT G_M17509_IG09
+ jl SHORT G_M17509_IG11
;; size=42 bbWeight=16 PerfScore 200.00
-G_M17509_IG10: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M17509_IG12: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
movsxd rsi, r12d mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi] @@ -154,27 +171,26 @@ G_M17509_IG10: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; GC ptr vars -{V06} call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[rdx rdi]
+ ;; size=16 bbWeight=4 PerfScore 13.00 +G_M17509_IG13: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + inc r12d + cmp r12d, r13d + jl SHORT G_M17509_IG17 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M17509_IG14: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15]
mov r13, gword ptr [rbp-0x40] ; gcrRegs +[r13]
- ;; size=20 bbWeight=2 PerfScore 8.50 -G_M17509_IG11: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V03} - inc r12d - mov eax, dword ptr [rbp-0x34] - cmp r12d, eax - jl G_M17509_IG03 - ;; size=15 bbWeight=4 PerfScore 10.00 -G_M17509_IG12: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r15]
test r13, r13
- jne SHORT G_M17509_IG15 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M17509_IG13: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M17509_IG18 + ;; size=9 bbWeight=1 PerfScore 2.25 +G_M17509_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r13]
+ ; GC ptr vars -{V03}
mov rax, rbx ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12
-G_M17509_IG14: ; bbWeight=0.50, epilog, nogc, extend
+G_M17509_IG16: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop r12 @@ -184,27 +200,35 @@ G_M17509_IG14: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M17509_IG15: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax rbx] +[r13]
+G_M17509_IG17: ; bbWeight=2, gcVars=0000000000000010 {V03}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[r15] + ; GC ptr vars +{V03 V04} + mov r13, gword ptr [rbp-0x40] + ; gcrRegs +[r13] + jmp G_M17509_IG03 + ;; size=9 bbWeight=2 PerfScore 6.00 +G_M17509_IG18: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rbx r15] + ; GC ptr vars -{V03 V04}
mov rdi, qword ptr [r14+0x38] cmp qword ptr [rdi+0x08], 24
- jle SHORT G_M17509_IG18
+ jle SHORT G_M17509_IG21
;; size=11 bbWeight=0.50 PerfScore 3.00
-G_M17509_IG16: ; bbWeight=0.40, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
+G_M17509_IG19: ; bbWeight=0.40, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz
mov rdi, qword ptr [rdi+0x18] test rdi, rdi
- je SHORT G_M17509_IG18
+ je SHORT G_M17509_IG21
;; size=9 bbWeight=0.40 PerfScore 1.30
-G_M17509_IG17: ; bbWeight=0.32, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M17509_IG19
+G_M17509_IG20: ; bbWeight=0.32, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M17509_IG22
;; size=2 bbWeight=0.32 PerfScore 0.64
-G_M17509_IG18: ; bbWeight=0.18, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+G_M17509_IG21: ; bbWeight=0.18, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
mov rdi, r14 mov rsi, 0xD1FFAB1E ; global ptr call CORINFO_HELP_RUNTIMEHANDLE_METHOD mov rdi, rax ;; size=21 bbWeight=0.18 PerfScore 0.32
-G_M17509_IG19: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+G_M17509_IG22: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] mov rbx, rax @@ -219,7 +243,7 @@ G_M17509_IG19: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, mov rax, rbx ; gcrRegs +[rax] ;; size=23 bbWeight=0.50 PerfScore 1.62
-G_M17509_IG20: ; bbWeight=0.50, epilog, nogc, extend
+G_M17509_IG23: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop r12 @@ -229,7 +253,7 @@ G_M17509_IG20: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M17509_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17509_IG24: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx] mov edi, 0x3AF5 mov rsi, 0xD1FFAB1E @@ -241,7 +265,7 @@ G_M17509_IG21: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[rax rdi] int3 ;; size=30 bbWeight=0 PerfScore 0.00
-G_M17509_IG22: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17509_IG25: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
...

smoke_tests.nativeaot.linux.x64.checked.mch

-17 (-2.58%) : 25802.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)

@@ -8,17 +8,17 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 9, 27.50) long -> r15 single-def
-; V01 arg1 [V01,T11] ( 7, 6.50) int -> r13 -; V02 arg2 [V02,T03] ( 10, 28 ) byref -> rbx single-def
+; V01 arg1 [V01,T10] ( 7, 8.50) int -> r13 +; V02 arg2 [V02,T03] ( 10, 30 ) byref -> rbx single-def
; V03 arg3 [V03,T06] ( 3, 18 ) ubyte -> r14 single-def ; V04 loc0 [V04,T05] ( 8, 26 ) int -> r12 ; V05 loc1 [V05,T07] ( 9, 14 ) int -> rdx ; V06 loc2 [V06,T14] ( 4, 5.50) ubyte -> [rbp-0x2C] ; V07 loc3 [V07,T15] ( 3, 5 ) ubyte -> [rbp-0x30]
-; V08 loc4 [V08,T02] ( 6, 38 ) ubyte -> [rbp-0x34]
+; V08 loc4 [V08,T02] ( 6, 38.50) ubyte -> [rbp-0x34]
; V09 loc5 [V09,T09] ( 5, 13.50) ubyte -> [rbp-0x38] ; V10 loc6 [V10,T16] ( 3, 5 ) int -> [rbp-0x3C]
-; V11 loc7 [V11 ] ( 20, 83.50) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op
+; V11 loc7 [V11 ] ( 20, 87.50) int -> [rbp-0x48] do-not-enreg[X] addr-exposed ld-addr-op
; V12 loc8 [V12,T17] ( 3, 1.50) int -> rcx ; V13 loc9 [V13,T08] ( 7, 14 ) ushort -> rsi ;# V14 OutArgs [V14 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -32,7 +32,7 @@ ;* V22 tmp8 [V22 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V23 tmp9 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V24 cse0 [V24,T01] ( 3, 48 ) int -> rcx "CSE - aggressive"
-; V25 cse1 [V25,T10] ( 5, 10 ) int -> rsi multi-def "CSE - moderate"
+; V25 cse1 [V25,T11] ( 5, 10 ) int -> rsi multi-def "CSE - moderate"
; V26 cse2 [V26,T18] ( 3, 1.50) int -> rcx "CSE - moderate" ; ; Lcl frame size = 40 @@ -69,10 +69,10 @@ G_M23448_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr G_M23448_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref lea ecx, [r13+0x01] cmp ecx, dword ptr [rbx]
- jge G_M23448_IG29
+ jge G_M23448_IG30
movsxd rcx, ecx cmp word ptr [r15+2*rcx], 58
- jne G_M23448_IG29
+ jne G_M23448_IG30
;; size=27 bbWeight=0.50 PerfScore 4.38 G_M23448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz mov dword ptr [rbp-0x48], r13d @@ -101,9 +101,8 @@ G_M23448_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr ;; size=42 bbWeight=2 PerfScore 23.50 G_M23448_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov dword ptr [rbp-0x34], r10d
- mov dword ptr [rbp-0x38], r11d
jmp G_M23448_IG23
- ;; size=13 bbWeight=0.25 PerfScore 1.00
+ ;; size=9 bbWeight=0.25 PerfScore 0.75
G_M23448_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz movsxd rsi, dword ptr [rbp-0x48] movzx rsi, word ptr [r15+2*rsi] @@ -115,11 +114,12 @@ G_M23448_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr inc edx xor r11d, r11d mov dword ptr [rbp-0x38], r11d
+ mov r11d, dword ptr [rbp-0x38]
jmp G_M23448_IG22
- ;; size=14 bbWeight=2 PerfScore 7.00
+ ;; size=18 bbWeight=2 PerfScore 9.00
G_M23448_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp edx, 4
- jg G_M23448_IG29
+ jg G_M23448_IG30
test edx, edx je SHORT G_M23448_IG11 inc r12d @@ -132,10 +132,10 @@ G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr cmp esi, 37 je SHORT G_M23448_IG14 cmp esi, 46
- jne G_M23448_IG29
+ jne G_M23448_IG30
cmp dword ptr [rbp-0x30], 0 mov dword ptr [rbp-0x38], r11d
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov edx, dword ptr [rbx] mov dword ptr [rbp-0x48], edx lea rdx, [rbp-0x48] @@ -147,28 +147,28 @@ G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr call <unknown method> ; gcr arg pop 0 test eax, eax
- je G_M23448_IG29
+ je G_M23448_IG30
jmp G_M23448_IG20 ;; size=78 bbWeight=2 PerfScore 35.00 G_M23448_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp esi, 47
- je G_M23448_IG19
+ je SHORT G_M23448_IG19
cmp esi, 58 je SHORT G_M23448_IG17 cmp esi, 93 je SHORT G_M23448_IG16
- ;; size=19 bbWeight=2 PerfScore 7.50 -G_M23448_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ;; size=15 bbWeight=2 PerfScore 7.50 +G_M23448_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
- jmp G_M23448_IG29 - ;; size=5 bbWeight=0.50 PerfScore 1.00
+ jmp G_M23448_IG30 + ;; size=5 bbWeight=1 PerfScore 2.00
G_M23448_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz ; byrRegs +[rbx] mov ecx, dword ptr [rbp-0x48] inc ecx mov dword ptr [rbp-0x48], ecx cmp ecx, dword ptr [rbx]
- je G_M23448_IG29
+ je G_M23448_IG30
movsxd rcx, dword ptr [rbp-0x48] movzx rcx, word ptr [r15+2*rcx] cmp ecx, 93 @@ -179,13 +179,12 @@ G_M23448_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, by G_M23448_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz jmp SHORT G_M23448_IG19 ;; size=2 bbWeight=2 PerfScore 4.00
-G_M23448_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M23448_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov r13d, dword ptr [rbp-0x48] mov ecx, dword ptr [rbx] mov dword ptr [rbp-0x48], ecx
- mov dword ptr [rbp-0x38], r11d
jmp G_M23448_IG22
- ;; size=18 bbWeight=2 PerfScore 14.00
+ ;; size=14 bbWeight=4 PerfScore 24.00
G_M23448_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp dword ptr [rbp-0x48], 0 jle SHORT G_M23448_IG18 @@ -195,7 +194,7 @@ G_M23448_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr cmp word ptr [r15+2*rdx], 58 jne SHORT G_M23448_IG18 cmp dword ptr [rbp-0x2C], 0
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov eax, 1 xor r11d, r11d mov dword ptr [rbp-0x2C], eax @@ -213,7 +212,7 @@ G_M23448_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, by or r10d, dword ptr [rbp-0x34] movzx rcx, r14b or ecx, r10d
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov r10d, 1 mov dword ptr [rbp-0x34], r10d jmp SHORT G_M23448_IG18 @@ -230,59 +229,59 @@ G_M23448_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr ;; size=29 bbWeight=2 PerfScore 11.50 G_M23448_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref xor edx, edx
- mov dword ptr [rbp-0x38], r11d - ;; size=6 bbWeight=2 PerfScore 2.50
+ ;; size=2 bbWeight=2 PerfScore 0.50
G_M23448_IG22: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz mov ecx, dword ptr [rbp-0x48] inc ecx mov dword ptr [rbp-0x48], ecx mov ecx, dword ptr [rbp-0x48] cmp ecx, dword ptr [rbx]
- jl SHORT G_M23448_IG25
+ jl SHORT G_M23448_IG26
;; size=15 bbWeight=4 PerfScore 29.00
-G_M23448_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M23448_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov r10d, dword ptr [rbp-0x34] test r10d, r10d
- je SHORT G_M23448_IG24
+ je SHORT G_M23448_IG25 + ;; size=9 bbWeight=1 PerfScore 2.25 +G_M23448_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, edx sub ecx, 1 cmp ecx, 1
- ja SHORT G_M23448_IG29 - ;; size=19 bbWeight=0.50 PerfScore 2.00 -G_M23448_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ ja SHORT G_M23448_IG30 + ;; size=10 bbWeight=0.50 PerfScore 0.88 +G_M23448_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
xor ecx, ecx test r10d, r10d setne cl add ecx, 8
- cmp dword ptr [rbp-0x38], 0 - jne SHORT G_M23448_IG29
+ test r11d, r11d + jne SHORT G_M23448_IG30
cmp edx, 4
- jg SHORT G_M23448_IG29
+ jg SHORT G_M23448_IG30
cmp dword ptr [rbp-0x2C], 0
- jne SHORT G_M23448_IG26
+ jne SHORT G_M23448_IG27
cmp r12d, ecx
- jne SHORT G_M23448_IG29 - jmp SHORT G_M23448_IG27 - ;; size=35 bbWeight=0.50 PerfScore 6.12 -G_M23448_IG25: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ jne SHORT G_M23448_IG30 + jmp SHORT G_M23448_IG28 + ;; size=34 bbWeight=0.50 PerfScore 5.25 +G_M23448_IG26: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov r10d, dword ptr [rbp-0x34]
- mov r11d, dword ptr [rbp-0x38]
jmp G_M23448_IG05
- ;; size=13 bbWeight=2 PerfScore 8.00 -G_M23448_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - cmp r12d, ecx - jge SHORT G_M23448_IG29 - ;; size=5 bbWeight=0.50 PerfScore 0.62
+ ;; size=9 bbWeight=2 PerfScore 6.00
G_M23448_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp r12d, ecx + jge SHORT G_M23448_IG30 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M23448_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov eax, dword ptr [rbx] inc eax cmp dword ptr [rbp-0x48], eax
- jne SHORT G_M23448_IG29
+ jne SHORT G_M23448_IG30
inc r13d mov dword ptr [rbx], r13d mov eax, 1 ;; size=20 bbWeight=0.50 PerfScore 3.38
-G_M23448_IG28: ; bbWeight=0.50, epilog, nogc, extend
+G_M23448_IG29: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop r12 @@ -292,11 +291,11 @@ G_M23448_IG28: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M23448_IG29: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23448_IG30: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rbx] xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M23448_IG30: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M23448_IG31: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 ...

-39 (-2.37%) : 1373.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

@@ -7,77 +7,77 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 64,25612.50) long -> rbx -; V01 arg1 [V01,T20] ( 9, 8 ) int -> r15 -; V02 arg2 [V02,T22] ( 4, 3 ) byref -> r14 single-def -; V03 arg3 [V03,T23] ( 4, 3 ) byref -> r13 single-def -; V04 loc0 [V04,T25] ( 3, 3 ) long -> rax -; V05 loc1 [V05,T27] ( 4, 2 ) long -> r12 -; V06 loc2 [V06,T26] ( 5, 2.50) int -> r15 -; V07 loc3 [V07,T04] ( 18, 5265 ) int -> [rbp-0x2C] -; V08 loc4 [V08,T24] ( 4, 5 ) int -> [rbp-0x30] -; V09 loc5 [V09,T03] ( 12, 8933.50) long -> [rbp-0x38] spill-single-def -; V10 loc6 [V10,T11] ( 4, 72.50) long -> [rbp-0x40] -; V11 loc7 [V11,T18] ( 13, 22 ) long -> [rbp-0x48] -; V12 loc8 [V12,T02] ( 28,12540 ) int -> [rbp-0x4C] -; V13 loc9 [V13,T12] ( 2, 72 ) long -> rdi -; V14 loc10 [V14,T17] ( 3, 24 ) long -> [rbp-0x58] spill-single-def -;* V15 loc11 [V15 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ubyte]> -;* V16 loc12 [V16 ] ( 0, 0 ) long -> zero-ref -; V17 loc13 [V17,T09] ( 3, 136 ) int -> rsi -;* 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,T19] ( 7, 18 ) int -> rdi -; V22 loc18 [V22,T21] ( 5, 10 ) int -> rsi -;# V23 OutArgs [V23 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V24 tmp1 [V24,T28] ( 2, 1 ) int -> rdi -;* 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 ) int -> zero-ref -;* V30 tmp7 [V30 ] ( 0, 0 ) int -> zero-ref -;* V31 tmp8 [V31 ] ( 0, 0 ) int -> zero-ref -;* V32 tmp9 [V32 ] ( 0, 0 ) int -> zero-ref -;* V33 tmp10 [V33 ] ( 0, 0 ) int -> zero-ref -;* V34 tmp11 [V34 ] ( 0, 0 ) int -> zero-ref -;* V35 tmp12 [V35 ] ( 0, 0 ) int -> zero-ref -;* V36 tmp13 [V36 ] ( 0, 0 ) int -> zero-ref -; V37 tmp14 [V37,T16] ( 2, 32 ) int -> rdi "Grabbing temp for TrailingZeroCount Qmark" -;* V38 tmp15 [V38 ] ( 0, 0 ) int -> zero-ref -;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V41 tmp18 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V42 tmp19 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V43 tmp20 [V43 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" -;* V44 tmp21 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V45 tmp22 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V46 tmp23 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V47 tmp24 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V48 tmp25 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* 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,T14] ( 3, 40 ) int -> r9 "Cloning op1 for TrailingZeroCount" -; V53 tmp30 [V53,T15] ( 3, 32 ) int -> rdi "Grabbing temp for TrailingZeroCount Qmark" -;* V54 tmp31 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V55 tmp32 [V55,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V56 tmp33 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V57 tmp34 [V57,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V58 tmp35 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V59 tmp36 [V59,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V60 tmp37 [V60,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V61 tmp38 [V61 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V62 tmp39 [V62,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V63 tmp40 [V63,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V64 tmp41 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V65 tmp42 [V65 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V66 tmp43 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V67 tmp44 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V68 tmp45 [V68 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V69 tmp46 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V70 tmp47 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V00 arg0 [V00,T01] ( 64,3576 ) long -> rbx +; V01 arg1 [V01,T16] ( 9, 8 ) int -> r15 +; V02 arg2 [V02,T22] ( 4, 3.50) byref -> r14 single-def +; V03 arg3 [V03,T23] ( 4, 3.50) byref -> r13 single-def +; V04 loc0 [V04,T26] ( 3, 3 ) long -> rax +; V05 loc1 [V05,T27] ( 4, 2.50) long -> r12 +; V06 loc2 [V06,T25] ( 5, 3 ) int -> r15 +; V07 loc3 [V07,T04] ( 18, 945.50) int -> [rbp-0x2C] +; V08 loc4 [V08,T24] ( 4, 5.50) int -> [rbp-0x30] +; V09 loc5 [V09,T03] ( 12,1134 ) long -> [rbp-0x38] spill-single-def +; V10 loc6 [V10,T15] ( 4, 10.50) long -> [rbp-0x40] +; V11 loc7 [V11,T11] ( 13, 22.50) long -> [rbp-0x48] +; V12 loc8 [V12,T02] ( 28,1598 ) int -> [rbp-0x4C] +; V13 loc9 [V13,T13] ( 2, 18 ) long -> rdi +; V14 loc10 [V14,T21] ( 3, 6 ) long -> [rbp-0x58] spill-single-def +;* V15 loc11 [V15 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ubyte]> +;* V16 loc12 [V16 ] ( 0, 0 ) long -> zero-ref +; V17 loc13 [V17,T07] ( 3, 34 ) int -> rsi +;* 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 -> rdi +; V22 loc18 [V22,T17] ( 5, 10 ) int -> rsi +;# V23 OutArgs [V23 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V24 tmp1 [V24,T28] ( 2, 1 ) int -> rdi +;* 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 ) int -> zero-ref +;* V30 tmp7 [V30 ] ( 0, 0 ) int -> zero-ref +;* V31 tmp8 [V31 ] ( 0, 0 ) int -> zero-ref +;* V32 tmp9 [V32 ] ( 0, 0 ) int -> zero-ref +;* V33 tmp10 [V33 ] ( 0, 0 ) int -> zero-ref +;* V34 tmp11 [V34 ] ( 0, 0 ) int -> zero-ref +;* V35 tmp12 [V35 ] ( 0, 0 ) int -> zero-ref +;* V36 tmp13 [V36 ] ( 0, 0 ) int -> zero-ref +; V37 tmp14 [V37,T20] ( 2, 8 ) int -> rdi "Grabbing temp for TrailingZeroCount Qmark" +;* V38 tmp15 [V38 ] ( 0, 0 ) int -> zero-ref +;* V39 tmp16 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V40 tmp17 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V41 tmp18 [V41 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V42 tmp19 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V43 tmp20 [V43 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" +;* V44 tmp21 [V44 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V45 tmp22 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V46 tmp23 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V47 tmp24 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V48 tmp25 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* 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,T18] ( 3, 10 ) int -> r9 "Cloning op1 for TrailingZeroCount" +; V53 tmp30 [V53,T19] ( 3, 8 ) int -> rdi "Grabbing temp for TrailingZeroCount Qmark" +;* V54 tmp31 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V55 tmp32 [V55,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V56 tmp33 [V56 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V57 tmp34 [V57,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V58 tmp35 [V58 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V59 tmp36 [V59,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V60 tmp37 [V60,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V61 tmp38 [V61 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V62 tmp39 [V62,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V63 tmp40 [V63,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V64 tmp41 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V65 tmp42 [V65 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V66 tmp43 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V67 tmp44 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V68 tmp45 [V68 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V69 tmp46 [V69 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V70 tmp47 [V70 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; ; Lcl frame size = 56 @@ -164,7 +164,7 @@ G_M60901_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 xor ecx, ecx mov dword ptr [rbp-0x30], ecx cmp r15d, 4
- jl G_M60901_IG58
+ jl G_M60901_IG57
mov edi, r15d lea rdx, [r12+rdi-0x04] mov qword ptr [rbp-0x38], rdx @@ -176,11 +176,11 @@ G_M60901_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, mov r9d, dword ptr [rbx] mov dword ptr [rbp-0x4C], r9d ;; size=7 bbWeight=4 PerfScore 12.00
-G_M60901_IG12: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M60901_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
cmp r8, rbx jb SHORT G_M60901_IG14
- ;; size=5 bbWeight=32 PerfScore 40.00 -G_M60901_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=5 bbWeight=4 PerfScore 5.00 +G_M60901_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
lea rdi, gword ptr [(reloc)] ; gcrRegs +[rdi] lea rsi, gword ptr [(reloc)] @@ -188,14 +188,14 @@ G_M60901_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, call <unknown method> ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=19 bbWeight=8 PerfScore 16.00 -G_M60901_IG14: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=19 bbWeight=2 PerfScore 4.00 +G_M60901_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
mov r8, rbx mov r9d, dword ptr [rbp-0x4C] test r9d, 0xD1FFAB1E jne G_M60901_IG24
- ;; size=20 bbWeight=32 PerfScore 80.00 -G_M60901_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 10.00 +G_M60901_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
mov qword ptr [rbp-0x40], r8 lea rbx, [r8+0x04] mov rdx, qword ptr [rbp-0x38] @@ -209,8 +209,8 @@ G_M60901_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, add rbx, 4 and rbx, -4 lea rdi, [rdx-0x0C]
- ;; size=48 bbWeight=8 PerfScore 68.00 -G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+ ;; size=48 bbWeight=2 PerfScore 17.00 +G_M60901_IG16: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
movups xmm0, xmmword ptr [rbx] pmovmskb esi, xmm0 test esi, esi @@ -218,26 +218,26 @@ G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14} add rbx, 16 cmp rbx, rdi jbe SHORT G_M60901_IG16
- ;; size=20 bbWeight=64 PerfScore 560.00
+ ;; size=20 bbWeight=16 PerfScore 140.00
G_M60901_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref mov eax, dword ptr [rbp-0x2C] mov rdx, qword ptr [rbp-0x38]
- jmp G_M60901_IG54
+ jmp G_M60901_IG53
;; size=12 bbWeight=4 PerfScore 16.00
-G_M60901_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M60901_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
mov r8, qword ptr [rbp-0x40] jmp SHORT G_M60901_IG24
- ;; size=6 bbWeight=4 PerfScore 12.00 -G_M60901_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=6 bbWeight=1 PerfScore 3.00 +G_M60901_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
mov eax, dword ptr [rbp-0x2C]
- jmp G_M60901_IG54 - ;; size=8 bbWeight=4 PerfScore 12.00
+ jmp G_M60901_IG53 + ;; size=8 bbWeight=1 PerfScore 3.00
G_M60901_IG20: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref mov eax, dword ptr [rbp-0x2C] mov rdx, qword ptr [rbp-0x38]
- jmp G_M60901_IG59
+ jmp G_M60901_IG58
;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M60901_IG21: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M60901_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
bsf edi, esi movsxd r9, edi mov qword ptr [rbp-0x58], r9 @@ -250,19 +250,19 @@ G_M60901_IG21: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, call <unknown method> ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=35 bbWeight=8 PerfScore 52.00 -G_M60901_IG22: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+ ;; size=35 bbWeight=2 PerfScore 13.00 +G_M60901_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
add rbx, qword ptr [rbp-0x58] cmp rbx, qword ptr [rbp-0x38] ja SHORT G_M60901_IG23 ...

-39 (-2.36%) : 23310.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

@@ -7,74 +7,74 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 64,25612.50) long -> rbx -; V01 arg1 [V01,T17] ( 9, 8 ) int -> r15 -; V02 arg2 [V02,T19] ( 4, 3 ) byref -> r14 single-def -; V03 arg3 [V03,T20] ( 4, 3 ) byref -> r13 single-def -; V04 loc0 [V04,T22] ( 3, 3 ) long -> rax -; V05 loc1 [V05,T24] ( 4, 2 ) long -> r12 -; V06 loc2 [V06,T23] ( 5, 2.50) int -> r15 -; V07 loc3 [V07,T04] ( 18, 5265 ) int -> [rbp-0x2C] -; V08 loc4 [V08,T21] ( 4, 5 ) int -> [rbp-0x30] -; V09 loc5 [V09,T03] ( 12, 8933.50) long -> [rbp-0x38] spill-single-def -; V10 loc6 [V10,T11] ( 4, 72.50) long -> [rbp-0x40] -; V11 loc7 [V11,T15] ( 13, 22 ) long -> [rbp-0x48] -; V12 loc8 [V12,T02] ( 28,12540 ) int -> [rbp-0x4C] -; V13 loc9 [V13,T12] ( 2, 72 ) long -> rdi -; V14 loc10 [V14,T14] ( 3, 24 ) long -> [rbp-0x58] spill-single-def -;* V15 loc11 [V15 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ubyte]> -;* V16 loc12 [V16 ] ( 0, 0 ) long -> zero-ref -; V17 loc13 [V17,T09] ( 3, 136 ) int -> rsi -;* 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,T16] ( 7, 18 ) int -> rdi -; V22 loc18 [V22,T18] ( 5, 10 ) int -> rsi -;# V23 OutArgs [V23 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" -; V24 tmp1 [V24,T25] ( 2, 1 ) int -> rdi -;* 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 ) int -> zero-ref -;* V30 tmp7 [V30 ] ( 0, 0 ) int -> zero-ref -;* V31 tmp8 [V31 ] ( 0, 0 ) int -> zero-ref -;* V32 tmp9 [V32 ] ( 0, 0 ) int -> zero-ref -;* V33 tmp10 [V33 ] ( 0, 0 ) int -> zero-ref -;* V34 tmp11 [V34 ] ( 0, 0 ) int -> zero-ref -;* V35 tmp12 [V35 ] ( 0, 0 ) int -> zero-ref -;* V36 tmp13 [V36 ] ( 0, 0 ) int -> zero-ref -;* V37 tmp14 [V37 ] ( 0, 0 ) int -> zero-ref -;* 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 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V42 tmp19 [V42 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" -;* V43 tmp20 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" -;* V44 tmp21 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V45 tmp22 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V46 tmp23 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V47 tmp24 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V48 tmp25 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* 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,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V53 tmp30 [V53 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V54 tmp31 [V54,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V55 tmp32 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" -;* V56 tmp33 [V56,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V57 tmp34 [V57,T13] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V58 tmp35 [V58 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V59 tmp36 [V59,T07] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V60 tmp37 [V60,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" -;* V61 tmp38 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V62 tmp39 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V63 tmp40 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V64 tmp41 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V65 tmp42 [V65 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" -;* V66 tmp43 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" -;* V67 tmp44 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
+; V00 arg0 [V00,T01] ( 64,3576 ) long -> rbx +; V01 arg1 [V01,T16] ( 9, 8 ) int -> r15 +; V02 arg2 [V02,T19] ( 4, 3.50) byref -> r14 single-def +; V03 arg3 [V03,T20] ( 4, 3.50) byref -> r13 single-def +; V04 loc0 [V04,T23] ( 3, 3 ) long -> rax +; V05 loc1 [V05,T24] ( 4, 2.50) long -> r12 +; V06 loc2 [V06,T22] ( 5, 3 ) int -> r15 +; V07 loc3 [V07,T04] ( 18, 945.50) int -> [rbp-0x2C] +; V08 loc4 [V08,T21] ( 4, 5.50) int -> [rbp-0x30] +; V09 loc5 [V09,T03] ( 12,1134 ) long -> [rbp-0x38] spill-single-def +; V10 loc6 [V10,T15] ( 4, 10.50) long -> [rbp-0x40] +; V11 loc7 [V11,T11] ( 13, 22.50) long -> [rbp-0x48] +; V12 loc8 [V12,T02] ( 28,1598 ) int -> [rbp-0x4C] +; V13 loc9 [V13,T13] ( 2, 18 ) long -> rdi +; V14 loc10 [V14,T18] ( 3, 6 ) long -> [rbp-0x58] spill-single-def +;* V15 loc11 [V15 ] ( 0, 0 ) simd16 -> zero-ref <System.Runtime.Intrinsics.Vector128`1[ubyte]> +;* V16 loc12 [V16 ] ( 0, 0 ) long -> zero-ref +; V17 loc13 [V17,T07] ( 3, 34 ) int -> rsi +;* 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 -> rdi +; V22 loc18 [V22,T17] ( 5, 10 ) int -> rsi +;# V23 OutArgs [V23 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" +; V24 tmp1 [V24,T25] ( 2, 1 ) int -> rdi +;* 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 ) int -> zero-ref +;* V30 tmp7 [V30 ] ( 0, 0 ) int -> zero-ref +;* V31 tmp8 [V31 ] ( 0, 0 ) int -> zero-ref +;* V32 tmp9 [V32 ] ( 0, 0 ) int -> zero-ref +;* V33 tmp10 [V33 ] ( 0, 0 ) int -> zero-ref +;* V34 tmp11 [V34 ] ( 0, 0 ) int -> zero-ref +;* V35 tmp12 [V35 ] ( 0, 0 ) int -> zero-ref +;* V36 tmp13 [V36 ] ( 0, 0 ) int -> zero-ref +;* V37 tmp14 [V37 ] ( 0, 0 ) int -> zero-ref +;* 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 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V42 tmp19 [V42 ] ( 0, 0 ) long -> zero-ref "Inline return value spill temp" +;* V43 tmp20 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" +;* V44 tmp21 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V45 tmp22 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V46 tmp23 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V47 tmp24 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V48 tmp25 [V48 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* 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,T06] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V53 tmp30 [V53 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V54 tmp31 [V54,T05] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V55 tmp32 [V55 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" +;* V56 tmp33 [V56,T10] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V57 tmp34 [V57,T14] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V58 tmp35 [V58 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V59 tmp36 [V59,T08] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V60 tmp37 [V60,T09] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" +;* V61 tmp38 [V61 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V62 tmp39 [V62 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V63 tmp40 [V63 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V64 tmp41 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V65 tmp42 [V65 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" +;* V66 tmp43 [V66 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" +;* V67 tmp44 [V67 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
; ; Lcl frame size = 56 @@ -162,7 +162,7 @@ G_M60901_IG10: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 xor ecx, ecx mov dword ptr [rbp-0x30], ecx cmp r15d, 4
- jl G_M60901_IG55
+ jl G_M60901_IG54
mov edi, r15d lea rdx, [r12+rdi-0x04] mov qword ptr [rbp-0x38], rdx @@ -174,11 +174,11 @@ G_M60901_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, mov r9d, dword ptr [rbx] mov dword ptr [rbp-0x4C], r9d ;; size=7 bbWeight=4 PerfScore 12.00
-G_M60901_IG12: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M60901_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
cmp r8, rbx jb SHORT G_M60901_IG14
- ;; size=5 bbWeight=32 PerfScore 40.00 -G_M60901_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=5 bbWeight=4 PerfScore 5.00 +G_M60901_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
lea rdi, gword ptr [(reloc)] ; gcrRegs +[rdi] lea rsi, gword ptr [(reloc)] @@ -186,14 +186,14 @@ G_M60901_IG13: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, call <unknown method> ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=19 bbWeight=8 PerfScore 16.00 -G_M60901_IG14: ; bbWeight=32, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=19 bbWeight=2 PerfScore 4.00 +G_M60901_IG14: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
mov r8, rbx mov r9d, dword ptr [rbp-0x4C] test r9d, 0xD1FFAB1E jne G_M60901_IG24
- ;; size=20 bbWeight=32 PerfScore 80.00 -G_M60901_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+ ;; size=20 bbWeight=4 PerfScore 10.00 +G_M60901_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
mov qword ptr [rbp-0x40], r8 lea rbx, [r8+0x04] mov rdx, qword ptr [rbp-0x38] @@ -207,8 +207,8 @@ G_M60901_IG15: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, add rbx, 4 and rbx, -4 lea rdi, [rdx-0x0C]
- ;; size=48 bbWeight=8 PerfScore 68.00 -G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+ ;; size=48 bbWeight=2 PerfScore 17.00 +G_M60901_IG16: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
vmovups xmm0, xmmword ptr [rbx] vpmovmskb esi, xmm0 test esi, esi @@ -216,26 +216,26 @@ G_M60901_IG16: ; bbWeight=64, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14} add rbx, 16 cmp rbx, rdi 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=6000 {r13 r14}, byref mov eax, dword ptr [rbp-0x2C] mov rdx, qword ptr [rbp-0x38]
- jmp G_M60901_IG51
+ jmp G_M60901_IG50
;; size=12 bbWeight=4 PerfScore 16.00
-G_M60901_IG18: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M60901_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
mov r8, qword ptr [rbp-0x40] jmp SHORT G_M60901_IG24
- ;; size=6 bbWeight=4 PerfScore 12.00 -G_M60901_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=6 bbWeight=1 PerfScore 3.00 +G_M60901_IG19: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
mov eax, dword ptr [rbp-0x2C]
- jmp G_M60901_IG51 - ;; size=8 bbWeight=4 PerfScore 12.00
+ jmp G_M60901_IG50 + ;; size=8 bbWeight=1 PerfScore 3.00
G_M60901_IG20: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref mov eax, dword ptr [rbp-0x2C] mov rdx, qword ptr [rbp-0x38]
- jmp G_M60901_IG56
+ jmp G_M60901_IG55
;; size=12 bbWeight=0.25 PerfScore 1.00
-G_M60901_IG21: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M60901_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
xor edi, edi tzcnt edi, esi mov r9d, edi @@ -249,19 +249,19 @@ G_M60901_IG21: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, call <unknown method> ; gcrRegs -[rsi rdi] ; gcr arg pop 0
- ;; size=38 bbWeight=8 PerfScore 54.00 -G_M60901_IG22: ; bbWeight=8, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
+ ;; size=38 bbWeight=2 PerfScore 13.50 +G_M60901_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz
add rbx, qword ptr [rbp-0x58] cmp rbx, qword ptr [rbp-0x38] ja SHORT G_M60901_IG23 jmp SHORT G_M60901_IG26
- ;; size=12 bbWeight=8 PerfScore 56.00 -G_M60901_IG23: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=12 bbWeight=2 PerfScore 14.00 +G_M60901_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
mov eax, dword ptr [rbp-0x2C] ...

+14 (+5.58%) : 8119.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression

@@ -8,12 +8,12 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T07] ( 4, 8 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
-; V01 arg1 [V01,T03] ( 6, 24 ) ref -> rbx class-hnd single-def <System.Linq.Expressions.BlockExpression> -; V02 loc0 [V02,T04] ( 6, 26 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.Expression[]> -; V03 loc1 [V03,T02] ( 8, 37 ) int -> r13 -; V04 loc2 [V04,T08] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
+; V01 arg1 [V01,T04] ( 6, 24 ) ref -> rbx class-hnd single-def <System.Linq.Expressions.BlockExpression> +; V02 loc0 [V02,T03] ( 6, 28 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.Expression[]> +; V03 loc1 [V03,T02] ( 8, 39 ) int -> r13 +; V04 loc2 [V04,T09] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
; V05 loc3 [V05,T06] ( 5, 14 ) ref -> [rbp-0x40] class-hnd spill-single-def <System.Linq.Expressions.Expression>
-; V06 loc4 [V06,T09] ( 3, 8 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.Expression>
+; V06 loc4 [V06,T08] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.Expression>
; V07 loc5 [V07,T00] ( 6, 82 ) int -> [rbp-0x30] ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T10] ( 3, 8 ) ref -> registers class-hnd "Inline return value spill temp" <System.Linq.Expressions.Expression> @@ -36,7 +36,7 @@ G_M22799_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov rbx, rsi ; gcrRegs +[rbx] ;; size=25 bbWeight=1 PerfScore 7.25
-G_M22799_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M22799_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
xor r14, r14 ; gcrRegs +[r14] xor r13d, r13d @@ -47,8 +47,8 @@ G_M22799_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs -[rdi] mov dword ptr [rbp-0x2C], eax test eax, eax
- jle G_M22799_IG11 - ;; size=28 bbWeight=1 PerfScore 8.00
+ jle SHORT G_M22799_IG05 + ;; size=24 bbWeight=1 PerfScore 8.00
G_M22799_IG03: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz mov rdi, rbx ; gcrRegs +[rdi] @@ -59,15 +59,23 @@ G_M22799_IG03: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; GC ptr vars +{V05} cmp byte ptr [r15], r15b test rax, rax
- jne SHORT G_M22799_IG05
+ jne SHORT G_M22799_IG06
;; size=23 bbWeight=4 PerfScore 35.00 G_M22799_IG04: ; bbWeight=2, gcVars=0000000000000040 {V05}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz xor rcx, rcx ; gcrRegs +[rcx]
- jmp SHORT G_M22799_IG06
+ jmp SHORT G_M22799_IG07
;; size=4 bbWeight=2 PerfScore 4.50
-G_M22799_IG05: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[rcx]
+G_M22799_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax rcx rbx r15] + ; GC ptr vars -{V05} + mov gword ptr [rbp-0x38], r14 + ; GC ptr vars +{V02} + jmp G_M22799_IG12 + ;; size=9 bbWeight=0.50 PerfScore 1.50 +G_M22799_IG06: ; bbWeight=2, gcVars=0000000000000040 {V05}, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rax rbx r15] + ; GC ptr vars -{V02} +{V05 V06}
mov rdi, rax ; gcrRegs +[rdi] mov rsi, r15 @@ -79,29 +87,30 @@ G_M22799_IG05: ; bbWeight=2, gcrefRegs=C009 {rax rbx r14 r15}, byrefRegs= ; gcrRegs +[rcx] mov rax, gword ptr [rbp-0x40] ;; size=19 bbWeight=2 PerfScore 13.50
-G_M22799_IG06: ; bbWeight=4, gcrefRegs=C00B {rax rcx rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M22799_IG07: ; bbWeight=4, gcrefRegs=C00B {rax rcx rbx r14 r15}, byrefRegs=0000 {}, byref
mov gword ptr [rbp-0x48], rcx
- ; GC ptr vars +{V06}
test r14, r14
- jne G_M22799_IG13
+ jne G_M22799_IG16
;; size=13 bbWeight=4 PerfScore 9.00
-G_M22799_IG07: ; bbWeight=2, gcVars=0000000000000240 {V05 V06}, gcrefRegs=C00B {rax rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M22799_IG08: ; bbWeight=2, gcVars=0000000000000140 {V05 V06}, gcrefRegs=C00B {rax rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
cmp rcx, rax
- je SHORT G_M22799_IG10
+ mov gword ptr [rbp-0x38], r14 + ; GC ptr vars +{V02} + je SHORT G_M22799_IG15
mov r14d, dword ptr [rbp-0x2C] ; gcrRegs -[r14] movsxd rsi, r14d lea rdi, [(reloc)] ; System.Linq.Expressions.Expression[]
- ; GC ptr vars -{V05 V06}
+ ; GC ptr vars -{V02 V05 V06}
call CORINFO_HELP_NEWARR_1_VC ; gcrRegs -[rcx] mov gword ptr [rbp-0x38], rax ; GC ptr vars +{V02} xor ecx, ecx test r13d, r13d
- jle SHORT G_M22799_IG09 - ;; size=35 bbWeight=2 PerfScore 13.00 -G_M22799_IG08: ; bbWeight=16, gcVars=0000000000000210 {V02 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ jle SHORT G_M22799_IG10 + ;; size=39 bbWeight=2 PerfScore 15.00 +G_M22799_IG09: ; bbWeight=16, gcVars=0000000000000108 {V02 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] ; GC ptr vars +{V06} mov rdi, rbx @@ -121,9 +130,9 @@ G_M22799_IG08: ; bbWeight=16, gcVars=0000000000000210 {V02 V06}, gcrefReg inc eax cmp eax, r13d mov ecx, eax
- jl SHORT G_M22799_IG08
+ jl SHORT G_M22799_IG09
;; size=41 bbWeight=16 PerfScore 200.00
-G_M22799_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M22799_IG10: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
movsxd rsi, r13d mov rdi, gword ptr [rbp-0x38] ; gcrRegs +[rdi] @@ -132,22 +141,18 @@ G_M22799_IG09: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; GC ptr vars -{V06} call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[rdx rdi]
- mov r14, gword ptr [rbp-0x38] - ; gcrRegs +[r14] - ;; size=20 bbWeight=2 PerfScore 8.50 -G_M22799_IG10: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V02}
+ ;; size=16 bbWeight=4 PerfScore 13.00 +G_M22799_IG11: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz
inc r13d
- mov eax, dword ptr [rbp-0x2C] - cmp r13d, eax - jl G_M22799_IG03 - ;; size=15 bbWeight=4 PerfScore 10.00 -G_M22799_IG11: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref
+ cmp r13d, r14d + jl SHORT G_M22799_IG14 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M22799_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r15]
- mov rax, r14
+ mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25 -G_M22799_IG12: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 1.00 +G_M22799_IG13: ; bbWeight=1, epilog, nogc, extend
add rsp, 40 pop rbx pop r12 @@ -157,17 +162,28 @@ G_M22799_IG12: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M22799_IG13: ; bbWeight=2, gcVars=0000000000000200 {V06}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[rcx rbx r15] - ; GC ptr vars +{V06 V09}
+G_M22799_IG14: ; bbWeight=2, gcVars=0000000000000008 {V02}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[rbx r15] + mov r14, gword ptr [rbp-0x38] + ; gcrRegs +[r14] + jmp G_M22799_IG03 + ;; size=9 bbWeight=2 PerfScore 6.00 +G_M22799_IG15: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r14] + mov r14d, dword ptr [rbp-0x2C] + jmp SHORT G_M22799_IG11 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M22799_IG16: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=C00A {rcx rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rcx r14] + ; GC ptr vars -{V02} +{V06}
mov gword ptr [rbp-0x38], r14 ; GC ptr vars +{V02} mov r14d, dword ptr [rbp-0x2C] ; gcrRegs -[r14]
- jmp SHORT G_M22799_IG09
+ jmp SHORT G_M22799_IG10
;; size=10 bbWeight=2 PerfScore 8.00
-; Total bytes of code 251, prolog size 19, PerfScore 321.25, instruction count 80, allocated bytes for code 251 (MethodHash=26a6a6f0) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression[] (FullOpts)
+; Total bytes of code 265, prolog size 19, PerfScore 335.00, instruction count 85, allocated bytes for code 265 (MethodHash=26a6a6f0) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression[] (FullOpts)
; ============================================================ Cfi Info:

+22 (+6.67%) : 7468.dasm - System.Linq.Expressions.ExpressionVisitor:VisitSystem.__Canon:System.Collections.ObjectModel.ReadOnlyCollection`1System.__Canon

@@ -10,10 +10,10 @@ ; V00 TypeCtx [V00,T09] ( 5, 5.50) long -> r14 single-def ; V01 arg0 [V01,T03] ( 8, 26.50) ref -> rbx class-hnd single-def <System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]> ; V02 arg1 [V02,T06] ( 5, 11 ) ref -> r15 class-hnd exact single-def <System.Func`2[System.__Canon,System.__Canon]>
-; V03 loc0 [V03,T04] ( 7, 26.50) ref -> [rbp-0x40] class-hnd <System.__Canon[]> -; V04 loc1 [V04,T02] ( 9, 39 ) int -> r12 -; V05 loc2 [V05,T07] ( 4, 8 ) int -> [rbp-0x34] spill-single-def -; V06 loc3 [V06,T08] ( 3, 8 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.__Canon>
+; V03 loc0 [V03,T04] ( 7, 28.50) ref -> [rbp-0x40] class-hnd <System.__Canon[]> +; V04 loc1 [V04,T02] ( 9, 41 ) int -> r12 +; V05 loc2 [V05,T08] ( 4, 8 ) int -> [rbp-0x34] spill-single-def +; V06 loc3 [V06,T07] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.__Canon>
; V07 loc4 [V07,T00] ( 6, 82 ) int -> [rbp-0x38] ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V09 tmp1 [V09,T10] ( 3, 3 ) ref -> rbx class-hnd exact single-def "NewObj constructor temp" <System.Runtime.CompilerServices.TrueReadOnlyCollection`1[System.__Canon]> @@ -40,9 +40,9 @@ G_M17509_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ;; size=32 bbWeight=1 PerfScore 8.50 G_M17509_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref test rbx, rbx
- je G_M17509_IG14
+ je G_M17509_IG17
test r15, r15
- je G_M17509_IG15
+ je G_M17509_IG18
xor r13, r13 ; gcrRegs +[r13] xor r12d, r12d @@ -52,7 +52,7 @@ G_M17509_IG02: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; gcrRegs -[rdi] mov dword ptr [rbp-0x34], eax test eax, eax
- jle G_M17509_IG08
+ jle G_M17509_IG14
;; size=43 bbWeight=1 PerfScore 6.50 G_M17509_IG03: ; bbWeight=4, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -69,9 +69,9 @@ G_M17509_IG03: ; bbWeight=4, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V06} test r13, r13
- jne G_M17509_IG11
+ jne G_M17509_IG13
;; size=35 bbWeight=4 PerfScore 36.00
-G_M17509_IG04: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M17509_IG04: ; bbWeight=2, gcVars=0000000000000080 {V06}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -79,19 +79,22 @@ G_M17509_IG04: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=A00 call System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:get_Item(int):System.__Canon:this ; gcrRegs -[rdi] +[rax] cmp rax, gword ptr [rbp-0x48]
- je SHORT G_M17509_IG07
+ mov gword ptr [rbp-0x40], r13 + ; GC ptr vars +{V03} + je G_M17509_IG12
mov rdi, qword ptr [r14+0x08] mov r13d, dword ptr [rbp-0x34] ; gcrRegs -[r13] movsxd rsi, r13d
+ ; GC ptr vars -{V03}
call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-0x40], rax ; GC ptr vars +{V03} xor ecx, ecx test r12d, r12d jle SHORT G_M17509_IG06
- ;; size=44 bbWeight=2 PerfScore 22.50 -G_M17509_IG05: ; bbWeight=16, gcVars=0000000000000110 {V03 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=52 bbWeight=2 PerfScore 24.50 +G_M17509_IG05: ; bbWeight=16, gcVars=0000000000000090 {V03 V06}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -112,7 +115,7 @@ G_M17509_IG05: ; bbWeight=16, gcVars=0000000000000110 {V03 V06}, gcrefReg mov ecx, eax jl SHORT G_M17509_IG05 ;; size=41 bbWeight=16 PerfScore 168.00
-G_M17509_IG06: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
+G_M17509_IG06: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref
movsxd rsi, r12d mov rdi, gword ptr [rbp-0x40] ; gcrRegs +[rdi] @@ -121,23 +124,22 @@ G_M17509_IG06: ; bbWeight=2, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, ; GC ptr vars -{V06} call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[rdx rdi]
+ ;; size=16 bbWeight=4 PerfScore 13.00 +G_M17509_IG07: ; bbWeight=4, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + inc r12d + cmp r12d, r13d + jl SHORT G_M17509_IG11 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M17509_IG08: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r15]
mov r13, gword ptr [rbp-0x40] ; gcrRegs +[r13]
- ;; size=20 bbWeight=2 PerfScore 8.50 -G_M17509_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V03} - inc r12d - mov eax, dword ptr [rbp-0x34] - cmp r12d, eax - jl G_M17509_IG03 - ;; size=15 bbWeight=4 PerfScore 10.00 -G_M17509_IG08: ; bbWeight=1, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r15]
test r13, r13
- jne SHORT G_M17509_IG12 - ;; size=5 bbWeight=1 PerfScore 1.25 -G_M17509_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ jne SHORT G_M17509_IG15 + ;; size=9 bbWeight=1 PerfScore 2.25 +G_M17509_IG09: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[r13]
+ ; GC ptr vars -{V03}
mov rax, rbx ; gcrRegs +[rax] ;; size=3 bbWeight=0.50 PerfScore 0.12 @@ -151,18 +153,37 @@ G_M17509_IG10: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M17509_IG11: ; bbWeight=2, gcVars=0000000000000100 {V06}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] +[r13 r15] - ; GC ptr vars +{V06}
+G_M17509_IG11: ; bbWeight=2, gcVars=0000000000000010 {V03}, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[r15] + ; GC ptr vars +{V03 V04} + mov r13, gword ptr [rbp-0x40] + ; gcrRegs +[r13] + jmp G_M17509_IG03 + ;; size=9 bbWeight=2 PerfScore 6.00 +G_M17509_IG12: ; bbWeight=1, gcrefRegs=8008 {rbx r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13] + mov r13d, dword ptr [rbp-0x34] + jmp SHORT G_M17509_IG07 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M17509_IG13: ; bbWeight=2, gcVars=0000000000000080 {V06}, gcrefRegs=A008 {rbx r13 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[r13] + ; GC ptr vars -{V03 V04} +{V06 V07}
mov gword ptr [rbp-0x40], r13 ; GC ptr vars +{V03} mov r13d, dword ptr [rbp-0x34] ; gcrRegs -[r13] jmp SHORT G_M17509_IG06 ;; size=10 bbWeight=2 PerfScore 8.00
-G_M17509_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rbx r15] +[r13] - ; GC ptr vars -{V03 V06}
+G_M17509_IG14: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2008 {rbx r13}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[r15] +[r13] + ; GC ptr vars -{V03 V06 V07} + mov gword ptr [rbp-0x40], r13 + ; GC ptr vars +{V03} + jmp SHORT G_M17509_IG08 + ;; size=6 bbWeight=0.50 PerfScore 1.50 +G_M17509_IG15: ; bbWeight=0.50, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + ; GC ptr vars -{V03}
mov rdi, qword ptr [r14] call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -178,7 +199,7 @@ G_M17509_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=200 mov rax, rbx ; gcrRegs +[rax] ;; size=26 bbWeight=0.50 PerfScore 2.62
-G_M17509_IG13: ; bbWeight=0.50, epilog, nogc, extend
+G_M17509_IG16: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 40 pop rbx pop r12 @@ -188,7 +209,7 @@ G_M17509_IG13: ; bbWeight=0.50, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=0.50 PerfScore 2.12
-G_M17509_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M17509_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax rbx] lea rdi, gword ptr [(reloc)] ; gcrRegs +[rdi] @@ -196,7 +217,7 @@ G_M17509_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ; gcrRegs -[rdi] int3 ;; size=13 bbWeight=0 PerfScore 0.00
-G_M17509_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M17509_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
lea rdi, gword ptr [(reloc)] ; gcrRegs +[rdi] call System.ArgumentNullException:Throw(System.String) @@ -204,7 +225,7 @@ G_M17509_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=13 bbWeight=0 PerfScore 0.00
-; Total bytes of code 330, prolog size 23, PerfScore 276.25, instruction count 102, allocated bytes for code 330 (MethodHash=a42cbb9a) for method System.Linq.Expressions.ExpressionVisitor:Visit[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
+; Total bytes of code 352, prolog size 23, PerfScore 290.25, instruction count 108, allocated bytes for code 352 (MethodHash=a42cbb9a) for method System.Linq.Expressions.ExpressionVisitor:Visit[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
; ============================================================ Cfi Info:

+19 (+7.25%) : 6249.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression

@@ -7,14 +7,14 @@ ; partially interruptible ; Final local variable assignments ;
-; V00 arg0 [V00,T07] ( 3, 6 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
+; V00 arg0 [V00,T08] ( 3, 6 ) ref -> r15 class-hnd single-def <System.Linq.Expressions.ExpressionVisitor>
; V01 arg1 [V01,T04] ( 5, 23 ) ref -> rbx class-hnd single-def <System.Linq.Expressions.IParameterProvider>
-; V02 arg2 [V02,T08] ( 3, 6 ) ref -> r14 class-hnd exact single-def <System.String> -; V03 loc0 [V03,T03] ( 6, 26 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.ParameterExpression[]> -; V04 loc1 [V04,T02] ( 8, 37 ) int -> r12 -; V05 loc2 [V05,T06] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
+; V02 arg2 [V02,T09] ( 3, 6 ) ref -> r14 class-hnd exact single-def <System.String> +; V03 loc0 [V03,T03] ( 6, 28 ) ref -> [rbp-0x38] class-hnd <System.Linq.Expressions.ParameterExpression[]> +; V04 loc1 [V04,T02] ( 8, 39 ) int -> r12 +; V05 loc2 [V05,T07] ( 4, 8 ) int -> [rbp-0x2C] spill-single-def
; V06 loc3 [V06,T05] ( 3, 10 ) ref -> [rbp-0x40] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
-; V07 loc4 [V07,T09] ( 3, 8 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
+; V07 loc4 [V07,T06] ( 3, 10 ) ref -> [rbp-0x48] class-hnd spill-single-def <System.Linq.Expressions.ParameterExpression>
; V08 loc5 [V08,T00] ( 6, 82 ) int -> [rbp-0x30] ;# V09 OutArgs [V09 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V10 tmp1 [V10,T01] ( 2, 64 ) ref -> rdx "argument with side effect" @@ -48,7 +48,7 @@ G_M18588_IG02: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; gcrRegs -[rdi] mov dword ptr [rbp-0x2C], eax test eax, eax
- jle G_M18588_IG08
+ jle G_M18588_IG13
;; size=30 bbWeight=1 PerfScore 6.50 G_M18588_IG03: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref mov rdi, rbx @@ -72,27 +72,29 @@ G_M18588_IG03: ; bbWeight=4, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs= mov gword ptr [rbp-0x48], rax ; GC ptr vars +{V07} test r13, r13
- jne G_M18588_IG10
+ jne G_M18588_IG12
;; size=56 bbWeight=4 PerfScore 50.00
-G_M18588_IG04: ; bbWeight=2, gcVars=0000000000000220 {V06 V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M18588_IG04: ; bbWeight=2, gcVars=0000000000000060 {V06 V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
mov rsi, gword ptr [rbp-0x40] ; gcrRegs +[rsi] cmp rax, rsi
- je SHORT G_M18588_IG07
+ mov gword ptr [rbp-0x38], r13 + ; GC ptr vars +{V03} + je G_M18588_IG11
mov r13d, dword ptr [rbp-0x2C] ; gcrRegs -[r13] movsxd rsi, r13d ; gcrRegs -[rsi] lea rdi, [(reloc)] ; System.Linq.Expressions.ParameterExpression[]
- ; GC ptr vars -{V06}
+ ; GC ptr vars -{V03 V06}
call CORINFO_HELP_NEWARR_1_VC mov gword ptr [rbp-0x38], rax ; GC ptr vars +{V03} xor ecx, ecx test r12d, r12d jle SHORT G_M18588_IG06
- ;; size=39 bbWeight=2 PerfScore 15.00 -G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000208 {V03 V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=47 bbWeight=2 PerfScore 17.00 +G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000048 {V03 V07}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax] mov rdi, rbx ; gcrRegs +[rdi] @@ -114,7 +116,7 @@ G_M18588_IG05: ; bbWeight=16, gcVars=0000000000000208 {V03 V07}, gcrefReg mov ecx, eax jl SHORT G_M18588_IG05 ;; size=46 bbWeight=16 PerfScore 208.00
-G_M18588_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
+G_M18588_IG06: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref
movsxd rsi, r12d mov rdi, gword ptr [rbp-0x38] ; gcrRegs +[rdi] @@ -123,21 +125,17 @@ G_M18588_IG06: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 ; GC ptr vars -{V07} call CORINFO_HELP_ARRADDR_ST ; gcrRegs -[rdx rdi]
- mov r13, gword ptr [rbp-0x38] - ; gcrRegs +[r13] - ;; size=20 bbWeight=2 PerfScore 8.50 -G_M18588_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; GC ptr vars -{V03}
+ ;; size=16 bbWeight=4 PerfScore 13.00 +G_M18588_IG07: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz
inc r12d
- mov eax, dword ptr [rbp-0x2C] - cmp r12d, eax - jl G_M18588_IG03 - ;; size=15 bbWeight=4 PerfScore 10.00 -G_M18588_IG08: ; bbWeight=1, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, byref
+ cmp r12d, r13d + jl SHORT G_M18588_IG10 + ;; size=8 bbWeight=4 PerfScore 6.00 +G_M18588_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rbx r14-r15]
- mov rax, r13
+ mov rax, gword ptr [rbp-0x38]
; gcrRegs +[rax]
- ;; size=3 bbWeight=1 PerfScore 0.25
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M18588_IG09: ; bbWeight=1, epilog, nogc, extend add rsp, 40 pop rbx @@ -148,17 +146,35 @@ G_M18588_IG09: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=15 bbWeight=1 PerfScore 4.25
-G_M18588_IG10: ; bbWeight=2, gcVars=0000000000000200 {V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rbx r14-r15] - ; GC ptr vars +{V07}
+G_M18588_IG10: ; bbWeight=2, gcVars=0000000000000008 {V03}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[rax] +[rbx r14-r15] + mov r13, gword ptr [rbp-0x38] + ; gcrRegs +[r13] + jmp G_M18588_IG03 + ;; size=9 bbWeight=2 PerfScore 6.00 +G_M18588_IG11: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r13] + mov r13d, dword ptr [rbp-0x2C] + jmp SHORT G_M18588_IG07 + ;; size=6 bbWeight=1 PerfScore 3.00 +G_M18588_IG12: ; bbWeight=2, gcVars=0000000000000040 {V07}, gcrefRegs=E009 {rax rbx r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rax r13] + ; GC ptr vars -{V03} +{V06 V07}
mov gword ptr [rbp-0x38], r13 ; GC ptr vars +{V03} mov r13d, dword ptr [rbp-0x2C] ; gcrRegs -[r13] jmp SHORT G_M18588_IG06 ;; size=10 bbWeight=2 PerfScore 8.00
+G_M18588_IG13: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=2000 {r13}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rax rbx r14-r15] +[r13] + ; GC ptr vars -{V03 V06 V07} + mov gword ptr [rbp-0x38], r13 + ; GC ptr vars +{V03} + jmp SHORT G_M18588_IG08 + ;; size=6 bbWeight=0.50 PerfScore 1.50
-; Total bytes of code 262, prolog size 19, PerfScore 318.00, instruction count 79, allocated bytes for code 262 (MethodHash=3086b763) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
+; Total bytes of code 281, prolog size 19, PerfScore 331.75, instruction count 84, allocated bytes for code 281 (MethodHash=3086b763) for method System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
; ============================================================ Cfi Info:

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.linux.x64.checked.mch 248 58 41 149 -464 +268
benchmarks.run_pgo.linux.x64.checked.mch 11,959 8,265 3,220 474 -221,363 +43,005
benchmarks.run_tiered.linux.x64.checked.mch 94 32 13 49 -255 +141
coreclr_tests.run.linux.x64.checked.mch 4,009 507 402 3,100 -5,265 +5,135
libraries.crossgen2.linux.x64.checked.mch 607 95 93 419 -1,276 +1,020
libraries.pmi.linux.x64.checked.mch 998 209 180 609 -1,860 +1,762
libraries_tests.run.linux.x64.Release.mch 1,984 368 1,196 420 -2,961 +21,083
librariestestsnotieredcompilation.run.linux.x64.Release.mch 1,128 279 288 561 -3,980 +3,281
realworld.run.linux.x64.checked.mch 283 47 54 182 -1,376 +737
smoke_tests.nativeaot.linux.x64.checked.mch 268 35 43 190 -454 +472
21,578 9,895 5,530 6,153 -239,254 +76,904

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,739 15 264,724 0 (0.00%) 0 (0.00%)
libraries.pmi.linux.x64.checked.mch 297,007 6 297,001 64 (0.02%) 64 (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,542 21,933 281,609 2,284 (0.75%) 2,284 (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,441 10 27,431 12 (0.04%) 12 (0.04%)
1,621,203 360,162 1,261,041 2,647 (0.16%) 2,647 (0.16%)

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: 11931736 (overridden on cmd)
Total bytes of diff: 11931540 (overridden on cmd)
Total bytes of delta: -196 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          69 : 11574.dasm (1.93 % of base)
          28 : 15530.dasm (1.73 % of base)
          17 : 17116.dasm (0.61 % of base)
          17 : 22431.dasm (2.10 % of base)
          17 : 877.dasm (0.76 % of base)
          16 : 10643.dasm (0.20 % of base)
           8 : 17426.dasm (0.14 % of base)
           7 : 14249.dasm (1.97 % of base)
           6 : 16489.dasm (0.52 % of base)
           6 : 2847.dasm (4.35 % of base)
           5 : 16084.dasm (0.74 % of base)
           5 : 19271.dasm (0.35 % of base)
           4 : 14268.dasm (0.70 % of base)
           4 : 27159.dasm (0.42 % of base)
           4 : 167.dasm (0.36 % of base)
           3 : 15988.dasm (1.65 % of base)
           3 : 31303.dasm (0.66 % of base)
           3 : 17018.dasm (0.34 % of base)
           3 : 15399.dasm (0.42 % of base)
           3 : 875.dasm (0.18 % of base)

Top file improvements (bytes):
         -56 : 4572.dasm (-0.76 % of base)
         -54 : 11044.dasm (-3.90 % of base)
         -40 : 1666.dasm (-1.49 % of base)
         -35 : 59.dasm (-1.72 % of base)
         -31 : 21369.dasm (-0.72 % of base)
         -31 : 13163.dasm (-2.10 % of base)
         -31 : 20286.dasm (-0.70 % of base)
         -20 : 8351.dasm (-3.10 % of base)
         -18 : 9855.dasm (-2.82 % of base)
         -16 : 25980.dasm (-0.31 % of base)
          -7 : 10583.dasm (-0.31 % of base)
          -7 : 5107.dasm (-0.38 % of base)
          -7 : 19604.dasm (-0.26 % of base)
          -7 : 19622.dasm (-0.28 % of base)
          -7 : 2386.dasm (-0.77 % of base)
          -6 : 10769.dasm (-0.72 % of base)
          -6 : 7957.dasm (-0.94 % of base)
          -4 : 12787.dasm (-0.60 % of base)
          -4 : 5124.dasm (-0.81 % of base)
          -4 : 8353.dasm (-0.14 % of base)

53 total files with Code Size differences (27 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
          69 (1.93 % of base) : 11574.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          28 (1.73 % of base) : 15530.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (FullOpts)
          17 (0.61 % of base) : 17116.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          17 (2.10 % of base) : 22431.dasm - System.Linq.Enumerable:Average(System.Collections.Generic.IEnumerable`1[int]):double (FullOpts)
          17 (0.76 % of base) : 877.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
          16 (0.20 % of base) : 10643.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):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)
           6 (4.35 % of base) : 2847.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (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)
           5 (0.35 % of base) : 19271.dasm - System.Text.Base64Encoding:GetBytes(ubyte[],int,int,ubyte[],int):int:this (FullOpts)
           4 (0.70 % of base) : 14268.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
           4 (0.36 % of base) : 167.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts)
           4 (0.42 % of base) : 27159.dasm - V8.Crypto.BigInteger:squareTo(V8.Crypto.BigInteger):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)
           3 (1.65 % of base) : 15988.dasm - Roslyn.Utilities.TextKeyedCache`1[System.__Canon]:AddSharedEntry(int,Roslyn.Utilities.TextKeyedCache`1+SharedEntryValue[System.__Canon]):this (FullOpts)
           3 (0.66 % of base) : 31303.dasm - System.Buffers.Text.Base64:DecodeFromUtf8InPlace(System.Span`1[ubyte],byref,ubyte):int (FullOpts)
           3 (0.42 % of base) : 15399.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterUInt64(ulong):ubyte:this (FullOpts)
           3 (0.18 % of base) : 875.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)

Top method improvements (bytes):
         -56 (-0.76 % of base) : 4572.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -54 (-3.90 % of base) : 11044.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
         -40 (-1.49 % of base) : 1666.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -35 (-1.72 % of base) : 59.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
         -31 (-2.10 % of base) : 13163.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -31 (-0.72 % of base) : 21369.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -31 (-0.70 % of base) : 20286.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -20 (-3.10 % of base) : 8351.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
         -18 (-2.82 % of base) : 9855.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (FullOpts)
         -16 (-0.31 % of base) : 25980.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (FullOpts)
          -7 (-0.26 % of base) : 19604.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
          -7 (-0.28 % of base) : 19622.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
          -7 (-0.38 % of base) : 5107.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
          -7 (-0.77 % of base) : 2386.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,ubyte,System.Number+HexParser`1[ubyte]](System.ReadOnlySpan`1[ushort],int,byref):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)
          -6 (-0.72 % of base) : 10769.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (FullOpts)
          -6 (-0.94 % of base) : 7957.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
          -4 (-0.60 % of base) : 12787.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
          -4 (-0.14 % of base) : 8353.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (FullOpts)
          -4 (-0.58 % of base) : 265.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this (FullOpts)

Top method regressions (percentages):
           6 (4.35 % of base) : 2847.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
          17 (2.10 % of base) : 22431.dasm - System.Linq.Enumerable:Average(System.Collections.Generic.IEnumerable`1[int]):double (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)
          69 (1.93 % of base) : 11574.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          28 (1.73 % of base) : 15530.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (FullOpts)
           3 (1.65 % of base) : 15988.dasm - Roslyn.Utilities.TextKeyedCache`1[System.__Canon]:AddSharedEntry(int,Roslyn.Utilities.TextKeyedCache`1+SharedEntryValue[System.__Canon]):this (FullOpts)
           2 (1.09 % of base) : 27129.dasm - V8.Crypto.ListX`1[int]:set_Item(int,int):this (FullOpts)
           2 (1.09 % of base) : 27175.dasm - V8.Crypto.ListX`1[ubyte]:set_Item(int,ubyte):this (FullOpts)
          17 (0.76 % of base) : 877.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):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)
           4 (0.70 % of base) : 14268.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
           3 (0.66 % of base) : 31303.dasm - System.Buffers.Text.Base64:DecodeFromUtf8InPlace(System.Span`1[ubyte],byref,ubyte):int (FullOpts)
           2 (0.63 % of base) : 11335.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:<ToList>g__AppendToList|25_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]],int) (FullOpts)
          17 (0.61 % of base) : 17116.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
           2 (0.61 % of base) : 27150.dasm - V8.Crypto.BigInteger:dLShiftTo(int,V8.Crypto.BigInteger):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)
           2 (0.50 % of base) : 31316.dasm - BenchmarksGame.ReverseComplement_6:Writer() (FullOpts)
           3 (0.42 % of base) : 15399.dasm - System.Buffers.Text.Tests.Utf8FormatterTests:FormatterUInt64(ulong):ubyte:this (FullOpts)
           4 (0.42 % of base) : 27159.dasm - V8.Crypto.BigInteger:squareTo(V8.Crypto.BigInteger):this (FullOpts)
           2 (0.39 % of base) : 27152.dasm - V8.Crypto.BigInteger:lShiftTo(int,V8.Crypto.BigInteger):this (FullOpts)

Top method improvements (percentages):
         -54 (-3.90 % of base) : 11044.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
         -20 (-3.10 % of base) : 8351.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
         -18 (-2.82 % of base) : 9855.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (FullOpts)
         -31 (-2.10 % of base) : 13163.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -35 (-1.72 % of base) : 59.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
         -40 (-1.49 % of base) : 1666.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
          -3 (-1.13 % of base) : 5595.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts)
          -6 (-0.94 % of base) : 7957.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
          -4 (-0.81 % of base) : 5124.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this (FullOpts)
          -7 (-0.77 % of base) : 2386.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,ubyte,System.Number+HexParser`1[ubyte]](System.ReadOnlySpan`1[ushort],int,byref):int (FullOpts)
         -56 (-0.76 % of base) : 4572.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -31 (-0.72 % of base) : 21369.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -6 (-0.72 % of base) : 10769.dasm - System.Text.StringBuilder+AppendInterpolatedStringHandler:AppendFormatted[int](int,System.String):this (FullOpts)
         -31 (-0.70 % of base) : 20286.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -3 (-0.69 % of base) : 12705.dasm - System.Tests.Perf_Int32:TryFormat(int):ubyte:this (FullOpts)
          -4 (-0.60 % of base) : 12787.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
          -4 (-0.58 % of base) : 265.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this (FullOpts)
          -2 (-0.55 % of base) : 11579.dasm - System.Number:<NumberToBigInteger>g__ProcessChunk|11_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (FullOpts)
          -1 (-0.47 % of base) : 10485.dasm - System.Xml.Serialization.CodeIdentifiers:MakeUnique(System.String):System.String:this (FullOpts)
          -2 (-0.44 % of base) : 803.dasm - System.Number:UInt64ToDecStr(ulong):System.String (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: 57208438 (overridden on cmd)
Total bytes of diff: 57030080 (overridden on cmd)
Total bytes of delta: -178358 (-0.31 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         588 : 100256.dasm (45.09 % of base)
         588 : 104838.dasm (45.09 % of base)
         214 : 100257.dasm (16.30 % of base)
         214 : 104841.dasm (16.30 % of base)
          76 : 100656.dasm (2.11 % of base)
          73 : 77879.dasm (1.94 % of base)
          73 : 105278.dasm (1.94 % of base)
          72 : 10707.dasm (6.11 % of base)
          71 : 118083.dasm (1.85 % of base)
          71 : 54290.dasm (1.87 % of base)
          70 : 112497.dasm (2.61 % of base)
          69 : 64052.dasm (15.51 % of base)
          68 : 104835.dasm (2.24 % of base)
          68 : 107463.dasm (2.24 % of base)
          68 : 88934.dasm (2.24 % of base)
          68 : 116580.dasm (2.24 % of base)
          68 : 100246.dasm (2.24 % of base)
          68 : 112026.dasm (2.24 % of base)
          67 : 99756.dasm (2.49 % of base)
          67 : 87875.dasm (2.49 % of base)

Top file improvements (bytes):
        -584 : 91883.dasm (-27.57 % of base)
        -584 : 95242.dasm (-27.57 % of base)
        -584 : 19339.dasm (-27.57 % of base)
        -584 : 71348.dasm (-27.57 % of base)
        -156 : 101348.dasm (-3.12 % of base)
        -145 : 19340.dasm (-8.58 % of base)
        -145 : 71349.dasm (-8.58 % of base)
        -145 : 95243.dasm (-8.58 % of base)
        -145 : 91884.dasm (-8.58 % of base)
        -121 : 112511.dasm (-3.08 % of base)
         -86 : 105981.dasm (-3.90 % of base)
         -86 : 109313.dasm (-3.90 % of base)
         -86 : 25150.dasm (-3.90 % of base)
         -86 : 25774.dasm (-3.90 % of base)
         -86 : 26825.dasm (-3.90 % of base)
         -86 : 38454.dasm (-3.90 % of base)
         -86 : 52326.dasm (-3.90 % of base)
         -86 : 52825.dasm (-3.90 % of base)
         -86 : 66553.dasm (-3.90 % of base)
         -86 : 123273.dasm (-3.90 % of base)

91 total files with Code Size differences (55 improved, 36 regressed), 20 unchanged.

Top method regressions (bytes):
         588 (45.09 % of base) : 100256.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
         588 (45.09 % of base) : 104838.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
         214 (16.30 % of base) : 100257.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
         214 (16.30 % of base) : 104841.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
          76 (2.11 % of base) : 100656.dasm - Benchstone.MDBenchF.MDLLoops:Main1(int):this (Tier1-OSR)
          73 (1.94 % of base) : 77879.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)
          73 (1.94 % of base) : 105278.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)
          72 (6.11 % of base) : 10707.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Tier1)
          71 (1.85 % of base) : 118083.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)
          71 (1.87 % of base) : 54290.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)
          70 (2.61 % of base) : 112497.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
          69 (15.51 % of base) : 64052.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          68 (2.24 % of base) : 104835.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.24 % of base) : 107463.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.24 % of base) : 88934.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.24 % of base) : 116580.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.24 % of base) : 100246.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.24 % of base) : 112026.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          67 (2.49 % of base) : 99756.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
          67 (2.49 % of base) : 87875.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)

Top method improvements (bytes):
        -584 (-27.57 % of base) : 91883.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        -584 (-27.57 % of base) : 95242.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        -584 (-27.57 % of base) : 19339.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        -584 (-27.57 % of base) : 71348.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        -156 (-3.12 % of base) : 101348.dasm - System.Number:Dragon4(ulong,int,uint,ubyte,int,ubyte,System.Span`1[ubyte],byref):uint (Tier1)
        -145 (-8.58 % of base) : 19340.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        -145 (-8.58 % of base) : 71349.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        -145 (-8.58 % of base) : 95243.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        -145 (-8.58 % of base) : 91884.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        -121 (-3.08 % of base) : 112511.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)
         -86 (-3.90 % 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)
         -86 (-3.90 % 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)
         -86 (-3.90 % 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)
         -86 (-3.90 % 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)
         -86 (-3.90 % 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)
         -86 (-3.90 % 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)
         -86 (-3.90 % 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)
         -86 (-3.90 % 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)
         -86 (-3.90 % 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)
         -86 (-3.90 % 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)

Top method regressions (percentages):
         588 (45.09 % of base) : 100256.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
         588 (45.09 % of base) : 104838.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
         214 (16.30 % of base) : 100257.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
         214 (16.30 % of base) : 104841.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
          69 (15.51 % of base) : 64052.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          11 (14.29 % of base) : 84874.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
          11 (14.29 % of base) : 95709.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
          60 (13.22 % of base) : 90917.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          60 (13.22 % of base) : 93385.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          60 (13.22 % of base) : 88651.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          60 (13.22 % of base) : 103042.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          60 (13.22 % of base) : 125203.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          60 (13.22 % of base) : 20104.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          60 (13.22 % of base) : 39974.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          60 (13.22 % of base) : 43372.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          60 (13.22 % of base) : 111106.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          60 (13.22 % of base) : 122279.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          60 (13.22 % of base) : 126425.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          60 (13.22 % of base) : 14125.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          57 (12.47 % of base) : 126648.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)

Top method improvements (percentages):
        -584 (-27.57 % of base) : 91883.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        -584 (-27.57 % of base) : 95242.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        -584 (-27.57 % of base) : 19339.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
        -584 (-27.57 % of base) : 71348.dasm - System.Globalization.Ordinal:IndexOfOrdinalIgnoreCase(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]):int (Tier1-OSR)
         -15 (-22.06 % of base) : 98648.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
         -30 (-15.54 % of base) : 7814.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
         -30 (-12.66 % of base) : 55267.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) : 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) : 92591.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_Dictionary():ubyte:this (Tier1-OSR)
         -26 (-10.40 % of base) : 71753.dasm - System.Numerics.BigIntegerCalculator:LehmerCore(System.Span`1[uint],System.Span`1[uint],long,long,long,long):int (Tier1-OSR)
         -42 (-9.21 % of base) : 93960.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -31 (-9.17 % of base) : 5373.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
         -31 (-9.17 % of base) : 5817.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
         -31 (-9.17 % of base) : 6537.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
         -31 (-9.17 % of base) : 6553.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
         -31 (-9.17 % of base) : 6757.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
         -31 (-9.17 % of base) : 6801.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
         -31 (-9.17 % of base) : 6833.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)


benchmarks.run_tiered.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 18554476 (overridden on cmd)
Total bytes of diff: 18554362 (overridden on cmd)
Total bytes of delta: -114 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          69 : 26746.dasm (1.93 % of base)
          28 : 56960.dasm (1.73 % of base)
          17 : 7449.dasm (0.76 % of base)
           6 : 8118.dasm (4.35 % of base)
           4 : 1045.dasm (0.36 % of base)
           3 : 41317.dasm (1.65 % of base)
           3 : 7447.dasm (0.18 % of base)
           2 : 3015.dasm (0.10 % of base)
           2 : 58424.dasm (0.40 % of base)
           2 : 16858.dasm (0.22 % of base)
           2 : 26042.dasm (0.63 % of base)
           2 : 37387.dasm (0.07 % of base)
           1 : 12742.dasm (0.09 % of base)

Top file improvements (bytes):
         -40 : 9193.dasm (-1.49 % of base)
         -35 : 687.dasm (-1.72 % of base)
         -31 : 30113.dasm (-2.10 % of base)
         -31 : 48710.dasm (-0.72 % of base)
         -31 : 48835.dasm (-0.70 % of base)
         -16 : 55032.dasm (-0.31 % of base)
          -7 : 5440.dasm (-0.77 % of base)
          -4 : 25158.dasm (-1.17 % of base)
          -4 : 52895.dasm (-0.35 % of base)
          -4 : 15500.dasm (-0.14 % of base)
          -4 : 44921.dasm (-0.35 % of base)
          -4 : 14869.dasm (-0.64 % of base)
          -4 : 25583.dasm (-0.81 % of base)
          -4 : 2908.dasm (-1.18 % of base)
          -4 : 35866.dasm (-0.10 % of base)
          -3 : 18283.dasm (-1.13 % of base)
          -3 : 48016.dasm (-1.08 % of base)
          -3 : 35572.dasm (-0.10 % of base)
          -3 : 26765.dasm (-0.29 % of base)
          -3 : 6874.dasm (-0.17 % of base)

38 total files with Code Size differences (25 improved, 13 regressed), 24 unchanged.

Top method regressions (bytes):
          69 (1.93 % of base) : 26746.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (Tier1)
          28 (1.73 % of base) : 56960.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (Tier1)
          17 (0.76 % of base) : 7449.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (Tier1)
           6 (4.35 % of base) : 8118.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (Tier1)
           4 (0.36 % of base) : 1045.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Tier1)
           3 (1.65 % of base) : 41317.dasm - Roslyn.Utilities.TextKeyedCache`1[System.__Canon]:AddSharedEntry(int,Roslyn.Utilities.TextKeyedCache`1+SharedEntryValue[System.__Canon]):this (Tier1)
           3 (0.18 % of base) : 7447.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (Tier1)
           2 (0.07 % of base) : 37387.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
           2 (0.40 % of base) : 58424.dasm - System.Buffers.Text.Base64:DecodeFromUtf8InPlace(System.Span`1[ubyte],byref,ubyte):int (Tier1-OSR)
           2 (0.22 % of base) : 16858.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
           2 (0.10 % of base) : 3015.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)
           2 (0.63 % of base) : 26042.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:<ToList>g__AppendToList|25_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]],int) (Tier1)
           1 (0.09 % of base) : 12742.dasm - System.IPv4AddressHelper:ParseCanonicalName(System.String,int,int,byref):System.String (Tier0-FullOpts)

Top method improvements (bytes):
         -40 (-1.49 % of base) : 9193.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
         -35 (-1.72 % of base) : 687.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
         -31 (-2.10 % of base) : 30113.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -31 (-0.72 % of base) : 48710.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -31 (-0.70 % of base) : 48835.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -16 (-0.31 % of base) : 55032.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (Tier0-FullOpts)
          -7 (-0.77 % of base) : 5440.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,ubyte,System.Number+HexParser`1[ubyte]](System.ReadOnlySpan`1[ushort],int,byref):int (Tier1)
          -4 (-0.35 % of base) : 52895.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
          -4 (-1.17 % of base) : 25158.dasm - System.Byte:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
          -4 (-0.35 % of base) : 44921.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (Tier1)
          -4 (-0.14 % of base) : 15500.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          -4 (-0.64 % of base) : 14869.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this (Tier1)
          -4 (-0.81 % of base) : 25583.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this (Tier1)
          -4 (-1.18 % of base) : 2908.dasm - System.UInt32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
          -4 (-0.10 % of base) : 35866.dasm - System.Uri:RecreateParts(byref,System.String,int,ushort,int):System.ReadOnlySpan`1[ushort]:this (Tier1)
          -3 (-1.13 % of base) : 18283.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (Tier1)
          -3 (-0.10 % of base) : 35572.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.29 % of base) : 26765.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (Tier1)
          -3 (-0.17 % of base) : 6874.dasm - System.Security.Cryptography.Pkcs.Pkcs12Kdf:Derive(System.ReadOnlySpan`1[ushort],System.Security.Cryptography.HashAlgorithmName,int,ubyte,System.ReadOnlySpan`1[ubyte],System.Span`1[ubyte]) (Tier0-FullOpts)
          -3 (-1.08 % of base) : 48016.dasm - System.Threading.ReaderWriterLockSlim:GetThreadRWCount(ubyte):System.Threading.ReaderWriterCount:this (Tier1)

Top method regressions (percentages):
           6 (4.35 % of base) : 8118.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (Tier1)
          69 (1.93 % of base) : 26746.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (Tier1)
          28 (1.73 % of base) : 56960.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (Tier1)
           3 (1.65 % of base) : 41317.dasm - Roslyn.Utilities.TextKeyedCache`1[System.__Canon]:AddSharedEntry(int,Roslyn.Utilities.TextKeyedCache`1+SharedEntryValue[System.__Canon]):this (Tier1)
          17 (0.76 % of base) : 7449.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (Tier1)
           2 (0.63 % of base) : 26042.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:<ToList>g__AppendToList|25_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]],int) (Tier1)
           2 (0.40 % of base) : 58424.dasm - System.Buffers.Text.Base64:DecodeFromUtf8InPlace(System.Span`1[ubyte],byref,ubyte):int (Tier1-OSR)
           4 (0.36 % of base) : 1045.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Tier1)
           2 (0.22 % of base) : 16858.dasm - System.Globalization.CalendarData:FixDefaultShortDatePattern(System.Collections.Generic.List`1[System.String]) (Tier0-FullOpts)
           3 (0.18 % of base) : 7447.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (Tier1)
           2 (0.10 % of base) : 3015.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)
           1 (0.09 % of base) : 12742.dasm - System.IPv4AddressHelper:ParseCanonicalName(System.String,int,int,byref):System.String (Tier0-FullOpts)
           2 (0.07 % of base) : 37387.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)

Top method improvements (percentages):
         -31 (-2.10 % of base) : 30113.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -35 (-1.72 % of base) : 687.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
         -40 (-1.49 % of base) : 9193.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
          -4 (-1.18 % of base) : 2908.dasm - System.UInt32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
          -4 (-1.17 % of base) : 25158.dasm - System.Byte:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
          -3 (-1.13 % of base) : 18283.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (Tier1)
          -3 (-1.08 % of base) : 48016.dasm - System.Threading.ReaderWriterLockSlim:GetThreadRWCount(ubyte):System.Threading.ReaderWriterCount:this (Tier1)
          -4 (-0.81 % of base) : 25583.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this (Tier1)
          -7 (-0.77 % of base) : 5440.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,ubyte,System.Number+HexParser`1[ubyte]](System.ReadOnlySpan`1[ushort],int,byref):int (Tier1)
         -31 (-0.72 % of base) : 48710.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -31 (-0.70 % of base) : 48835.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -4 (-0.64 % of base) : 14869.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this (Tier1)
          -2 (-0.55 % of base) : 26758.dasm - System.Number:<NumberToBigInteger>g__ProcessChunk|11_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (Tier1)
          -2 (-0.44 % of base) : 4493.dasm - System.Number:UInt64ToDecStr(ulong):System.String (Tier1)
          -4 (-0.35 % of base) : 52895.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
          -4 (-0.35 % of base) : 44921.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (Tier1)
          -2 (-0.32 % of base) : 12141.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
         -16 (-0.31 % of base) : 55032.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (Tier0-FullOpts)
          -3 (-0.29 % of base) : 26765.dasm - System.Numerics.BigInteger:TryGetBytes(int,System.Span`1[ubyte],ubyte,ubyte,byref):ubyte[]:this (Tier1)
          -1 (-0.28 % of base) : 2717.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (Tier1)


coreclr_tests.run.linux.x64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 247130491 (overridden on cmd)
Total bytes of diff: 247130361 (overridden on cmd)
Total bytes of delta: -130 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          50 : 99153.dasm (3.48 % of base)
          41 : 63398.dasm (1.97 % of base)
          40 : 368914.dasm (1.25 % of base)
          35 : 60415.dasm (6.94 % of base)
          35 : 61012.dasm (6.94 % of base)
          35 : 95878.dasm (6.94 % of base)
          35 : 1698.dasm (6.94 % of base)
          33 : 84507.dasm (13.15 % of base)
          33 : 29243.dasm (13.15 % of base)
          31 : 66638.dasm (6.83 % of base)
          30 : 51415.dasm (4.83 % of base)
          30 : 53335.dasm (6.56 % of base)
          30 : 90558.dasm (4.83 % of base)
          30 : 49916.dasm (4.83 % of base)
          30 : 50486.dasm (4.83 % of base)
          29 : 43356.dasm (11.84 % of base)
          29 : 7252.dasm (11.84 % of base)
          29 : 80324.dasm (11.84 % of base)
          29 : 81316.dasm (11.84 % of base)
          29 : 42056.dasm (11.84 % of base)

Top file improvements (bytes):
         -47 : 50098.dasm (-2.21 % of base)
         -44 : 224417.dasm (-2.46 % of base)
         -44 : 253459.dasm (-2.46 % of base)
         -42 : 84150.dasm (-7.76 % of base)
         -40 : 224433.dasm (-2.31 % of base)
         -40 : 253491.dasm (-2.30 % of base)
         -35 : 370050.dasm (-1.72 % of base)
         -35 : 97020.dasm (-1.70 % of base)
         -32 : 49540.dasm (-6.58 % of base)
         -31 : 49025.dasm (-3.39 % of base)
         -31 : 64302.dasm (-7.26 % of base)
         -29 : 233157.dasm (-1.80 % of base)
         -29 : 233141.dasm (-1.81 % of base)
         -29 : 233205.dasm (-1.83 % of base)
         -29 : 51450.dasm (-6.59 % of base)
         -29 : 68887.dasm (-6.79 % of base)
         -29 : 233173.dasm (-1.81 % of base)
         -29 : 233221.dasm (-1.81 % of base)
         -29 : 233125.dasm (-1.81 % of base)
         -29 : 233189.dasm (-1.82 % of base)

75 total files with Code Size differences (39 improved, 36 regressed), 20 unchanged.

Top method regressions (bytes):
          50 (3.48 % of base) : 99153.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (Instrumented Tier1)
          41 (1.97 % of base) : 63398.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
          40 (1.25 % of base) : 368914.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.RuntimeFunctionsTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
          35 (6.94 % of base) : 60415.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          35 (6.94 % of base) : 61012.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          35 (6.94 % of base) : 95878.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          35 (6.94 % of base) : 1698.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          33 (13.15 % of base) : 84507.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          33 (13.15 % of base) : 29243.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          31 (6.83 % of base) : 66638.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          30 (4.83 % of base) : 51415.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
          30 (4.83 % of base) : 90558.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
          30 (4.83 % of base) : 49916.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
          30 (4.83 % of base) : 50486.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
          30 (6.56 % of base) : 53335.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          29 (11.84 % of base) : 43356.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 7252.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 80324.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 81316.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 42056.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

Top method improvements (bytes):
         -47 (-2.21 % of base) : 50098.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,int](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (Instrumented Tier1)
         -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)
         -42 (-7.76 % of base) : 84150.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
         -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.72 % of base) : 370050.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
         -35 (-1.70 % of base) : 97020.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
         -32 (-6.58 % of base) : 49540.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
         -31 (-3.39 % of base) : 49025.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
         -31 (-7.26 % of base) : 64302.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -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 (-6.59 % of base) : 51450.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)

Top method regressions (percentages):
          26 (14.94 % of base) : 98102.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
          33 (13.15 % of base) : 84507.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          33 (13.15 % of base) : 29243.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          15 (12.61 % of base) : 49985.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          15 (12.61 % of base) : 52971.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          15 (12.61 % of base) : 98663.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          15 (12.61 % of base) : 50542.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          15 (12.61 % of base) : 50730.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          15 (12.61 % of base) : 51708.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          29 (11.84 % of base) : 43356.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 7252.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 80324.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 81316.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 42056.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 46896.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 53260.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 68168.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 68872.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 82408.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (11.84 % of base) : 87040.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

Top method improvements (percentages):
         -13 (-9.70 % of base) : 62645.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -13 (-9.70 % of base) : 92969.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -13 (-9.70 % of base) : 60488.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -13 (-9.70 % of base) : 60831.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -13 (-9.70 % of base) : 95703.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -13 (-9.70 % of base) : 97277.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -13 (-9.70 % of base) : 324024.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -42 (-7.76 % of base) : 84150.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          -9 (-7.44 % of base) : 40815.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -31 (-7.26 % of base) : 64302.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -29 (-6.79 % of base) : 68887.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)
         -32 (-6.58 % of base) : 49540.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
         -26 (-6.13 % of base) : 49256.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -26 (-5.91 % of base) : 50707.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -26 (-5.91 % of base) : 51729.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -26 (-5.91 % of base) : 52989.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -26 (-5.91 % of base) : 98683.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) : 53285.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: 44619341 (overridden on cmd)
Total bytes of diff: 44619085 (overridden on cmd)
Total bytes of delta: -256 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         109 : 170058.dasm (2.14 % of base)
          59 : 110165.dasm (1.16 % of base)
          58 : 233032.dasm (7.82 % of base)
          49 : 40276.dasm (2.67 % of base)
          42 : 20851.dasm (1.14 % of base)
          33 : 124630.dasm (4.51 % of base)
          32 : 152884.dasm (2.11 % of base)
          32 : 20294.dasm (2.51 % of base)
          31 : 223158.dasm (3.32 % of base)
          30 : 117039.dasm (1.79 % of base)
          28 : 15348.dasm (1.76 % of base)
          27 : 41044.dasm (3.81 % of base)
          26 : 116872.dasm (0.60 % of base)
          23 : 22112.dasm (2.11 % of base)
          22 : 190198.dasm (4.39 % of base)
          22 : 190196.dasm (5.99 % of base)
          20 : 153061.dasm (2.14 % of base)
          20 : 73960.dasm (2.14 % of base)
          19 : 190511.dasm (7.34 % of base)
          17 : 7276.dasm (0.75 % of base)

Top file improvements (bytes):
        -272 : 32601.dasm (-0.38 % of base)
         -77 : 183661.dasm (-1.49 % of base)
         -76 : 16438.dasm (-5.22 % of base)
         -61 : 119644.dasm (-2.15 % of base)
         -42 : 128497.dasm (-5.55 % of base)
         -42 : 45449.dasm (-5.55 % of base)
         -37 : 116866.dasm (-0.87 % of base)
         -37 : 232882.dasm (-1.34 % of base)
         -35 : 16764.dasm (-2.04 % of base)
         -23 : 21956.dasm (-0.91 % of base)
         -23 : 255215.dasm (-1.33 % of base)
         -23 : 73643.dasm (-0.42 % of base)
         -20 : 222594.dasm (-0.94 % of base)
         -20 : 233222.dasm (-3.13 % of base)
         -20 : 165426.dasm (-1.06 % of base)
         -20 : 202059.dasm (-1.06 % of base)
         -19 : 236165.dasm (-0.93 % of base)
         -19 : 168340.dasm (-0.94 % of base)
         -18 : 96486.dasm (-0.59 % of base)
         -18 : 15527.dasm (-2.79 % of base)

58 total files with Code Size differences (31 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
         109 (2.14 % of base) : 170058.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
          59 (1.16 % of base) : 110165.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken: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)
          49 (2.67 % of base) : 40276.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)
          42 (1.14 % of base) : 20851.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (FullOpts)
          33 (4.51 % of base) : 124630.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)
          32 (2.11 % of base) : 152884.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable[System.__Canon](System.__Canon,System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]:this (FullOpts)
          32 (2.51 % of base) : 20294.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
          31 (3.32 % of base) : 223158.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteMemberElementsIf(System.Xml.Serialization.ReflectionXmlSerializationReader+Member[],System.Xml.Serialization.ReflectionXmlSerializationReader+Member,System.Xml.Serialization.UnknownNodeAction,System.Xml.Serialization.XmlSerializationReader+Fixup,System.Xml.Serialization.ReflectionXmlSerializationReader+CheckTypeSource):this (FullOpts)
          30 (1.79 % of base) : 117039.dasm - Microsoft.CodeAnalysis.VisualBasic.SymbolDisplayVisitor:AddNameAndTypeArgumentsOrParameters(Microsoft.CodeAnalysis.INamedTypeSymbol,ubyte):this (FullOpts)
          28 (1.76 % of base) : 15348.dasm - System.Decimal+DecCalc:DecAddSub(byref,byref,ubyte) (FullOpts)
          27 (3.81 % of base) : 41044.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):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 (5.99 % of base) : 190196.dasm - System.Linq.Expressions.ExpressionVisitor:Visit[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
          22 (4.39 % of base) : 190198.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.String):System.Collections.ObjectModel.ReadOnlyCollection`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)
          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)
          19 (7.34 % of base) : 190511.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
          17 (0.75 % of base) : 7276.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)

Top method improvements (bytes):
        -272 (-0.38 % of base) : 32601.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
         -77 (-1.49 % of base) : 183661.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -76 (-5.22 % of base) : 16438.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
         -61 (-2.15 % of base) : 119644.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder:BindJoinKeys(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.BoundQueryClauseBase,Microsoft.CodeAnalysis.VisualBasic.BoundQueryClauseBase,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
         -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 (-0.87 % of base) : 116866.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (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)
         -35 (-2.04 % of base) : 16764.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (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)
         -23 (-1.33 % of base) : 255215.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -23 (-0.91 % of base) : 21956.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -20 (-1.06 % of base) : 165426.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
         -20 (-1.06 % of base) : 202059.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
         -20 (-3.13 % of base) : 233222.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -20 (-0.94 % of base) : 222594.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:GenerateMembersElement(System.Object,System.Xml.Serialization.XmlMembersMapping):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)
         -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)
         -18 (-0.59 % of base) : 96486.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)
         -18 (-0.33 % of base) : 96253.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:MakeVarianceConversionSuggestion(int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref,ubyte):ubyte:this (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)
          19 (7.34 % of base) : 190511.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
          22 (5.99 % of base) : 190196.dasm - System.Linq.Expressions.ExpressionVisitor:Visit[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
          33 (4.51 % of base) : 124630.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)
          22 (4.39 % of base) : 190198.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.String):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:this (FullOpts)
           6 (4.32 % of base) : 261630.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
          27 (3.81 % of base) : 41044.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)
          13 (3.43 % of base) : 263801.dasm - System.DirectoryServices.Protocols.LdapConnection:ConstructAttribute(long,long):System.DirectoryServices.Protocols.DirectoryAttribute:this (FullOpts)
          31 (3.32 % of base) : 223158.dasm - System.Xml.Serialization.ReflectionXmlSerializationReader:WriteMemberElementsIf(System.Xml.Serialization.ReflectionXmlSerializationReader+Member[],System.Xml.Serialization.ReflectionXmlSerializationReader+Member,System.Xml.Serialization.UnknownNodeAction,System.Xml.Serialization.XmlSerializationReader+Fixup,System.Xml.Serialization.ReflectionXmlSerializationReader+CheckTypeSource):this (FullOpts)
          49 (2.67 % of base) : 40276.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)
          32 (2.51 % of base) : 20294.dasm - System.TimeZoneInfo:TryGetTimeZone(System.String,ubyte,byref,byref,System.TimeZoneInfo+CachedData,ubyte):int (FullOpts)
           6 (2.19 % of base) : 124310.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AddMemberLookupSymbolsInfoInInterface(Microsoft.CodeAnalysis.CSharp.LookupSymbolsInfo,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):this (FullOpts)
           6 (2.19 % of base) : 40710.dasm - Microsoft.CodeAnalysis.CSharp.Binder:AddMemberLookupSymbolsInfoInInterface(Microsoft.CodeAnalysis.CSharp.LookupSymbolsInfo,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,int,Microsoft.CodeAnalysis.CSharp.Binder,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):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) : 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)
          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)
         109 (2.14 % of base) : 170058.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
          32 (2.11 % of base) : 152884.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable[System.__Canon](System.__Canon,System.__Canon,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberResolutionResult`1[System.__Canon]: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) : 57915.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:AdvanceIfMatches(System.String):ubyte: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)
         -76 (-5.22 % of base) : 16438.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
         -20 (-3.13 % of base) : 233222.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -17 (-2.89 % of base) : 23373.dasm - System.Data.DataColumn:set_Unique(ubyte):this (FullOpts)
         -18 (-2.79 % of base) : 15527.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (FullOpts)
         -61 (-2.15 % of base) : 119644.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder+QueryLambdaBinder:BindJoinKeys(Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.Syntax.JoinClauseSyntax,Microsoft.CodeAnalysis.VisualBasic.BoundQueryClauseBase,Microsoft.CodeAnalysis.VisualBasic.BoundQueryClauseBase,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.RangeVariableSymbol],byref,byref,byref,byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag) (FullOpts)
         -35 (-2.04 % of base) : 16764.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -4 (-1.80 % of base) : 22945.dasm - System.TimeZoneInfo:TZif_GenerateAdjustmentRules(byref,System.TimeSpan,System.DateTime[],ubyte[],System.TimeZoneInfo+TZifType[],System.String) (FullOpts)
         -11 (-1.69 % of base) : 124060.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -11 (-1.69 % of base) : 40431.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindArgumentAndName(Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.Syntax.NameColonSyntax,ubyte):this (FullOpts)
         -77 (-1.49 % of base) : 183661.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte: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)
         -23 (-1.33 % of base) : 255215.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -4 (-1.29 % of base) : 192483.dasm - Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (FullOpts)
          -4 (-1.29 % of base) : 155278.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)
          -8 (-1.21 % of base) : 158748.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList:this (FullOpts)
          -8 (-1.21 % of base) : 195734.dasm - Microsoft.CodeAnalysis.Syntax.SyntaxTriviaListBuilder:ToList():Microsoft.CodeAnalysis.SyntaxTriviaList: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: 60394201 (overridden on cmd)
Total bytes of diff: 60394103 (overridden on cmd)
Total bytes of delta: -98 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          94 : 118023.dasm (1.13 % of base)
          85 : 126683.dasm (1.43 % of base)
          64 : 173831.dasm (8.82 % of base)
          63 : 229731.dasm (13.91 % of base)
          51 : 107744.dasm (3.46 % of base)
          49 : 238496.dasm (4.31 % of base)
          43 : 279298.dasm (4.59 % of base)
          41 : 73152.dasm (0.65 % of base)
          39 : 280155.dasm (1.59 % of base)
          36 : 129853.dasm (0.65 % of base)
          32 : 208429.dasm (5.99 % of base)
          32 : 144125.dasm (5.99 % of base)
          32 : 275925.dasm (3.00 % of base)
          29 : 111513.dasm (0.85 % of base)
          27 : 126662.dasm (3.22 % of base)
          27 : 198659.dasm (0.42 % of base)
          25 : 206960.dasm (3.58 % of base)
          25 : 142537.dasm (3.58 % of base)
          25 : 72730.dasm (0.80 % of base)
          25 : 80380.dasm (1.43 % of base)

Top file improvements (bytes):
        -175 : 173817.dasm (-7.27 % of base)
        -111 : 126692.dasm (-3.57 % of base)
         -56 : 197435.dasm (-0.79 % of base)
         -49 : 197443.dasm (-0.60 % of base)
         -42 : 48513.dasm (-5.52 % of base)
         -41 : 103391.dasm (-1.98 % of base)
         -37 : 126677.dasm (-0.83 % of base)
         -36 : 107055.dasm (-0.88 % of base)
         -36 : 194467.dasm (-1.29 % of base)
         -34 : 193817.dasm (-1.86 % of base)
         -31 : 283525.dasm (-2.09 % of base)
         -29 : 173828.dasm (-0.93 % of base)
         -27 : 51612.dasm (-0.87 % of base)
         -27 : 16775.dasm (-1.38 % of base)
         -25 : 103383.dasm (-0.30 % of base)
         -25 : 222677.dasm (-2.79 % of base)
         -24 : 20844.dasm (-2.07 % of base)
         -24 : 253532.dasm (-2.03 % of base)
         -22 : 239619.dasm (-0.31 % of base)
         -22 : 83386.dasm (-0.83 % of base)

61 total files with Code Size differences (31 improved, 30 regressed), 20 unchanged.

Top method regressions (bytes):
          94 (1.13 % of base) : 118023.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          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)
          51 (3.46 % of base) : 107744.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOperatorOverloadingErrors(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],int,System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)
          49 (4.31 % of base) : 238496.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:WriteElements(System.Object,System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.TextAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,ubyte,ubyte):this (FullOpts)
          43 (4.59 % of base) : 279298.dasm - System.IO.Packaging.ZipPackage+ContentTypeHelper:SaveToFile():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)
          39 (1.59 % of base) : 280155.dasm - System.IO.Pipes.PipeStream:GetPipePath(System.String,System.String):System.String (FullOpts)
          36 (0.65 % 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.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 (3.22 % of base) : 126662.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:EliminateLessApplicableToTheArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,ubyte):int (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)
          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 (1.43 % of base) : 80380.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.Retargeting.RetargetingModuleSymbol+RetargetingSymbolTranslator:Retarget(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol:this (FullOpts)
          25 (0.80 % of base) : 72730.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)

Top method improvements (bytes):
        -175 (-7.27 % of base) : 173817.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
        -111 (-3.57 % 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)
         -56 (-0.79 % of base) : 197435.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -49 (-0.60 % of base) : 197443.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[ubyte]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):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)
         -37 (-0.83 % of base) : 126677.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:AnalyzeNarrowingCandidates(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,byref):int (FullOpts)
         -36 (-0.88 % 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)
         -36 (-1.29 % of base) : 194467.dasm - System.Text.Json.Utf8JsonReader:UnescapeSequenceAndCompare(System.ReadOnlySpan`1[ubyte]):ubyte:this (FullOpts)
         -34 (-1.86 % of base) : 193817.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -31 (-2.09 % of base) : 283525.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (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 (-0.30 % of base) : 103383.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:MakeVarianceConversionSuggestion(int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref,ubyte):ubyte:this (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)
         -24 (-2.03 % 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)
         -24 (-2.07 % of base) : 20844.dasm - System.Globalization.TextInfo:ChangeCaseCommon[ubyte](System.String):System.String:this (FullOpts)
         -22 (-0.83 % of base) : 83386.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventData:GetPayloadValueAt(byref,int,int):System.Object:this (FullOpts)
         -22 (-0.31 % of base) : 239619.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,ubyte):this (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)
          19 (7.69 % of base) : 191951.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression[] (FullOpts)
          19 (6.83 % of base) : 191952.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (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)
          43 (4.59 % of base) : 279298.dasm - System.IO.Packaging.ZipPackage+ContentTypeHelper:SaveToFile():this (FullOpts)
           6 (4.35 % of base) : 247191.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
          49 (4.31 % of base) : 238496.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:WriteElements(System.Object,System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.TextAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,ubyte,ubyte):this (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)
          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)
          51 (3.46 % of base) : 107744.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceMemberContainerTypeSymbol:CheckForOperatorOverloadingErrors(System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol],int,System.Collections.Generic.Dictionary`2+Enumerator[System.String,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.Symbol]],byref,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):ubyte:this (FullOpts)
           6 (3.30 % of base) : 240930.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
          27 (3.22 % of base) : 126662.dasm - Microsoft.CodeAnalysis.VisualBasic.OverloadResolution:EliminateLessApplicableToTheArguments(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.OverloadResolution+CandidateAnalysisResult],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,ubyte,Microsoft.CodeAnalysis.VisualBasic.Binder,byref,ubyte):int (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)
          12 (2.48 % of base) : 285409.dasm - System.Net.CookieContainer:MergeUpdateCollections(byref,System.Net.CookieCollection,int,ubyte,ubyte):this (FullOpts)
          19 (2.33 % of base) : 43969.dasm - Microsoft.CodeAnalysis.CSharp.Binder:CheckWhatCandidatesWeHave(Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,System.String,int,byref,byref,byref,byref):this (FullOpts)
          10 (2.27 % of base) : 189479.dasm - System.Linq.Expressions.ExpressionVisitor:Visit[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (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)
        -175 (-7.27 % of base) : 173817.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
         -17 (-6.20 % of base) : 257342.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
         -17 (-6.20 % of base) : 187886.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
         -42 (-5.52 % of base) : 48513.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -20 (-3.91 % of base) : 236363.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
        -111 (-3.57 % 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)
          -6 (-3.16 % of base) : 10495.dasm - Microsoft.FSharp.Collections.ListModule:Sum$W[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Numerics.Vector`1[float]],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]],Microsoft.FSharp.Collections.FSharpList`1[System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float] (FullOpts)
         -20 (-3.10 % of base) : 283516.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
          -4 (-3.03 % of base) : 18885.dasm - System.SpanHelpers:SequenceCompareTo[ubyte](byref,int,byref,int):int (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)
         -31 (-2.09 % of base) : 283525.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -24 (-2.07 % of base) : 20844.dasm - System.Globalization.TextInfo:ChangeCaseCommon[ubyte](System.String):System.String:this (FullOpts)
         -24 (-2.03 % 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)
         -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)
         -34 (-1.86 % of base) : 193817.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
          -5 (-1.71 % of base) : 198376.dasm - Internal.TypeSystem.TypeSystemContext:ComputeTypeFlags(Internal.TypeSystem.TypeDesc,int,int):int:this (FullOpts)
          -8 (-1.57 % of base) : 103509.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:IsNamespaceGroupIncludesButNotEquivalentTo(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol):ubyte (FullOpts)


libraries_tests.run.linux.x64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os linux -target_arch x64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 31730283 (overridden on cmd)
Total bytes of diff: 31748405 (overridden on cmd)
Total bytes of delta: 18122 (0.06 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         303 : 60712.dasm (11.69 % of base)
          90 : 54683.dasm (3.57 % of base)
          86 : 53521.dasm (3.41 % of base)
          81 : 34417.dasm (3.14 % of base)
          77 : 72172.dasm (3.00 % of base)
          72 : 34267.dasm (2.82 % of base)
          68 : 37580.dasm (2.64 % of base)
          68 : 47028.dasm (2.64 % of base)
          68 : 56564.dasm (2.64 % of base)
          68 : 26672.dasm (2.64 % of base)
          68 : 55216.dasm (2.64 % of base)
          68 : 75719.dasm (2.64 % of base)
          68 : 76255.dasm (2.64 % of base)
          68 : 81611.dasm (2.64 % of base)
          68 : 21860.dasm (2.64 % of base)
          68 : 61652.dasm (2.64 % of base)
          68 : 62552.dasm (2.64 % of base)
          68 : 68140.dasm (2.64 % of base)
          68 : 68252.dasm (2.64 % of base)
          68 : 68948.dasm (2.64 % of base)

Top file improvements (bytes):
         -32 : 68971.dasm (-4.87 % of base)
         -32 : 60038.dasm (-4.99 % of base)
         -32 : 51588.dasm (-4.28 % of base)
         -31 : 52678.dasm (-2.09 % of base)
         -31 : 52971.dasm (-2.04 % of base)
         -29 : 80857.dasm (-1.11 % of base)
         -21 : 2944.dasm (-2.15 % of base)
         -20 : 9456.dasm (-4.81 % of base)
         -19 : 52930.dasm (-2.35 % of base)
         -19 : 23071.dasm (-4.51 % of base)
         -18 : 24281.dasm (-2.26 % of base)
         -18 : 6410.dasm (-4.31 % of base)
         -18 : 71733.dasm (-4.31 % of base)
         -18 : 74233.dasm (-2.26 % of base)
         -18 : 7911.dasm (-4.31 % of base)
         -18 : 33828.dasm (-4.31 % of base)
         -18 : 35850.dasm (-4.31 % of base)
         -18 : 66579.dasm (-4.31 % of base)
         -18 : 71893.dasm (-4.31 % of base)
         -18 : 16434.dasm (-2.26 % of base)

88 total files with Code Size differences (34 improved, 54 regressed), 20 unchanged.

Top method regressions (bytes):
         303 (11.69 % of base) : 60712.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          90 (3.57 % of base) : 54683.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          86 (3.41 % of base) : 53521.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          81 (3.14 % of base) : 34417.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          77 (3.00 % of base) : 72172.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          72 (2.82 % of base) : 34267.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 37580.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 47028.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 56564.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 26672.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 55216.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 75719.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 76255.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 81611.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 21860.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 61652.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 62552.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 68140.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 68252.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          68 (2.64 % of base) : 68948.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):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.99 % of base) : 60038.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)
         -31 (-2.09 % of base) : 52678.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -31 (-2.04 % of base) : 52971.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -29 (-1.11 % of base) : 80857.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -21 (-2.15 % of base) : 2944.dasm - System.Diagnostics.Tracing.EventListener:AddEventSource(System.Diagnostics.Tracing.EventSource) (Tier1)
         -20 (-4.81 % of base) : 9456.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -19 (-2.35 % of base) : 52930.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[ushort]:ToArray():ushort[]:this (Tier1-OSR)
         -19 (-4.51 % of base) : 23071.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) : 71733.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) : 33828.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) : 66579.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) : 4050.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -18 (-4.31 % of base) : 42972.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)

Top method regressions (percentages):
         303 (11.69 % of base) : 60712.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          25 (10.20 % of base) : 8129.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          19 (7.28 % of base) : 11288.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          19 (7.28 % of base) : 10048.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          19 (7.28 % of base) : 9704.dasm - System.SpanHelpers:LastIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          35 (6.94 % of base) : 31538.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          35 (6.94 % of base) : 6963.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          29 (6.09 % of base) : 49460.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          29 (6.09 % of base) : 58295.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          29 (6.09 % of base) : 71925.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          29 (6.09 % of base) : 37764.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          29 (6.09 % of base) : 35795.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          28 (5.88 % of base) : 20755.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          26 (5.46 % of base) : 66661.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          26 (5.46 % of base) : 76615.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          26 (5.46 % of base) : 34039.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          26 (5.46 % of base) : 36309.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
          10 (4.78 % of base) : 120.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
          24 (4.77 % of base) : 40783.dasm - System.SpanHelpers:IndexOfNullCharacter(ulong):int (Tier1)
           8 (4.73 % of base) : 9184.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (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)
         -20 (-4.81 % of base) : 9456.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (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) : 10091.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) : 71733.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) : 33828.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) : 66579.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) : 4050.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -18 (-4.31 % of base) : 42972.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) : 7696.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)
         -18 (-4.31 % of base) : 51549.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -32 (-4.28 % of base) : 51588.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (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: 130013252 (overridden on cmd)
Total bytes of diff: 130012553 (overridden on cmd)
Total bytes of delta: -699 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         114 : 275637.dasm (4.33 % of base)
          69 : 31535.dasm (1.93 % of base)
          64 : 60115.dasm (8.82 % of base)
          63 : 61432.dasm (13.91 % of base)
          63 : 145787.dasm (2.86 % of base)
          63 : 291579.dasm (3.79 % of base)
          49 : 61370.dasm (4.31 % of base)
          46 : 277699.dasm (1.51 % of base)
          44 : 266818.dasm (3.43 % of base)
          44 : 267078.dasm (3.37 % of base)
          43 : 127721.dasm (4.59 % of base)
          42 : 285170.dasm (1.68 % of base)
          40 : 266624.dasm (3.13 % of base)
          40 : 267155.dasm (3.13 % of base)
          39 : 277556.dasm (2.23 % of base)
          39 : 291504.dasm (2.33 % of base)
          39 : 291528.dasm (2.33 % of base)
          39 : 291538.dasm (2.33 % of base)
          39 : 291550.dasm (2.33 % of base)
          39 : 291560.dasm (2.33 % of base)

Top file improvements (bytes):
        -171 : 58206.dasm (-7.73 % of base)
        -128 : 276038.dasm (-4.45 % of base)
        -111 : 277551.dasm (-3.09 % of base)
         -92 : 277443.dasm (-4.49 % of base)
         -82 : 12678.dasm (-1.78 % of base)
         -80 : 277317.dasm (-5.31 % of base)
         -77 : 277677.dasm (-1.99 % of base)
         -56 : 232383.dasm (-0.76 % of base)
         -50 : 274022.dasm (-1.65 % of base)
         -50 : 276894.dasm (-3.27 % of base)
         -50 : 291815.dasm (-1.65 % of base)
         -50 : 291841.dasm (-1.65 % of base)
         -49 : 145853.dasm (-2.37 % of base)
         -49 : 235834.dasm (-0.61 % of base)
         -47 : 272450.dasm (-2.60 % of base)
         -43 : 6617.dasm (-0.85 % of base)
         -43 : 277662.dasm (-3.45 % of base)
         -42 : 23935.dasm (-5.52 % of base)
         -41 : 6112.dasm (-0.57 % of base)
         -40 : 272434.dasm (-2.17 % of base)

64 total files with Code Size differences (31 improved, 33 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)
          69 (1.93 % of base) : 31535.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):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 (2.86 % of base) : 145787.dasm - System.SpanTests.SpanTests:RunIndexOfAnyAlgComplexityTest[ushort](ushort[]) (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)
          49 (4.31 % of base) : 61370.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:WriteElements(System.Object,System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.TextAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,ubyte,ubyte):this (FullOpts)
          46 (1.51 % of base) : 277699.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5174_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          44 (3.37 % of base) : 267078.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTextEqualsTooLargeToMatch(System.String) (FullOpts)
          44 (3.43 % of base) : 266818.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TextMismatchSameLength(System.String,System.String) (FullOpts)
          43 (4.59 % of base) : 127721.dasm - System.IO.Packaging.ZipPackage+ContentTypeHelper:SaveToFile():this (FullOpts)
          42 (1.68 % of base) : 285170.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31382_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          40 (3.13 % of base) : 267155.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTextEquals(System.String,System.String,ubyte) (FullOpts)
          40 (3.13 % of base) : 266624.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTextEqualsValue(System.String,System.String,ubyte) (FullOpts)
          39 (2.23 % of base) : 277556.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29474_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          39 (2.33 % of base) : 291504.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32899_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          39 (2.33 % of base) : 291528.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32901_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          39 (2.33 % of base) : 291538.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32902_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          39 (2.33 % of base) : 291550.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32903_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          39 (2.33 % of base) : 291560.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32904_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (bytes):
        -171 (-7.73 % of base) : 58206.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
        -128 (-4.45 % of base) : 276038.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4137_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)
         -82 (-1.78 % of base) : 12678.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2_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)
         -77 (-1.99 % of base) : 277677.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5141_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -56 (-0.76 % of base) : 232383.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.__Canon]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -50 (-1.65 % of base) : 274022.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex29125_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -50 (-1.65 % of base) : 291815.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32921_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -50 (-1.65 % of base) : 291841.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex32922_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)
         -49 (-2.37 % of base) : 145853.dasm - System.SpanTests.SpanTests:TestMatchIndexOfAny_ManyInteger() (FullOpts)
         -49 (-0.61 % of base) : 235834.dasm - System.Text.Json.Serialization.Converters.ObjectWithParameterizedConstructorConverter`1[System.Collections.Generic.KeyValuePair`2[int,int]]:OnTryRead(byref,System.Type,System.Text.Json.JsonSerializerOptions,byref,byref):ubyte:this (FullOpts)
         -47 (-2.60 % of base) : 272450.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex28946_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -43 (-0.85 % of base) : 6617.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult: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)
         -42 (-5.52 % of base) : 23935.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentCompiler:WriteFormattedMultiLineComment(System.String[],int):this (FullOpts)
         -41 (-0.57 % of base) : 6112.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol: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)

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)
          19 (7.69 % of base) : 135608.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression[] (FullOpts)
          19 (6.83 % of base) : 37410.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
          43 (4.59 % of base) : 127721.dasm - System.IO.Packaging.ZipPackage+ContentTypeHelper:SaveToFile():this (FullOpts)
           6 (4.35 % of base) : 115567.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):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)
          49 (4.31 % of base) : 61370.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:WriteElements(System.Object,System.Xml.Serialization.ElementAccessor[],System.Xml.Serialization.TextAccessor,System.Xml.Serialization.ChoiceIdentifierAccessor,ubyte,ubyte):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)
           9 (3.73 % of base) : 36464.dasm - DryIoc.Scope:GetOrAddViaFactoryDelegate(int,DryIoc.FactoryDelegate,DryIoc.IResolverContext,int):System.Object:this (FullOpts)
          44 (3.43 % of base) : 266818.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TextMismatchSameLength(System.String,System.String) (FullOpts)
          18 (3.41 % of base) : 135519.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.String):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:this (FullOpts)
          44 (3.37 % of base) : 267078.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTextEqualsTooLargeToMatch(System.String) (FullOpts)
          40 (3.13 % of base) : 267155.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTextEquals(System.String,System.String,ubyte) (FullOpts)
          40 (3.13 % of base) : 266624.dasm - System.Text.Json.Tests.Utf8JsonReaderTests:TestTextEqualsValue(System.String,System.String,ubyte) (FullOpts)
          32 (3.00 % of base) : 149873.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
           9 (2.97 % of base) : 184869.dasm - System.Reflection.Tests.TypeInfoDeclaredMemberTests:VerifyMembers(System.Type,System.String[]) (FullOpts)
           9 (2.97 % of base) : 184592.dasm - System.Reflection.Tests.TypeInfoDeclaredMethodTests:VerifyMethods(System.Type,System.String[]) (FullOpts)
          63 (2.86 % of base) : 145787.dasm - System.SpanTests.SpanTests:RunIndexOfAnyAlgComplexityTest[ushort](ushort[]) (FullOpts)
          11 (2.68 % of base) : 53785.dasm - System.Diagnostics.Activity+BaggageLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.String]):this (FullOpts)

Top method improvements (percentages):
        -171 (-7.73 % of base) : 58206.dasm - Microsoft.VisualBasic.CompilerServices.OverloadResolution:InsertIfMethodAvailable(System.Reflection.MemberInfo,System.Reflection.ParameterInfo[],int,ubyte,System.Object[],int,System.String[],System.Type[],ubyte,System.Collections.Generic.List`1[Microsoft.VisualBasic.CompilerServices.Symbols+Method],Microsoft.VisualBasic.CompilerServices.Symbols+Container) (FullOpts)
         -17 (-6.20 % of base) : 179350.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (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)
         -30 (-4.64 % of base) : 277510.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4901_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)
        -128 (-4.45 % of base) : 276038.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4137_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -20 (-3.91 % of base) : 170822.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
         -26 (-3.46 % of base) : 44654.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
         -26 (-3.45 % of base) : 52193.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte: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)
         -39 (-3.12 % of base) : 276097.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4493_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -20 (-3.10 % of base) : 147514.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):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)
         -16 (-2.89 % 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)
         -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) : 275077.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1583_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: 13219489 (overridden on cmd)
Total bytes of diff: 13218850 (overridden on cmd)
Total bytes of delta: -639 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          98 : 1263.dasm (1.00 % of base)
          89 : 9554.dasm (3.03 % of base)
          77 : 7741.dasm (3.31 % of base)
          68 : 17757.dasm (1.82 % of base)
          53 : 1385.dasm (0.32 % of base)
          30 : 12271.dasm (1.17 % of base)
          28 : 19665.dasm (1.53 % of base)
          25 : 1600.dasm (1.83 % of base)
          22 : 17572.dasm (1.22 % of base)
          22 : 12272.dasm (0.69 % of base)
          18 : 16721.dasm (1.88 % of base)
          17 : 19684.dasm (0.28 % of base)
          17 : 20255.dasm (0.61 % of base)
          17 : 923.dasm (0.76 % of base)
          11 : 20066.dasm (1.16 % of base)
          11 : 13201.dasm (0.76 % of base)
          10 : 27041.dasm (0.47 % of base)
          10 : 32265.dasm (2.27 % of base)
           9 : 11846.dasm (0.43 % of base)
           8 : 20808.dasm (0.14 % of base)

Top file improvements (bytes):
        -291 : 1361.dasm (-2.11 % of base)
        -261 : 1351.dasm (-1.50 % of base)
        -168 : 1381.dasm (-1.07 % of base)
        -124 : 1369.dasm (-1.48 % of base)
         -79 : 12566.dasm (-1.65 % of base)
         -53 : 8886.dasm (-5.84 % of base)
         -41 : 15928.dasm (-1.07 % of base)
         -40 : 4746.dasm (-1.49 % of base)
         -37 : 18943.dasm (-0.51 % of base)
         -36 : 19519.dasm (-0.76 % of base)
         -35 : 59.dasm (-1.72 % of base)
         -29 : 22574.dasm (-0.46 % of base)
         -27 : 20047.dasm (-0.55 % of base)
         -22 : 13456.dasm (-0.29 % of base)
         -18 : 15283.dasm (-2.82 % of base)
         -12 : 1362.dasm (-0.28 % of base)
         -12 : 1356.dasm (-1.17 % of base)
         -11 : 1364.dasm (-0.13 % of base)
         -10 : 9657.dasm (-0.44 % of base)
          -7 : 20345.dasm (-0.26 % of base)

52 total files with Code Size differences (27 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
          98 (1.00 % of base) : 1263.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.BoxSupportFinder,BepuPhysics.Collidables.Triangle,BepuPhysics.Collidables.TriangleWide,BepuPhysics.Collidables.TriangleSupportFinder]:FindClosestPoint(byref,byref,byref,byref,byref) (FullOpts)
          89 (3.03 % of base) : 9554.dasm - FSharp.Compiler.CheckExpressions:TcLetrecBindings(FSharp.Compiler.CheckExpressions+OverridesOK,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+RecDefnBindingInfo],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
          77 (3.31 % of base) : 7741.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TcMutRecDefns_ComputeEnvs@2284-1[System.__Canon,System.__Canon]:Invoke(FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):FSharp.Compiler.CheckExpressions+TcEnv:this (FullOpts)
          68 (1.82 % of base) : 17757.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          53 (0.32 % of base) : 1385.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
          30 (1.17 % of base) : 12271.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerUtilities:SecondPass[SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle) (FullOpts)
          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)
          25 (1.83 % of base) : 1600.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact2PrestepData,BepuPhysics.Constraints.Contact.Contact2AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
          22 (1.22 % of base) : 17572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:TryParseLocalFunctionStatementBody(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LocalFunctionStatementSyntax:this (FullOpts)
          22 (0.69 % of base) : 12272.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.OrderedDither:ApplyQuantizationDither[SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
          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)
          17 (0.76 % of base) : 923.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (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)
          11 (0.76 % of base) : 13201.dasm - Microsoft.ML.Data.TextLoader+Parser+HelperImpl:FetchNextField(byref,System.ReadOnlySpan`1[ushort]):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)
          10 (2.27 % of base) : 32265.dasm - System.Linq.Expressions.ExpressionVisitor:Visit[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
           9 (0.43 % of base) : 11846.dasm - SixLabors.ImageSharp.Formats.Png.PngDecoderCore:DecodePixelData[SixLabors.ImageSharp.PixelFormats.Rgba32](System.IO.Compression.DeflateStream,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Formats.Png.PngMetadata):this (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)

Top method improvements (bytes):
        -291 (-2.11 % of base) : 1361.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
        -261 (-1.50 % of base) : 1351.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
        -168 (-1.07 % of base) : 1381.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
        -124 (-1.48 % of base) : 1369.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -79 (-1.65 % of base) : 12566.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:ParseProgressiveDataNonInterleaved():this (FullOpts)
         -53 (-5.84 % of base) : 8886.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
         -41 (-1.07 % of base) : 15928.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
         -40 (-1.49 % of base) : 4746.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -37 (-0.51 % of base) : 18943.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -36 (-0.76 % of base) : 19519.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult: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)
         -27 (-0.55 % of base) : 20047.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (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)
         -18 (-2.82 % of base) : 15283.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (FullOpts)
         -12 (-0.28 % of base) : 1362.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CapsuleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -12 (-1.17 % of base) : 1356.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
         -11 (-0.13 % of base) : 1364.dasm - BepuPhysics.CollisionDetection.CollisionTasks.CylinderConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -10 (-0.44 % of base) : 9657.dasm - FSharp.Compiler.CheckExpressions:TcIncrementalLetRecGeneralization(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]):System.Tuple`5[FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]] (FullOpts)
          -7 (-0.26 % of base) : 20345.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)

Top method regressions (percentages):
          77 (3.31 % of base) : 7741.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TcMutRecDefns_ComputeEnvs@2284-1[System.__Canon,System.__Canon]:Invoke(FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):FSharp.Compiler.CheckExpressions+TcEnv:this (FullOpts)
          89 (3.03 % of base) : 9554.dasm - FSharp.Compiler.CheckExpressions:TcLetrecBindings(FSharp.Compiler.CheckExpressions+OverridesOK,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+RecDefnBindingInfo],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
          10 (2.27 % of base) : 32265.dasm - System.Linq.Expressions.ExpressionVisitor:Visit[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
           2 (2.11 % of base) : 17888.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SlidingTextWindow:AdvanceIfMatches(System.String):ubyte: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)
          25 (1.83 % of base) : 1600.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact2PrestepData,BepuPhysics.Constraints.Contact.Contact2AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
          68 (1.82 % of base) : 17757.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
           3 (1.65 % of base) : 16514.dasm - Roslyn.Utilities.TextKeyedCache`1[System.__Canon]:AddSharedEntry(int,Roslyn.Utilities.TextKeyedCache`1+SharedEntryValue[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)
          22 (1.22 % of base) : 17572.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:TryParseLocalFunctionStatementBody(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LocalFunctionStatementSyntax:this (FullOpts)
          30 (1.17 % of base) : 12271.dasm - SixLabors.ImageSharp.Processing.Processors.Quantization.QuantizerUtilities:SecondPass[SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle) (FullOpts)
          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)
          98 (1.00 % of base) : 1263.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.BoxSupportFinder,BepuPhysics.Collidables.Triangle,BepuPhysics.Collidables.TriangleWide,BepuPhysics.Collidables.TriangleSupportFinder]:FindClosestPoint(byref,byref,byref,byref,byref) (FullOpts)
           4 (0.96 % 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 (0.76 % of base) : 13201.dasm - Microsoft.ML.Data.TextLoader+Parser+HelperImpl:FetchNextField(byref,System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
          17 (0.76 % of base) : 923.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           2 (0.74 % of base) : 26338.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentIDVisitor+PartVisitor:VisitTypeParameter(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,System.Text.StringBuilder):System.Object:this (FullOpts)
          22 (0.69 % of base) : 12272.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.OrderedDither:ApplyQuantizationDither[SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)
          17 (0.61 % of base) : 20255.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
           5 (0.61 % of base) : 26315.dasm - Microsoft.CodeAnalysis.CSharp.Binder:ConstructWithCrefTypeParameters(int,Microsoft.CodeAnalysis.CSharp.Syntax.TypeArgumentListSyntax,Microsoft.CodeAnalysis.CSharp.Symbol):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)

Top method improvements (percentages):
         -53 (-5.84 % of base) : 8886.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
         -18 (-2.82 % of base) : 15283.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (FullOpts)
        -291 (-2.11 % of base) : 1361.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -35 (-1.72 % of base) : 59.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (FullOpts)
         -79 (-1.65 % of base) : 12566.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:ParseProgressiveDataNonInterleaved():this (FullOpts)
        -261 (-1.50 % of base) : 1351.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -40 (-1.49 % of base) : 4746.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
        -124 (-1.48 % of base) : 1369.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
          -4 (-1.24 % of base) : 24387.dasm - Microsoft.CodeAnalysis.BitVector:AllSet(int):Microsoft.CodeAnalysis.BitVector (FullOpts)
         -12 (-1.17 % of base) : 1356.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
          -3 (-1.13 % of base) : 30661.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts)
         -41 (-1.07 % of base) : 15928.dasm - Microsoft.ML.Internal.Utilities.VBufferUtils:ApplyWithCore[float,float](byref,byref,Microsoft.ML.Internal.Utilities.VBufferUtils+PairManipulator`2[float,float],ubyte) (FullOpts)
        -168 (-1.07 % of base) : 1381.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -36 (-0.76 % of base) : 19519.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolution:IsApplicable(Microsoft.CodeAnalysis.CSharp.Symbol,Microsoft.CodeAnalysis.CSharp.OverloadResolution+EffectiveParameters,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[int],ubyte,ubyte,ubyte,ubyte,byref):Microsoft.CodeAnalysis.CSharp.MemberAnalysisResult:this (FullOpts)
          -2 (-0.75 % of base) : 15923.dasm - Microsoft.ML.Data.VBuffer`1[float]:GetItemOrDefault(int,byref):this (FullOpts)
          -4 (-0.58 % of base) : 265.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[int](int):this (FullOpts)
         -27 (-0.55 % of base) : 20047.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (FullOpts)
         -37 (-0.51 % of base) : 18943.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
          -2 (-0.48 % of base) : 17763.dasm - System.Number:<NumberToBigInteger>g__ProcessChunk|11_4(System.ReadOnlySpan`1[ubyte],byref,byref,byref):ubyte (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)


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: 4228743 (overridden on cmd)
Total bytes of diff: 4228761 (overridden on cmd)
Total bytes of delta: 18 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          64 : 21517.dasm (3.00 % of base)
          64 : 24962.dasm (3.00 % of base)
          64 : 5107.dasm (3.00 % of base)
          64 : 18824.dasm (3.00 % of base)
          22 : 7468.dasm (6.67 % of base)
          22 : 8100.dasm (5.08 % of base)
          19 : 6249.dasm (7.25 % of base)
          14 : 8119.dasm (5.58 % of base)
          11 : 21625.dasm (0.40 % of base)
          11 : 577.dasm (0.40 % of base)
          11 : 16737.dasm (0.40 % of base)
          11 : 19426.dasm (0.40 % of base)
          11 : 22881.dasm (0.40 % of base)
           7 : 19438.dasm (0.33 % of base)
           7 : 22884.dasm (0.33 % of base)
           7 : 21627.dasm (0.33 % of base)
           7 : 578.dasm (0.33 % of base)
           7 : 16741.dasm (0.33 % of base)
           4 : 19254.dasm (0.31 % of base)
           4 : 22690.dasm (0.31 % of base)

Top file improvements (bytes):
         -59 : 1940.dasm (-1.55 % of base)
         -39 : 19868.dasm (-2.36 % of base)
         -39 : 23310.dasm (-2.36 % of base)
         -39 : 17163.dasm (-2.36 % of base)
         -39 : 1373.dasm (-2.37 % of base)
         -31 : 25600.dasm (-1.97 % of base)
         -17 : 21911.dasm (-0.93 % of base)
         -17 : 2376.dasm (-0.93 % of base)
         -17 : 25802.dasm (-2.58 % of base)
         -16 : 8175.dasm (-0.77 % of base)
         -15 : 16731.dasm (-0.78 % of base)
         -15 : 574.dasm (-0.78 % of base)
         -15 : 19402.dasm (-0.78 % of base)
         -15 : 22878.dasm (-0.78 % of base)
          -8 : 17570.dasm (-0.63 % of base)
          -8 : 20267.dasm (-0.63 % of base)
          -8 : 1978.dasm (-0.63 % of base)
          -8 : 23715.dasm (-0.63 % of base)
          -7 : 12510.dasm (-1.05 % of base)
          -5 : 3162.dasm (-2.16 % of base)

50 total files with Code Size differences (26 improved, 24 regressed), 20 unchanged.

Top method regressions (bytes):
          64 (3.00 % of base) : 21517.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
          64 (3.00 % of base) : 24962.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
          64 (3.00 % of base) : 5107.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
          64 (3.00 % of base) : 18824.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
          22 (6.67 % of base) : 7468.dasm - System.Linq.Expressions.ExpressionVisitor:Visit[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
          22 (5.08 % of base) : 8100.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.String):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:this (FullOpts)
          19 (7.25 % of base) : 6249.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
          14 (5.58 % of base) : 8119.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression[] (FullOpts)
          11 (0.40 % of base) : 21625.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
          11 (0.40 % of base) : 577.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
          11 (0.40 % of base) : 16737.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
          11 (0.40 % of base) : 19426.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
          11 (0.40 % of base) : 22881.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           7 (0.33 % of base) : 19438.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           7 (0.33 % of base) : 22884.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           7 (0.33 % of base) : 21627.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           7 (0.33 % of base) : 578.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           7 (0.33 % of base) : 16741.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           4 (0.35 % of base) : 505.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,byte](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts)
           4 (0.31 % of base) : 19254.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,short](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts)

Top method improvements (bytes):
         -59 (-1.55 % of base) : 1940.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
         -39 (-2.36 % of base) : 19868.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
         -39 (-2.36 % of base) : 23310.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
         -39 (-2.36 % of base) : 17163.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
         -39 (-2.37 % of base) : 1373.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
         -31 (-1.97 % of base) : 25600.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (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)
         -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 (-2.58 % of base) : 25802.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (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)
         -15 (-0.78 % of base) : 16731.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -15 (-0.78 % of base) : 574.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -15 (-0.78 % of base) : 19402.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -15 (-0.78 % of base) : 22878.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
          -8 (-0.63 % of base) : 17570.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
          -8 (-0.63 % of base) : 20267.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
          -8 (-0.63 % of base) : 1978.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
          -8 (-0.63 % of base) : 23715.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
          -7 (-1.05 % of base) : 12510.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,ulong,System.Number+BinaryParser`1[ulong]](System.ReadOnlySpan`1[ushort],int,byref):int (FullOpts)
          -5 (-2.16 % of base) : 3162.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CanInstantiationsShareCode(System.RuntimeTypeHandle[],System.RuntimeTypeHandle[],int):ubyte:this (FullOpts)

Top method regressions (percentages):
          19 (7.25 % of base) : 6249.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitParameters(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.IParameterProvider,System.String):System.Linq.Expressions.ParameterExpression[] (FullOpts)
          22 (6.67 % of base) : 7468.dasm - System.Linq.Expressions.ExpressionVisitor:Visit[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.Func`2[System.__Canon,System.__Canon]):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon] (FullOpts)
          14 (5.58 % of base) : 8119.dasm - System.Dynamic.Utils.ExpressionVisitorUtils:VisitBlockExpressions(System.Linq.Expressions.ExpressionVisitor,System.Linq.Expressions.BlockExpression):System.Linq.Expressions.Expression[] (FullOpts)
          22 (5.08 % of base) : 8100.dasm - System.Linq.Expressions.ExpressionVisitor:VisitAndConvert[System.__Canon](System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon],System.String):System.Collections.ObjectModel.ReadOnlyCollection`1[System.__Canon]:this (FullOpts)
          64 (3.00 % of base) : 21517.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
          64 (3.00 % of base) : 24962.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
          64 (3.00 % of base) : 5107.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
          64 (3.00 % of base) : 18824.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo]:TryInsert(System.ReadOnlyMemory`1[ushort],System.ConsoleKeyInfo,ubyte):ubyte:this (FullOpts)
           3 (0.59 % of base) : 5791.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)
           2 (0.42 % of base) : 4493.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
           2 (0.41 % of base) : 22156.dasm - System.Globalization.GregorianCalendarHelper:GetYearOffset(int,int,ubyte):int:this (FullOpts)
          11 (0.40 % of base) : 577.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
          11 (0.40 % of base) : 16737.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
          11 (0.40 % of base) : 19426.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
          11 (0.40 % of base) : 22881.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
          11 (0.40 % of base) : 21625.dasm - System.Text.UnicodeEncoding:GetBytes(ulong,int,ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           4 (0.35 % of base) : 505.dasm - System.Number:TryParseBinaryIntegerStyle[ushort,byte](System.ReadOnlySpan`1[ushort],int,System.Globalization.NumberFormatInfo,byref):int (FullOpts)
           7 (0.33 % of base) : 19438.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           7 (0.33 % of base) : 22884.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)
           7 (0.33 % of base) : 578.dasm - System.Text.UnicodeEncoding:GetByteCount(ulong,int,System.Text.EncoderNLS):int:this (FullOpts)

Top method improvements (percentages):
         -17 (-2.58 % of base) : 25802.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
         -39 (-2.37 % of base) : 1373.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
         -39 (-2.36 % of base) : 19868.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
         -39 (-2.36 % of base) : 23310.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
         -39 (-2.36 % of base) : 17163.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
          -5 (-2.16 % of base) : 3162.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:CanInstantiationsShareCode(System.RuntimeTypeHandle[],System.RuntimeTypeHandle[],int):ubyte:this (FullOpts)
          -4 (-1.99 % of base) : 5102.dasm - System.TimeZoneInfo:TZif_GenerateAdjustmentRules(byref,System.TimeSpan,System.DateTime[],ubyte[],System.TimeZoneInfo+TZifType[],System.String) (FullOpts)
         -31 (-1.97 % of base) : 25600.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -59 (-1.55 % of base) : 1940.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          -3 (-1.08 % of base) : 4458.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts)
          -3 (-1.06 % of base) : 18546.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts)
          -3 (-1.06 % of base) : 21240.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts)
          -3 (-1.06 % of base) : 24673.dasm - System.Globalization.CalendarData:EnumDatePatterns(System.String,ushort,int,byref):ubyte (FullOpts)
          -7 (-1.05 % of base) : 12510.dasm - System.Number:TryParseBinaryIntegerHexOrBinaryNumberStyle[ushort,ulong,System.Number+BinaryParser`1[ulong]](System.ReadOnlySpan`1[ushort],int,byref):int (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)
          -3 (-0.79 % of base) : 4599.dasm - System.String:MakeSeparatorListAny(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[System.String],byref,byref) (FullOpts)
         -15 (-0.78 % of base) : 16731.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -15 (-0.78 % of base) : 574.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -15 (-0.78 % of base) : 19402.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)



osx arm64

Diffs are based on 1,733,619 contexts (561,303 MinOpts, 1,172,316 FullOpts).

MISSED contexts: 2,902 (0.17%)

Overall (-6,016 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,101,028 +20
benchmarks.run_pgo.osx.arm64.checked.mch 24,782,000 -3,132
benchmarks.run_tiered.osx.arm64.checked.mch 15,471,752 +44
coreclr_tests.run.osx.arm64.checked.mch 390,213,652 -444
libraries.crossgen2.osx.arm64.checked.mch 63,645,568 -260
libraries.pmi.osx.arm64.checked.mch 80,239,056 +300
libraries_tests.run.osx.arm64.Release.mch 72,839,284 -2,020
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 159,911,512 -56
realworld.run.osx.arm64.checked.mch 15,078,748 -468

FullOpts (-6,016 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.osx.arm64.checked.mch 11,100,292 +20
benchmarks.run_pgo.osx.arm64.checked.mch 8,787,588 -3,132
benchmarks.run_tiered.osx.arm64.checked.mch 3,950,116 +44
coreclr_tests.run.osx.arm64.checked.mch 138,802,076 -444
libraries.crossgen2.osx.arm64.checked.mch 63,643,940 -260
libraries.pmi.osx.arm64.checked.mch 80,117,928 +300
libraries_tests.run.osx.arm64.Release.mch 12,454,304 -2,020
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 146,852,152 -56
realworld.run.osx.arm64.checked.mch 14,514,796 -468

Example diffs

benchmarks.run.osx.arm64.checked.mch

-20 (-2.19%) : 8953.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 15, 9 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Jil.Serialize.InlineSerializer`1[System.__Canon]> -; V01 loc0 [V01,T27] ( 2, 1 ) ref -> x20 class-hnd single-def <System.Reflection.MethodInfo> -; V02 loc1 [V02,T09] ( 7, 2 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <Sigil.Local>
+; V00 this [V00,T01] ( 15, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Jil.Serialize.InlineSerializer`1[System.__Canon]> +; V01 loc0 [V01,T27] ( 2, 1.50) ref -> x20 class-hnd single-def <System.Reflection.MethodInfo> +; V02 loc1 [V02,T11] ( 7, 2 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <Sigil.Local>
;# 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,T23] ( 2, 2 ) long -> x0 "spilling helperCall"
-; V06 tmp3 [V06,T10] ( 2, 2 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V07 tmp4 [V07,T05] ( 4, 4 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]>
+; V06 tmp3 [V06,T12] ( 2, 2 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V07 tmp4 [V07,T04] ( 4, 5 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]>
;* V08 tmp5 [V08,T28] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V10 tmp7 [V10,T11] ( 2, 2 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V10 tmp7 [V10,T08] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
; V11 tmp8 [V11,T24] ( 2, 2 ) long -> x0 "spilling helperCall" ; V12 tmp9 [V12,T25] ( 2, 2 ) long -> x0 "spilling helperCall" ; V13 tmp10 [V13,T00] ( 5, 16.50) int -> x0 "Inline stloc first use temp" ;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V15 tmp12 [V15,T12] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> -; V16 tmp13 [V16,T08] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V15 tmp12 [V15,T09] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> +; V16 tmp13 [V16,T02] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
; V17 tmp14 [V17,T13] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> ; V18 tmp15 [V18,T14] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> ; V19 tmp16 [V19,T15] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> @@ -38,11 +38,11 @@ ; V27 tmp24 [V27,T26] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <System.Reflection.MethodInfo> ;* V28 tmp25 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V29 PSPSym [V29,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V30 cse0 [V30,T07] ( 5, 3.50) long -> x19 "CSE - aggressive" -; V31 cse1 [V31,T03] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive" -; V32 rat0 [V32,T04] ( 3, 4.40) long -> x1 "Spilling to split statement for tree" -; V33 rat1 [V33,T06] ( 3, 4 ) long -> x19 "runtime lookup" -; V34 rat2 [V34,T02] ( 3, 5.60) long -> x19 "fgMakeTemp is creating a new local variable"
+; V30 cse0 [V30,T10] ( 5, 3.50) long -> x19 "CSE - aggressive" +; V31 cse1 [V31,T05] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive" +; V32 rat0 [V32,T06] ( 3, 4.40) long -> x1 "Spilling to split statement for tree" +; V33 rat1 [V33,T07] ( 3, 4 ) long -> x19 "runtime lookup" +; V34 rat2 [V34,T03] ( 3, 5.60) long -> x19 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -113,7 +113,7 @@ G_M44361_IG07: ; bbWeight=4, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, by cmp w0, #1 blt G_M44361_IG07 ;; size=20 bbWeight=4 PerfScore 24.00
-G_M44361_IG08: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref
+G_M44361_IG08: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] ; byrRegs -[x1] movz x0, #0xD1FFAB1E @@ -162,40 +162,38 @@ G_M44361_IG08: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, b ; gcr arg pop 0 str x0, [fp, #0x18] // [V02 loc1] ; GC ptr vars +{V02}
- ;; size=148 bbWeight=0.50 PerfScore 18.50 -G_M44361_IG09: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=148 bbWeight=1 PerfScore 37.00 +G_M44361_IG09: ; bbWeight=0.50, gcVars=0000000000000802 {V00 V02}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x1, [x2, #0x18]
+ ldr x21, [fp, #0x20] // [V00 this] + ; gcrRegs +[x21] + ldr x1, [x21, #0x18]
; gcrRegs +[x1] ldr x0, [x1, #0x08] ; gcrRegs +[x0] ldr x1, [fp, #0x18] // [V02 loc1]
- movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3]
+ movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2]
ldr wzr, [x0]
- blr x3 - ; gcrRegs -[x1-x2]
+ blr x2 + ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18]
+ ldr x0, [x21, #0x18]
ldr x0, [x0, #0x08] ldr x1, [fp, #0x18] // [V02 loc1] ; gcrRegs +[x1]
- movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3]
+ movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2]
ldr wzr, [x0]
- blr x3 - ; gcrRegs -[x1-x2]
+ blr x2 + ; gcrRegs -[x1]
; gcr arg pop 0
- ;; size=80 bbWeight=0.50 PerfScore 18.50 -G_M44361_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=76 bbWeight=0.50 PerfScore 17.50 +G_M44361_IG10: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x1, [fp, #0x18] // [V02 loc1] ; gcrRegs +[x1] @@ -212,31 +210,25 @@ G_M44361_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18]
+G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz + ldr x0, [x21, #0x18]
; gcrRegs +[x0] ldr x0, [x0, #0x08] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32
- movz x3, #0xD1FFAB1E // code for Sigil.Emit`1[System.__Canon]:LoadConstant(System.String):Sigil.Emit`1[System.__Canon]:this - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #1 LSL #32 - ldr x3, [x3]
+ movz x2, #0xD1FFAB1E // code for Sigil.Emit`1[System.__Canon]:LoadConstant(System.String):Sigil.Emit`1[System.__Canon]:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #1 LSL #32 + ldr x2, [x2]
ldr wzr, [x0]
- blr x3 - ; gcrRegs -[x2]
+ blr x2
; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18]
+ ldr x0, [x21, #0x18]
ldr x0, [x0, #0x08] mov x1, x20 ; gcrRegs +[x1] mov x2, xzr
- ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #1 LSL #32 @@ -245,16 +237,13 @@ G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x1 x20] ; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldrb w0, [x2, #0x34]
+ ldrb w0, [x21, #0x34]
; gcrRegs -[x0] cbz w0, G_M44361_IG13 mov x0, x19
- ldr x19, [x2, #0x18]
+ ldr x19, [x21, #0x18]
; gcrRegs +[x19] bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
- ; gcrRegs -[x2]
; byrRegs +[x0] ; gcr arg pop 0 ldr x1, [x0, #0x18] @@ -271,20 +260,19 @@ G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x1 x19] ; gcr arg pop 0
- ;; size=152 bbWeight=0.50 PerfScore 30.50
+ ;; size=140 bbWeight=0.50 PerfScore 27.50
G_M44361_IG12: ; bbWeight=0.50, epilog, nogc, extend ldr x21, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x50 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M44361_IG13: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x2]
+G_M44361_IG13: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0]
mov x0, x19
- ldr x19, [x2, #0x18]
+ ldr x19, [x21, #0x18]
; gcrRegs +[x19] bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
- ; gcrRegs -[x2]
; byrRegs +[x0] ; gcr arg pop 0 ldr x1, [x0, #0x10] @@ -310,14 +298,13 @@ G_M44361_IG14: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50 G_M44361_IG15: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
mov x0, x19
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x19, [x2, #0x18]
+ ldr x21, [fp, #0x20] // [V00 this] + ; gcrRegs +[x21] + ldr x19, [x21, #0x18]
; gcrRegs +[x19] bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
- ; gcrRegs -[x2]
; byrRegs +[x0] ; gcr arg pop 0 ldr x1, [x0] @@ -333,10 +320,8 @@ G_M44361_IG15: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs= blr x2 ; gcrRegs -[x1 x19] ; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18] - ldrb w1, [x2, #0x34]
+ ldr x0, [x21, #0x18] + ldrb w1, [x21, #0x34]
cbz w1, G_M44361_IG16 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -344,16 +329,16 @@ G_M44361_IG15: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs= ldr x1, [x1] ; gcrRegs +[x1] b G_M44361_IG17
- ;; size=84 bbWeight=0.50 PerfScore 17.75 -G_M44361_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1-x2]
+ ;; size=80 bbWeight=0.50 PerfScore 16.75 +G_M44361_IG16: ; bbWeight=0.50, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] ; gcrRegs +[x1] ...

-32 (-1.75%) : 7989.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)

@@ -22,7 +22,7 @@ ; V11 loc7 [V11,T09] ( 18, 40 ) ushort -> x24 ;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 loc9 [V13,T43] ( 3, 6 ) ubyte -> x0
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T18] ( 7, 14 ) ushort -> x25 ;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune> ; V17 loc13 [V17,T28] ( 4, 8 ) int -> x27 @@ -342,8 +342,9 @@ G_M13139_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
+ mov w22, w25
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 28.00
+ ;; size=44 bbWeight=2 PerfScore 29.00
G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -353,8 +354,9 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
+ mov w22, w25
b G_M13139_IG45
- ;; size=28 bbWeight=2 PerfScore 14.00
+ ;; size=32 bbWeight=2 PerfScore 15.00
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 bgt G_M13139_IG21 @@ -382,9 +384,8 @@ G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ;; size=28 bbWeight=2 PerfScore 13.00 G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref add w22, w22, #2
- mov w25, w22
b G_M13139_IG45
- ;; size=12 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref sbfiz x0, x22, #1, #32 add x0, x19, x0 @@ -401,9 +402,8 @@ G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ; gcr arg pop 0 add w0, w0, w22 sub w22, w0, #1
- mov w25, w22
b G_M13139_IG45
- ;; size=64 bbWeight=2 PerfScore 24.00
+ ;; size=60 bbWeight=2 PerfScore 23.00
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -414,9 +414,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -426,9 +425,8 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22
b G_M13139_IG45
- ;; size=32 bbWeight=2 PerfScore 15.00
+ ;; size=28 bbWeight=2 PerfScore 14.00
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 ble G_M13139_IG43 @@ -666,19 +664,16 @@ G_M13139_IG40: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, cmp w24, w27 blt G_M13139_IG35 ;; size=112 bbWeight=16 PerfScore 344.00
-G_M13139_IG41: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M13139_IG41: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] ldrb w0, [fp, #-0x80] // [V14 loc10]
- cbz w0, G_M13139_IG42
+ cbz w0, G_M13139_IG45 + ;; size=8 bbWeight=4 PerfScore 12.00 +G_M13139_IG42: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
add w27, w22, #1 sxtw w22, w27
- mov w25, w22
b G_M13139_IG45
- ;; size=24 bbWeight=2 PerfScore 11.00 -G_M13139_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref - mov w25, w22 - b G_M13139_IG45 - ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=2 PerfScore 4.00
G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -689,9 +684,8 @@ G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -701,14 +695,12 @@ G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22 - ;; size=28 bbWeight=2 PerfScore 13.00
+ ;; size=24 bbWeight=2 PerfScore 12.00
G_M13139_IG45: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- add w25, w25, #1 - cmp w25, w20 - mov w22, w25
+ add w22, w22, #1 + cmp w22, w20
blt G_M13139_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
+ ;; size=12 bbWeight=4 PerfScore 8.00
G_M13139_IG46: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x23] sub x0, fp, #120 // [V05 loc1] @@ -771,7 +763,7 @@ G_M13139_IG50: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1828, prolog size 76, PerfScore 1420.00, instruction count 457, allocated bytes for code 1828 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
+; Total bytes of code 1796, prolog size 76, PerfScore 1417.50, instruction count 449, allocated bytes for code 1796 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -782,7 +774,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 457 (0x001c9) Actual length = 1828 (0x000724)
+ Function Length : 449 (0x001c1) Actual length = 1796 (0x000704)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-4 (-0.44%) : 14357.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)

@@ -14,26 +14,26 @@ ; V03 arg3 [V03,T35] ( 3, 3 ) float -> d10 single-def ; V04 arg4 [V04,T36] ( 3, 3 ) float -> d11 single-def ; V05 arg5 [V05,T37] ( 3, 3 ) float -> d12 single-def
-; V06 loc0 [V06,T08] ( 10, 14 ) ref -> x20 class-hnd exact single-def <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_0> -; V07 loc1 [V07,T40] ( 2, 3 ) double -> [fp+0x80] spill-single-def
+; V06 loc0 [V06,T07] ( 10, 20 ) ref -> x20 class-hnd exact single-def <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_0> +; V07 loc1 [V07,T41] ( 2, 3 ) double -> [fp+0x80] spill-single-def
; V08 loc2 [V08,T42] ( 2, 2 ) double -> [fp+0x78] spill-single-def ; V09 loc3 [V09,T32] ( 2, 9 ) double -> [fp+0x70] spill-single-def ; V10 loc4 [V10,T23] ( 2,129 ) simd16 -> d11 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
-; V11 loc5 [V11,T28] ( 2, 17 ) simd16 -> [fp+0x60] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> -; V12 loc6 [V12,T41] ( 2, 3 ) simd16 -> [fp+0x50] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]>
+; V11 loc5 [V11,T29] ( 2, 17 ) simd16 -> [fp+0x60] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> +; V12 loc6 [V12,T39] ( 2, 5 ) simd16 -> [fp+0x50] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]>
; V13 loc7 [V13,T24] ( 2,129 ) simd16 -> d14 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[long]> ; V14 loc8 [V14,T38] ( 3, 5 ) simd16 -> [fp+0x40] HFA(simd16) spill-single-def <System.Numerics.Vector`1[double]>
-; V15 loc9 [V15,T30] ( 5, 14 ) double -> [fp+0x38] -; V16 loc10 [V16,T22] ( 5,149 ) simd16 -> d15 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
+; V15 loc9 [V15,T28] ( 5, 18 ) double -> [fp+0x38] +; V16 loc10 [V16,T22] ( 5,153 ) simd16 -> d8 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
; V17 loc11 [V17,T02] ( 8, 70 ) ref -> x23 class-hnd exact <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_1> ; V18 loc12 [V18,T27] ( 3, 20 ) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> ; V19 loc13 [V19,T21] ( 6,194 ) simd16 -> [fp+0x10] HFA(simd16) <System.Numerics.Vector`1[double]>
-; V20 loc14 [V20,T14] ( 7,784 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]> -; V21 loc15 [V21,T15] ( 7,784 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[double]> -; V22 loc16 [V22,T17] ( 5,416 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[long]> -; V23 loc17 [V23,T16] ( 6,656 ) simd16 -> d22 HFA(simd16) <System.Numerics.Vector`1[long]> -; V24 loc18 [V24,T19] ( 2,256 ) simd16 -> d23 HFA(simd16) <System.Numerics.Vector`1[double]> -; V25 loc19 [V25,T20] ( 2,256 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[double]>
+; V20 loc14 [V20,T14] ( 7,784 ) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[double]> +; V21 loc15 [V21,T15] ( 7,784 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]> +; V22 loc16 [V22,T17] ( 5,416 ) simd16 -> d10 HFA(simd16) <System.Numerics.Vector`1[long]> +; V23 loc17 [V23,T16] ( 6,656 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[long]> +; V24 loc18 [V24,T19] ( 2,256 ) simd16 -> d22 HFA(simd16) <System.Numerics.Vector`1[double]> +; V25 loc19 [V25,T20] ( 2,256 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]>
;* V26 loc20 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[double]> ;* V27 loc21 [V27 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[long]> ;* V28 loc22 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Action`2[long,int]> @@ -49,16 +49,16 @@ ;* V38 tmp8 [V38 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inline return value spill temp" <System.Numerics.Vector`1[double]> ; V39 tmp9 [V39,T13] ( 3, 3 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <double[]> ; V40 tmp10 [V40,T06] ( 6, 21 ) int -> x24 "Inline stloc first use temp"
-; V41 tmp11 [V41,T29] ( 2, 16 ) double -> d0 "Strict ordering of exceptions for Array store"
+; V41 tmp11 [V41,T30] ( 2, 16 ) double -> d0 "Strict ordering of exceptions for Array store"
;* V42 tmp12 [V42 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[double]>
-;* V43 tmp13 [V43,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V44 tmp14 [V44,T25] ( 3, 96 ) simd16 -> d8 HFA(simd16) ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]> -; V45 cse0 [V45,T18] ( 3,384 ) simd16 -> d20 "CSE - aggressive"
+;* V43 tmp13 [V43,T08] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V44 tmp14 [V44,T25] ( 3, 96 ) simd16 -> d10 HFA(simd16) ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]> +; V45 cse0 [V45,T18] ( 3,384 ) simd16 -> d19 "CSE - aggressive"
; V46 cse1 [V46,T10] ( 3, 10 ) long -> x22 "CSE - moderate" ; V47 cse2 [V47,T09] ( 3, 12 ) long -> x21 "CSE - moderate" ; V48 cse3 [V48,T12] ( 2, 5 ) byref -> x25 hoist "CSE - moderate"
-; V49 cse4 [V49,T39] ( 4, 4 ) double -> d16 "CSE - moderate" -; V50 rat0 [V50,T31] ( 3, 12 ) simd16 -> d20 "ReplaceWithLclVar is creating a new local variable"
+; V49 cse4 [V49,T40] ( 4, 4 ) double -> d16 "CSE - moderate" +; V50 rat0 [V50,T31] ( 3, 12 ) simd16 -> d19 "ReplaceWithLclVar is creating a new local variable"
; V51 rat1 [V51,T26] ( 3, 96 ) simd16 -> d18 "ReplaceWithLclVar is creating a new local variable" ; V52 rat2 [V52,T04] ( 3, 24 ) ref -> x1 "delegate invoke call" ; @@ -174,11 +174,11 @@ G_M57953_IG03: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg G_M57953_IG04: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref ; gcrRegs -[x21] ; byrRegs -[x25]
- ldr q9, [x23, #0x10] - str q9, [fp, #0x40] // [V14 loc8] - ldr d13, [fp, #0x78] // [V08 loc2]
+ ldr q13, [x23, #0x10] + str q13, [fp, #0x40] // [V14 loc8] + ldr d9, [fp, #0x78] // [V08 loc2]
str wzr, [x20, #0x20]
- dup v15.2d, v13.d[0]
+ dup v8.2d, v9.d[0]
b G_M57953_IG12 ;; size=24 bbWeight=1 PerfScore 9.00 G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -187,8 +187,8 @@ G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movk x21, #0xD1FFAB1E LSL #16 movk x21, #1 LSL #32 mov x0, x21
- mov v8.d[0], v15.d[1] - mov v9.d[0], v11.d[1]
+ mov v15.d[0], v8.d[1] + mov v13.d[0], v11.d[1]
mov v10.d[0], v14.d[1] bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] @@ -203,62 +203,62 @@ G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x0 x15] ; byrRegs -[x14] str wzr, [x23, #0x18]
- ldr d16, [fp, #0x80] // [V07 loc1] - dup v17.2d, v16.d[0] - str q17, [fp, #0x20] // [V18 loc12] - ldr q18, [fp, #0x40] // [V14 loc8] - mov v19.16b, v18.16b - fcmge v20.2d, v17.2d, v18.2d - umaxp v20.4s, v20.4s, v20.4s - umov x0, v20.d[0]
+ ldr d12, [fp, #0x80] // [V07 loc1] + dup v16.2d, v12.d[0] + str q16, [fp, #0x20] // [V18 loc12] + ldr q17, [fp, #0x40] // [V14 loc8] + mov v18.16b, v17.16b + fcmge v19.2d, v16.2d, v17.2d + umaxp v19.4s, v19.4s, v19.4s + umov x0, v19.d[0]
cmp x0, #0
- mov v15.d[1], v8.d[0] - mov v11.d[1], v9.d[0]
+ mov v8.d[1], v15.d[0] + mov v11.d[1], v13.d[0]
mov v14.d[1], v10.d[0] beq G_M57953_IG16 ;; size=104 bbWeight=2 PerfScore 47.00 G_M57953_IG06: ; bbWeight=16, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- mov v20.16b, v19.16b - mov v21.16b, v15.16b - movi v8.4s, #0 - ldr q22, [@RWD32]
+ mov v19.16b, v18.16b + mov v20.16b, v8.16b + movi v10.4s, #0 + ldr q21, [@RWD32]
;; size=16 bbWeight=16 PerfScore 56.00 G_M57953_IG07: ; bbWeight=128, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ fmul v22.2d, v19.2d, v19.2d
fmul v23.2d, v20.2d, v20.2d
- fmul v24.2d, v21.2d, v21.2d - fsub v23.2d, v23.2d, v24.2d - fmul v20.2d, v20.2d, v21.2d - fadd v21.2d, v20.2d, v20.2d - str q19, [fp, #0x10] // [V19 loc13] - fadd v20.2d, v23.2d, v19.2d - fadd v21.2d, v21.2d, v15.2d - add v8.2d, v8.2d, v22.2d
+ fsub v22.2d, v22.2d, v23.2d + fmul v19.2d, v19.2d, v20.2d + fadd v20.2d, v19.2d, v19.2d + str q18, [fp, #0x10] // [V19 loc13] + fadd v19.2d, v22.2d, v18.2d + fadd v20.2d, v20.2d, v8.2d + add v10.2d, v10.2d, v21.2d + fmul v22.2d, v19.2d, v19.2d
fmul v23.2d, v20.2d, v20.2d
- fmul v24.2d, v21.2d, v21.2d - fadd v23.2d, v23.2d, v24.2d - fcmge v23.2d, v11.2d, v23.2d - cmge v24.2d, v14.2d, v8.2d - and v23.2d, v23.2d, v24.2d
+ fadd v22.2d, v22.2d, v23.2d + fcmge v22.2d, v11.2d, v22.2d + cmge v23.2d, v14.2d, v10.2d
and v22.2d, v22.2d, v23.2d
- umaxp v23.4s, v22.4s, v22.4s - umov x0, v23.d[0]
+ and v21.2d, v21.2d, v22.2d + umaxp v22.4s, v21.4s, v21.4s + umov x0, v22.d[0]
cmp x0, #0
- ldr q19, [fp, #0x10] // [V19 loc13]
+ ldr q18, [fp, #0x10] // [V19 loc13]
bne G_M57953_IG07 ;; size=84 bbWeight=128 PerfScore 5184.00 G_M57953_IG08: ; bbWeight=16, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz ldr x24, [x23, #0x10] ; gcrRegs +[x24]
- str q19, [fp, #0x10] // [V19 loc13]
+ str q18, [fp, #0x10] // [V19 loc13]
cbnz x24, G_M57953_IG10 ;; size=12 bbWeight=16 PerfScore 80.00 G_M57953_IG09: ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref ; gcrRegs -[x24] add x0, x21, #0xD1FFAB1E
- mov v9.d[0], v8.d[1] - mov v10.d[0], v15.d[1] - mov v13.d[0], v11.d[1] - mov v12.d[0], v14.d[1]
+ mov v13.d[0], v10.d[1] + mov v15.d[0], v8.d[1] + mov v12.d[0], v11.d[1] + mov v9.d[0], v14.d[1]
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -280,28 +280,28 @@ G_M57953_IG09: ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=00 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- mov v8.d[1], v9.d[0] - mov v15.d[1], v10.d[0] - mov v11.d[1], v13.d[0] - mov v14.d[1], v12.d[0]
+ mov v10.d[1], v13.d[0] + mov v8.d[1], v15.d[0] + mov v11.d[1], v12.d[0] + mov v14.d[1], v9.d[0]
;; size=76 bbWeight=8 PerfScore 124.00 G_M57953_IG10: ; bbWeight=16, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz mov w1, wzr
- umov x1, v8.d[0]
+ umov x1, v10.d[0]
mov w2, wzr ldr x0, [x24, #0x08] ; gcrRegs +[x0] ldr x3, [x24, #0x18]
- mov v10.d[0], v15.d[1]
+ mov v15.d[0], v8.d[1]
mov v13.d[0], v11.d[1]
- mov v9.d[0], v14.d[1] - mov v12.d[0], v8.d[1]
+ mov v12.d[0], v14.d[1] + mov v9.d[0], v10.d[1]
blr x3 ; gcrRegs -[x0] ; gcr arg pop 0 mov w1, #1
- mov v8.d[1], v12.d[0] - umov x1, v8.d[1]
+ mov v10.d[1], v9.d[0] + umov x1, v10.d[1]
mov w2, #1 ldr x0, [x24, #0x08] ; gcrRegs +[x0] @@ -309,39 +309,38 @@ G_M57953_IG10: ; bbWeight=16, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefR blr x3 ; gcrRegs -[x0 x24] ; gcr arg pop 0
- ldr q8, [fp, #0x10] // [V19 loc13]
+ ldr q10, [fp, #0x10] // [V19 loc13]
ldr q16, [fp, #0x60] // [V11 loc5]
- fadd v8.2d, v8.2d, v16.2d
+ fadd v10.2d, v10.2d, v16.2d
ldr w0, [x23, #0x18] add w0, w0, #2 str w0, [x23, #0x18] ldr q17, [fp, #0x20] // [V18 loc12]
- fcmge v18.2d, v17.2d, v8.2d
+ fcmge v18.2d, v17.2d, v10.2d
umaxp v18.4s, v18.4s, v18.4s umov x0, v18.d[0] cmp x0, #0
- mov v15.d[1], v10.d[0]
+ mov v8.d[1], v15.d[0]
mov v11.d[1], v13.d[0]
- mov v14.d[1], v9.d[0] - mov v19.16b, v8.16b
+ mov v14.d[1], v12.d[0]
...

+12 (+0.59%) : 5520.dasm - System.Globalization.TimeSpanFormat:TryFormatStandardushort:ubyte (FullOpts)

@@ -9,39 +9,39 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.TimeSpan>
-; V01 arg1 [V01,T07] ( 13, 9 ) int -> x19 single-def
+; V01 arg1 [V01,T07] ( 13, 9.50) int -> x19 single-def
;* V02 arg2 [V02 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ;* V03 arg3 [V03 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[ushort]> ; V04 arg4 [V04,T15] ( 4, 3 ) byref -> x21 single-def ; V05 loc0 [V05,T10] ( 15, 8.50) int -> x26
-; V06 loc1 [V06,T20] ( 8, 4 ) int -> x27 ld-addr-op
+; V06 loc1 [V06,T17] ( 8, 4.50) int -> x27 ld-addr-op
; V07 loc2 [V07,T28] ( 5, 3 ) long -> x28
-; V08 loc3 [V08,T21] ( 7, 4 ) int -> [fp+0x4C]
+; V08 loc3 [V08,T18] ( 7, 4.50) int -> [fp+0x4C]
; V09 loc4 [V09,T27] ( 5, 3.50) long -> registers ; V10 loc5 [V10,T36] ( 4, 2.50) long -> [fp+0x40] ; V11 loc6 [V11,T24] ( 5, 4 ) long -> x28 ; V12 loc7 [V12,T37] ( 4, 2.50) long -> [fp+0x38] ; V13 loc8 [V13,T23] ( 6, 4 ) int -> [fp+0x34]
-; V14 loc9 [V14,T17] ( 7, 4.50) int -> [fp+0x30]
+; V14 loc9 [V14,T19] ( 7, 4.50) int -> [fp+0x30]
; V15 loc10 [V15,T29] ( 5, 3 ) int -> x28 ; V16 loc11 [V16,T22] ( 7, 4 ) int -> [fp+0x2C]
-; V17 loc12 [V17,T18] ( 7, 4.50) long -> x2
+; V17 loc12 [V17,T20] ( 7, 4.50) long -> x2
;* V18 loc13 [V18 ] ( 0, 0 ) long -> zero-ref ; V19 loc14 [V19,T35] ( 5, 2.50) long -> x24 ; V20 loc15 [V20 ] ( 2, 1 ) byref -> [fp+0x20] must-init pinned
-; V21 loc16 [V21,T03] ( 33, 23.50) long -> registers -; V22 loc17 [V22,T08] ( 18, 9 ) long -> registers
+; V21 loc16 [V21,T03] ( 33, 25.50) long -> registers +; V22 loc17 [V22,T08] ( 18, 10.50) long -> registers
;# V23 OutArgs [V23 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V24 tmp1 [V24,T40] ( 2, 1 ) int -> x0
+; V24 tmp1 [V24,T43] ( 2, 1 ) int -> x0
;* V25 tmp2 [V25 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]>
-; V26 tmp3 [V26,T41] ( 3, 1.50) int -> x0 -; V27 tmp4 [V27,T42] ( 3, 1.50) int -> x0
+; V26 tmp3 [V26,T44] ( 3, 1.50) int -> x0 +; V27 tmp4 [V27,T45] ( 3, 1.50) int -> x0
;* V28 tmp5 [V28 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]> ;* V29 tmp6 [V29 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V30 tmp7 [V30 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V31 tmp8 [V31 ] ( 0, 0 ) long -> zero-ref ;* V32 tmp9 [V32 ] ( 0, 0 ) long -> zero-ref
-; V33 tmp10 [V33,T56] ( 2, 1 ) int -> x0
+; V33 tmp10 [V33,T40] ( 2, 2 ) int -> x0
;* V34 tmp11 [V34 ] ( 0, 0 ) struct ( 8) zero-ref "dup spill" <System.ValueTuple`2[uint,uint]> ;* V35 tmp12 [V35 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]> ;* V36 tmp13 [V36 ] ( 0, 0 ) struct (16) zero-ref "dup spill" <System.ValueTuple`2[ulong,ulong]> @@ -49,24 +49,24 @@ ;* 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,T43] ( 3, 1.50) long -> x28 "Inline stloc first use temp"
+; V41 tmp18 [V41,T46] ( 3, 1.50) long -> x28 "Inline stloc first use temp"
;* V42 tmp19 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]> ;* V43 tmp20 [V43 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ;* V44 tmp21 [V44 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V45 tmp22 [V45 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V46 tmp23 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V47 tmp24 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V48 tmp25 [V48,T09] ( 4, 9 ) int -> x2 "Inline stloc first use temp" -; V49 tmp26 [V49,T02] ( 5, 26 ) int -> x27 "Inlining Arg"
+; V48 tmp25 [V48,T09] ( 4, 9.50) int -> x2 "Inline stloc first use temp" +; V49 tmp26 [V49,T02] ( 5, 27 ) int -> x27 "Inlining Arg"
; V50 tmp27 [V50,T06] ( 3, 12 ) int -> x0 "Inline stloc first use temp"
-; V51 tmp28 [V51,T44] ( 3, 1.50) long -> x1 "Inline stloc first use temp"
+; V51 tmp28 [V51,T47] ( 3, 1.50) long -> x1 "Inline stloc first use temp"
;* V52 tmp29 [V52 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]> ;* V53 tmp30 [V53 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V54 tmp31 [V54,T45] ( 3, 1.50) long -> x28 "Inline stloc first use temp"
+; V54 tmp31 [V54,T48] ( 3, 1.50) long -> x28 "Inline stloc first use temp"
;* V55 tmp32 [V55 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[ulong,ulong]> ;* V56 tmp33 [V56 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V57 tmp34 [V57,T30] ( 3, 3 ) int -> x28 "Inlining Arg"
-; V58 tmp35 [V58,T46] ( 3, 1.50) int -> x1 "Inline stloc first use temp"
+; V58 tmp35 [V58,T49] ( 3, 1.50) int -> x1 "Inline stloc first use temp"
;* V59 tmp36 [V59 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[uint,uint]> ;* V60 tmp37 [V60 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V61 tmp38 [V61 ] ( 0, 0 ) struct (16) zero-ref "ReadOnlySpan<T> for CreateSpan<T>" <System.ReadOnlySpan`1[long]> @@ -78,8 +78,8 @@ ;* V67 tmp44 [V67 ] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" ;* V68 tmp45 [V68 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V69 tmp46 [V69 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]>
-; V70 tmp47 [V70,T04] ( 8, 18 ) long -> [fp+0x18] "Inline stloc first use temp" -; V71 tmp48 [V71,T00] ( 7, 35 ) int -> x22 "Inlining Arg"
+; V70 tmp47 [V70,T04] ( 8, 19 ) long -> [fp+0x18] "Inline stloc first use temp" +; V71 tmp48 [V71,T00] ( 7, 37 ) int -> x22 "Inlining Arg"
; V72 tmp49 [V72,T11] ( 2, 8 ) int -> x0 "Inline stloc first use temp" ;* V73 tmp50 [V73 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V74 tmp51 [V74 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" @@ -87,44 +87,44 @@ ;* V76 tmp53 [V76 ] ( 0, 0 ) int -> zero-ref ;* V77 tmp54 [V77 ] ( 0, 0 ) long -> zero-ref ;* V78 tmp55 [V78 ] ( 0, 0 ) long -> zero-ref
-; V79 tmp56 [V79,T50] ( 2, 1 ) ref -> x28 single-def
+; V79 tmp56 [V79,T51] ( 2, 1 ) ref -> x25 single-def
;* V80 tmp57 [V80 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V81 tmp58 [V81 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V82 tmp59 [V82 ] ( 0, 0 ) int -> zero-ref
-; V83 tmp60 [V83,T31] ( 3, 3 ) int -> x25 "Inlining Arg"
+; V83 tmp60 [V83,T31] ( 3, 3 ) int -> x22 "Inlining Arg"
;* V84 tmp61 [V84 ] ( 0, 0 ) long -> zero-ref ;* V85 tmp62 [V85 ] ( 0, 0 ) long -> zero-ref
-; V86 tmp63 [V86,T51] ( 2, 1 ) ref -> x0 single-def
+; V86 tmp63 [V86,T52] ( 2, 1 ) ref -> x0 single-def
;* V87 tmp64 [V87 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V88 tmp65 [V88 ] ( 0, 0 ) int -> zero-ref
-; V89 tmp66 [V89,T32] ( 3, 3 ) int -> x25 "Inlining Arg"
+; V89 tmp66 [V89,T32] ( 3, 3 ) int -> x22 "Inlining Arg"
;* V90 tmp67 [V90 ] ( 0, 0 ) long -> zero-ref ;* V91 tmp68 [V91 ] ( 0, 0 ) long -> zero-ref
-; V92 tmp69 [V92,T52] ( 2, 1 ) ref -> x0 single-def
+; V92 tmp69 [V92,T53] ( 2, 1 ) ref -> x0 single-def
;* V93 tmp70 [V93 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V94 tmp71 [V94 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]>
-; V95 tmp72 [V95,T47] ( 3, 1.50) ubyte -> x0 "Inline return value spill temp"
+; V95 tmp72 [V95,T50] ( 3, 1.50) ubyte -> x0 "Inline return value spill temp"
;* V96 tmp73 [V96 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V97 tmp74 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V98 tmp75 [V98 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V99 tmp76 [V99 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> ;* V100 tmp77 [V100 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V101 tmp78 [V101 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg"
-; V102 tmp79 [V102,T38] ( 2, 2 ) long -> x2 "Inlining Arg"
+; V102 tmp79 [V102,T41] ( 2, 2 ) long -> x2 "Inlining Arg"
;* V103 tmp80 [V103 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V104 tmp81 [V104,T05] ( 8, 18 ) long -> x23 "Inline stloc first use temp" -; V105 tmp82 [V105,T01] ( 7, 35 ) int -> x20 "Inlining Arg"
+; V104 tmp81 [V104,T05] ( 8, 19 ) long -> x23 "Inline stloc first use temp" +; V105 tmp82 [V105,T01] ( 7, 37 ) int -> x20 "Inlining Arg"
; V106 tmp83 [V106,T12] ( 2, 8 ) int -> x0 "Inline stloc first use temp" ;* V107 tmp84 [V107 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V108 tmp85 [V108 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V109 tmp86 [V109,T16] ( 4, 3 ) long -> x22 single-def "field V00._ticks (fldOffset=0x0)" P-INDEP
-; V110 tmp87 [V110,T19] ( 4, 2.50) byref -> x23 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp87 [V110,T21] ( 4, 2.50) byref -> x23 single-def "field V02._reference (fldOffset=0x0)" P-INDEP
; V111 tmp88 [V111,T14] ( 7, 4 ) int -> x20 single-def "field V02._length (fldOffset=0x8)" P-INDEP ; V112 tmp89 [V112,T25] ( 3, 2 ) byref -> x24 single-def "field V03._reference (fldOffset=0x0)" P-INDEP ; V113 tmp90 [V113,T26] ( 2, 2 ) int -> x25 single-def "field V03._length (fldOffset=0x8)" P-INDEP ;* V114 tmp91 [V114 ] ( 0, 0 ) long -> zero-ref "field V25.Item1 (fldOffset=0x0)" P-INDEP ;* V115 tmp92 [V115 ] ( 0, 0 ) long -> zero-ref "field V25.Item2 (fldOffset=0x8)" P-INDEP
-; V116 tmp93 [V116,T53] ( 2, 1 ) byref -> x0 single-def "field V28._reference (fldOffset=0x0)" P-INDEP
+; V116 tmp93 [V116,T54] ( 2, 1 ) byref -> x0 single-def "field V28._reference (fldOffset=0x0)" P-INDEP
;* V117 tmp94 [V117 ] ( 0, 0 ) int -> zero-ref "field V28._length (fldOffset=0x8)" P-INDEP ;* V118 tmp95 [V118 ] ( 0, 0 ) byref -> zero-ref single-def "field V29._reference (fldOffset=0x0)" P-INDEP ;* V119 tmp96 [V119 ] ( 0, 0 ) int -> zero-ref "field V29._length (fldOffset=0x8)" P-INDEP @@ -144,9 +144,9 @@ ; V133 tmp110 [V133,T59] ( 2, 1 ) long -> x4 "field V55.Item2 (fldOffset=0x8)" P-INDEP ;* V134 tmp111 [V134 ] ( 0, 0 ) int -> zero-ref "field V59.Item1 (fldOffset=0x0)" P-INDEP ; V135 tmp112 [V135,T60] ( 2, 1 ) int -> x2 "field V59.Item2 (fldOffset=0x4)" P-INDEP
-; V136 tmp113 [V136,T54] ( 2, 1 ) byref -> x3 single-def "field V61._reference (fldOffset=0x0)" P-INDEP
+; V136 tmp113 [V136,T55] ( 2, 1 ) byref -> x3 single-def "field V61._reference (fldOffset=0x0)" P-INDEP
;* V137 tmp114 [V137 ] ( 0, 0 ) int -> zero-ref "field V61._length (fldOffset=0x8)" P-INDEP
-; V138 tmp115 [V138,T55] ( 2, 1 ) byref -> x3 single-def "field V62._reference (fldOffset=0x0)" P-INDEP
+; V138 tmp115 [V138,T56] ( 2, 1 ) byref -> x3 single-def "field V62._reference (fldOffset=0x0)" P-INDEP
;* V139 tmp116 [V139 ] ( 0, 0 ) int -> zero-ref "field V62._length (fldOffset=0x8)" P-INDEP ;* V140 tmp117 [V140 ] ( 0, 0 ) byref -> zero-ref single-def "field V66._reference (fldOffset=0x0)" P-INDEP ;* V141 tmp118 [V141 ] ( 0, 0 ) int -> zero-ref "field V66._length (fldOffset=0x8)" P-INDEP @@ -160,10 +160,10 @@ ;* V149 tmp126 [V149 ] ( 0, 0 ) int -> zero-ref "field V97._length (fldOffset=0x8)" P-INDEP ;* V150 tmp127 [V150 ] ( 0, 0 ) byref -> zero-ref single-def "field V99._reference (fldOffset=0x0)" P-INDEP ;* V151 tmp128 [V151 ] ( 0, 0 ) int -> zero-ref "field V99._length (fldOffset=0x8)" P-INDEP
-; V152 tmp129 [V152,T39] ( 2, 2 ) long -> x24 "Cast away GC" -; V153 cse0 [V153,T48] ( 3, 1.50) long -> [fp+0x10] spill-single-def "CSE - moderate" -; V154 cse1 [V154,T49] ( 3, 1.50) long -> x22 "CSE - moderate" -; V155 cse2 [V155,T34] ( 5, 2.50) ref -> x28 multi-def "CSE - moderate"
+; V152 tmp129 [V152,T42] ( 2, 2 ) long -> x24 "Cast away GC" +; V153 cse0 [V153,T38] ( 3, 2 ) long -> [fp+0x10] spill-single-def "CSE - moderate" +; V154 cse1 [V154,T39] ( 3, 2 ) long -> x22 "CSE - moderate" +; V155 cse2 [V155,T34] ( 5, 2.50) ref -> registers multi-def "CSE - moderate"
; V156 cse3 [V156,T13] ( 15, 7.50) ref -> x1 multi-def "CSE - aggressive" ; V157 rat0 [V157,T33] ( 3, 3 ) long -> x0 "ReplaceWithLclVar is creating a new local variable" ; @@ -303,8 +303,9 @@ G_M23189_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 G_M23189_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref mov w2, #7 str w2, [fp, #0x4C] // [V08 loc3]
+ ldr w1, [fp, #0x4C] // [V08 loc3]
b G_M23189_IG17
- ;; size=12 bbWeight=0.50 PerfScore 1.25
+ ;; size=16 bbWeight=0.50 PerfScore 2.25
G_M23189_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref, isz cmp w19, #2 beq G_M23189_IG14 @@ -340,18 +341,17 @@ G_M23189_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x2 add w2, w2, #1 b G_M23189_IG15 ;; size=44 bbWeight=4 PerfScore 40.00
-G_M23189_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref
+G_M23189_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref
neg w0, w2 add w2, w0, #7 sxtw w1, w2
- str w1, [fp, #0x4C] // [V08 loc3] - ;; size=16 bbWeight=0.50 PerfScore 1.25
+ ;; size=12 bbWeight=1 PerfScore 1.50
G_M23189_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref
- ldr w2, [fp, #0x4C] // [V08 loc3] - add w0, w26, w2
+ str w1, [fp, #0x4C] // [V08 loc3] + add w0, w26, w1
add w26, w0, w20 ldr w2, [fp, #0x4C] // [V08 loc3]
- ;; size=16 bbWeight=0.50 PerfScore 2.50
+ ;; size=16 bbWeight=0.50 PerfScore 2.00
G_M23189_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 x23 x24}, byref, isz mov x1, xzr mov x3, xzr @@ -524,7 +524,7 @@ G_M23189_IG33: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1A00000 {x21 ;; size=24 bbWeight=0.50 PerfScore 2.25 G_M23189_IG34: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref, isz ; byrRegs -[x24]
- cbz w3, G_M23189_IG37
+ cbz w3, G_M23189_IG40
ldr w1, [fp, #0x34] // [V13 loc8] sxtw w22, w1 sbfiz x0, x3, #1, #32 @@ -548,7 +548,7 @@ G_M23189_IG35: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23 cmp x3, x25 bhi G_M23189_IG38 ;; size=48 bbWeight=4 PerfScore 44.00
-G_M23189_IG36: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref
+G_M23189_IG36: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref
cmp w22, #10 cset x0, lo movz x4, #0xD1FFAB1E // code for System.Diagnostics.Debug:Assert(ubyte) @@ -577,14 +577,13 @@ G_M23189_IG36: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 cmp w19, #0 csel w0, w0, w1, eq strh w0, [x25]
- mov x25, x22 - ;; size=108 bbWeight=0.50 PerfScore 12.50
+ ;; size=104 bbWeight=1 PerfScore 24.50
G_M23189_IG37: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref, isz cmp w28, #1
- beq G_M23189_IG40
+ beq G_M23189_IG41
cmp w28, #2 cset x0, eq
- b G_M23189_IG41
+ b G_M23189_IG42
;; size=20 bbWeight=0.50 PerfScore 1.75 G_M23189_IG38: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 x23}, byref ldr x3, [fp, #0x18] // [V70 tmp47] @@ -594,10 +593,14 @@ G_M23189_IG39: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=A00000 {x21 str x3, [fp, #0x18] // [V70 tmp47] b G_M23189_IG36 ...

+8 (+1.18%) : 13515.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)

@@ -8,53 +8,53 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 13, 7.25) ref -> x19 this class-hnd single-def <System.Collections.BitArray> -; V01 arg1 [V01,T13] ( 8, 5 ) int -> x20 single-def -; V02 loc0 [V02,T07] ( 10, 12 ) int -> registers -; V03 loc1 [V03,T21] ( 6, 3 ) int -> x22 -; V04 loc2 [V04,T01] ( 11, 30 ) int -> x23 -; V05 loc3 [V05,T25] ( 5, 2 ) int -> x20 ld-addr-op -; V06 loc4 [V06,T30] ( 3, 1.50) int -> x24 ld-addr-op -; V07 loc5 [V07,T33] ( 2, 1 ) int -> x4 -; V08 loc6 [V08,T16] ( 3, 5 ) int -> x0 -; V09 loc7 [V09,T34] ( 2, 1 ) int -> x0 -; V10 loc8 [V10,T09] ( 2, 8 ) int -> x4 -; V11 loc9 [V11,T10] ( 2, 8 ) int -> x5
+; V00 this [V00,T08] ( 13, 7.75) ref -> x19 this class-hnd single-def <System.Collections.BitArray> +; V01 arg1 [V01,T14] ( 8, 5 ) int -> x20 single-def +; V02 loc0 [V02,T07] ( 10, 13 ) int -> registers +; V03 loc1 [V03,T22] ( 6, 3 ) int -> x22 +; V04 loc2 [V04,T01] ( 11, 31 ) int -> x23 +; V05 loc3 [V05,T25] ( 5, 2.50) int -> x20 ld-addr-op +; V06 loc4 [V06,T29] ( 3, 2 ) int -> x24 ld-addr-op +; V07 loc5 [V07,T35] ( 2, 1 ) int -> x4 +; V08 loc6 [V08,T18] ( 3, 5 ) int -> x0 +; V09 loc7 [V09,T30] ( 2, 2 ) int -> x0 +; V10 loc8 [V10,T10] ( 2, 8 ) int -> x4 +; V11 loc9 [V11,T11] ( 2, 8 ) int -> x5
;* V12 loc10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T05] ( 2, 16 ) int -> x23 "dup spill"
+; V14 tmp1 [V14,T06] ( 2, 16 ) int -> x23 "dup spill"
; V15 tmp2 [V15,T00] ( 4, 32 ) int -> x21 "impSpillLclRefs"
-; V16 tmp3 [V16,T19] ( 4, 4 ) int -> x1 "impSpillLclRefs" -; V17 tmp4 [V17,T22] ( 3, 3 ) byref -> x0 single-def "dup spill"
+; V16 tmp3 [V16,T09] ( 4, 8 ) int -> x1 "impSpillLclRefs" +; V17 tmp4 [V17,T23] ( 3, 3 ) byref -> x0 single-def "dup spill"
;* V18 tmp5 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V19 tmp6 [V19,T27] ( 4, 2 ) int -> x1 "Inline stloc first use temp"
-; V20 tmp7 [V20,T29] ( 2, 2 ) int -> x4 "Inlining Arg"
+; V20 tmp7 [V20,T31] ( 2, 2 ) int -> x4 "Inlining Arg"
;* V21 tmp8 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V22 tmp9 [V22,T18] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <int[]>
+; V22 tmp9 [V22,T20] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <int[]>
;* V23 tmp10 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V24 tmp11 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V25 tmp12 [V25,T20] ( 4, 4 ) int -> x1 "Inlining Arg" -; V26 tmp13 [V26,T15] ( 5, 5 ) long -> [fp+0x18] spill-single-def "Inlining Arg"
+; V25 tmp12 [V25,T21] ( 4, 4 ) int -> x1 "Inlining Arg" +; V26 tmp13 [V26,T17] ( 5, 5 ) long -> [fp+0x18] spill-single-def "Inlining Arg"
;* V27 tmp14 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V28 tmp15 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V29 tmp16 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V30 tmp17 [V30 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP ; V31 tmp18 [V31,T26] ( 4, 2 ) byref -> x0 "field V24._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp19 [V32,T31] ( 3, 1.50) int -> x1 "field V24._length (fldOffset=0x8)" P-INDEP
+; V32 tmp19 [V32,T33] ( 3, 1.50) int -> x1 "field V24._length (fldOffset=0x8)" P-INDEP
; V33 tmp20 [V33,T02] ( 3, 24 ) ref -> x4 "arr expr"
-;* V34 tmp21 [V34,T11] ( 0, 0 ) ref -> zero-ref "arr expr" -;* V35 tmp22 [V35,T12] ( 0, 0 ) ref -> zero-ref "arr expr" -; V36 tmp23 [V36,T23] ( 3, 3 ) ref -> x2 single-def "arr expr" -;* V37 tmp24 [V37,T35] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V34 tmp21 [V34,T12] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V35 tmp22 [V35,T13] ( 0, 0 ) ref -> zero-ref "arr expr" +; V36 tmp23 [V36,T16] ( 3, 6 ) ref -> x2 single-def "arr expr" +;* V37 tmp24 [V37,T32] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V38 tmp25 [V38,T24] ( 3, 3 ) ref -> x0 single-def "arr expr" ; V39 tmp26 [V39,T36] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V40 cse0 [V40,T17] ( 2, 4.25) int -> x3 hoist "CSE - moderate" -; V41 cse1 [V41,T32] ( 3, 1.50) int -> x21 "CSE - moderate" -; V42 cse2 [V42,T06] ( 8, 7.25) ref -> x2 hoist multi-def "CSE - aggressive"
+; V40 cse0 [V40,T19] ( 2, 4.25) int -> x3 hoist "CSE - moderate" +; V41 cse1 [V41,T34] ( 3, 1.50) int -> x21 "CSE - moderate" +; V42 cse2 [V42,T05] ( 8, 8.25) ref -> x2 hoist multi-def "CSE - aggressive"
; V43 cse3 [V43,T28] ( 4, 2 ) int -> x4 "CSE - moderate"
-; V44 cse4 [V44,T04] ( 9, 18.50) int -> x25 multi-def "CSE - aggressive" -; V45 cse5 [V45,T03] ( 9, 18.50) byref -> x26 multi-def "CSE - aggressive" -; V46 cse6 [V46,T14] ( 4, 5.25) int -> registers hoist multi-def "CSE - aggressive"
+; V44 cse4 [V44,T04] ( 9, 20 ) int -> x25 multi-def "CSE - aggressive" +; V45 cse5 [V45,T03] ( 9, 20 ) byref -> x26 multi-def "CSE - aggressive" +; V46 cse6 [V46,T15] ( 4, 6.25) int -> registers hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -74,7 +74,7 @@ G_M25748_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bgt G_M25748_IG05 ;; size=8 bbWeight=1 PerfScore 1.50 G_M25748_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M25748_IG19
+ tbnz w20, #31, G_M25748_IG20
ldr w0, [x19, #0x14] add w0, w0, #1 str w0, [x19, #0x14] @@ -96,12 +96,12 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 add w0, w4, #31 lsr w22, w0, #5 cmp w20, w4
- bge G_M25748_IG10
+ bge G_M25748_IG06
lsr w1, w20, #5 and w20, w20, #31 sxtw w23, w1 and w24, w4, #31
- cbnz w20, G_M25748_IG06
+ cbnz w20, G_M25748_IG07
neg w4, w24 add w4, w4, #32 movn w0, #0 @@ -113,7 +113,7 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 sub w3, w22, #1 ldr w25, [x0, #0x08] cmp w3, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
add x26, x0, #16 ; byrRegs +[x26] sub w0, w22, #1 @@ -138,14 +138,19 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[x0 x2] ; byrRegs -[x26] ; gcr arg pop 0
- b G_M25748_IG10 - ;; size=152 bbWeight=0.50 PerfScore 18.00 -G_M25748_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, w21 + b G_M25748_IG11 + ;; size=156 bbWeight=0.50 PerfScore 18.25 +G_M25748_IG06: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov w6, w21 + b G_M25748_IG11 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M25748_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w0, w22, #1 cmp w23, w0
- bge G_M25748_IG12
+ bge G_M25748_IG13
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M25748_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25748_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x2, [x19, #0x08] ; gcrRegs +[x2] and w1, w20, #31 @@ -153,12 +158,12 @@ G_M25748_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, add w3, w3, #32 and w3, w3, #31 ;; size=20 bbWeight=0.25 PerfScore 1.25
-G_M25748_IG08: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG09: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
mov x4, x2 ; gcrRegs +[x4] ldr w25, [x4, #0x08] cmp w23, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
add x26, x4, #16 ; byrRegs +[x26] ldr w4, [x26, w23, UXTW #2] @@ -166,18 +171,18 @@ G_M25748_IG08: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, lsr w4, w4, w1 add w23, w23, #1 cmp w23, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
ldr w5, [x26, w23, UXTW #2] lsl w5, w5, w3 add w6, w21, #1 cmp w21, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
orr w4, w5, w4 str w4, [x26, w21, UXTW #2] cmp w23, w0
- blt G_M25748_IG11
+ blt G_M25748_IG12
;; size=76 bbWeight=4 PerfScore 78.00
-G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] ; byrRegs -[x26] neg w2, w24 @@ -188,7 +193,7 @@ G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x2] ldr w25, [x2, #0x08] cmp w23, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
add x26, x2, #16 ; byrRegs +[x26] ldr w1, [x26, w23, UXTW #2] @@ -196,65 +201,64 @@ G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, sxtw w1, w6 add w6, w1, #1 cmp w1, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
and w2, w20, #31 ; gcrRegs -[x2] lsr w0, w0, w2 str w0, [x26, w1, UXTW #2]
- mov w21, w6 - ;; size=76 bbWeight=0.50 PerfScore 9.25 -G_M25748_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=72 bbWeight=1 PerfScore 18.00 +G_M25748_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x26] ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- sub w1, w22, w21 - cbnz x0, G_M25748_IG13 - orr w1, w21, w1 - cbnz w1, G_M25748_IG20
+ sub w1, w22, w6 + cbnz x0, G_M25748_IG14 + orr w6, w6, w1 + cbnz w6, G_M25748_IG21
mov x0, xzr ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, wzr
- b G_M25748_IG14
+ b G_M25748_IG15
;; size=32 bbWeight=0.50 PerfScore 4.00
-G_M25748_IG11: ; bbWeight=2, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+G_M25748_IG12: ; bbWeight=2, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x2] ; byrRegs -[x0] mov w21, w6
- b G_M25748_IG08
+ b G_M25748_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M25748_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25748_IG13: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] mov w6, w21
- b G_M25748_IG09
+ b G_M25748_IG10
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M25748_IG13: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG14: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- mov w2, w21
+ mov w2, w6
add x2, x2, w1, UXTW ldr w3, [x0, #0x08] cmp x2, x3
- bhi G_M25748_IG20
+ bhi G_M25748_IG21
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ...

+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, 57.75) byref -> x19 this single-def +; V01 arg1 [V01,T10] ( 8, 6 ) byref -> x21 single-def +; V02 arg2 [V02,T05] ( 9, 13.50) byref -> x20 single-def +; V03 arg3 [V03,T11] ( 4, 3.50) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo> +; V04 loc0 [V04,T07] ( 3, 12 ) int -> x2 +; V05 loc1 [V05,T19] ( 3, 2 ) 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,T12] ( 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.50) int -> x2 "CSE - moderate" +; V61 cse1 [V61,T17] ( 3, 2.50) int -> x24 "CSE - moderate" +; V62 cse2 [V62,T18] ( 3, 2.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,23 @@ 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_IG09
;; 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=1, 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_IG10 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M44776_IG04: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
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_IG05
cmp w23, #0xD1FFAB1E cset x0, lo movz x1, #0xD1FFAB1E // code for <unknown method> @@ -117,12 +120,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_IG08 + b G_M44776_IG19 + ;; size=60 bbWeight=0.50 PerfScore 7.25 +G_M44776_IG05: ; 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 +131,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_IG08 + b G_M44776_IG19 + ;; size=32 bbWeight=0.50 PerfScore 4.00 +G_M44776_IG06: ; 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_IG21 + 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_IG07 + cmp w24, #0xD1FFAB1E
cset x0, lo movz x1, #0xD1FFAB1E // code for <unknown method> ; byrRegs -[x1] @@ -156,18 +156,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_IG08 + ;; size=96 bbWeight=2 PerfScore 65.00 +G_M44776_IG07: ; 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 +174,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_IG08: ; 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_IG06
;; size=24 bbWeight=4 PerfScore 36.00
-G_M44776_IG12: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=200000 {x21}, byref
+G_M44776_IG09: ; bbWeight=1, 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
+ b G_M44776_IG20 + ;; size=12 bbWeight=1 PerfScore 2.50 +G_M44776_IG10: ; 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_IG13 + ;; size=32 bbWeight=0.50 PerfScore 5.25 +G_M44776_IG11: ; 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
...

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,101.24) 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.99, 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.99 PerfScore 0.50 +G_M4100_IG06: ; bbWeight=0.99, 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.99 PerfScore 2.48 +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 503.19, 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)

-20 (-8.93%) : 18625.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -12,114 +12,107 @@ ; V00 arg0 [V00,T03] ( 8, 4.55) long -> x0 single-def ; V01 arg1 [V01,T01] ( 7, 5.00) ref -> x1 class-hnd <System.Object> ; V02 loc0 [V02,T04] ( 4, 3.00) long -> x19
-; V03 loc1 [V03,T00] ( 10, 7.53) long -> x20 -; V04 loc2 [V04,T02] ( 10, 6.58) long -> x21
+; V03 loc1 [V03,T00] ( 10, 7.53) long -> x2 +; V04 loc2 [V04,T02] ( 10, 6.58) long -> x3
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=16 bbWeight=1 PerfScore 3.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M24157_IG10
+ cbz x1, G_M24157_IG15
;; size=4 bbWeight=1 PerfScore 1.00 G_M24157_IG03: ; bbWeight=1.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ldr x19, [x1]
- ldrh w20, [x19, #0x0E] - cbz x20, G_M24157_IG12
+ ldrh w2, [x19, #0x0E] + cbz x2, G_M24157_IG13
;; size=12 bbWeight=1.00 PerfScore 6.98 G_M24157_IG04: ; bbWeight=1.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x19, #0x40] - cmp x20, #4
+ ldr x3, [x19, #0x40] + cmp x2, #4
bge G_M24157_IG08 ;; size=12 bbWeight=1.00 PerfScore 4.48 G_M24157_IG05: ; bbWeight=2.48, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x21] - cmp x2, x0 - beq G_M24157_IG10
+ ldr x4, [x3] + cmp x4, x0 + beq G_M24157_IG15
;; size=12 bbWeight=2.48 PerfScore 11.17 G_M24157_IG06: ; bbWeight=1.51, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x21, x21, #8 - sub x20, x20, #1 - cmp x20, #0
+ add x3, x3, #8 + sub x2, x2, #1 + cmp x2, #0
bgt G_M24157_IG05 ;; size=16 bbWeight=1.51 PerfScore 3.78 G_M24157_IG07: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG12
+ b G_M24157_IG13
;; size=4 bbWeight=0.01 PerfScore 0.01 G_M24157_IG08: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x21] - cmp x2, x0 - beq G_M24157_IG10 - ldr x2, [x21, #0x08] - cmp x2, x0 - beq G_M24157_IG10
+ ldr x4, [x3] + cmp x4, x0 + beq G_M24157_IG15 + ldr x4, [x3, #0x08] + cmp x4, x0 + beq G_M24157_IG15
;; size=24 bbWeight=0.02 PerfScore 0.21 G_M24157_IG09: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x21, #0x10] - cmp x2, x0 - bne G_M24157_IG14
+ ldr x4, [x3, #0x10] + cmp x4, x0 + beq G_M24157_IG15
;; size=12 bbWeight=0.02 PerfScore 0.10
-G_M24157_IG10: ; bbWeight=1.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - mov x0, x1 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1.00 PerfScore 0.50 -G_M24157_IG11: ; bbWeight=1.00, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=1.00 PerfScore 5.00 -G_M24157_IG12: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0]
+G_M24157_IG10: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x4, [x3, #0x18] + cmp x4, x0 + beq G_M24157_IG15 + ;; size=12 bbWeight=0.00 PerfScore 0.01 +G_M24157_IG11: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + add x3, x3, #32 + sub x2, x2, #4 + cmp x2, #4 + bge G_M24157_IG08 + ;; size=16 bbWeight=0.00 PerfScore 0.01 +G_M24157_IG12: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cbnz x2, G_M24157_IG05 + ;; size=4 bbWeight=0.00 PerfScore 0.00 +G_M24157_IG13: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19] mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG18
+ bne G_M24157_IG17
;; size=16 bbWeight=0.01 PerfScore 0.03
-G_M24157_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1]
- b G_M24157_IG10 - ;; size=8 bbWeight=0.01 PerfScore 0.01 -G_M24157_IG14: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x21, #0x18] - cmp x2, x0 - beq G_M24157_IG10 - ;; size=12 bbWeight=0.00 PerfScore 0.01 -G_M24157_IG15: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - add x21, x21, #32 - sub x20, x20, #4 - cmp x20, #4 - bge G_M24157_IG08 - ;; size=16 bbWeight=0.00 PerfScore 0.01 -G_M24157_IG16: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - cbz x20, G_M24157_IG12 - ;; size=4 bbWeight=0.00 PerfScore 0.00 -G_M24157_IG17: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - b G_M24157_IG05 - ;; size=4 bbWeight=0.00 PerfScore 0.00 -G_M24157_IG18: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.01 PerfScore 0.00 +G_M24157_IG15: ; bbWeight=1.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov x0, x1 + ; gcrRegs +[x0] + ;; size=4 bbWeight=1.00 PerfScore 0.50 +G_M24157_IG16: ; bbWeight=1.00, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=1.00 PerfScore 4.00 +G_M24157_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M24157_IG19: ; bbWeight=0.00, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+G_M24157_IG18: ; bbWeight=0.00, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x2 ; gcr arg pop 0
- ;; size=16 bbWeight=0.00 PerfScore 0.00
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
-; Total bytes of code 224, prolog size 16, PerfScore 36.78, instruction count 56, allocated bytes for code 224 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 204, prolog size 12, PerfScore 34.78, 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: @@ -130,7 +123,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ 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) @@ -141,9 +134,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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]!
+ 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

-20 (-8.93%) : 24362.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -12,114 +12,107 @@ ; V00 arg0 [V00,T03] ( 8, 4.54) long -> x0 single-def ; V01 arg1 [V01,T01] ( 7, 5.00) ref -> x1 class-hnd <System.Object> ; V02 loc0 [V02,T04] ( 4, 2.99) long -> x19
-; V03 loc1 [V03,T00] ( 10, 7.50) long -> x20 -; V04 loc2 [V04,T02] ( 10, 6.55) long -> x21
+; V03 loc1 [V03,T00] ( 10, 7.50) long -> x2 +; V04 loc2 [V04,T02] ( 10, 6.55) long -> x3
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8
-G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG - stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=16 bbWeight=1 PerfScore 3.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M24157_IG10
+ cbz x1, G_M24157_IG15
;; size=4 bbWeight=1 PerfScore 1.00 G_M24157_IG03: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ldr x19, [x1]
- ldrh w20, [x19, #0x0E] - cbz x20, G_M24157_IG12
+ ldrh w2, [x19, #0x0E] + cbz x2, G_M24157_IG13
;; size=12 bbWeight=0.99 PerfScore 6.96 G_M24157_IG04: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x21, [x19, #0x40] - cmp x20, #4
+ ldr x3, [x19, #0x40] + cmp x2, #4
bge G_M24157_IG08 ;; size=12 bbWeight=0.99 PerfScore 4.47 G_M24157_IG05: ; bbWeight=2.46, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x21] - cmp x2, x0 - beq G_M24157_IG10
+ ldr x4, [x3] + cmp x4, x0 + beq G_M24157_IG15
;; size=12 bbWeight=2.46 PerfScore 11.09 G_M24157_IG06: ; bbWeight=1.50, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x21, x21, #8 - sub x20, x20, #1 - cmp x20, #0
+ add x3, x3, #8 + sub x2, x2, #1 + cmp x2, #0
bgt G_M24157_IG05 ;; size=16 bbWeight=1.50 PerfScore 3.75 G_M24157_IG07: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
- b G_M24157_IG12
+ b G_M24157_IG13
;; size=4 bbWeight=0.01 PerfScore 0.01 G_M24157_IG08: ; bbWeight=0.03, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x21] - cmp x2, x0 - beq G_M24157_IG10 - ldr x2, [x21, #0x08] - cmp x2, x0 - beq G_M24157_IG10
+ ldr x4, [x3] + cmp x4, x0 + beq G_M24157_IG15 + ldr x4, [x3, #0x08] + cmp x4, x0 + beq G_M24157_IG15
;; size=24 bbWeight=0.03 PerfScore 0.23 G_M24157_IG09: ; bbWeight=0.03, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x21, #0x10] - cmp x2, x0 - bne G_M24157_IG14
+ ldr x4, [x3, #0x10] + cmp x4, x0 + beq G_M24157_IG15
;; size=12 bbWeight=0.03 PerfScore 0.11
-G_M24157_IG10: ; bbWeight=1.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - mov x0, x1 - ; gcrRegs +[x0] - ;; size=4 bbWeight=1.00 PerfScore 0.50 -G_M24157_IG11: ; bbWeight=1.00, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30 - ret lr - ;; size=16 bbWeight=1.00 PerfScore 5.00 -G_M24157_IG12: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0]
+G_M24157_IG10: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x4, [x3, #0x18] + cmp x4, x0 + beq G_M24157_IG15 + ;; size=12 bbWeight=0.00 PerfScore 0.01 +G_M24157_IG11: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + add x3, x3, #32 + sub x2, x2, #4 + cmp x2, #4 + bge G_M24157_IG08 + ;; size=16 bbWeight=0.00 PerfScore 0.01 +G_M24157_IG12: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cbnz x2, G_M24157_IG05 + ;; size=4 bbWeight=0.00 PerfScore 0.00 +G_M24157_IG13: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19] mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG18
+ bne G_M24157_IG17
;; size=16 bbWeight=0.01 PerfScore 0.04
-G_M24157_IG13: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG14: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1]
- b G_M24157_IG10 - ;; size=8 bbWeight=0.01 PerfScore 0.01 -G_M24157_IG14: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x2, [x21, #0x18] - cmp x2, x0 - beq G_M24157_IG10 - ;; size=12 bbWeight=0.00 PerfScore 0.01 -G_M24157_IG15: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - add x21, x21, #32 - sub x20, x20, #4 - cmp x20, #4 - bge G_M24157_IG08 - ;; size=16 bbWeight=0.00 PerfScore 0.01 -G_M24157_IG16: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - cbz x20, G_M24157_IG12 - ;; size=4 bbWeight=0.00 PerfScore 0.00 -G_M24157_IG17: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - b G_M24157_IG05 - ;; size=4 bbWeight=0.00 PerfScore 0.00 -G_M24157_IG18: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.01 PerfScore 0.00 +G_M24157_IG15: ; bbWeight=1.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov x0, x1 + ; gcrRegs +[x0] + ;; size=4 bbWeight=1.00 PerfScore 0.50 +G_M24157_IG16: ; bbWeight=1.00, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=1.00 PerfScore 4.00 +G_M24157_IG17: ; bbWeight=0.00, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] ;; size=16 bbWeight=0.00 PerfScore 0.00
-G_M24157_IG19: ; bbWeight=0.00, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+G_M24157_IG18: ; bbWeight=0.00, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x2 ; gcr arg pop 0
- ;; size=16 bbWeight=0.00 PerfScore 0.00
+ ;; size=12 bbWeight=0.00 PerfScore 0.00
-; Total bytes of code 224, prolog size 16, PerfScore 36.71, instruction count 56, allocated bytes for code 224 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 204, prolog size 12, PerfScore 34.70, 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: @@ -130,7 +123,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ 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) @@ -141,9 +134,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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]!
+ 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

+20 (+13.51%) : 65675.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.BigStruct]:InsertionSort(System.Span1[System.Collections.BigStruct]) (Tier1)

@@ -10,11 +10,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.BigStruct]>
-; V01 loc0 [V01,T09] ( 5, 95.92) int -> x2
+; V01 loc0 [V01,T07] ( 5, 95.92) int -> x2
; V02 loc1 [V02,T11] ( 2, 47.46) struct (32) [fp+0x10] do-not-enreg[SF] ld-addr-op <System.Collections.BigStruct>
-; V03 loc2 [V03,T00] ( 7,213.46) int -> x2
+; V03 loc2 [V03,T01] ( 7,213.46) int -> x2
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 2,118.06) byref -> x6 "impAppendStmt"
+; V05 tmp1 [V05,T04] ( 2,118.06) byref -> x6 "impAppendStmt"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]> ;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]> @@ -22,10 +22,10 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "Inlining Arg" <System.Collections.BigStruct>
-;* V13 tmp9 [V13,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V14 tmp10 [V14,T01] ( 2,150.69) int -> x6 "Inlining Arg"
+;* V13 tmp9 [V13,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V14 tmp10 [V14,T02] ( 3,180.15) int -> x6 "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]>
-; V16 tmp12 [V16,T02] ( 6,145.16) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp12 [V16,T03] ( 6,145.16) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V17 tmp13 [V17,T13] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP @@ -37,11 +37,11 @@ ;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V28 tmp24 [V28,T06] ( 3, 85.13) int -> x5 "V02.[012..016)"
+; V28 tmp24 [V28,T06] ( 4, 99.86) int -> x5 "V02.[012..016)"
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "V12.[012..016)"
-; V30 tmp26 [V30,T07] ( 3, 61.60) byref -> x4 "Spilling address for field-by-field copy" -; V31 tmp27 [V31,T08] ( 3,223.15) byref -> x2 "Spilling address for field-by-field copy" -; V32 cse0 [V32,T04] ( 3,104.86) long -> x4 "CSE - aggressive"
+; V30 tmp26 [V30,T09] ( 3, 61.60) byref -> x4 "Spilling address for field-by-field copy" +; V31 tmp27 [V31,T00] ( 3,223.15) byref -> x2 "Spilling address for field-by-field copy" +; V32 cse0 [V32,T05] ( 3,104.86) long -> x4 "CSE - aggressive"
; V33 cse1 [V33,T12] ( 3, 39.19) int -> x1 "CSE - aggressive" ; V34 cse2 [V34,T10] ( 3, 57.72) int -> x3 "CSE - aggressive" ; @@ -56,7 +56,7 @@ G_M17128_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov w2, wzr sub w1, w1, #1 cmp w1, #0
- ble G_M17128_IG08
+ ble G_M17128_IG12
;; size=16 bbWeight=1 PerfScore 2.50 G_M17128_IG03: ; bbWeight=10.27, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref add w3, w2, #1 @@ -82,7 +82,7 @@ G_M17128_IG04: ; bbWeight=29.52, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ;; size=28 bbWeight=29.52 PerfScore 206.61 G_M17128_IG05: ; bbWeight=39.78, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs -[x4 x6]
- tbnz w2, #31, G_M17128_IG07
+ tbnz w2, #31, G_M17128_IG08
;; size=4 bbWeight=39.78 PerfScore 39.78 G_M17128_IG06: ; bbWeight=37.67, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz sbfiz x4, x2, #5, #32 @@ -91,9 +91,12 @@ G_M17128_IG06: ; bbWeight=37.67, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ldr w6, [x6, #0x0C] ; byrRegs -[x6] cmp w5, w6
- blt G_M17128_IG04
+ bge G_M17128_IG10
;; size=20 bbWeight=37.67 PerfScore 226.03
-G_M17128_IG07: ; bbWeight=37.19, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M17128_IG07: ; bbWeight=22.46, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M17128_IG04 + ;; size=4 bbWeight=22.46 PerfScore 22.46 +G_M17128_IG08: ; bbWeight=37.19, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1 sbfiz x2, x2, #5, #32 add x2, x0, x2 @@ -106,13 +109,25 @@ G_M17128_IG07: ; bbWeight=37.19, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, cmp w2, w1 blt G_M17128_IG03 ;; size=36 bbWeight=37.19 PerfScore 297.54
-G_M17128_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M17128_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M17128_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M17128_IG10: ; bbWeight=14.73, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + cmp w5, w6 + ble G_M17128_IG08 + ;; size=8 bbWeight=14.73 PerfScore 22.10 +G_M17128_IG11: ; bbWeight=14.73, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M17128_IG08 + ;; size=4 bbWeight=14.73 PerfScore 14.73 +G_M17128_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 148, prolog size 8, PerfScore 878.62, instruction count 37, allocated bytes for code 148 (MethodHash=3829bd17) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
+; Total bytes of code 168, prolog size 8, PerfScore 938.91, instruction count 42, allocated bytes for code 168 (MethodHash=3829bd17) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
; ============================================================ Unwind Info: @@ -123,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+19.23%) : 51761.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span1[System.Collections.IntStruct]) (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.IntStruct]>
-; V01 loc0 [V01,T06] ( 5, 96.39) int -> x2
+; V01 loc0 [V01,T04] ( 5, 96.39) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct> ; V03 loc2 [V03,T00] ( 8,239.98) int -> x2 ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -22,12 +22,12 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> ; V16 tmp12 [V16,T01] ( 6,143.78) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V17 tmp13 [V17,T09] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 85.09) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4, 99.81) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP @@ -36,7 +36,7 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 74.80) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 89.51) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ; V30 cse0 [V30,T08] ( 3, 39.37) int -> x1 "CSE - aggressive" @@ -53,7 +53,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov w2, wzr sub w1, w1, #1 cmp w1, #0
- ble G_M24360_IG08
+ ble G_M24360_IG12
;; size=16 bbWeight=1 PerfScore 2.50 G_M24360_IG03: ; bbWeight=10.32, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref add w3, w2, #1 @@ -71,27 +71,42 @@ G_M24360_IG04: ; bbWeight=28.84, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ;; size=24 bbWeight=28.84 PerfScore 187.48 G_M24360_IG05: ; bbWeight=39.51, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs -[x5]
- tbnz w2, #31, G_M24360_IG07
+ tbnz w2, #31, G_M24360_IG08
;; size=4 bbWeight=39.51 PerfScore 39.51 G_M24360_IG06: ; bbWeight=37.40, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ldr w5, [x0, w2, SXTW #2] cmp w4, w5
- blt G_M24360_IG04
+ bge G_M24360_IG10
;; size=12 bbWeight=37.40 PerfScore 168.30
-G_M24360_IG07: ; bbWeight=37.37, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M24360_IG07: ; bbWeight=22.66, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG04 + ;; size=4 bbWeight=22.66 PerfScore 22.66 +G_M24360_IG08: ; bbWeight=37.37, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1 str w4, [x0, w2, SXTW #2] sxtw w2, w3 cmp w2, w1 blt G_M24360_IG03 ;; size=20 bbWeight=37.37 PerfScore 130.80
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M24360_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M24360_IG10: ; bbWeight=14.71, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + cmp w4, w5 + ble G_M24360_IG08 + ;; size=8 bbWeight=14.71 PerfScore 22.07 +G_M24360_IG11: ; bbWeight=14.70, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG08 + ;; size=4 bbWeight=14.70 PerfScore 14.70 +G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 578.54, instruction count 26, allocated bytes for code 104 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 638.98, instruction count 31, allocated bytes for code 124 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================ Unwind Info: @@ -102,7 +117,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+19.23%) : 55370.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span1[System.Collections.IntStruct]) (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.IntStruct]>
-; V01 loc0 [V01,T06] ( 5, 95.04) int -> x2
+; V01 loc0 [V01,T04] ( 5, 95.04) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct> ; V03 loc2 [V03,T00] ( 8,239.33) int -> x2 ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -22,12 +22,12 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> ; V16 tmp12 [V16,T01] ( 6,143.20) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V17 tmp13 [V17,T09] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 84.18) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4, 98.58) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP @@ -36,7 +36,7 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 74.33) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 88.72) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ; V30 cse0 [V30,T08] ( 3, 38.92) int -> x1 "CSE - aggressive" @@ -53,7 +53,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov w2, wzr sub w1, w1, #1 cmp w1, #0
- ble G_M24360_IG08
+ ble G_M24360_IG12
;; size=16 bbWeight=1 PerfScore 2.50 G_M24360_IG03: ; bbWeight=10.10, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref add w3, w2, #1 @@ -71,27 +71,42 @@ G_M24360_IG04: ; bbWeight=29.01, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ;; size=24 bbWeight=29.01 PerfScore 188.56 G_M24360_IG05: ; bbWeight=39.11, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs -[x5]
- tbnz w2, #31, G_M24360_IG07
+ tbnz w2, #31, G_M24360_IG08
;; size=4 bbWeight=39.11 PerfScore 39.11 G_M24360_IG06: ; bbWeight=37.17, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ldr w5, [x0, w2, SXTW #2] cmp w4, w5
- blt G_M24360_IG04
+ bge G_M24360_IG10
;; size=12 bbWeight=37.17 PerfScore 167.25
-G_M24360_IG07: ; bbWeight=36.92, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M24360_IG07: ; bbWeight=22.53, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG04 + ;; size=4 bbWeight=22.53 PerfScore 22.53 +G_M24360_IG08: ; bbWeight=36.92, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1 str w4, [x0, w2, SXTW #2] sxtw w2, w3 cmp w2, w1 blt G_M24360_IG03 ;; size=20 bbWeight=36.92 PerfScore 129.22
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M24360_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M24360_IG10: ; bbWeight=14.39, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + cmp w4, w5 + ble G_M24360_IG08 + ;; size=8 bbWeight=14.39 PerfScore 21.59 +G_M24360_IG11: ; bbWeight=14.38, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG08 + ;; size=4 bbWeight=14.38 PerfScore 14.38 +G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 575.57, instruction count 26, allocated bytes for code 104 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 635.07, instruction count 31, allocated bytes for code 124 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================ Unwind Info: @@ -102,7 +117,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.osx.arm64.checked.mch

-32 (-1.75%) : 9082.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)

@@ -22,7 +22,7 @@ ; V11 loc7 [V11,T09] ( 18, 40 ) ushort -> x24 ;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 loc9 [V13,T43] ( 3, 6 ) ubyte -> x0
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T18] ( 7, 14 ) ushort -> x25 ;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune> ; V17 loc13 [V17,T28] ( 4, 8 ) int -> x27 @@ -343,8 +343,9 @@ G_M13139_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
+ mov w22, w25
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 28.00
+ ;; size=44 bbWeight=2 PerfScore 29.00
G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -354,8 +355,9 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
+ mov w22, w25
b G_M13139_IG45
- ;; size=28 bbWeight=2 PerfScore 14.00
+ ;; size=32 bbWeight=2 PerfScore 15.00
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 bgt G_M13139_IG21 @@ -383,9 +385,8 @@ G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ;; size=28 bbWeight=2 PerfScore 13.00 G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref add w22, w22, #2
- mov w25, w22
b G_M13139_IG45
- ;; size=12 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref sbfiz x0, x22, #1, #32 add x0, x19, x0 @@ -402,9 +403,8 @@ G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ; gcr arg pop 0 add w0, w0, w22 sub w22, w0, #1
- mov w25, w22
b G_M13139_IG45
- ;; size=64 bbWeight=2 PerfScore 24.00
+ ;; size=60 bbWeight=2 PerfScore 23.00
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -415,9 +415,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -427,9 +426,8 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22
b G_M13139_IG45
- ;; size=32 bbWeight=2 PerfScore 15.00
+ ;; size=28 bbWeight=2 PerfScore 14.00
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 ble G_M13139_IG43 @@ -667,19 +665,16 @@ G_M13139_IG40: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, cmp w24, w27 blt G_M13139_IG35 ;; size=112 bbWeight=16 PerfScore 344.00
-G_M13139_IG41: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M13139_IG41: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] ldrb w0, [fp, #-0x80] // [V14 loc10]
- cbz w0, G_M13139_IG42
+ cbz w0, G_M13139_IG45 + ;; size=8 bbWeight=4 PerfScore 12.00 +G_M13139_IG42: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
add w27, w22, #1 sxtw w22, w27
- mov w25, w22
b G_M13139_IG45
- ;; size=24 bbWeight=2 PerfScore 11.00 -G_M13139_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref - mov w25, w22 - b G_M13139_IG45 - ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=2 PerfScore 4.00
G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -690,9 +685,8 @@ G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -702,14 +696,12 @@ G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22 - ;; size=28 bbWeight=2 PerfScore 13.00
+ ;; size=24 bbWeight=2 PerfScore 12.00
G_M13139_IG45: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- add w25, w25, #1 - cmp w25, w20 - mov w22, w25
+ add w22, w22, #1 + cmp w22, w20
blt G_M13139_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
+ ;; size=12 bbWeight=4 PerfScore 8.00
G_M13139_IG46: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x23] sub x0, fp, #120 // [V05 loc1] @@ -772,7 +764,7 @@ G_M13139_IG50: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1828, prolog size 76, PerfScore 1420.00, instruction count 457, allocated bytes for code 1828 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
+; Total bytes of code 1796, prolog size 76, PerfScore 1417.50, instruction count 449, allocated bytes for code 1796 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -783,7 +775,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 457 (0x001c9) Actual length = 1828 (0x000724)
+ Function Length : 449 (0x001c1) Actual length = 1796 (0x000704)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-1.01%) : 31181.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)

@@ -22,20 +22,20 @@ ; V11 tmp2 [V11,T25] ( 4, 16 ) 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"
+; V14 tmp5 [V14,T07] ( 6, 24 ) ref -> x3 "arr expr"
; V15 cse0 [V15,T06] ( 8, 26.89) 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" ; 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,T15] ( 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, 20.95) long -> x10 "CSE - aggressive" +; V23 cse8 [V23,T03] ( 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"
+; V27 cse12 [V27,T23] ( 6, 0.36) long -> x10 "CSE - conservative"
; ; Lcl frame size = 0 @@ -65,18 +65,18 @@ G_M64421_IG03: ; bbWeight=1, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x 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
+ bhs G_M64421_IG28
add x4, x2, #16 ; byrRegs +[x4] mov w10, w5 ldr w4, [x4, x10, LSL #2] ; byrRegs -[x4] cmp w4, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
mov w4, w4 ldr d16, [x7, x4, LSL #3] cmp w5, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
ldr d17, [x7, x10, LSL #3] str d17, [x7, x4, LSL #3] cmn w6, #1 @@ -87,7 +87,7 @@ G_M64421_IG04: ; bbWeight=2, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x ;; 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
+ bhs G_M64421_IG28
str d16, [x7, w5, UXTW #3] add w5, w5, #1 cmp w5, w1 @@ -95,23 +95,23 @@ G_M64421_IG05: ; bbWeight=8, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x ;; 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
+ sub w2, w1, #1 + sxtw w5, w2
tbnz w5, #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 ble G_M64421_IG16
- ldr w10, [x0, #0x08] - cmp w10, w5
+ ldr w4, [x0, #0x08] + cmp w4, w5
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, w5 + ldr d16, [x7, x10, LSL #3] + cmp w5, 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 @@ -120,28 +120,28 @@ G_M64421_IG09: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8} 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 w4, w5
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 @@ -150,24 +150,24 @@ G_M64421_IG11: ; bbWeight=15.68, gcrefRegs=0040 {x6}, byrefRegs=0180 {x7 ;; size=40 bbWeight=15.68 PerfScore 243.06 G_M64421_IG12: ; bbWeight=3.96, 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 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 @@ -176,92 +176,89 @@ G_M64421_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8} 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]
+ ; byrRegs -[x3] + ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- mov x2, x6 - ; gcrRegs +[x2] - ldr w0, [x2, #0x08]
+ mov x3, x6 + ; gcrRegs +[x3] + ldr w0, [x3, #0x08]
cmp w5, w0
- bhs G_M64421_IG29 - add x2, x2, #16 - ; gcrRegs -[x2] - ; byrRegs +[x2] - ldr d17, [x2, x11, LSL #3]
+ bhs G_M64421_IG28 + add x3, x3, #16 + ; gcrRegs -[x3] + ; byrRegs +[x3] + ldr d17, [x3, x10, LSL #3]
fdiv d17, d16, d17
- str d17, [x7, x11, LSL #3]
+ str d17, [x7, x10, LSL #3]
sub w5, w5, #1 tbz w5, #31, G_M64421_IG08 ;; size=44 bbWeight=3.96 PerfScore 110.88 G_M64421_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x6]
- ; byrRegs -[x2 x7-x8]
+ ; byrRegs -[x3 x7-x8]
b G_M64421_IG21 ;; size=4 bbWeight=1 PerfScore 1.00 G_M64421_IG16: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz ; gcrRegs +[x0] ; byrRegs +[x7-x8] cmp w5, w9
- bhs G_M64421_IG29 - mov w11, w5 - ldr d16, [x7, x11, LSL #3] - cmp w5, w4
+ bhs G_M64421_IG28 + mov w10, w5 + ldr d16, [x7, x10, LSL #3] + cmp w5, w2
beq G_M64421_IG20 ;; size=24 bbWeight=0.04 PerfScore 0.26 G_M64421_IG17: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
- add w10, w5, #1 - cmp w10, w1
+ add w4, w5, #1 + cmp w4, w1
bge G_M64421_IG20 ;; size=12 bbWeight=0.02 PerfScore 0.04 G_M64421_IG18: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref
- ldr w2, [x0, #0x08]
+ ldr w3, [x0, #0x08]
;; size=4 bbWeight=0.01 PerfScore 0.03 G_M64421_IG19: ; bbWeight=0.16, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
- cmp w5, w2 - bhs G_M64421_IG29 - ldr x3, [x8, x11, LSL #3] - ; gcrRegs +[x3] - mov x6, x3
+ cmp w5, w3 + bhs G_M64421_IG28 + ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- ldr w3, [x6, #0x08] - ; gcrRegs -[x3] - cmp w10, w3 - bhs G_M64421_IG29 - add x3, x6, #16 - ; byrRegs +[x3] - ldr d17, [x3, w10, UXTW #3] - cmp w10, w9 - bhs G_M64421_IG29 - ldr d18, [x7, w10, UXTW #3]
+ ldr w11, [x6, #0x08] + cmp w4, w11
...

-4 (-0.44%) : 29593.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)

@@ -14,26 +14,26 @@ ; V03 arg3 [V03,T35] ( 3, 3 ) float -> d10 single-def ; V04 arg4 [V04,T36] ( 3, 3 ) float -> d11 single-def ; V05 arg5 [V05,T37] ( 3, 3 ) float -> d12 single-def
-; V06 loc0 [V06,T08] ( 10, 14 ) ref -> x20 class-hnd exact single-def <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_0> -; V07 loc1 [V07,T40] ( 2, 3 ) double -> [fp+0x80] spill-single-def
+; V06 loc0 [V06,T07] ( 10, 20 ) ref -> x20 class-hnd exact single-def <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_0> +; V07 loc1 [V07,T41] ( 2, 3 ) double -> [fp+0x80] spill-single-def
; V08 loc2 [V08,T42] ( 2, 2 ) double -> [fp+0x78] spill-single-def ; V09 loc3 [V09,T32] ( 2, 9 ) double -> [fp+0x70] spill-single-def ; V10 loc4 [V10,T23] ( 2,129 ) simd16 -> d11 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
-; V11 loc5 [V11,T28] ( 2, 17 ) simd16 -> [fp+0x60] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> -; V12 loc6 [V12,T41] ( 2, 3 ) simd16 -> [fp+0x50] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]>
+; V11 loc5 [V11,T29] ( 2, 17 ) simd16 -> [fp+0x60] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> +; V12 loc6 [V12,T39] ( 2, 5 ) simd16 -> [fp+0x50] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]>
; V13 loc7 [V13,T24] ( 2,129 ) simd16 -> d14 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[long]> ; V14 loc8 [V14,T38] ( 3, 5 ) simd16 -> [fp+0x40] HFA(simd16) spill-single-def <System.Numerics.Vector`1[double]>
-; V15 loc9 [V15,T30] ( 5, 14 ) double -> [fp+0x38] -; V16 loc10 [V16,T22] ( 5,149 ) simd16 -> d15 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
+; V15 loc9 [V15,T28] ( 5, 18 ) double -> [fp+0x38] +; V16 loc10 [V16,T22] ( 5,153 ) simd16 -> d8 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
; V17 loc11 [V17,T02] ( 8, 70 ) ref -> x23 class-hnd exact <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_1> ; V18 loc12 [V18,T27] ( 3, 20 ) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> ; V19 loc13 [V19,T21] ( 6,194 ) simd16 -> [fp+0x10] HFA(simd16) <System.Numerics.Vector`1[double]>
-; V20 loc14 [V20,T14] ( 7,784 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]> -; V21 loc15 [V21,T15] ( 7,784 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[double]> -; V22 loc16 [V22,T17] ( 5,416 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[long]> -; V23 loc17 [V23,T16] ( 6,656 ) simd16 -> d22 HFA(simd16) <System.Numerics.Vector`1[long]> -; V24 loc18 [V24,T19] ( 2,256 ) simd16 -> d23 HFA(simd16) <System.Numerics.Vector`1[double]> -; V25 loc19 [V25,T20] ( 2,256 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[double]>
+; V20 loc14 [V20,T14] ( 7,784 ) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[double]> +; V21 loc15 [V21,T15] ( 7,784 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]> +; V22 loc16 [V22,T17] ( 5,416 ) simd16 -> d10 HFA(simd16) <System.Numerics.Vector`1[long]> +; V23 loc17 [V23,T16] ( 6,656 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[long]> +; V24 loc18 [V24,T19] ( 2,256 ) simd16 -> d22 HFA(simd16) <System.Numerics.Vector`1[double]> +; V25 loc19 [V25,T20] ( 2,256 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]>
;* V26 loc20 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[double]> ;* V27 loc21 [V27 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[long]> ;* V28 loc22 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Action`2[long,int]> @@ -49,16 +49,16 @@ ;* V38 tmp8 [V38 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inline return value spill temp" <System.Numerics.Vector`1[double]> ; V39 tmp9 [V39,T13] ( 3, 3 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <double[]> ; V40 tmp10 [V40,T06] ( 6, 21 ) int -> x24 "Inline stloc first use temp"
-; V41 tmp11 [V41,T29] ( 2, 16 ) double -> d0 "Strict ordering of exceptions for Array store"
+; V41 tmp11 [V41,T30] ( 2, 16 ) double -> d0 "Strict ordering of exceptions for Array store"
;* V42 tmp12 [V42 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[double]>
-;* V43 tmp13 [V43,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V44 tmp14 [V44,T25] ( 3, 96 ) simd16 -> d8 HFA(simd16) ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]> -; V45 cse0 [V45,T18] ( 3,384 ) simd16 -> d20 "CSE - aggressive"
+;* V43 tmp13 [V43,T08] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V44 tmp14 [V44,T25] ( 3, 96 ) simd16 -> d10 HFA(simd16) ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]> +; V45 cse0 [V45,T18] ( 3,384 ) simd16 -> d19 "CSE - aggressive"
; V46 cse1 [V46,T10] ( 3, 10 ) long -> x22 "CSE - moderate" ; V47 cse2 [V47,T09] ( 3, 12 ) long -> x21 "CSE - moderate" ; V48 cse3 [V48,T12] ( 2, 5 ) byref -> x25 hoist "CSE - moderate"
-; V49 cse4 [V49,T39] ( 4, 4 ) double -> d16 "CSE - moderate" -; V50 rat0 [V50,T31] ( 3, 12 ) simd16 -> d20 "ReplaceWithLclVar is creating a new local variable"
+; V49 cse4 [V49,T40] ( 4, 4 ) double -> d16 "CSE - moderate" +; V50 rat0 [V50,T31] ( 3, 12 ) simd16 -> d19 "ReplaceWithLclVar is creating a new local variable"
; V51 rat1 [V51,T26] ( 3, 96 ) simd16 -> d18 "ReplaceWithLclVar is creating a new local variable" ; V52 rat2 [V52,T04] ( 3, 24 ) ref -> x1 "delegate invoke call" ; @@ -174,11 +174,11 @@ G_M57953_IG03: ; bbWeight=4, gcrefRegs=B80000 {x19 x20 x21 x23}, byrefReg G_M57953_IG04: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref ; gcrRegs -[x21] ; byrRegs -[x25]
- ldr q9, [x23, #0x10] - str q9, [fp, #0x40] // [V14 loc8] - ldr d13, [fp, #0x78] // [V08 loc2]
+ ldr q13, [x23, #0x10] + str q13, [fp, #0x40] // [V14 loc8] + ldr d9, [fp, #0x78] // [V08 loc2]
str wzr, [x20, #0x20]
- dup v15.2d, v13.d[0]
+ dup v8.2d, v9.d[0]
b G_M57953_IG12 ;; size=24 bbWeight=1 PerfScore 9.00 G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -187,8 +187,8 @@ G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movk x21, #0xD1FFAB1E LSL #16 movk x21, #1 LSL #32 mov x0, x21
- mov v8.d[0], v15.d[1] - mov v9.d[0], v11.d[1]
+ mov v15.d[0], v8.d[1] + mov v13.d[0], v11.d[1]
mov v10.d[0], v14.d[1] bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] @@ -203,62 +203,62 @@ G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x0 x15] ; byrRegs -[x14] str wzr, [x23, #0x18]
- ldr d16, [fp, #0x80] // [V07 loc1] - dup v17.2d, v16.d[0] - str q17, [fp, #0x20] // [V18 loc12] - ldr q18, [fp, #0x40] // [V14 loc8] - mov v19.16b, v18.16b - fcmge v20.2d, v17.2d, v18.2d - umaxp v20.4s, v20.4s, v20.4s - umov x0, v20.d[0]
+ ldr d12, [fp, #0x80] // [V07 loc1] + dup v16.2d, v12.d[0] + str q16, [fp, #0x20] // [V18 loc12] + ldr q17, [fp, #0x40] // [V14 loc8] + mov v18.16b, v17.16b + fcmge v19.2d, v16.2d, v17.2d + umaxp v19.4s, v19.4s, v19.4s + umov x0, v19.d[0]
cmp x0, #0
- mov v15.d[1], v8.d[0] - mov v11.d[1], v9.d[0]
+ mov v8.d[1], v15.d[0] + mov v11.d[1], v13.d[0]
mov v14.d[1], v10.d[0] beq G_M57953_IG16 ;; size=104 bbWeight=2 PerfScore 47.00 G_M57953_IG06: ; bbWeight=16, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
- mov v20.16b, v19.16b - mov v21.16b, v15.16b - movi v8.4s, #0 - ldr q22, [@RWD32]
+ mov v19.16b, v18.16b + mov v20.16b, v8.16b + movi v10.4s, #0 + ldr q21, [@RWD32]
;; size=16 bbWeight=16 PerfScore 56.00 G_M57953_IG07: ; bbWeight=128, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz
+ fmul v22.2d, v19.2d, v19.2d
fmul v23.2d, v20.2d, v20.2d
- fmul v24.2d, v21.2d, v21.2d - fsub v23.2d, v23.2d, v24.2d - fmul v20.2d, v20.2d, v21.2d - fadd v21.2d, v20.2d, v20.2d - str q19, [fp, #0x10] // [V19 loc13] - fadd v20.2d, v23.2d, v19.2d - fadd v21.2d, v21.2d, v15.2d - add v8.2d, v8.2d, v22.2d
+ fsub v22.2d, v22.2d, v23.2d + fmul v19.2d, v19.2d, v20.2d + fadd v20.2d, v19.2d, v19.2d + str q18, [fp, #0x10] // [V19 loc13] + fadd v19.2d, v22.2d, v18.2d + fadd v20.2d, v20.2d, v8.2d + add v10.2d, v10.2d, v21.2d + fmul v22.2d, v19.2d, v19.2d
fmul v23.2d, v20.2d, v20.2d
- fmul v24.2d, v21.2d, v21.2d - fadd v23.2d, v23.2d, v24.2d - fcmge v23.2d, v11.2d, v23.2d - cmge v24.2d, v14.2d, v8.2d - and v23.2d, v23.2d, v24.2d
+ fadd v22.2d, v22.2d, v23.2d + fcmge v22.2d, v11.2d, v22.2d + cmge v23.2d, v14.2d, v10.2d
and v22.2d, v22.2d, v23.2d
- umaxp v23.4s, v22.4s, v22.4s - umov x0, v23.d[0]
+ and v21.2d, v21.2d, v22.2d + umaxp v22.4s, v21.4s, v21.4s + umov x0, v22.d[0]
cmp x0, #0
- ldr q19, [fp, #0x10] // [V19 loc13]
+ ldr q18, [fp, #0x10] // [V19 loc13]
bne G_M57953_IG07 ;; size=84 bbWeight=128 PerfScore 5184.00 G_M57953_IG08: ; bbWeight=16, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref, isz ldr x24, [x23, #0x10] ; gcrRegs +[x24]
- str q19, [fp, #0x10] // [V19 loc13]
+ str q18, [fp, #0x10] // [V19 loc13]
cbnz x24, G_M57953_IG10 ;; size=12 bbWeight=16 PerfScore 80.00 G_M57953_IG09: ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref ; gcrRegs -[x24] add x0, x21, #0xD1FFAB1E
- mov v9.d[0], v8.d[1] - mov v10.d[0], v15.d[1] - mov v13.d[0], v11.d[1] - mov v12.d[0], v14.d[1]
+ mov v13.d[0], v10.d[1] + mov v15.d[0], v8.d[1] + mov v12.d[0], v11.d[1] + mov v9.d[0], v14.d[1]
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -280,28 +280,28 @@ G_M57953_IG09: ; bbWeight=8, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=00 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- mov v8.d[1], v9.d[0] - mov v15.d[1], v10.d[0] - mov v11.d[1], v13.d[0] - mov v14.d[1], v12.d[0]
+ mov v10.d[1], v13.d[0] + mov v8.d[1], v15.d[0] + mov v11.d[1], v12.d[0] + mov v14.d[1], v9.d[0]
;; size=76 bbWeight=8 PerfScore 124.00 G_M57953_IG10: ; bbWeight=16, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefRegs=0000 {}, byref, isz mov w1, wzr
- umov x1, v8.d[0]
+ umov x1, v10.d[0]
mov w2, wzr ldr x0, [x24, #0x08] ; gcrRegs +[x0] ldr x3, [x24, #0x18]
- mov v10.d[0], v15.d[1]
+ mov v15.d[0], v8.d[1]
mov v13.d[0], v11.d[1]
- mov v9.d[0], v14.d[1] - mov v12.d[0], v8.d[1]
+ mov v12.d[0], v14.d[1] + mov v9.d[0], v10.d[1]
blr x3 ; gcrRegs -[x0] ; gcr arg pop 0 mov w1, #1
- mov v8.d[1], v12.d[0] - umov x1, v8.d[1]
+ mov v10.d[1], v9.d[0] + umov x1, v10.d[1]
mov w2, #1 ldr x0, [x24, #0x08] ; gcrRegs +[x0] @@ -309,39 +309,38 @@ G_M57953_IG10: ; bbWeight=16, gcrefRegs=1980000 {x19 x20 x23 x24}, byrefR blr x3 ; gcrRegs -[x0 x24] ; gcr arg pop 0
- ldr q8, [fp, #0x10] // [V19 loc13]
+ ldr q10, [fp, #0x10] // [V19 loc13]
ldr q16, [fp, #0x60] // [V11 loc5]
- fadd v8.2d, v8.2d, v16.2d
+ fadd v10.2d, v10.2d, v16.2d
ldr w0, [x23, #0x18] add w0, w0, #2 str w0, [x23, #0x18] ldr q17, [fp, #0x20] // [V18 loc12]
- fcmge v18.2d, v17.2d, v8.2d
+ fcmge v18.2d, v17.2d, v10.2d
umaxp v18.4s, v18.4s, v18.4s umov x0, v18.d[0] cmp x0, #0
- mov v15.d[1], v10.d[0]
+ mov v8.d[1], v15.d[0]
mov v11.d[1], v13.d[0]
- mov v14.d[1], v9.d[0] - mov v19.16b, v8.16b
+ mov v14.d[1], v12.d[0]
...

+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] ...

+4 (+0.44%) : 14771.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)

@@ -329,13 +329,13 @@ G_M20834_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[x22] ldr w1, [x22, #0x10] cmp w0, w1
- bhs G_M20834_IG24
+ bhs G_M20834_IG23
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [fp, #0x2C] // [V02 loc0] ldr w2, [x0, #0x08] cmp w1, w2
- bhs G_M20834_IG23
+ bhs G_M20834_IG24
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -369,10 +369,6 @@ G_M20834_IG22: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { ret lr ;; size=24 bbWeight=0 PerfScore 0.00 G_M20834_IG23: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
- bl CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=4 bbWeight=0 PerfScore 0.00 -G_M20834_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movz x0, #0xD1FFAB1E // code for System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException() movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -381,8 +377,13 @@ G_M20834_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcr arg pop 0 brk_unix #0 ;; size=24 bbWeight=0 PerfScore 0.00
+G_M20834_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + bl CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + brk_unix #0 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 908, prolog size 40, PerfScore 400.13, instruction count 227, allocated bytes for code 908 (MethodHash=6b3eae9d) for method System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
+; Total bytes of code 912, prolog size 40, PerfScore 400.13, instruction count 228, allocated bytes for code 912 (MethodHash=6b3eae9d) for method System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -419,7 +420,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 50 (0x00032) Actual length = 200 (0x0000c8)
+ 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 (+0.49%) : 46567.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1ulong

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T08] ( 22, 16 ) ref -> x20 class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V02 arg2 [V02,T13] ( 20, 11 ) ref -> x21 class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V03 arg3 [V03,T21] ( 7, 4.50) ubyte -> x22
-; V04 arg4 [V04,T23] ( 4, 3 ) ubyte -> x23 single-def
+; V04 arg4 [V04,T24] ( 4, 3 ) ubyte -> x23 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V07 loc2 [V07 ] ( 2, 1 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -20,11 +20,11 @@ ; V09 loc4 [V09,T00] ( 18, 42.50) ref -> x22 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]]> ; V10 loc5 [V10,T31] ( 3, 3 ) int -> x20 ; V11 loc6 [V11,T22] ( 3, 6.50) ref -> x23 class-hnd exact single-def <<unknown class>>
-; V12 loc7 [V12,T24] ( 4, 5 ) ubyte -> x24
+; V12 loc7 [V12,T23] ( 4, 5.50) ubyte -> x24
; V13 loc8 [V13,T01] ( 13, 36.50) int -> x25
-; V14 loc9 [V14,T17] ( 4, 9 ) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V14 loc9 [V14,T17] ( 4, 9.50) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V15 loc10 [V15,T02] ( 8, 25 ) int -> x21
-; V16 loc11 [V16,T18] ( 4, 9 ) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V16 loc11 [V16,T18] ( 4, 9.50) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V17 loc12 [V17,T03] ( 8, 25 ) int -> x21 ;* V18 loc13 [V18 ] ( 0, 0 ) long -> zero-ref ld-addr-op ;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -49,7 +49,7 @@ ; V38 tmp19 [V38,T34] ( 4, 2 ) long -> x23 "Inline stloc first use temp" ;* V39 tmp20 [V39 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V40 tmp21 [V40,T32] ( 4, 2 ) ref -> x24 ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V41 tmp22 [V41,T15] ( 10, 10 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V41 tmp22 [V41,T16] ( 10, 10 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
;* V42 tmp23 [V42,T41] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V43 tmp24 [V43,T29] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ; V44 tmp25 [V44 ] ( 8, 8 ) struct (40) [fp+0x40] do-not-enreg[XS] must-init addr-exposed "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> @@ -62,7 +62,7 @@ ; V51 tmp32 [V51 ] ( 8, 8 ) struct (40) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ;* V52 tmp33 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V53 tmp34 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V54 tmp35 [V54,T16] ( 8, 9 ) ref -> registers "Single return block return value"
+; V54 tmp35 [V54,T15] ( 8, 11 ) ref -> registers "Single return block return value"
; V55 tmp36 [V55,T27] ( 6, 3 ) int -> x22 "field V24._info (fldOffset=0x0)" P-INDEP ;* V56 tmp37 [V56 ] ( 0, 0 ) int -> zero-ref "field V46._info (fldOffset=0x0)" P-INDEP ;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "V39.[000..008)" @@ -148,20 +148,24 @@ G_M47816_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; gcrRegs -[x19 x21] mov x0, x20 ; gcrRegs +[x0]
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
G_M47816_IG06: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19 x21]
+ ; gcrRegs -[x0 x2] +[x19 x21]
ldr x24, [x19, #0x18] ; gcrRegs +[x24] cmp x20, x24 bne G_M47816_IG07 mov x0, x21 ; gcrRegs +[x0]
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
G_M47816_IG07: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
ldr w0, [x21, #0x28] cmp w0, #4 beq G_M47816_IG08 @@ -220,10 +224,12 @@ G_M47816_IG12: ; bbWeight=0.50, gcrefRegs=1180000 {x19 x20 x24}, byrefReg blr x5 ; gcrRegs -[x1-x2 x19-x20 x24] ; gcr arg pop 0
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=44 bbWeight=0.50 PerfScore 4.50
+ ;; size=48 bbWeight=0.50 PerfScore 4.75
G_M47816_IG13: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19-x21 x24-x25]
+ ; gcrRegs -[x0 x2] +[x19-x21 x24-x25]
mov x0, x25 ; gcrRegs +[x0] mov x1, x19 @@ -271,10 +277,12 @@ G_M47816_IG13: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, blr x5 ; gcrRegs -[x1-x2 x19-x21 x24-x25] ; gcr arg pop 0
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=132 bbWeight=0.50 PerfScore 15.50
+ ;; size=136 bbWeight=0.50 PerfScore 15.75
G_M47816_IG14: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19-x21 x24-x25]
+ ; gcrRegs -[x0 x2] +[x19-x21 x24-x25]
tst w23, #255 beq G_M47816_IG15 mov x0, x20 @@ -317,9 +325,9 @@ G_M47816_IG16: ; bbWeight=4, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs cmp w1, #4 beq G_M47816_IG16 ;; size=28 bbWeight=4 PerfScore 48.00
-G_M47816_IG17: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M47816_IG17: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref
b G_M47816_IG19
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M47816_IG18: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov w22, wzr @@ -341,7 +349,7 @@ G_M47816_IG20: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs G_M47816_IG21: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x20, #0x28] cmp w0, #4
- bne G_M47816_IG34
+ bne G_M47816_IG35
;; size=12 bbWeight=0.50 PerfScore 2.25 G_M47816_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz movz x0, #0xD1FFAB1E @@ -402,17 +410,17 @@ G_M47816_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs mov w25, wzr ldr w0, [x22, #0x10] cmp w0, #0
- ble G_M47816_IG30
+ ble G_M47816_IG31
;; size=168 bbWeight=0.50 PerfScore 18.50 G_M47816_IG23: ; bbWeight=4, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ldr w0, [x22, #0x10] cmp w25, w0
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x0, [x22, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w25, w1
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -433,12 +441,12 @@ G_M47816_IG23: ; bbWeight=4, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefReg G_M47816_IG24: ; bbWeight=2, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ldr w2, [x22, #0x10] cmp w25, w2
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x2, [x22, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] cmp w25, w0
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -462,7 +470,7 @@ G_M47816_IG25: ; bbWeight=2, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefReg ; gcrRegs +[x2] ldr w0, [x22, #0x10] cmp w25, w0
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x0, [x22, #0x08] ; gcrRegs +[x0] sxtw x1, w25 @@ -483,25 +491,27 @@ G_M47816_IG26: ; bbWeight=4, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefReg cmp w25, w1 blt G_M47816_IG23 ;; size=16 bbWeight=4 PerfScore 20.00
-G_M47816_IG27: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
+G_M47816_IG27: ; bbWeight=1, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x23]
- cbz w24, G_M47816_IG30
+ cbz w24, G_M47816_IG31 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M47816_IG28: ; bbWeight=0.50, gcrefRegs=480000 {x19 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21]
ldr x2, [x19, #0x18] ; gcrRegs +[x2] ldr w1, [x22, #0x10] sub w21, w1, #1
- ; gcrRegs -[x21] - tbnz w21, #31, G_M47816_IG29 - ;; size=20 bbWeight=0.50 PerfScore 4.25 -G_M47816_IG28: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=0000 {}, byref, isz
+ tbnz w21, #31, G_M47816_IG30 + ;; size=16 bbWeight=0.50 PerfScore 3.75 +G_M47816_IG29: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w1, [x22, #0x10] cmp w21, w1
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w0, [x1, #0x08] cmp w21, w0
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -522,31 +532,29 @@ G_M47816_IG28: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=000 mov x2, x0 ; gcrRegs +[x2] sub w21, w21, #1
- tbz w21, #31, G_M47816_IG28
+ tbz w21, #31, G_M47816_IG29
;; size=80 bbWeight=4 PerfScore 98.00
-G_M47816_IG29: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+G_M47816_IG30: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19 x22]
- mov x0, x2 - ; gcrRegs +[x0]
b G_M47816_IG33
- ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M47816_IG30: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0 x2] +[x19 x21-x22]
+ ;; size=4 bbWeight=1 PerfScore 1.00 +G_M47816_IG31: ; bbWeight=0.50, gcrefRegs=680000 {x19 x21 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] +[x19 x21-x22]
mov x2, x21 ; gcrRegs +[x2] sub w21, w20, #1 ; gcrRegs -[x21]
- tbnz w21, #31, G_M47816_IG32
+ tbnz w21, #31, G_M47816_IG33
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M47816_IG31: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=0000 {}, byref, isz
+G_M47816_IG32: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=0000 {}, byref, isz
ldr w1, [x22, #0x10] cmp w21, w1
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x1, [x22, #0x08] ; gcrRegs +[x1] ldr w0, [x1, #0x08] cmp w21, w0
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -567,15 +575,14 @@ G_M47816_IG31: ; bbWeight=4, gcrefRegs=480004 {x2 x19 x22}, byrefRegs=000 mov x2, x0 ; gcrRegs +[x2] sub w21, w21, #1
- tbz w21, #31, G_M47816_IG31
+ tbz w21, #31, G_M47816_IG32
...

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

+16 (+7.84%) : 208886.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,100 +11,108 @@ ; ; V00 arg0 [V00,T01] ( 8, 4.64) long -> x0 single-def ; V01 arg1 [V01,T00] ( 7, 5.09) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.11) long -> x19 -; V03 loc1 [V03,T02] ( 10, 6.40) long -> x2 -; V04 loc2 [V04,T03] ( 10, 5.81) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.44) long -> x19 +; V03 loc1 [V03,T02] ( 10, 6.40) long -> x20 +; V04 loc2 [V04,T03] ( 10, 5.81) long -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M24157_IG11
+ cbz x1, G_M24157_IG12
ldr x19, [x1]
- ldrh w2, [x19, #0x0E] - cbz x2, G_M24157_IG09 - ldr x3, [x19, #0x40] - cmp x2, #4 - bge G_M24157_IG06
+ ldrh w20, [x19, #0x0E] + cbz x20, G_M24157_IG05 + ldr x21, [x19, #0x40] + cmp x20, #4 + bge G_M24157_IG07
;; size=28 bbWeight=1 PerfScore 12.50 G_M24157_IG03: ; bbWeight=1.75, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11
+ ldr x2, [x21] + cmp x2, x0 + beq G_M24157_IG12
;; size=12 bbWeight=1.75 PerfScore 7.86 G_M24157_IG04: ; bbWeight=0.90, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8 - sub x2, x2, #1 - cmp x2, #0
+ add x21, x21, #8 + sub x20, x20, #1 + cmp x20, #0
bgt G_M24157_IG03 ;; size=16 bbWeight=0.90 PerfScore 2.25
-G_M24157_IG05: ; bbWeight=0.05, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - b G_M24157_IG09 - ;; size=4 bbWeight=0.05 PerfScore 0.05 -G_M24157_IG06: ; bbWeight=0.24, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11 - ldr x4, [x3, #0x08] - cmp x4, x0 - beq G_M24157_IG11 - ;; size=24 bbWeight=0.24 PerfScore 2.16 -G_M24157_IG07: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x4, [x3, #0x10] - cmp x4, x0 - beq G_M24157_IG11 - ldr x4, [x3, #0x18] - cmp x4, x0 - beq G_M24157_IG11 - add x3, x3, #32 - sub x2, x2, #4 - cmp x2, #4 - bge G_M24157_IG06 - ;; size=40 bbWeight=0.20 PerfScore 2.26 -G_M24157_IG08: ; bbWeight=0.11, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M24157_IG03 - ;; size=4 bbWeight=0.11 PerfScore 0.11 -G_M24157_IG09: ; bbWeight=0.11, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG05: ; bbWeight=0.44, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19] mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG13 - ;; size=16 bbWeight=0.11 PerfScore 0.55 -G_M24157_IG10: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne G_M24157_IG14 + ;; size=16 bbWeight=0.44 PerfScore 2.18 +G_M24157_IG06: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M24157_IG11 + ;; size=4 bbWeight=0.09 PerfScore 0.09 +G_M24157_IG07: ; bbWeight=0.24, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x1] + ldr x2, [x21] + cmp x2, x0 + beq G_M24157_IG12 + ldr x2, [x21, #0x08] + cmp x2, x0 + beq G_M24157_IG12 + ;; size=24 bbWeight=0.24 PerfScore 2.16 +G_M24157_IG08: ; bbWeight=0.20, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x21, #0x10] + cmp x2, x0 + beq G_M24157_IG12 + ldr x2, [x21, #0x18] + cmp x2, x0 + beq G_M24157_IG12 + add x21, x21, #32 + sub x20, x20, #4 + cmp x20, #4 + bge G_M24157_IG07 + ;; size=40 bbWeight=0.20 PerfScore 2.26 +G_M24157_IG09: ; bbWeight=0.11, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M24157_IG05 + ;; size=4 bbWeight=0.11 PerfScore 0.11 +G_M24157_IG10: ; bbWeight=0.05, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + b G_M24157_IG03 + ;; size=4 bbWeight=0.05 PerfScore 0.05 +G_M24157_IG11: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1] ;; size=4 bbWeight=0.09 PerfScore 0.04
-G_M24157_IG11: ; bbWeight=0.98, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG12: ; bbWeight=0.98, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0.98 PerfScore 0.49
-G_M24157_IG12: ; bbWeight=0.98, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG13: ; bbWeight=0.98, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.98 PerfScore 3.91 -G_M24157_IG13: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.98 PerfScore 4.89 +G_M24157_IG14: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] ;; size=16 bbWeight=0.02 PerfScore 0.10
-G_M24157_IG14: ; bbWeight=0.02, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG15: ; bbWeight=0.02, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.02 PerfScore 0.09
+ ;; size=16 bbWeight=0.02 PerfScore 0.11
-; Total bytes of code 204, prolog size 12, PerfScore 34.87, 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 220, prolog size 16, PerfScore 38.60, instruction count 55, allocated bytes for code 220 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -115,7 +123,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -126,10 +134,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

+16 (+7.84%) : 208260.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,100 +11,108 @@ ; ; V00 arg0 [V00,T01] ( 8, 4.81) long -> x0 single-def ; V01 arg1 [V01,T00] ( 7, 5.11) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.13) long -> x19 -; V03 loc1 [V03,T02] ( 10, 6.53) long -> x2 -; V04 loc2 [V04,T03] ( 10, 6.06) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.56) long -> x19 +; V03 loc1 [V03,T02] ( 10, 6.53) long -> x20 +; V04 loc2 [V04,T03] ( 10, 6.06) long -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, 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
- ;; size=12 bbWeight=1 PerfScore 2.50
+ ;; size=16 bbWeight=1 PerfScore 3.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M24157_IG11
+ cbz x1, G_M24157_IG12
ldr x19, [x1]
- ldrh w2, [x19, #0x0E] - cbz x2, G_M24157_IG09 - ldr x3, [x19, #0x40] - cmp x2, #4 - bge G_M24157_IG06
+ ldrh w20, [x19, #0x0E] + cbz x20, G_M24157_IG05 + ldr x21, [x19, #0x40] + cmp x20, #4 + bge G_M24157_IG07
;; size=28 bbWeight=1 PerfScore 12.50 G_M24157_IG03: ; bbWeight=1.70, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11
+ ldr x2, [x21] + cmp x2, x0 + beq G_M24157_IG12
;; size=12 bbWeight=1.70 PerfScore 7.65 G_M24157_IG04: ; bbWeight=0.89, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- add x3, x3, #8 - sub x2, x2, #1 - cmp x2, #0
+ add x21, x21, #8 + sub x20, x20, #1 + cmp x20, #0
bgt G_M24157_IG03 ;; size=16 bbWeight=0.89 PerfScore 2.22
-G_M24157_IG05: ; bbWeight=0.07, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - b G_M24157_IG09 - ;; size=4 bbWeight=0.07 PerfScore 0.07 -G_M24157_IG06: ; bbWeight=0.30, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG11 - ldr x4, [x3, #0x08] - cmp x4, x0 - beq G_M24157_IG11 - ;; size=24 bbWeight=0.30 PerfScore 2.70 -G_M24157_IG07: ; bbWeight=0.24, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x4, [x3, #0x10] - cmp x4, x0 - beq G_M24157_IG11 - ldr x4, [x3, #0x18] - cmp x4, x0 - beq G_M24157_IG11 - add x3, x3, #32 - sub x2, x2, #4 - cmp x2, #4 - bge G_M24157_IG06 - ;; size=40 bbWeight=0.24 PerfScore 2.81 -G_M24157_IG08: ; bbWeight=0.13, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M24157_IG03 - ;; size=4 bbWeight=0.13 PerfScore 0.13 -G_M24157_IG09: ; bbWeight=0.13, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG05: ; bbWeight=0.56, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19] mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG13 - ;; size=16 bbWeight=0.13 PerfScore 0.67 -G_M24157_IG10: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ bne G_M24157_IG14 + ;; size=16 bbWeight=0.56 PerfScore 2.78 +G_M24157_IG06: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + b G_M24157_IG11 + ;; size=4 bbWeight=0.11 PerfScore 0.11 +G_M24157_IG07: ; bbWeight=0.30, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[x1] + ldr x2, [x21] + cmp x2, x0 + beq G_M24157_IG12 + ldr x2, [x21, #0x08] + cmp x2, x0 + beq G_M24157_IG12 + ;; size=24 bbWeight=0.30 PerfScore 2.70 +G_M24157_IG08: ; bbWeight=0.24, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x2, [x21, #0x10] + cmp x2, x0 + beq G_M24157_IG12 + ldr x2, [x21, #0x18] + cmp x2, x0 + beq G_M24157_IG12 + add x21, x21, #32 + sub x20, x20, #4 + cmp x20, #4 + bge G_M24157_IG07 + ;; size=40 bbWeight=0.24 PerfScore 2.81 +G_M24157_IG09: ; bbWeight=0.13, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cbz x20, G_M24157_IG05 + ;; size=4 bbWeight=0.13 PerfScore 0.13 +G_M24157_IG10: ; bbWeight=0.07, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + b G_M24157_IG03 + ;; size=4 bbWeight=0.07 PerfScore 0.07 +G_M24157_IG11: ; bbWeight=0.11, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1] ;; size=4 bbWeight=0.11 PerfScore 0.06
-G_M24157_IG11: ; bbWeight=0.98, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG12: ; bbWeight=0.98, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0.98 PerfScore 0.49
-G_M24157_IG12: ; bbWeight=0.98, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG13: ; bbWeight=0.98, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
ret lr
- ;; size=12 bbWeight=0.98 PerfScore 3.91 -G_M24157_IG13: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=16 bbWeight=0.98 PerfScore 4.89 +G_M24157_IG14: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] ;; size=16 bbWeight=0.02 PerfScore 0.10
-G_M24157_IG14: ; bbWeight=0.02, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG15: ; bbWeight=0.02, epilog, nogc, extend + ldr x21, [sp, #0x28] + ldp x19, x20, [sp, #0x18] + ldp fp, lr, [sp], #0x30
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.02 PerfScore 0.09
+ ;; size=16 bbWeight=0.02 PerfScore 0.11
-; Total bytes of code 204, prolog size 12, PerfScore 35.89, 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 220, prolog size 16, PerfScore 40.12, instruction count 55, allocated bytes for code 220 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -115,7 +123,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 51 (0x00033) Actual length = 204 (0x0000cc)
+ Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -126,10 +134,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

+28 (+12.50%) : 150573.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)

@@ -5,33 +5,34 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4.99) long -> x0 single-def -; V01 arg1 [V01,T04] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 5, 4.99) long -> x0 single-def +; V01 arg1 [V01,T05] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
;* 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,T09] ( 4, 3 ) int -> x8 "Inline return value spill temp" -; V06 tmp3 [V06,T07] ( 4, 4.74) byref -> x2 single-def "Inline stloc first use temp" -; V07 tmp4 [V07,T01] ( 3, 6.74) long -> x3 "Inlining Arg" -; V08 tmp5 [V08,T06] ( 4, 5.11) int -> x4 "Inline stloc first use temp" -; V09 tmp6 [V09,T02] ( 5, 6.48) int -> x5 "Inline stloc first use temp" -; V10 tmp7 [V10,T03] ( 5, 6.09) byref -> x6 "Inline stloc first use temp" -; V11 tmp8 [V11,T05] ( 5, 5.47) int -> x7 "Inline stloc first use temp"
+; V04 tmp1 [V04,T09] ( 2, 4 ) ref -> x2 class-hnd single-def "impAppendStmt" <int[]> +; V05 tmp2 [V05,T00] ( 4,102.99) int -> x20 "Inline return value spill temp" +; V06 tmp3 [V06,T08] ( 4, 4.74) byref -> x2 single-def "Inline stloc first use temp" +; V07 tmp4 [V07,T02] ( 3, 6.74) long -> x3 "Inlining Arg" +; V08 tmp5 [V08,T07] ( 4, 5.11) int -> x4 "Inline stloc first use temp" +; V09 tmp6 [V09,T03] ( 5, 6.48) int -> x5 "Inline stloc first use temp" +; V10 tmp7 [V10,T04] ( 5, 6.09) byref -> x6 "Inline stloc first use temp" +; V11 tmp8 [V11,T06] ( 5, 5.47) int -> x7 "Inline stloc first use temp"
; V12 tmp9 [V12,T11] ( 2, 2.74) long -> x8 "Inline stloc first use temp"
-; V13 tmp10 [V13,T10] ( 3, 2.97) long -> x8 "Inline stloc first use temp"
+; V13 tmp10 [V13,T10] ( 3, 2.97) long -> x19 "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, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + stp x19, x20, [sp, #0x10]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M32392_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // data for <unknown class>:<unknown field> @@ -64,81 +65,88 @@ G_M32392_IG03: ; bbWeight=1.37, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, ldr x8, [x6, #0x08] and w7, w7, #0xD1FFAB1E cmp x8, x3
- bne G_M32392_IG08
+ bne G_M32392_IG06
;; size=36 bbWeight=1.37 PerfScore 15.73 G_M32392_IG04: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0044 {x2 x6}, byref, isz ldr x8, [x6, #0x10]
- eor x8, x8, x0 - cmp x8, #1 - bhi G_M32392_IG08
+ eor x19, x8, x0 + cmp x19, #1 + bhi G_M32392_IG06
;; size=16 bbWeight=0.99 PerfScore 4.96 G_M32392_IG05: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0040 {x6}, byref, isz ; byrRegs -[x2] dmb ishld ldr w2, [x6] cmp w7, w2
- bne G_M32392_IG10 - ;; size=16 bbWeight=0.99 PerfScore 14.38 -G_M32392_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x6] - cmp w8, #1 - beq G_M32392_IG11 - cbz w8, G_M32392_IG13
+ bne G_M32392_IG09 + b G_M32392_IG08 + ;; size=20 bbWeight=0.99 PerfScore 15.37 +G_M32392_IG06: ; bbWeight=0.38, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz + ; byrRegs -[x6] +[x2] + cbz w7, G_M32392_IG09 + ;; size=4 bbWeight=0.38 PerfScore 0.38 +G_M32392_IG07: ; bbWeight=1.37, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz + add w5, w5, #1 + add w4, w4, w5 + ldr w6, [x2, #0x04] + and w4, w4, w6 + cmp w5, #8 + blt G_M32392_IG03 + b G_M32392_IG09 + ;; size=28 bbWeight=1.37 PerfScore 9.59 +G_M32392_IG08: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; byrRegs -[x2] + sxtw w20, w19 + b G_M32392_IG10 + ;; size=8 bbWeight=0.99 PerfScore 1.49 +G_M32392_IG09: ; bbWeight=100, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov w20, #2 + ;; size=4 bbWeight=100 PerfScore 50.00 +G_M32392_IG10: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cmp w20, #1 + beq G_M32392_IG12 + cbz w20, G_M32392_IG14
bl <unknown method> ; gcrRegs -[x1] +[x0] ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 3.50
-G_M32392_IG07: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG11: ; bbWeight=1, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M32392_IG08: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, gcvars, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M32392_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x1]
- ; byrRegs +[x2] - cbz w7, G_M32392_IG10 - ;; size=4 bbWeight=0.38 PerfScore 0.38 -G_M32392_IG09: ; bbWeight=1.37, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz - add w5, w5, #1 - add w4, w4, w5 - ldr w8, [x2, #0x04] - and w4, w4, w8 - cmp w5, #8 - blt G_M32392_IG03 - ;; size=24 bbWeight=1.37 PerfScore 8.22 -G_M32392_IG10: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w8, #2 - b G_M32392_IG06 - ;; size=8 bbWeight=0.01 PerfScore 0.01 -G_M32392_IG11: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M32392_IG12: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG13: ; bbWeight=0, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M32392_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M32392_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1] mov x0, xzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M32392_IG14: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG15: ; bbWeight=0, epilog, nogc, extend + 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
-; Total bytes of code 224, prolog size 8, PerfScore 68.17, instruction count 56, allocated bytes for code 224 (MethodHash=b7ab8177) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 252, prolog size 12, PerfScore 124.00, instruction count 63, allocated bytes for code 252 (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 : 56 (0x00038) Actual length = 224 (0x0000e0)
+ 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) @@ -152,7 +160,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

libraries.crossgen2.osx.arm64.checked.mch

-16 (-2.38%) : 114323.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)

@@ -13,35 +13,35 @@ ; V01 arg1 [V01,T35] ( 3, 3 ) int -> x1 single-def ; V02 arg2 [V02,T32] ( 5, 7.50) long -> x2 single-def ; V03 arg3 [V03,T36] ( 3, 3 ) int -> x3 single-def
-; V04 loc0 [V04,T00] ( 25,108.50) long -> registers -; V05 loc1 [V05,T06] ( 31, 69.50) long -> registers ld-addr-op -; V06 loc2 [V06,T30] ( 6, 10.50) long -> x1 single-def
+; V04 loc0 [V04,T00] ( 25,116.50) long -> registers +; V05 loc1 [V05,T04] ( 31, 76 ) long -> registers ld-addr-op +; V06 loc2 [V06,T23] ( 6, 13 ) long -> x1 single-def
; V07 loc3 [V07,T33] ( 3, 7 ) long -> x3 single-def ; V08 loc4 [V08,T20] ( 5, 18 ) int -> x0
-; V09 loc5 [V09,T05] ( 11, 70 ) int -> registers
+; V09 loc5 [V09,T05] ( 11, 74 ) int -> registers
; V10 loc6 [V10,T21] ( 4, 16 ) int -> x0
-; V11 loc7 [V11,T04] ( 13, 70 ) long -> registers -; V12 loc8 [V12,T12] ( 6, 26 ) int -> x6
+; V11 loc7 [V11,T06] ( 13, 70 ) long -> registers +; V12 loc8 [V12,T12] ( 6, 28 ) int -> x6
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T15] ( 3, 24 ) long -> x0 "impAppendStmt"
-; V15 tmp2 [V15,T22] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V16 tmp3 [V16,T23] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V17 tmp4 [V17,T24] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V18 tmp5 [V18,T25] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V19 tmp6 [V19,T26] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V20 tmp7 [V20,T27] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V21 tmp8 [V21,T28] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V22 tmp9 [V22,T29] ( 3, 12 ) long -> x7 "impSpillLclRefs"
+; V15 tmp2 [V15,T24] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V16 tmp3 [V16,T25] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V17 tmp4 [V17,T26] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V18 tmp5 [V18,T27] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V19 tmp6 [V19,T28] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V20 tmp7 [V20,T29] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V21 tmp8 [V21,T30] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V22 tmp9 [V22,T31] ( 3, 12 ) long -> x7 "impSpillLclRefs"
; V23 tmp10 [V23,T01] ( 6,108 ) int -> x6 "impSpillLclRefs" ; V24 tmp11 [V24,T02] ( 3, 96 ) long -> x6 "impSpillLclRefs" ; V25 tmp12 [V25,T03] ( 3, 96 ) long -> x7 "impSpillLclRefs"
-; V26 tmp13 [V26,T16] ( 9, 18 ) int -> x7 "Inline stloc first use temp"
+; V26 tmp13 [V26,T16] ( 9, 20 ) int -> x7 "Inline stloc first use temp"
;* V27 tmp14 [V27,T40] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V28 tmp15 [V28,T13] ( 12, 24 ) long -> x6 "Inline stloc first use temp"
-; V29 tmp16 [V29,T17] ( 10, 20 ) int -> registers "Inline stloc first use temp"
+; V29 tmp16 [V29,T18] ( 10, 20 ) int -> registers "Inline stloc first use temp"
; V30 tmp17 [V30,T11] ( 3, 40 ) long -> x7 "Inlining Arg" ; V31 tmp18 [V31,T07] ( 5, 66 ) int -> x9 "Inline stloc first use temp"
-; V32 tmp19 [V32,T18] ( 9, 18 ) int -> x7 "Inline stloc first use temp"
+; V32 tmp19 [V32,T17] ( 9, 20 ) int -> x7 "Inline stloc first use temp"
;* V33 tmp20 [V33,T41] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V34 tmp21 [V34,T14] ( 12, 24 ) long -> x6 "Inline stloc first use temp" ; V35 tmp22 [V35,T19] ( 10, 20 ) int -> registers "Inline stloc first use temp" @@ -51,7 +51,7 @@ ; V39 cse1 [V39,T38] ( 2, 4 ) int -> x7 "CSE - moderate" ; V40 cse2 [V40,T09] ( 3, 48 ) long -> x10 "CSE - aggressive" ; V41 cse3 [V41,T10] ( 3, 48 ) long -> x8 "CSE - aggressive"
-; V42 cse4 [V42,T31] ( 5, 10 ) long -> x8 "CSE - moderate"
+; V42 cse4 [V42,T22] ( 5, 14 ) long -> x8 "CSE - moderate"
; ; Lcl frame size = 0 @@ -64,7 +64,7 @@ G_M42792_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x1, x0, w1, SXTW add x3, x4, w3, SXTW cmp x0, x1
- bhs G_M42792_IG17
+ bhs G_M42792_IG16
;; size=20 bbWeight=1 PerfScore 4.00 G_M42792_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x5, x0, #1 @@ -98,17 +98,17 @@ G_M42792_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldrb w6, [x6] add w7, w7, w6, LSL #21 ;; size=96 bbWeight=2 PerfScore 52.00
-G_M42792_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add w6, w7, #7
- ;; size=4 bbWeight=2 PerfScore 1.00
+ ;; size=4 bbWeight=4 PerfScore 2.00
G_M42792_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz sub x7, x3, x4 sxtw x8, w6 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
sub x7, x1, x5 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
mov x7, x5 ldr x9, [x7] str x9, [x4] @@ -124,12 +124,12 @@ G_M42792_IG07: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp w9, w6 blt G_M42792_IG07 ;; size=24 bbWeight=16 PerfScore 104.00
-G_M42792_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x4, x4, x8 add x5, x5, x8 cmp x5, x1
- bhs G_M42792_IG16 - ;; size=16 bbWeight=2 PerfScore 5.00
+ bhs G_M42792_IG20 + ;; size=16 bbWeight=4 PerfScore 10.00
G_M42792_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz and w6, w0, #15 add w6, w6, #4 @@ -159,14 +159,14 @@ G_M42792_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldrb w6, [x6] add w7, w7, w6, LSL #21 ;; size=84 bbWeight=2 PerfScore 47.00
-G_M42792_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add w6, w7, #19
- ;; size=4 bbWeight=2 PerfScore 1.00
+ ;; size=4 bbWeight=4 PerfScore 2.00
G_M42792_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz sub x7, x3, x4 sxtw x8, w6 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
and w0, w0, #16 ldrh w7, [x5] add w0, w7, w0, LSL #12 @@ -175,9 +175,9 @@ G_M42792_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub x8, x4, x2 sxtw x9, w0 cmp x8, x9
- blt G_M42792_IG22
+ blt G_M42792_IG21
cmp w0, #8
- blt G_M42792_IG18
+ blt G_M42792_IG17
;; size=60 bbWeight=4 PerfScore 50.00 G_M42792_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [x7] @@ -194,21 +194,16 @@ G_M42792_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp w0, w6 blt G_M42792_IG14 ;; size=24 bbWeight=16 PerfScore 104.00
-G_M42792_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x4, x4, w6, SXTW mov x0, x4
- b G_M42792_IG20 - ;; size=12 bbWeight=2 PerfScore 5.00 -G_M42792_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x4 - b G_M42792_IG21 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M42792_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M42792_IG19 + ;; size=12 bbWeight=4 PerfScore 10.00 +G_M42792_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x5, x0
- mov x0, x4 - b G_M42792_IG21 - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M42792_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b G_M42792_IG20 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M42792_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x0, x4, #1 add x8, x7, #1 ldrb w7, [x7] @@ -233,9 +228,9 @@ G_M42792_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, strb w7, [x4] sub w4, w6, #1 cmp w6, #4
- beq G_M42792_IG20
+ beq G_M42792_IG19
;; size=100 bbWeight=2 PerfScore 50.00
-G_M42792_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG18: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov x6, x0 add x0, x6, #1 mov x7, x8 @@ -245,38 +240,37 @@ G_M42792_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sxtw w6, w4 sub w4, w6, #1 cmp w6, #4
- bne G_M42792_IG19
+ bne G_M42792_IG18
;; size=40 bbWeight=16 PerfScore 136.00
-G_M42792_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x5, x1
- blo G_M42792_IG24 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M42792_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov x4, x0 + blo G_M42792_IG23 + ;; size=12 bbWeight=4 PerfScore 8.00 +G_M42792_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x5, x1
- beq G_M42792_IG25 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M42792_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M42792_IG24 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M42792_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0
- ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M42792_IG23: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M42792_IG22: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M42792_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov x4, x0
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M42792_IG23: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov x0, x5 b G_M42792_IG03
- ;; size=12 bbWeight=2 PerfScore 4.00 -G_M42792_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x4, x0
+ ;; size=8 bbWeight=2 PerfScore 3.00 +G_M42792_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub x0, x4, x2
- ;; size=8 bbWeight=0.50 PerfScore 0.50 -G_M42792_IG26: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M42792_IG25: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 672, prolog size 8, PerfScore 640.50, instruction count 168, allocated bytes for code 672 (MethodHash=4bf758d7) for method Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
+; Total bytes of code 656, prolog size 8, PerfScore 653.50, instruction count 164, allocated bytes for code 656 (MethodHash=4bf758d7) for method Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -287,7 +281,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 168 (0x000a8) Actual length = 672 (0x0002a0)
+ Function Length : 164 (0x000a4) Actual length = 656 (0x000290)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-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,T00] ( 24, 29 ) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEventDispatcher> +; V01 arg1 [V01,T07] ( 11, 9.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,T12] ( 5, 8 ) long -> x0 +; V05 loc3 [V05,T06] ( 6, 18 ) int -> x2 +; V06 loc4 [V06,T02] ( 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,T13] ( 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,T03] ( 3, 24 ) ref -> x1 "arr expr" +; V15 tmp5 [V15,T04] ( 3, 24 ) ref -> x2 "argument with side effect" +; V16 cse0 [V16,T10] ( 2, 9 ) long -> x4 hoist "CSE - aggressive" +; V17 cse1 [V17,T14] ( 3, 6 ) int -> x3 "CSE - aggressive" +; V18 cse2 [V18,T17] ( 3, 3 ) ref -> x11 "CSE - moderate" +; V19 cse3 [V19,T18] ( 3, 1.50) ref -> x0 "CSE - moderate" +; V20 cse4 [V20,T01] ( 23, 28 ) long -> x22 hoist "CSE - aggressive" +; V21 cse5 [V21,T11] ( 11, 8.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_IG19
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_IG16 + ;; size=32 bbWeight=0.50 PerfScore 6.25 +G_M63325_IG10: ; bbWeight=1, 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] @@ -192,8 +188,8 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by 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
+ ;; size=140 bbWeight=1 PerfScore 48.00 +G_M63325_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -201,14 +197,14 @@ G_M63325_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by 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=20 bbWeight=0.50 PerfScore 2.75 +G_M63325_IG12: ; 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 +213,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_IG14
ldr w0, [x0, #0x08] ; gcrRegs -[x0] cmp w0, w21
- ble G_M63325_IG15
+ ble G_M63325_IG14
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]
ldr wzr, [x0] ...

-20 (-2.16%) : 222351.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)

@@ -9,23 +9,23 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 10, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter> -; V01 arg1 [V01,T15] ( 3, 2.50) ref -> x20 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
+; V00 this [V00,T04] ( 10, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter> +; V01 arg1 [V01,T15] ( 3, 2.50) ref -> x21 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
; V02 arg2 [V02,T03] ( 7, 10.50) ref -> x19 class-hnd single-def <System.Globalization.CultureInfo>
-; V03 arg3 [V03,T11] ( 7, 4.50) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object> -; V04 loc0 [V04,T20] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> -; V05 loc1 [V05,T16] ( 2, 4.50) ubyte -> x20 -; V06 loc2 [V06,T05] ( 4, 9 ) long -> x22
+; V03 arg3 [V03,T11] ( 7, 4.50) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object> +; V04 loc0 [V04,T20] ( 5, 3.50) ref -> x22 class-hnd single-def <<unknown class>> +; V05 loc1 [V05,T16] ( 2, 4.50) ubyte -> x21 +; V06 loc2 [V06,T05] ( 4, 9.50) long -> x23
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V08 loc4 [V08,T22] ( 3, 1.25) ref -> x0 class-hnd single-def <<unknown class>>
-; V09 loc5 [V09,T00] ( 5, 16.50) int -> x21
+; V09 loc5 [V09,T00] ( 5, 16.50) int -> x22
; V10 loc6 [V10,T10] ( 2, 8 ) ref -> x1 class-hnd <<unknown class>>
-; V11 loc7 [V11,T21] ( 3, 1.50) ref -> x0 class-hnd <System.Object>
+; V11 loc7 [V11,T21] ( 3, 2 ) ref -> x0 class-hnd <System.Object>
;* V12 loc8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V13 loc9 [V13,T17] ( 2, 4.50) ubyte -> x20 -; V14 loc10 [V14,T06] ( 4, 9 ) long -> x21
+; V13 loc9 [V13,T17] ( 2, 4.50) ubyte -> x21 +; V14 loc10 [V14,T06] ( 4, 9.50) long -> x22
; V15 loc11 [V15,T23] ( 3, 1.25) ref -> x0 class-hnd single-def <<unknown class>>
-; V16 loc12 [V16,T01] ( 5, 16.50) int -> x22
+; V16 loc12 [V16,T01] ( 5, 16.50) int -> x23
; V17 loc13 [V17,T07] ( 3, 8 ) ref -> x0 class-hnd <<unknown class>> ;# V18 OutArgs [V18 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V19 tmp1 [V19,T26] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> @@ -40,50 +40,49 @@ ; V28 tmp10 [V28,T29] ( 2, 0 ) ref -> x2 single-def "argument with side effect" ; V29 tmp11 [V29,T30] ( 2, 0 ) ref -> x20 single-def "argument with side effect" ; V30 tmp12 [V30,T31] ( 2, 0 ) ref -> x21 single-def "argument with side effect"
-; V31 PSPSym [V31,T24] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V32 cse0 [V32,T18] ( 2, 4.25) byref -> x24 hoist "CSE - moderate" -; V33 cse1 [V33,T19] ( 2, 4.25) byref -> x24 hoist "CSE - moderate" -; V34 cse2 [V34,T13] ( 3, 5 ) int -> x23 "CSE - moderate" -; V35 cse3 [V35,T14] ( 3, 5 ) int -> x23 "CSE - moderate" -; V36 cse4 [V36,T12] ( 4, 5.25) long -> x25 hoist multi-def "CSE - aggressive"
+; V31 PSPSym [V31,T24] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V32 cse0 [V32,T18] ( 2, 4.25) byref -> x25 hoist "CSE - moderate" +; V33 cse1 [V33,T19] ( 2, 4.25) byref -> x25 hoist "CSE - moderate" +; V34 cse2 [V34,T13] ( 3, 5 ) int -> x24 "CSE - moderate" +; V35 cse3 [V35,T14] ( 3, 5 ) int -> x24 "CSE - moderate" +; V36 cse4 [V36,T12] ( 4, 5.25) long -> x26 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M63242_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - str x25, [sp, #0x58]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50] + stp x25, x26, [sp, #0x60]
mov fp, sp
- add x4, sp, #96 - stp x0, x4, [fp, #0x18] // [V00 this], [V31 PSPSym]
+ add x4, sp, #112 + stp x0, x4, [fp, #0x20] // [V00 this], [V31 PSPSym]
; GC ptr vars +{V00}
- str x3, [fp, #0x10] // [V03 arg3]
+ str x3, [fp, #0x18] // [V03 arg3]
; GC ptr vars +{V03}
- mov x20, x1
+ mov x20, x0
; gcrRegs +[x20]
+ mov x21, x1 + ; gcrRegs +[x21]
mov x19, x2 ; gcrRegs +[x19]
- mov x2, x3 - ; gcrRegs +[x2] - ;; size=48 bbWeight=1 PerfScore 9.50 -G_M63242_IG02: ; bbWeight=1, gcVars=0000000000000810 {V00 V03}, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - mov x0, x2
+ mov x0, x3
; gcrRegs +[x0]
+ ;; size=52 bbWeight=1 PerfScore 10.00 +G_M63242_IG02: ; bbWeight=1, gcVars=0000000000000810 {V00 V03}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- ; gcrRegs -[x2]
; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - cbz x21, G_M63242_IG11 - ;; size=28 bbWeight=1 PerfScore 7.00 -G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0 x20] - mov x0, x21
+ mov x22, x0 + ; gcrRegs +[x22] + cbz x22, G_M63242_IG11 + ;; size=24 bbWeight=1 PerfScore 6.50 +G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0 x21] + mov x0, x22
; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -93,16 +92,15 @@ G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M63242_IG10
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- ldr x0, [x0, #0x08]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1 ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20]
+ mov x21, x0 + ; gcrRegs +[x21]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class> ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -113,46 +111,45 @@ G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000 blr x1 ; gcrRegs +[x0] ; gcr arg pop 0
- cmp x20, x0 - cset x20, eq - ; gcrRegs -[x20] - mov x22, xzr - mov x0, x21
+ cmp x21, x0 + cset x21, eq + ; gcrRegs -[x21] + mov x23, xzr + mov x0, x22
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] mov w1, #44 mov w2, wzr ldr x3, [x11] blr x3
- ; gcrRegs -[x21]
+ ; gcrRegs -[x22]
; gcr arg pop 0
- mov w21, wzr - ldr w23, [x0, #0x08] - cmp w23, #0
+ mov w22, wzr + ldr w24, [x0, #0x08] + cmp w24, #0
ble G_M63242_IG08
- ;; size=140 bbWeight=0.50 PerfScore 19.75 -G_M63242_IG04: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - add x24, x0, #16 - ; byrRegs +[x24] - adrp x25, [HIGH RELOC #0xD1FFAB1E] - add x25, x25, [LOW RELOC #0xD1FFAB1E]
+ ;; size=136 bbWeight=0.50 PerfScore 18.75 +G_M63242_IG04: ; bbWeight=0.25, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + add x25, x0, #16 + ; byrRegs +[x25] + adrp x26, [HIGH RELOC #0xD1FFAB1E] + add x26, x26, [LOW RELOC #0xD1FFAB1E]
;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M63242_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
+G_M63242_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0]
- ldr x1, [x24, w21, UXTW #3]
+ ldr x1, [x25, w22, UXTW #3]
; gcrRegs +[x1]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- ldr x0, [x0, #0x08] - mov x11, x25
+ mov x11, x26
mov w2, #1 ldr x3, [x11] blr x3 ; gcrRegs -[x1] ; gcr arg pop 0
- cbnz w20, G_M63242_IG09 - ;; size=32 bbWeight=4 PerfScore 56.00 -G_M63242_IG06: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 {x24}, byref
+ cbnz w21, G_M63242_IG09 + ;; size=28 bbWeight=4 PerfScore 48.00 +G_M63242_IG06: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref
mov x1, x19 ; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -162,29 +159,28 @@ G_M63242_IG06: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=20 bbWeight=2 PerfScore 11.00
-G_M63242_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz - orr x22, x22, x0 - add w21, w21, #1 - cmp w23, w21
+G_M63242_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz + orr x23, x23, x0 + add w22, w22, #1 + cmp w24, w22
bgt G_M63242_IG05 ;; size=16 bbWeight=4 PerfScore 10.00
-G_M63242_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M63242_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- ; byrRegs -[x24] - ldr x0, [fp, #0x18] // [V00 this]
+ ; byrRegs -[x25] + ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- ldr x0, [x0, #0x08] - mov x1, x22
+ mov x1, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0 b G_M63242_IG21
- ;; size=32 bbWeight=0.50 PerfScore 5.75 -G_M63242_IG09: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 {x24}, byref
+ ;; size=28 bbWeight=1 PerfScore 9.50 +G_M63242_IG09: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref
; gcrRegs +[x19]
- ; byrRegs +[x24]
+ ; byrRegs +[x25]
mov x1, x19 ; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -195,27 +191,26 @@ G_M63242_IG09: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 ; gcr arg pop 0 b G_M63242_IG07 ;; size=24 bbWeight=2 PerfScore 13.00
-G_M63242_IG10: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] +[x21]
...

+12 (+1.91%) : 69223.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)

@@ -12,7 +12,7 @@ ; V00 arg0 [V00,T05] ( 10, 6.50) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V01 loc0 [V01,T10] ( 7, 3.50) int -> x0 single-def ; V02 loc1 [V02,T03] ( 6, 17 ) ref -> x19 class-hnd <<unknown class>>
-; V03 loc2 [V03,T00] ( 4, 33 ) int -> x20
+; V03 loc2 [V03,T00] ( 4, 33.50) int -> x20
; V04 loc3 [V04 ] ( 2, 8 ) struct ( 8) [fp+0x58] do-not-enreg[XS] must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ; V05 loc4 [V05 ] ( 4, 40 ) struct (16) [fp+0x48] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ; V06 loc5 [V06 ] ( 2, 32 ) struct (24) [fp+0x30] do-not-enreg[XS] must-init addr-exposed <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> @@ -23,7 +23,7 @@ ;* V11 tmp4 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.ArrayTypeSymbol> ;* V12 tmp5 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.PointerTypeSymbol> ;* V13 tmp6 [V13 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <Microsoft.CodeAnalysis.CSharp.Symbols.FunctionPointerTypeSymbol>
-; V14 tmp7 [V14,T06] ( 5, 5 ) int -> registers "Single return block return value"
+; V14 tmp7 [V14,T06] ( 5, 6 ) int -> registers "Single return block return value"
; V15 tmp8 [V15 ] ( 2, 8 ) ref -> [fp+0x58] do-not-enreg[X] addr-exposed "field V04.array (fldOffset=0x0)" P-DEP ; V16 tmp9 [V16 ] ( 4, 40 ) ref -> [fp+0x48] do-not-enreg[X] addr-exposed "field V05._array (fldOffset=0x0)" P-DEP ; V17 tmp10 [V17 ] ( 4, 40 ) int -> [fp+0x50] do-not-enreg[X] addr-exposed "field V05._index (fldOffset=0x8)" P-DEP @@ -101,8 +101,9 @@ G_M16133_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x1, [x11] blr x1 ; gcrRegs -[x0]
- b G_M16133_IG19 - ;; size=68 bbWeight=0.50 PerfScore 9.50
+ mov w20, w0 + b G_M16133_IG18 + ;; size=72 bbWeight=0.50 PerfScore 9.75
G_M16133_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs +[x19] mov x0, x19 @@ -127,8 +128,9 @@ G_M16133_IG07: ; bbWeight=0.50, extend mov x11, x20 ldr x1, [x11] blr x1
- b G_M16133_IG19 - ;; size=28 bbWeight=0.50 PerfScore 3.50
+ mov w20, w0 + b G_M16133_IG18 + ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M16133_IG08: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref ; gcrRegs +[x19] mov x0, x19 @@ -153,8 +155,9 @@ G_M16133_IG10: ; bbWeight=0.50, extend mov x11, x20 ldr x1, [x11] blr x1
- b G_M16133_IG19 - ;; size=28 bbWeight=0.50 PerfScore 3.50
+ mov w20, w0 + b G_M16133_IG18 + ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M16133_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] mov x0, x19 @@ -254,7 +257,7 @@ G_M16133_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0 x19] mov w0, w20 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M16133_IG19: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M16133_IG19: ; bbWeight=0.50, epilog, nogc, extend
ldp x25, x26, [sp, #0x90] ldp x23, x24, [sp, #0x80] ldp x21, x22, [sp, #0x70] @@ -274,7 +277,7 @@ G_M16133_IG21: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=24 bbWeight=0.50 PerfScore 3.00
-; Total bytes of code 628, prolog size 44, PerfScore 556.88, instruction count 157, allocated bytes for code 628 (MethodHash=4b2bc0fa) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
+; Total bytes of code 640, prolog size 44, PerfScore 557.62, instruction count 160, allocated bytes for code 640 (MethodHash=4b2bc0fa) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
; ============================================================ Unwind Info: @@ -285,7 +288,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 157 (0x0009d) Actual length = 628 (0x000274)
+ Function Length : 160 (0x000a0) Actual length = 640 (0x000280)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+12 (+2.07%) : 240712.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)

@@ -9,46 +9,46 @@ ; 0 inlinees with PGO data; 3 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 13, 7.25) ref -> x19 this class-hnd single-def <System.Collections.BitArray> -; V01 arg1 [V01,T13] ( 7, 5 ) int -> x0 single-def -; V02 loc0 [V02,T07] ( 8, 11 ) int -> registers -; V03 loc1 [V03,T18] ( 6, 3 ) int -> x20 -; V04 loc2 [V04,T01] ( 11, 30 ) int -> x22 -; V05 loc3 [V05,T22] ( 5, 2 ) int -> x21 ld-addr-op -; V06 loc4 [V06,T26] ( 3, 1.50) int -> x23 ld-addr-op -; V07 loc5 [V07,T28] ( 2, 1 ) int -> x4 -; V08 loc6 [V08,T15] ( 3, 5 ) int -> x2 -; V09 loc7 [V09,T29] ( 2, 1 ) int -> x2 -; V10 loc8 [V10,T09] ( 2, 8 ) int -> x4 -; V11 loc9 [V11,T10] ( 2, 8 ) int -> x5
+; V00 this [V00,T08] ( 13, 7.75) ref -> x19 this class-hnd single-def <System.Collections.BitArray> +; V01 arg1 [V01,T14] ( 7, 5 ) int -> x0 single-def +; V02 loc0 [V02,T07] ( 8, 12 ) int -> registers +; V03 loc1 [V03,T19] ( 6, 3 ) int -> x20 +; V04 loc2 [V04,T01] ( 11, 31 ) int -> x22 +; V05 loc3 [V05,T22] ( 5, 2.50) int -> x21 ld-addr-op +; V06 loc4 [V06,T25] ( 3, 2 ) int -> x23 ld-addr-op +; V07 loc5 [V07,T30] ( 2, 1 ) int -> x4 +; V08 loc6 [V08,T17] ( 3, 5 ) int -> x2 +; V09 loc7 [V09,T26] ( 2, 2 ) int -> x2 +; V10 loc8 [V10,T10] ( 2, 8 ) int -> x4 +; V11 loc9 [V11,T11] ( 2, 8 ) int -> x5
; V12 loc10 [V12 ] ( 2, 1 ) struct (16) [fp+0x18] do-not-enreg[XSR] multireg-ret must-init addr-exposed ld-addr-op <System.Span`1[int]> ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[int]>
-; V15 tmp2 [V15,T05] ( 2, 16 ) int -> x22 "dup spill"
+; V15 tmp2 [V15,T06] ( 2, 16 ) int -> x22 "dup spill"
; V16 tmp3 [V16,T00] ( 4, 32 ) int -> x1 "impSpillLclRefs"
-; V17 tmp4 [V17,T17] ( 4, 4 ) int -> x0 "impSpillLclRefs" -; V18 tmp5 [V18,T19] ( 3, 3 ) byref -> x0 single-def "dup spill"
+; V17 tmp4 [V17,T09] ( 4, 8 ) int -> x0 "impSpillLclRefs" +; V18 tmp5 [V18,T20] ( 3, 3 ) byref -> x0 single-def "dup spill"
;* V19 tmp6 [V19 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V20 tmp7 [V20,T23] ( 4, 2 ) int -> x11 "Inline stloc first use temp"
-; V21 tmp8 [V21,T25] ( 2, 2 ) int -> x4 "Inlining Arg"
+; V21 tmp8 [V21,T27] ( 2, 2 ) int -> x4 "Inlining Arg"
;* V22 tmp9 [V22 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V23 tmp10 [V23 ] ( 2, 1 ) byref -> [fp+0x18] do-not-enreg[X] addr-exposed "field V12._reference (fldOffset=0x0)" P-DEP ; V24 tmp11 [V24 ] ( 2, 1 ) int -> [fp+0x20] do-not-enreg[X] addr-exposed "field V12._length (fldOffset=0x8)" P-DEP ;* V25 tmp12 [V25 ] ( 0, 0 ) byref -> zero-ref "field V14._reference (fldOffset=0x0)" P-DEP ;* V26 tmp13 [V26 ] ( 0, 0 ) int -> zero-ref "field V14._length (fldOffset=0x8)" P-DEP ; V27 tmp14 [V27,T02] ( 3, 24 ) ref -> x4 "arr expr"
-;* V28 tmp15 [V28,T11] ( 0, 0 ) ref -> zero-ref "arr expr" -;* V29 tmp16 [V29,T12] ( 0, 0 ) ref -> zero-ref "arr expr" -; V30 tmp17 [V30,T20] ( 3, 3 ) ref -> x0 single-def "arr expr" -;* V31 tmp18 [V31,T30] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V28 tmp15 [V28,T12] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V29 tmp16 [V29,T13] ( 0, 0 ) ref -> zero-ref "arr expr" +; V30 tmp17 [V30,T16] ( 3, 6 ) ref -> x0 single-def "arr expr" +;* V31 tmp18 [V31,T28] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V32 tmp19 [V32,T21] ( 3, 3 ) ref -> x0 single-def "arr expr"
-; V33 cse0 [V33,T16] ( 2, 4.25) int -> x3 hoist "CSE - aggressive" -; V34 cse1 [V34,T27] ( 3, 1.50) int -> x22 "CSE - moderate" -; V35 cse2 [V35,T06] ( 8, 7.25) ref -> registers hoist multi-def "CSE - aggressive"
+; V33 cse0 [V33,T18] ( 2, 4.25) int -> x3 hoist "CSE - aggressive" +; V34 cse1 [V34,T29] ( 3, 1.50) int -> x22 "CSE - moderate" +; V35 cse2 [V35,T05] ( 8, 8.25) ref -> registers hoist multi-def "CSE - aggressive"
; V36 cse3 [V36,T24] ( 4, 2 ) int -> x4 "CSE - moderate"
-; V37 cse4 [V37,T04] ( 9, 18.50) int -> x24 multi-def "CSE - aggressive" -; V38 cse5 [V38,T03] ( 9, 18.50) byref -> x25 multi-def "CSE - aggressive" -; V39 cse6 [V39,T14] ( 4, 5.25) int -> x11 hoist multi-def "CSE - aggressive"
+; V37 cse4 [V37,T04] ( 9, 20 ) int -> x24 multi-def "CSE - aggressive" +; V38 cse5 [V38,T03] ( 9, 20 ) byref -> x25 multi-def "CSE - aggressive" +; V39 cse6 [V39,T15] ( 4, 6.25) int -> x11 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 24 @@ -101,12 +101,12 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 add w2, w4, #31 lsr w20, w2, #5 cmp w0, w4
- bge G_M25748_IG10
+ bge G_M25748_IG06
lsr w11, w0, #5 and w21, w0, #31 sxtw w22, w11 and w23, w4, #31
- cbnz w21, G_M25748_IG06
+ cbnz w21, G_M25748_IG07
neg w4, w23 add w4, w4, #32 movn w0, #0 @@ -118,7 +118,7 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 sub w1, w20, #1 ldr w24, [x0, #0x08] cmp w1, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
add x25, x0, #16 ; byrRegs +[x25] sub w0, w20, #1 @@ -144,14 +144,19 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; byrRegs -[x25] ; gcr arg pop 0 sxtw w1, w22
- b G_M25748_IG10 - ;; size=156 bbWeight=0.50 PerfScore 18.25 -G_M25748_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, w1 + b G_M25748_IG11 + ;; size=160 bbWeight=0.50 PerfScore 18.50 +G_M25748_IG06: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov w6, w1 + b G_M25748_IG11 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M25748_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w2, w20, #1 cmp w22, w2
- bge G_M25748_IG13
+ bge G_M25748_IG14
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M25748_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25748_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x0, [x19, #0x08] ; gcrRegs +[x0] and w11, w21, #31 @@ -159,12 +164,12 @@ G_M25748_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, add w3, w3, #32 and w3, w3, #31 ;; size=20 bbWeight=0.25 PerfScore 1.25
-G_M25748_IG08: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG09: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
mov x4, x0 ; gcrRegs +[x4] ldr w24, [x4, #0x08] cmp w22, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
add x25, x4, #16 ; byrRegs +[x25] ldr w4, [x25, w22, UXTW #2] @@ -172,18 +177,18 @@ G_M25748_IG08: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, lsr w4, w4, w11 add w22, w22, #1 cmp w22, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
ldr w5, [x25, w22, UXTW #2] lsl w5, w5, w3 add w6, w1, #1 cmp w1, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
orr w4, w5, w4 str w4, [x25, w1, UXTW #2] cmp w22, w2
- blt G_M25748_IG12
+ blt G_M25748_IG13
;; size=76 bbWeight=4 PerfScore 78.00
-G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ; byrRegs -[x25] neg w0, w23 @@ -194,7 +199,7 @@ G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x0] ldr w24, [x0, #0x08] cmp w22, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
add x25, x0, #16 ; byrRegs +[x25] ldr w0, [x25, w22, UXTW #2] @@ -203,17 +208,17 @@ G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, sxtw w0, w6 add w6, w0, #1 cmp w0, w24
- bhs G_M25748_IG14
+ bhs G_M25748_IG15
and w11, w21, #31 lsr w2, w2, w11 str w2, [x25, w0, UXTW #2]
- mov w1, w6 - ;; size=76 bbWeight=0.50 PerfScore 9.25 -G_M25748_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+ ;; size=72 bbWeight=1 PerfScore 18.00 +G_M25748_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x25]
- sub w2, w20, w1
+ sub w2, w20, w6
ldr x0, [x19, #0x08] ; gcrRegs +[x0]
+ mov w1, w6
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x3, [x11] @@ -234,8 +239,8 @@ G_M25748_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, str w0, [x19, #0x14] mov x0, x19 ; gcrRegs +[x0]
- ;; size=64 bbWeight=0.50 PerfScore 10.00 -G_M25748_IG11: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=68 bbWeight=0.50 PerfScore 10.25 +G_M25748_IG12: ; bbWeight=0.50, epilog, nogc, extend
ldr x25, [sp, #0x58] ldp x23, x24, [sp, #0x48] ldp x21, x22, [sp, #0x38] @@ -243,16 +248,16 @@ G_M25748_IG11: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x60 ret lr ;; size=24 bbWeight=0.50 PerfScore 3.50
-G_M25748_IG12: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref
+G_M25748_IG13: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, gcvars, byref
mov w1, w6
- b G_M25748_IG08
+ b G_M25748_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M25748_IG13: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25748_IG14: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] mov w6, w1
- b G_M25748_IG09
+ b G_M25748_IG10
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M25748_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M25748_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] adrp x0, [HIGH RELOC #0xD1FFAB1E] // function address add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -262,7 +267,7 @@ G_M25748_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_unix #0 ;; size=20 bbWeight=0 PerfScore 0.00
-; Total bytes of code 580, prolog size 36, PerfScore 145.62, instruction count 145, allocated bytes for code 580 (MethodHash=f7299b6b) for method System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
+; Total bytes of code 592, prolog size 36, PerfScore 155.25, instruction count 148, allocated bytes for code 592 (MethodHash=f7299b6b) for method System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
; ============================================================ Unwind Info: @@ -273,7 +278,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 145 (0x00091) Actual length = 580 (0x000244)
+ Function Length : 148 (0x00094) Actual length = 592 (0x000250)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+28 (+4.14%) : 114297.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)

@@ -11,9 +11,9 @@ ; V00 arg0 [V00,T13] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Object> ; V01 arg1 [V01,T11] ( 5, 5 ) ubyte -> x19 single-def ; V02 loc0 [V02,T12] ( 7, 6 ) ref -> x20 class-hnd <System.String>
-; V03 loc1 [V03,T03] ( 10, 29 ) ref -> x21 class-hnd <<unknown class>> -; V04 loc2 [V04,T09] ( 6, 12 ) ref -> x27 class-hnd <System.String> -; V05 loc3 [V05,T01] ( 10, 63 ) int -> registers
+; V03 loc1 [V03,T03] ( 10, 31 ) ref -> x21 class-hnd <<unknown class>> +; V04 loc2 [V04,T09] ( 6, 14 ) ref -> x27 class-hnd <System.String> +; V05 loc3 [V05,T01] ( 10, 67 ) int -> registers
; V06 loc4 [V06,T02] ( 7, 35 ) int -> x23 ; V07 loc5 [V07,T07] ( 7, 18 ) ushort -> x11 ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -53,7 +53,7 @@ G_M34503_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre mov w23, wzr ldr w24, [x20, #0x08] cmp w24, #0
- ble G_M34503_IG15
+ ble G_M34503_IG07
;; size=48 bbWeight=1 PerfScore 14.50 G_M34503_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -65,54 +65,68 @@ G_M34503_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=000 G_M34503_IG04: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz ldrh w11, [x25, w23, UXTW #2] cmp w11, #38
- bhi G_M34503_IG06
+ bhi G_M34503_IG08
;; size=12 bbWeight=4 PerfScore 18.00 G_M34503_IG05: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz cmp w11, #34
- beq G_M34503_IG07
+ beq G_M34503_IG10
cmp w11, #38
- bne G_M34503_IG14
+ bne G_M34503_IG06
adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x11, [x11] ldr x27, [x11] ; gcrRegs +[x27]
- b G_M34503_IG10
+ b G_M34503_IG13
;; size=36 bbWeight=2 PerfScore 22.00
-G_M34503_IG06: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz
+G_M34503_IG06: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x27]
+ mov w28, w22 + b G_M34503_IG17 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M34503_IG07: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref + ; byrRegs -[x25] + mov w28, w22 + b G_M34503_IG18 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M34503_IG08: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz + ; byrRegs +[x25]
cmp w11, #39
- beq G_M34503_IG08
+ beq G_M34503_IG11
cmp w11, #60
- beq G_M34503_IG09
+ beq G_M34503_IG12
cmp w11, #62
- bne G_M34503_IG14
+ bne G_M34503_IG09
adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x11, [x11] ldr x27, [x11] ; gcrRegs +[x27]
- b G_M34503_IG10
+ b G_M34503_IG13
;; size=44 bbWeight=2 PerfScore 25.00
-G_M34503_IG07: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG09: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref + ; gcrRegs -[x27] + mov w28, w22 + b G_M34503_IG17 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M34503_IG10: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref + adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr + add x11, x11, [LOW RELOC #0xD1FFAB1E] + ldr x11, [x11] + ldr x27, [x11] + ; gcrRegs +[x27] + b G_M34503_IG13 + ;; size=20 bbWeight=2 PerfScore 16.00 +G_M34503_IG11: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x27] adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x11, [x11] ldr x27, [x11] ; gcrRegs +[x27]
- b G_M34503_IG10
+ b G_M34503_IG13
;; size=20 bbWeight=2 PerfScore 16.00
-G_M34503_IG08: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref - ; gcrRegs -[x27] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x11, [x11] - ldr x27, [x11] - ; gcrRegs +[x27] - b G_M34503_IG10 - ;; size=20 bbWeight=2 PerfScore 16.00 -G_M34503_IG09: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG12: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x27] adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -120,8 +134,8 @@ G_M34503_IG09: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=200000 ldr x27, [x11] ; gcrRegs +[x27] ;; size=16 bbWeight=2 PerfScore 14.00
-G_M34503_IG10: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz - cbnz x21, G_M34503_IG11
+G_M34503_IG13: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz + cbnz x21, G_M34503_IG14
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -137,7 +151,7 @@ G_M34503_IG10: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2 ; gcrRegs -[x0] ; gcr arg pop 0 tst w19, #255
- beq G_M34503_IG11
+ beq G_M34503_IG14
mov x0, x21 ; gcrRegs +[x0] mov x11, x26 @@ -146,16 +160,16 @@ G_M34503_IG10: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2 blr x2 ; gcr arg pop 0 ;; size=68 bbWeight=2 PerfScore 37.00
-G_M34503_IG11: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
+G_M34503_IG14: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0] cmp w22, w23
- bge G_M34503_IG18
+ bge G_M34503_IG22
;; size=8 bbWeight=2 PerfScore 3.00
-G_M34503_IG12: ; bbWeight=16, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
+G_M34503_IG15: ; bbWeight=16, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
add w1, w22, #1 sxtw w28, w1 cmp w22, w24
- bhs G_M34503_IG27
+ bhs G_M34503_IG31
ldrh w1, [x25, w22, UXTW #2] mov x0, x21 ; gcrRegs +[x0] @@ -165,9 +179,9 @@ G_M34503_IG12: ; bbWeight=16, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs= blr x2 ; gcr arg pop 0 cmp w28, w23
- blt G_M34503_IG17
+ blt G_M34503_IG21
;; size=48 bbWeight=16 PerfScore 240.00
-G_M34503_IG13: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG16: ; bbWeight=4, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x0] mov x0, x21 ; gcrRegs +[x0] @@ -181,41 +195,45 @@ G_M34503_IG13: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2 ; gcrRegs -[x1 x27] ; gcr arg pop 0 add w28, w28, #1
- mov w22, w28 - ;; size=36 bbWeight=2 PerfScore 20.00 -G_M34503_IG14: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz
+ ;; size=32 bbWeight=4 PerfScore 38.00 +G_M34503_IG17: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0] add w23, w23, #1 cmp w24, w23
- bgt G_M34503_IG04
+ bgt G_M34503_IG20
;; size=12 bbWeight=4 PerfScore 8.00
-G_M34503_IG15: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG18: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x25]
- cbnz x21, G_M34503_IG20
+ cbnz x21, G_M34503_IG24
;; size=4 bbWeight=1 PerfScore 1.00
-G_M34503_IG16: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG19: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21] tst w19, #255
- beq G_M34503_IG25 - b G_M34503_IG24
+ beq G_M34503_IG29 + b G_M34503_IG28
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M34503_IG17: ; bbWeight=8, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref - ; gcrRegs +[x21 x27]
+G_M34503_IG20: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref + ; gcrRegs +[x21]
; byrRegs +[x25] mov w22, w28
- b G_M34503_IG12
+ b G_M34503_IG04 + ;; size=8 bbWeight=2 PerfScore 3.00 +G_M34503_IG21: ; bbWeight=8, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref + ; gcrRegs +[x27] + mov w22, w28 + b G_M34503_IG15
;; size=8 bbWeight=8 PerfScore 12.00
-G_M34503_IG18: ; bbWeight=1, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG22: ; bbWeight=1, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
mov w28, w22
- b G_M34503_IG13
+ b G_M34503_IG16
;; size=8 bbWeight=1 PerfScore 1.50
-G_M34503_IG19: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG23: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27] ; byrRegs -[x25]
- sxtw w1, w22 - add w22, w1, #1
+ sxtw w1, w28 + add w28, w1, #1
cmp w1, w24
- bhs G_M34503_IG27
+ bhs G_M34503_IG31
add x25, x20, #12 ; byrRegs +[x25] ldrh w1, [x25, w1, UXTW #2] @@ -229,15 +247,15 @@ G_M34503_IG19: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; byrRegs -[x25] ; gcr arg pop 0 ;; size=48 bbWeight=2 PerfScore 24.00
-G_M34503_IG20: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG24: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cmp w24, w22 - bgt G_M34503_IG19
+ cmp w24, w28 + bgt G_M34503_IG23
;; size=8 bbWeight=4 PerfScore 6.00
-G_M34503_IG21: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG25: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] tst w19, #255
- beq G_M34503_IG22
+ beq G_M34503_IG26
mov x0, x21 ; gcrRegs +[x0] adrp x26, [HIGH RELOC #0xD1FFAB1E] // function address ...

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

-16 (-2.38%) : 113081.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)

@@ -12,35 +12,35 @@ ; V01 arg1 [V01,T35] ( 3, 3 ) int -> x1 single-def ; V02 arg2 [V02,T32] ( 5, 7.50) long -> x2 single-def ; V03 arg3 [V03,T36] ( 3, 3 ) int -> x3 single-def
-; V04 loc0 [V04,T00] ( 25,108.50) long -> registers -; V05 loc1 [V05,T06] ( 31, 69.50) long -> registers ld-addr-op -; V06 loc2 [V06,T30] ( 6, 10.50) long -> x1 single-def
+; V04 loc0 [V04,T00] ( 25,116.50) long -> registers +; V05 loc1 [V05,T04] ( 31, 76 ) long -> registers ld-addr-op +; V06 loc2 [V06,T23] ( 6, 13 ) long -> x1 single-def
; V07 loc3 [V07,T33] ( 3, 7 ) long -> x3 single-def ; V08 loc4 [V08,T20] ( 5, 18 ) int -> x0
-; V09 loc5 [V09,T05] ( 11, 70 ) int -> registers
+; V09 loc5 [V09,T05] ( 11, 74 ) int -> registers
; V10 loc6 [V10,T21] ( 4, 16 ) int -> x0
-; V11 loc7 [V11,T04] ( 13, 70 ) long -> registers -; V12 loc8 [V12,T12] ( 6, 26 ) int -> x6
+; V11 loc7 [V11,T06] ( 13, 70 ) long -> registers +; V12 loc8 [V12,T12] ( 6, 28 ) int -> x6
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T15] ( 3, 24 ) long -> x0 "impAppendStmt"
-; V15 tmp2 [V15,T22] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V16 tmp3 [V16,T23] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V17 tmp4 [V17,T24] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V18 tmp5 [V18,T25] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V19 tmp6 [V19,T26] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V20 tmp7 [V20,T27] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V21 tmp8 [V21,T28] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V22 tmp9 [V22,T29] ( 3, 12 ) long -> x7 "impSpillLclRefs"
+; V15 tmp2 [V15,T24] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V16 tmp3 [V16,T25] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V17 tmp4 [V17,T26] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V18 tmp5 [V18,T27] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V19 tmp6 [V19,T28] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V20 tmp7 [V20,T29] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V21 tmp8 [V21,T30] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V22 tmp9 [V22,T31] ( 3, 12 ) long -> x7 "impSpillLclRefs"
; V23 tmp10 [V23,T01] ( 6,108 ) int -> x6 "impSpillLclRefs" ; V24 tmp11 [V24,T02] ( 3, 96 ) long -> x6 "impSpillLclRefs" ; V25 tmp12 [V25,T03] ( 3, 96 ) long -> x7 "impSpillLclRefs"
-; V26 tmp13 [V26,T16] ( 9, 18 ) int -> x7 "Inline stloc first use temp"
+; V26 tmp13 [V26,T16] ( 9, 20 ) int -> x7 "Inline stloc first use temp"
;* V27 tmp14 [V27,T40] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V28 tmp15 [V28,T13] ( 12, 24 ) long -> x6 "Inline stloc first use temp"
-; V29 tmp16 [V29,T17] ( 10, 20 ) int -> registers "Inline stloc first use temp"
+; V29 tmp16 [V29,T18] ( 10, 20 ) int -> registers "Inline stloc first use temp"
; V30 tmp17 [V30,T11] ( 3, 40 ) long -> x7 "Inlining Arg" ; V31 tmp18 [V31,T07] ( 5, 66 ) int -> x9 "Inline stloc first use temp"
-; V32 tmp19 [V32,T18] ( 9, 18 ) int -> x7 "Inline stloc first use temp"
+; V32 tmp19 [V32,T17] ( 9, 20 ) int -> x7 "Inline stloc first use temp"
;* V33 tmp20 [V33,T41] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V34 tmp21 [V34,T14] ( 12, 24 ) long -> x6 "Inline stloc first use temp" ; V35 tmp22 [V35,T19] ( 10, 20 ) int -> registers "Inline stloc first use temp" @@ -50,7 +50,7 @@ ; V39 cse1 [V39,T38] ( 2, 4 ) int -> x7 "CSE - moderate" ; V40 cse2 [V40,T09] ( 3, 48 ) long -> x10 "CSE - aggressive" ; V41 cse3 [V41,T10] ( 3, 48 ) long -> x8 "CSE - aggressive"
-; V42 cse4 [V42,T31] ( 5, 10 ) long -> x8 "CSE - moderate"
+; V42 cse4 [V42,T22] ( 5, 14 ) long -> x8 "CSE - moderate"
; ; Lcl frame size = 0 @@ -63,7 +63,7 @@ G_M42792_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x1, x0, w1, SXTW add x3, x4, w3, SXTW cmp x0, x1
- bhs G_M42792_IG17
+ bhs G_M42792_IG16
;; size=20 bbWeight=1 PerfScore 4.00 G_M42792_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x5, x0, #1 @@ -97,17 +97,17 @@ G_M42792_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldrb w6, [x6] add w7, w7, w6, LSL #21 ;; size=96 bbWeight=2 PerfScore 52.00
-G_M42792_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add w6, w7, #7
- ;; size=4 bbWeight=2 PerfScore 1.00
+ ;; size=4 bbWeight=4 PerfScore 2.00
G_M42792_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz sub x7, x3, x4 sxtw x8, w6 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
sub x7, x1, x5 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
mov x7, x5 ldr x9, [x7] str x9, [x4] @@ -123,12 +123,12 @@ G_M42792_IG07: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp w9, w6 blt G_M42792_IG07 ;; size=24 bbWeight=16 PerfScore 104.00
-G_M42792_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x4, x4, x8 add x5, x5, x8 cmp x5, x1
- bhs G_M42792_IG16 - ;; size=16 bbWeight=2 PerfScore 5.00
+ bhs G_M42792_IG20 + ;; size=16 bbWeight=4 PerfScore 10.00
G_M42792_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz and w6, w0, #15 add w6, w6, #4 @@ -158,14 +158,14 @@ G_M42792_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldrb w6, [x6] add w7, w7, w6, LSL #21 ;; size=84 bbWeight=2 PerfScore 47.00
-G_M42792_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add w6, w7, #19
- ;; size=4 bbWeight=2 PerfScore 1.00
+ ;; size=4 bbWeight=4 PerfScore 2.00
G_M42792_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz sub x7, x3, x4 sxtw x8, w6 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
and w0, w0, #16 ldrh w7, [x5] add w0, w7, w0, LSL #12 @@ -174,9 +174,9 @@ G_M42792_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub x8, x4, x2 sxtw x9, w0 cmp x8, x9
- blt G_M42792_IG22
+ blt G_M42792_IG21
cmp w0, #8
- blt G_M42792_IG18
+ blt G_M42792_IG17
;; size=60 bbWeight=4 PerfScore 50.00 G_M42792_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [x7] @@ -193,21 +193,16 @@ G_M42792_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp w0, w6 blt G_M42792_IG14 ;; size=24 bbWeight=16 PerfScore 104.00
-G_M42792_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x4, x4, w6, SXTW mov x0, x4
- b G_M42792_IG20 - ;; size=12 bbWeight=2 PerfScore 5.00 -G_M42792_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x4 - b G_M42792_IG21 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M42792_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M42792_IG19 + ;; size=12 bbWeight=4 PerfScore 10.00 +G_M42792_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x5, x0
- mov x0, x4 - b G_M42792_IG21 - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M42792_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b G_M42792_IG20 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M42792_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x0, x4, #1 add x8, x7, #1 ldrb w7, [x7] @@ -232,9 +227,9 @@ G_M42792_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, strb w7, [x4] sub w4, w6, #1 cmp w6, #4
- beq G_M42792_IG20
+ beq G_M42792_IG19
;; size=100 bbWeight=2 PerfScore 50.00
-G_M42792_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG18: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov x6, x0 add x0, x6, #1 mov x7, x8 @@ -244,38 +239,37 @@ G_M42792_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sxtw w6, w4 sub w4, w6, #1 cmp w6, #4
- bne G_M42792_IG19
+ bne G_M42792_IG18
;; size=40 bbWeight=16 PerfScore 136.00
-G_M42792_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x5, x1
- blo G_M42792_IG24 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M42792_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov x4, x0 + blo G_M42792_IG23 + ;; size=12 bbWeight=4 PerfScore 8.00 +G_M42792_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x5, x1
- beq G_M42792_IG25 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M42792_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M42792_IG24 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M42792_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0
- ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M42792_IG23: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M42792_IG22: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M42792_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov x4, x0
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M42792_IG23: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov x0, x5 b G_M42792_IG03
- ;; size=12 bbWeight=2 PerfScore 4.00 -G_M42792_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x4, x0
+ ;; size=8 bbWeight=2 PerfScore 3.00 +G_M42792_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub x0, x4, x2
- ;; size=8 bbWeight=0.50 PerfScore 0.50 -G_M42792_IG26: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M42792_IG25: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 672, prolog size 8, PerfScore 640.50, instruction count 168, allocated bytes for code 672 (MethodHash=4bf758d7) for method Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
+; Total bytes of code 656, prolog size 8, PerfScore 653.50, instruction count 164, allocated bytes for code 656 (MethodHash=4bf758d7) for method Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -286,7 +280,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 168 (0x000a8) Actual length = 672 (0x0002a0)
+ Function Length : 164 (0x000a4) Actual length = 656 (0x000290)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-36 (-2.12%) : 18379.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)

@@ -9,11 +9,11 @@ ; Final local variable assignments ; ; V00 this [V00,T14] ( 9, 19.50) ref -> x20 this class-hnd single-def <System.Text.UnicodeEncoding>
-; V01 arg1 [V01,T06] ( 22, 52 ) long -> x19
+; V01 arg1 [V01,T06] ( 22, 56 ) long -> x19
; V02 arg2 [V02,T29] ( 6, 5.50) int -> x21 single-def ; V03 arg3 [V03,T35] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Text.DecoderNLS> ; V04 loc0 [V04,T12] ( 18, 31.50) ref -> x23 class-hnd exact single-def <<unknown class>>
-; V05 loc1 [V05,T23] ( 6, 12 ) long -> x22
+; V05 loc1 [V05,T23] ( 6, 14 ) long -> x22
; V06 loc2 [V06,T22] ( 7, 15 ) long -> x24 ; V07 loc3 [V07,T17] ( 11, 19 ) int -> [fp+0x1C] ; V08 loc4 [V08,T02] ( 24, 78 ) ushort -> x26 @@ -21,7 +21,7 @@ ; V10 loc6 [V10,T00] ( 34,105 ) ref -> x28 class-hnd <System.Text.DecoderFallbackBuffer> ; V11 loc7 [V11,T15] ( 9, 20 ) ushort -> x25 ; V12 loc8 [V12,T16] ( 3, 20 ) long -> x0
-; V13 loc9 [V13,T03] ( 7, 70 ) long -> x19
+; V13 loc9 [V13,T03] ( 7, 72 ) long -> x19
; V14 loc10 [V14,T09] ( 5, 40 ) long -> x2 ; V15 loc11 [V15,T31] ( 3, 6 ) ref -> x21 class-hnd <<unknown class>> ; V16 loc12 [V16,T32] ( 3, 6 ) ref -> x21 class-hnd <<unknown class>> @@ -109,7 +109,7 @@ G_M55046_IG03: ; bbWeight=0.25, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 cmp x0, x1
- bne G_M55046_IG67
+ bne G_M55046_IG63
;; size=24 bbWeight=0.25 PerfScore 1.50 G_M55046_IG04: ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x22] @@ -168,7 +168,7 @@ G_M55046_IG08: ; bbWeight=0.50, gcrefRegs=10900000 {x20 x23 x28}, byrefRe ;; size=32 bbWeight=0.50 PerfScore 3.50 G_M55046_IG09: ; bbWeight=1, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz cmp x24, x22
- bhs G_M55046_IG23
+ bhs G_M55046_IG46
;; size=8 bbWeight=1 PerfScore 1.50 G_M55046_IG10: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz ldrb w21, [x20, #0x26] @@ -220,10 +220,10 @@ G_M55046_IG15: ; bbWeight=16, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs cmp x19, x0 blo G_M55046_IG12 ;; size=12 bbWeight=16 PerfScore 32.00
-G_M55046_IG16: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG16: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
cmp x19, x22
- bhs G_M55046_IG22 - ;; size=8 bbWeight=2 PerfScore 3.00
+ bhs G_M55046_IG46 + ;; size=8 bbWeight=4 PerfScore 6.00
G_M55046_IG17: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz tbz w25, #31, G_M55046_IG19 ;; size=4 bbWeight=4 PerfScore 4.00 @@ -232,10 +232,10 @@ G_M55046_IG18: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= add x19, x0, #1 ldrb w25, [x0] cmp x19, x22
- bhs G_M55046_IG21
+ bhs G_M55046_IG46
;; size=20 bbWeight=2 PerfScore 11.00 G_M55046_IG19: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
- cbz w21, G_M55046_IG24
+ cbz w21, G_M55046_IG21
;; size=4 bbWeight=4 PerfScore 4.00 G_M55046_IG20: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref mov x0, x19 @@ -243,43 +243,31 @@ G_M55046_IG20: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ldrb w0, [x0] orr w0, w0, w25, LSL #8 uxth w25, w0
- b G_M55046_IG25
+ b G_M55046_IG22
;; size=24 bbWeight=2 PerfScore 13.00
-G_M55046_IG21: ; bbWeight=1, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref - str w25, [fp, #0x1C] // [V07 loc3] - b G_M55046_IG49 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M55046_IG22: ; bbWeight=1, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref - str w25, [fp, #0x1C] // [V07 loc3] - b G_M55046_IG49 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M55046_IG23: ; bbWeight=0.50, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref - str w25, [fp, #0x1C] // [V07 loc3] - b G_M55046_IG49 - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M55046_IG24: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG21: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
mov x0, x19 add x19, x0, #1 ldrb w0, [x0] orr w0, w25, w0, LSL #8 uxth w25, w0 ;; size=20 bbWeight=2 PerfScore 11.00
-G_M55046_IG25: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG22: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
movn w0, #0 str w0, [fp, #0x1C] // [V07 loc3] mov w0, #0xD1FFAB1E sub w0, w25, w0 cmp w0, #0xD1FFAB1E
- bhi G_M55046_IG40
+ bhi G_M55046_IG37
;; size=24 bbWeight=4 PerfScore 16.00
-G_M55046_IG26: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG23: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
mov w0, #0xD1FFAB1E cmp w25, w0
- bgt G_M55046_IG33
+ bgt G_M55046_IG30
cmp w26, #0
- ble G_M55046_IG32
+ ble G_M55046_IG29
sub w27, w27, #1
- cbz w21, G_M55046_IG27
+ cbz w21, G_M55046_IG24
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -293,9 +281,9 @@ G_M55046_IG26: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ; gcrRegs -[x0] strb w0, [x21, #0x10] strb w26, [x21, #0x11]
- b G_M55046_IG28
+ b G_M55046_IG25
;; size=68 bbWeight=2 PerfScore 25.00
-G_M55046_IG27: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG24: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -311,9 +299,9 @@ G_M55046_IG27: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ; gcrRegs -[x0] strb w0, [x21, #0x11] ;; size=36 bbWeight=2 PerfScore 13.00
-G_M55046_IG28: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz - cbnz x28, G_M55046_IG31 - cbz x23, G_M55046_IG29
+G_M55046_IG25: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz + cbnz x28, G_M55046_IG28 + cbz x23, G_M55046_IG26
mov x0, x23 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this @@ -325,9 +313,9 @@ G_M55046_IG28: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefR ; gcr arg pop 0 mov x28, x0 ; gcrRegs +[x28]
- b G_M55046_IG30
+ b G_M55046_IG27
;; size=40 bbWeight=2 PerfScore 19.00
-G_M55046_IG29: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M55046_IG26: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x28] ldr x0, [x20, #0x18] ; gcrRegs +[x0] @@ -339,11 +327,11 @@ G_M55046_IG29: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 mov x28, x0 ; gcrRegs +[x28] ;; size=24 bbWeight=2 PerfScore 27.00
-G_M55046_IG30: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG27: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] stp x24, xzr, [x28, #0x18] ;; size=4 bbWeight=2 PerfScore 2.00
-G_M55046_IG31: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG28: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
mov x0, x28 ; gcrRegs +[x0] mov x1, x21 @@ -357,14 +345,14 @@ G_M55046_IG31: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefR ; gcr arg pop 0 add w27, w0, w27 ;; size=32 bbWeight=2 PerfScore 24.00
-G_M55046_IG32: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG29: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
sxtw w26, w25
- b G_M55046_IG48
+ b G_M55046_IG45
;; size=8 bbWeight=2 PerfScore 3.00
-G_M55046_IG33: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz - cbnz w26, G_M55046_IG39
+G_M55046_IG30: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz + cbnz w26, G_M55046_IG36
sub w27, w27, #1
- cbz w21, G_M55046_IG34
+ cbz w21, G_M55046_IG31
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 @@ -378,9 +366,9 @@ G_M55046_IG33: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ; gcrRegs -[x0] strb w0, [x21, #0x10] strb w25, [x21, #0x11]
- b G_M55046_IG35
+ b G_M55046_IG32
;; size=52 bbWeight=2 PerfScore 20.00
-G_M55046_IG34: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG31: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 @@ -396,9 +384,9 @@ G_M55046_IG34: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ; gcrRegs -[x0] strb w0, [x21, #0x11] ;; size=36 bbWeight=2 PerfScore 13.00
-G_M55046_IG35: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz - cbnz x28, G_M55046_IG38 - cbz x23, G_M55046_IG36
+G_M55046_IG32: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz + cbnz x28, G_M55046_IG35 + cbz x23, G_M55046_IG33
mov x0, x23 ; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this @@ -410,9 +398,9 @@ G_M55046_IG35: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefR ; gcr arg pop 0 mov x28, x0 ; gcrRegs +[x28]
- b G_M55046_IG37
+ b G_M55046_IG34
;; size=40 bbWeight=2 PerfScore 19.00
-G_M55046_IG36: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M55046_IG33: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x28] ldr x0, [x20, #0x18] ; gcrRegs +[x0] @@ -424,11 +412,11 @@ G_M55046_IG36: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 mov x28, x0 ; gcrRegs +[x28] ;; size=24 bbWeight=2 PerfScore 27.00
-G_M55046_IG37: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG34: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] stp x24, xzr, [x28, #0x18] ;; size=4 bbWeight=2 PerfScore 2.00
-G_M55046_IG38: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG35: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
mov x0, x28 ; gcrRegs +[x0] mov x1, x21 @@ -441,19 +429,19 @@ G_M55046_IG38: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefR ; gcrRegs -[x0-x1 x21] ; gcr arg pop 0 add w27, w0, w27
- b G_M55046_IG48
+ b G_M55046_IG45
;; size=36 bbWeight=2 PerfScore 26.00
-G_M55046_IG39: ; bbWeight=8, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
...

+40 (+10.10%) : 271655.dasm - System.Linq.OrderedEnumerable1[System.Numerics.Vector1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)

@@ -8,32 +8,33 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]>
-; V01 arg1 [V01,T04] ( 4, 3 ) byref -> x20 single-def
+; V01 arg1 [V01,T04] ( 4, 3.50) byref -> x20 single-def
; V02 loc0 [V02,T03] ( 4, 6 ) ref -> x21 class-hnd single-def <<unknown class>> ; V03 loc1 [V03,T01] ( 9, 11 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
-; V04 loc2 [V04,T08] ( 4, 3.50) simd16 -> [fp+0x30] HFA(simd16) <System.Numerics.Vector`1[float]> -; V05 loc3 [V05,T09] ( 3, 2 ) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V04 loc2 [V04,T08] ( 4, 4 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]> +; V05 loc3 [V05,T09] ( 3, 2.50) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d10 HFA(simd16) <System.Numerics.Vector`1[float]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
; V09 cse0 [V09,T05] ( 3, 5 ) long -> x22 "CSE - aggressive" ; V10 cse1 [V10,T00] ( 10, 13 ) long -> x19 multi-def "CSE - aggressive" ;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M50903_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!
- stp d8, d9, [sp, #0x50]
+ stp d8, d9, [sp, #0x40] + stp d10, d11, [sp, #0x50]
stp x19, x20, [sp, #0x60] stp x21, x22, [sp, #0x70] mov fp, sp add x2, sp, #128
- str x2, [fp, #0x48] // [V08 PSPSym]
+ str x2, [fp, #0x38] // [V08 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; byrRegs +[x20]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M50903_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref mov x0, x19 ; gcrRegs +[x0] @@ -74,32 +75,6 @@ G_M50903_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20} ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M50903_IG05: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs +[x21]
- ldr x0, [fp, #0x18] // [V03 loc1] - ; gcrRegs +[x0] - add x11, x19, #16 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - mov x0, x21 - ; gcrRegs +[x0] - str q0, [fp, #0x30] // [V04 loc2] - ldr x1, [x21] - ldr x22, [x1, #0x48] - ldr x1, [x22, #0x28] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ldr x0, [fp, #0x18] // [V03 loc1] - ; gcrRegs +[x0] - add x11, x19, #8 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbz w0, G_M50903_IG09 - ;; size=60 bbWeight=0.50 PerfScore 12.75 -G_M50903_IG06: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
ldr x0, [fp, #0x18] // [V03 loc1] ; gcrRegs +[x0] add x11, x19, #16 @@ -111,19 +86,13 @@ G_M50903_IG06: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x2 mov x0, x21 ; gcrRegs +[x0] mov v0.16b, v8.16b
- mov w1, #1 - ldr x2, [x22, #0x20]
+ ldr x1, [x21] + ldr x22, [x1, #0x48] + ldr x1, [x22, #0x28]
mov v9.d[0], v8.d[1]
- blr x2
+ blr x1
; gcrRegs -[x0] ; gcr arg pop 0
- mov v8.d[1], v9.d[0] - tbz w0, #31, G_M50903_IG08 - ;; size=52 bbWeight=4 PerfScore 62.00 -G_M50903_IG07: ; bbWeight=2, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref - str q8, [fp, #0x30] // [V04 loc2] - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M50903_IG08: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
ldr x0, [fp, #0x18] // [V03 loc1] ; gcrRegs +[x0] add x11, x19, #8 @@ -131,15 +100,53 @@ G_M50903_IG08: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x2 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
+ mov v8.d[1], v9.d[0] + cbz w0, G_M50903_IG09 + ;; size=72 bbWeight=0.50 PerfScore 13.75 +G_M50903_IG06: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V03 loc1] + ; gcrRegs +[x0] + add x11, x19, #16 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.16b, v0.16b + mov x0, x21 + ; gcrRegs +[x0] + mov v0.16b, v10.16b + mov w1, #1 + ldr x2, [x22, #0x20] + mov v11.d[0], v10.d[1] + blr x2 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.d[1], v11.d[0] + mov v8.d[1], v9.d[0] + tbz w0, #31, G_M50903_IG08 + ;; size=60 bbWeight=4 PerfScore 70.00 +G_M50903_IG07: ; bbWeight=2, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref + mov v8.16b, v10.16b + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M50903_IG08: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V03 loc1] + ; gcrRegs +[x0] + add x11, x19, #8 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v8.d[1], v9.d[0]
cbnz w0, G_M50903_IG06
- ;; size=20 bbWeight=4 PerfScore 30.00 -G_M50903_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+ ;; size=28 bbWeight=4 PerfScore 38.00 +G_M50903_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x21] mov w0, #1 strb w0, [x20]
- ldr q0, [fp, #0x30] // [V04 loc2] - str q0, [fp, #0x20] // [V05 loc3] - ;; size=16 bbWeight=0.50 PerfScore 2.25
+ str q8, [fp, #0x20] // [V05 loc3] + ;; size=12 bbWeight=1 PerfScore 2.50
G_M50903_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x20] ldr x0, [fp, #0x18] // [V03 loc1] @@ -155,18 +162,20 @@ G_M50903_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M50903_IG11: ; bbWeight=1, epilog, nogc, extend ldp x21, x22, [sp, #0x70] ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
+ ldp d10, d11, [sp, #0x50] + ldp d8, d9, [sp, #0x40]
ldp fp, lr, [sp], #0x80 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
G_M50903_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp d8, d9, [sp, #0x20]
- stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40]
+ stp d10, d11, [sp, #0x30] + stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
add x3, fp, #128 str x3, [sp, #0x18]
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M50903_IG13: ; bbWeight=0, gcVars=0000000000000002 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V01 V03} ldr x0, [fp, #0x18] // [V03 loc1] @@ -183,25 +192,26 @@ G_M50903_IG13: ; bbWeight=0, gcVars=0000000000000002 {V03}, gcrefRegs=000 ; gcr arg pop 0 ;; size=32 bbWeight=0 PerfScore 0.00 G_M50903_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
- ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30]
+ ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40] + ldp d10, d11, [sp, #0x30]
ldp d8, d9, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 36, PerfScore 158.25, instruction count 99, allocated bytes for code 396 (MethodHash=ce5e3928) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
+; Total bytes of code 436, prolog size 40, PerfScore 176.50, instruction count 109, allocated bytes for code 436 (MethodHash=ce5e3928) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -211,9 +221,13 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
- D8 0A save_fregp X#0 Z#10 (0x0A); stp d8, d9, [sp, #80]
+ E6 save_next + D8 08 save_fregp X#0 Z#8 (0x08); stp d8, d9, [sp, #64]
8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! E4 end
+ E4 end + E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) @@ -223,15 +237,15 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ---- E6 save_next
- C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
+ C8 08 save_regp X#0 Z#8 (0x08); stp x19, x20, [sp, #64] + E6 save_next
D8 04 save_fregp X#0 Z#4 (0x04); stp d8, d9, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
...

+40 (+10.10%) : 271656.dasm - System.Linq.OrderedEnumerable1[System.Numerics.Vector1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)

@@ -8,32 +8,33 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 4 ) ref -> x19 this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]>
-; V01 arg1 [V01,T04] ( 4, 3 ) byref -> x20 single-def
+; V01 arg1 [V01,T03] ( 4, 3.50) byref -> x20 single-def
; V02 loc0 [V02,T01] ( 9, 11 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
-; V03 loc1 [V03,T03] ( 4, 5.50) ref -> x19 class-hnd single-def <<unknown class>> -; V04 loc2 [V04,T08] ( 4, 3.50) simd16 -> [fp+0x30] HFA(simd16) <System.Numerics.Vector`1[float]> -; V05 loc3 [V05,T09] ( 3, 2 ) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V03 loc1 [V03,T04] ( 4, 5.50) ref -> x19 class-hnd single-def <<unknown class>> +; V04 loc2 [V04,T08] ( 4, 4 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]> +; V05 loc3 [V05,T09] ( 3, 2.50) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d10 HFA(simd16) <System.Numerics.Vector`1[float]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
; V09 cse0 [V09,T05] ( 3, 5 ) long -> x22 "CSE - aggressive" ; V10 cse1 [V10,T00] ( 10, 13 ) long -> x21 multi-def "CSE - aggressive" ;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M19015_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!
- stp d8, d9, [sp, #0x50]
+ stp d8, d9, [sp, #0x40] + stp d10, d11, [sp, #0x50]
stp x19, x20, [sp, #0x60] stp x21, x22, [sp, #0x70] mov fp, sp add x2, sp, #128
- str x2, [fp, #0x48] // [V08 PSPSym]
+ str x2, [fp, #0x38] // [V08 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; byrRegs +[x20]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M19015_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref ldr x0, [x19, #0x08] ; gcrRegs +[x0] @@ -81,49 +82,17 @@ G_M19015_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- mov x0, x19 - ; gcrRegs +[x0] - str q0, [fp, #0x30] // [V04 loc2] - ldr x1, [x19] - ldr x22, [x1, #0x48] - ldr x1, [x22, #0x28] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ldr x0, [fp, #0x18] // [V02 loc0] - ; gcrRegs +[x0] - add x11, x21, #8 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbz w0, G_M19015_IG09 - ;; size=88 bbWeight=0.50 PerfScore 18.50 -G_M19015_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - ldr x0, [fp, #0x18] // [V02 loc0] - ; gcrRegs +[x0] - add x11, x21, #16 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0
mov v8.16b, v0.16b mov x0, x19 ; gcrRegs +[x0] mov v0.16b, v8.16b
- mov w1, wzr - ldr x2, [x22, #0x20]
+ ldr x1, [x19] + ldr x22, [x1, #0x48] + ldr x1, [x22, #0x28]
mov v9.d[0], v8.d[1]
- blr x2
+ blr x1
; gcrRegs -[x0] ; gcr arg pop 0
- mov v8.d[1], v9.d[0] - tbnz w0, #31, G_M19015_IG08 - ;; size=52 bbWeight=4 PerfScore 62.00 -G_M19015_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - str q8, [fp, #0x30] // [V04 loc2] - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M19015_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldr x0, [fp, #0x18] // [V02 loc0] ; gcrRegs +[x0] add x11, x21, #8 @@ -131,15 +100,53 @@ G_M19015_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
+ mov v8.d[1], v9.d[0] + cbz w0, G_M19015_IG09 + ;; size=100 bbWeight=0.50 PerfScore 19.50 +G_M19015_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V02 loc0] + ; gcrRegs +[x0] + add x11, x21, #16 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.16b, v0.16b + mov x0, x19 + ; gcrRegs +[x0] + mov v0.16b, v10.16b + mov w1, wzr + ldr x2, [x22, #0x20] + mov v11.d[0], v10.d[1] + blr x2 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.d[1], v11.d[0] + mov v8.d[1], v9.d[0] + tbnz w0, #31, G_M19015_IG08 + ;; size=60 bbWeight=4 PerfScore 70.00 +G_M19015_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref + mov v8.16b, v10.16b + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M19015_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V02 loc0] + ; gcrRegs +[x0] + add x11, x21, #8 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v8.d[1], v9.d[0]
cbnz w0, G_M19015_IG06
- ;; size=20 bbWeight=4 PerfScore 30.00 -G_M19015_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+ ;; size=28 bbWeight=4 PerfScore 38.00 +G_M19015_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x19] mov w0, #1 strb w0, [x20]
- ldr q0, [fp, #0x30] // [V04 loc2] - str q0, [fp, #0x20] // [V05 loc3] - ;; size=16 bbWeight=0.50 PerfScore 2.25
+ str q8, [fp, #0x20] // [V05 loc3] + ;; size=12 bbWeight=1 PerfScore 2.50
G_M19015_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x20] ldr x0, [fp, #0x18] // [V02 loc0] @@ -155,18 +162,20 @@ G_M19015_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M19015_IG11: ; bbWeight=1, epilog, nogc, extend ldp x21, x22, [sp, #0x70] ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
+ ldp d10, d11, [sp, #0x50] + ldp d8, d9, [sp, #0x40]
ldp fp, lr, [sp], #0x80 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
G_M19015_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp d8, d9, [sp, #0x20]
- stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40]
+ stp d10, d11, [sp, #0x30] + stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
add x3, fp, #128 str x3, [sp, #0x18]
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M19015_IG13: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V01 V02} ldr x0, [fp, #0x18] // [V02 loc0] @@ -183,25 +192,26 @@ G_M19015_IG13: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=000 ; gcr arg pop 0 ;; size=32 bbWeight=0 PerfScore 0.00 G_M19015_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
- ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30]
+ ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40] + ldp d10, d11, [sp, #0x30]
ldp d8, d9, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 36, PerfScore 152.50, instruction count 99, allocated bytes for code 396 (MethodHash=dbb2b5b8) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
+; Total bytes of code 436, prolog size 40, PerfScore 170.75, instruction count 109, allocated bytes for code 436 (MethodHash=dbb2b5b8) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -211,9 +221,13 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
- D8 0A save_fregp X#0 Z#10 (0x0A); stp d8, d9, [sp, #80]
+ E6 save_next + D8 08 save_fregp X#0 Z#8 (0x08); stp d8, d9, [sp, #64]
8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! E4 end
+ E4 end + E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) @@ -223,15 +237,15 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ---- E6 save_next
- C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
+ C8 08 save_regp X#0 Z#8 (0x08); stp x19, x20, [sp, #64] + E6 save_next
D8 04 save_fregp X#0 Z#4 (0x04); stp d8, d9, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
...

+20 (+15.62%) : 113774.dasm - Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary2[System.Numerics.Vector1[float],System.Nullable1[int]]:Remove(System.Numerics.Vector1[float]):this (FullOpts)

@@ -8,38 +8,42 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 11.50) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]> -; V01 arg1 [V01,T05] ( 4, 3.50) simd16 -> [fp+0x10] HFA(simd16) single-def <System.Numerics.Vector`1[float]>
+; V00 this [V00,T01] ( 6, 12 ) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]> +; V01 arg1 [V01,T05] ( 4, 4 ) simd16 -> d8 HFA(simd16) single-def <System.Numerics.Vector`1[float]>
; V02 loc0 [V02,T00] ( 6, 17 ) ref -> x0 ld-addr-op class-hnd <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ; V06 tmp3 [V06,T03] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp" ;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M54949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
+ stp d8, d9, [sp, #0x18]
str x19, [sp, #0x28] mov fp, sp
+ mov v8.16b, v0.16b
mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M54949_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldrsb wzr, [x0]
- str q0, [fp, #0x10] // [V01 arg1]
+ mov v0.16b, v8.16b
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1]
+ mov v9.d[0], v8.d[1]
blr x1 ; gcrRegs -[x0] ; byrRegs +[x0] ; gcr arg pop 0
+ mov v8.d[1], v9.d[0]
cbz x0, G_M54949_IG06
- ;; size=36 bbWeight=1 PerfScore 13.50
+ ;; size=44 bbWeight=1 PerfScore 15.00
G_M54949_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz ldr x0, [x0] ; gcrRegs +[x0] @@ -54,11 +58,11 @@ G_M54949_IG04: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ldr x0, [x0, #0x08] cbnz x0, G_M54949_IG04 ;; size=24 bbWeight=4 PerfScore 38.00
-G_M54949_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M54949_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- ldr q0, [fp, #0x10] // [V01 arg1]
+ mov v0.16b, v8.16b
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -67,14 +71,15 @@ G_M54949_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, blr x1 ; gcrRegs -[x0 x19] ; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.75
+ ;; size=32 bbWeight=1 PerfScore 12.00
G_M54949_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ldr x19, [sp, #0x28]
+ ldp d8, d9, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 128, prolog size 16, PerfScore 67.25, instruction count 32, allocated bytes for code 128 (MethodHash=83d0295a) for method Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
+; Total bytes of code 148, prolog size 24, PerfScore 76.50, instruction count 37, allocated bytes for code 148 (MethodHash=83d0295a) for method Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
; ============================================================ Unwind Info: @@ -85,7 +90,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -94,9 +99,8 @@ Unwind Info: E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
+ D8 03 save_fregp X#0 Z#3 (0x03); stp d8, d9, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
- E4 end - E4 end

libraries_tests.run.osx.arm64.Release.mch

-20 (-9.62%) : 160833.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,118 +11,111 @@ ; ; V00 arg0 [V00,T00] ( 8, 5.09) long -> x0 single-def ; V01 arg1 [V01,T01] ( 7, 5.02) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.02) long -> x19 -; V03 loc1 [V03,T03] ( 10, 3.19) long -> x2 -; V04 loc2 [V04,T02] ( 10, 4.19) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.02) long -> x2 +; V03 loc1 [V03,T03] ( 10, 3.19) long -> x3 +; V04 loc2 [V04,T02] ( 10, 4.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_IG06 - ldr x19, [x1] - ldrh w2, [x19, #0x0E] - cbz x2, G_M24157_IG11 - ldr x3, [x19, #0x40] - cmp x2, #4 - blt G_M24157_IG13
+ cbz x1, G_M24157_IG13 + ldr x2, [x1] + ldrh w3, [x2, #0x0E] + cbz x3, G_M24157_IG11 + ldr x4, [x2, #0x40] + cmp x3, #4 + blt G_M24157_IG09
;; size=28 bbWeight=1 PerfScore 12.50 G_M24157_IG03: ; bbWeight=1.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG06
+ ldr x5, [x4] + cmp x5, x0 + beq G_M24157_IG13
;; size=12 bbWeight=1.01 PerfScore 4.56 G_M24157_IG04: ; bbWeight=1.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x08] - cmp x4, x0 - beq G_M24157_IG06
+ ldr x5, [x4, #0x08] + cmp x5, x0 + beq G_M24157_IG13
;; size=12 bbWeight=1.01 PerfScore 4.55 G_M24157_IG05: ; bbWeight=1.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x4, [x3, #0x10] - cmp x4, x0 - bne G_M24157_IG08
+ ldr x5, [x4, #0x10] + cmp x5, x0 + beq G_M24157_IG13
;; size=12 bbWeight=1.00 PerfScore 4.49
-G_M24157_IG06: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - mov x0, x1 - ; gcrRegs +[x0] - ;; size=4 bbWeight=0.99 PerfScore 0.50 -G_M24157_IG07: ; bbWeight=0.99, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20 - ret lr - ;; size=12 bbWeight=0.99 PerfScore 3.97 -G_M24157_IG08: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[x0] - ldr x4, [x3, #0x18] - cmp x4, x0 - beq G_M24157_IG06
+G_M24157_IG06: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x5, [x4, #0x18] + cmp x5, x0 + beq G_M24157_IG13
;; size=12 bbWeight=0.04 PerfScore 0.17
-G_M24157_IG09: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - add x3, x3, #32 - sub x2, x2, #4 - cmp x2, #4
+G_M24157_IG07: ; bbWeight=0.04, 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.04 PerfScore 0.09
-G_M24157_IG10: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - cbnz x2, G_M24157_IG13
+G_M24157_IG08: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cbz x3, G_M24157_IG11
;; size=4 bbWeight=0.02 PerfScore 0.02
+G_M24157_IG09: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x5, [x4] + cmp x5, x0 + beq G_M24157_IG13 + ;; size=12 bbWeight=0.02 PerfScore 0.09 +G_M24157_IG10: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + add x4, x4, #8 + sub x3, x3, #1 + cmp x3, #0 + bgt G_M24157_IG09 + ;; size=16 bbWeight=0.02 PerfScore 0.05
G_M24157_IG11: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr w2, [x19]
+ ldr w2, [x2]
mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG16
+ bne G_M24157_IG15
;; size=16 bbWeight=0.02 PerfScore 0.12 G_M24157_IG12: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1]
- b G_M24157_IG06 - ;; size=8 bbWeight=0.02 PerfScore 0.02 -G_M24157_IG13: ; bbWeight=0.02, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG06 - ;; size=12 bbWeight=0.02 PerfScore 0.09 -G_M24157_IG14: ; bbWeight=0.02, 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.02 PerfScore 0.05 -G_M24157_IG15: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - b G_M24157_IG11 - ;; size=4 bbWeight=0.01 PerfScore 0.01 -G_M24157_IG16: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ ;; size=4 bbWeight=0.02 PerfScore 0.01 +G_M24157_IG13: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov x0, x1 + ; gcrRegs +[x0] + ;; size=4 bbWeight=0.99 PerfScore 0.50 +G_M24157_IG14: ; bbWeight=0.99, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=0.99 PerfScore 1.98 +G_M24157_IG15: ; bbWeight=0.01, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0]
movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 movk x2, #1 LSL #32 ldr x2, [x2] ;; size=16 bbWeight=0.01 PerfScore 0.04
-G_M24157_IG17: ; bbWeight=0.01, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG16: ; bbWeight=0.01, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.01 PerfScore 0.03
+ ;; size=8 bbWeight=0.01 PerfScore 0.02
-; Total bytes of code 208, prolog size 12, PerfScore 33.70, 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 30.68, 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) @@ -133,10 +126,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%) : 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

+8 (+3.92%) : 128592.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)

@@ -9,9 +9,9 @@ ; 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> -; V02 loc0 [V02,T00] ( 18, 7.30) long -> x21
+; V00 arg0 [V00,T00] ( 8, 24.70) long -> x19 single-def +; V01 arg1 [V01,T01] ( 5, 24 ) ref -> x20 class-hnd single-def <System.Object> +; V02 loc0 [V02,T02] ( 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" ;* V05 tmp2 [V05 ] ( 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=20, 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=20 PerfScore 110.00 +G_M64200_IG08: ; bbWeight=20, 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=20 PerfScore 100.00 +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 241.05, 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)

+12 (+4.29%) : 172064.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)

@@ -5,23 +5,23 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 8 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 5.99) long -> x0 single-def -; V01 arg1 [V01,T01] ( 6, 5 ) ref -> x1 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 6, 5.99) long -> x0 single-def +; V01 arg1 [V01,T02] ( 6, 5 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T12] ( 2, 2 ) ref -> x20 class-hnd single-def <System.Object> -; V04 loc2 [V04,T07] ( 4, 4.37) long -> x2
+; V03 loc1 [V03,T12] ( 2, 2 ) ref -> x19 class-hnd single-def <System.Object> +; V04 loc2 [V04,T08] ( 4, 4.37) long -> x2
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T08] ( 4, 3 ) int -> x19 "Inline return value spill temp"
+; V06 tmp1 [V06,T00] ( 4,102.99) int -> x20 "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V08 tmp3 [V08,T06] ( 4, 4.74) byref -> x3 single-def "Inline stloc first use temp" -; V09 tmp4 [V09,T05] ( 4, 5.11) int -> x4 "Inline stloc first use temp" -; V10 tmp5 [V10,T02] ( 5, 6.48) int -> x5 "Inline stloc first use temp" -; V11 tmp6 [V11,T03] ( 5, 6.09) byref -> x6 "Inline stloc first use temp" -; V12 tmp7 [V12,T04] ( 5, 5.47) int -> x7 "Inline stloc first use temp"
+; V08 tmp3 [V08,T07] ( 4, 4.74) byref -> x3 single-def "Inline stloc first use temp" +; V09 tmp4 [V09,T06] ( 4, 5.11) int -> x4 "Inline stloc first use temp" +; V10 tmp5 [V10,T03] ( 5, 6.48) int -> x5 "Inline stloc first use temp" +; V11 tmp6 [V11,T04] ( 5, 6.09) byref -> x6 "Inline stloc first use temp" +; V12 tmp7 [V12,T05] ( 5, 5.47) int -> x7 "Inline stloc first use temp"
; V13 tmp8 [V13,T11] ( 2, 2.74) long -> x8 "Inline stloc first use temp" ; V14 tmp9 [V14,T10] ( 3, 2.97) long -> x19 "Inline stloc first use temp" ;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -33,17 +33,17 @@ ; ; Lcl frame size = 0
-G_M33041_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M33041_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! stp x19, x20, [sp, #0x10] mov fp, sp ;; size=12 bbWeight=1 PerfScore 2.50 G_M33041_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M33041_IG12
+ cbz x1, G_M33041_IG13
ldr x2, [x1] cmp x2, x0
- beq G_M33041_IG12
+ beq G_M33041_IG13
movz x3, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x3, #0xD1FFAB1E LSL #16 movk x3, #2 LSL #32 @@ -73,31 +73,52 @@ G_M33041_IG03: ; bbWeight=1.37, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, ldr x8, [x6, #0x08] and w7, w7, #0xD1FFAB1E cmp x8, x2
- bne G_M33041_IG09
+ bne G_M33041_IG06
;; size=36 bbWeight=1.37 PerfScore 15.73 G_M33041_IG04: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0048 {x3 x6}, byref, isz ldr x8, [x6, #0x10] eor x19, x8, x0 cmp x19, #1
- bhi G_M33041_IG09
+ bhi G_M33041_IG06
;; size=16 bbWeight=0.99 PerfScore 4.96 G_M33041_IG05: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0040 {x6}, byref, isz ; byrRegs -[x3] dmb ishld ldr w2, [x6] cmp w7, w2
- bne G_M33041_IG11 - ;; size=16 bbWeight=0.99 PerfScore 14.38 -G_M33041_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x6] - cmp w19, #1 - beq G_M33041_IG12
+ bne G_M33041_IG09 + b G_M33041_IG08 + ;; size=20 bbWeight=0.99 PerfScore 15.37 +G_M33041_IG06: ; bbWeight=0.38, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz + ; byrRegs -[x6] +[x3] + cbz w7, G_M33041_IG09 + ;; size=4 bbWeight=0.38 PerfScore 0.38 +G_M33041_IG07: ; bbWeight=1.37, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz + add w5, w5, #1 + add w4, w4, w5 + ldr w6, [x3, #0x04] + and w4, w4, w6 + cmp w5, #8 + blt G_M33041_IG03 + b G_M33041_IG09 + ;; size=28 bbWeight=1.37 PerfScore 9.59 +G_M33041_IG08: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; byrRegs -[x3] + sxtw w20, w19 + b G_M33041_IG10 + ;; size=8 bbWeight=0.99 PerfScore 1.49 +G_M33041_IG09: ; bbWeight=100, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov w20, #2 + ;; size=4 bbWeight=100 PerfScore 50.00 +G_M33041_IG10: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cmp w20, #1 + beq G_M33041_IG13
bl <unknown method> ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20] - cbnz w19, G_M33041_IG07
+ mov x19, x0 + ; gcrRegs +[x19] + cbnz w20, G_M33041_IG11
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -110,44 +131,27 @@ G_M33041_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=56 bbWeight=1 PerfScore 11.50
-G_M33041_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - mov x0, x20
+G_M33041_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19
; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M33041_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M33041_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M33041_IG09: ; bbWeight=0.38, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, gcvars, byref, isz - ; gcrRegs -[x0 x20] +[x1] - ; byrRegs +[x3] - cbz w7, G_M33041_IG11 - ;; size=4 bbWeight=0.38 PerfScore 0.38 -G_M33041_IG10: ; bbWeight=1.37, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz - add w5, w5, #1 - add w4, w4, w5 - ldr w6, [x3, #0x04] - and w4, w4, w6 - cmp w5, #8 - blt G_M33041_IG03 - ;; size=24 bbWeight=1.37 PerfScore 8.22 -G_M33041_IG11: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; byrRegs -[x3] - mov w19, #2 - b G_M33041_IG06 - ;; size=8 bbWeight=0.01 PerfScore 0.01 -G_M33041_IG12: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M33041_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x19] +[x1]
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M33041_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M33041_IG14: ; bbWeight=0, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 280, prolog size 12, PerfScore 81.17, instruction count 70, allocated bytes for code 280 (MethodHash=84fd7eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 292, prolog size 12, PerfScore 135.00, instruction count 73, allocated bytes for code 292 (MethodHash=84fd7eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -158,7 +162,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 70 (0x00046) Actual length = 280 (0x000118)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+40 (+5.08%) : 100729.dasm - System.Collections.Generic.Dictionary`2[System.Canon,System.Canon]:Remove(System.__Canon):ubyte:this (Tier1)

@@ -13,12 +13,12 @@ ; V01 arg1 [V01,T03] ( 5, 5 ) ref -> x20 ld-addr-op class-hnd single-def <System.__Canon> ; V02 loc0 [V02,T26] ( 4, 1 ) int -> x21 ; V03 loc1 [V03,T15] ( 4, 4 ) ref -> x22 class-hnd single-def <<unknown class>>
-; V04 loc2 [V04,T11] ( 5, 5 ) int -> x23 -; V05 loc3 [V05,T19] ( 3, 3 ) byref -> x24 single-def -; V06 loc4 [V06,T18] ( 4, 3 ) ref -> x25 class-hnd exact single-def <<unknown class>> -; V07 loc5 [V07,T22] ( 5, 2 ) int -> x26 -; V08 loc6 [V08,T10] ( 8, 5 ) int -> x27 -; V09 loc7 [V09,T02] ( 9, 7 ) byref -> [fp+0x10] spill-single-def
+; V04 loc2 [V04,T11] ( 5, 5 ) int -> x24 +; V05 loc3 [V05,T19] ( 3, 3 ) byref -> x25 single-def +; V06 loc4 [V06,T18] ( 4, 3 ) ref -> x26 class-hnd exact single-def <<unknown class>> +; V07 loc5 [V07,T22] ( 5, 2 ) int -> x27 +; V08 loc6 [V08,T10] ( 8, 5 ) int -> x28 +; V09 loc7 [V09,T02] ( 9, 7 ) byref -> [fp+0x18] spill-single-def
;# V10 OutArgs [V10 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V11 tmp1 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 tmp2 [V12 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -31,44 +31,44 @@ ;* V19 tmp9 [V19 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V20 tmp10 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V21 tmp11 [V21 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V22 tmp12 [V22,T20] ( 3, 3 ) ref -> x24 class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V23 tmp13 [V23,T01] ( 4, 8 ) int -> x26 "Inlining Arg" -; V24 tmp14 [V24,T17] ( 2, 4 ) long -> x27 "Inlining Arg" -; V25 tmp15 [V25,T16] ( 4, 4 ) int -> x27 "Inline stloc first use temp"
+; V22 tmp12 [V22,T20] ( 3, 3 ) ref -> x25 class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V23 tmp13 [V23,T01] ( 4, 8 ) int -> x27 "Inlining Arg" +; V24 tmp14 [V24,T17] ( 2, 4 ) long -> x28 "Inlining Arg" +; V25 tmp15 [V25,T16] ( 4, 4 ) int -> x28 "Inline stloc first use temp"
;* V26 tmp16 [V26 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V27 cse0 [V27,T12] ( 2, 2 ) long -> x0 "CSE - aggressive" -; V28 cse1 [V28,T21] ( 3, 3 ) int -> x25 "CSE - aggressive" -; V29 cse2 [V29,T23] ( 4, 2 ) int -> x28 hoist "CSE - aggressive"
+; V27 cse0 [V27,T12] ( 3, 3 ) long -> x23 "CSE - aggressive" +; V28 cse1 [V28,T21] ( 3, 3 ) int -> x26 "CSE - aggressive" +; V29 cse2 [V29,T23] ( 4, 2 ) int -> [fp+0x24] spill-single-def hoist "CSE - aggressive"
; V30 rat0 [V30,T13] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" ; V31 rat1 [V31,T06] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable" ; V32 rat2 [V32,T14] ( 3, 4.40) long -> x0 "Spilling to split statement for tree" ; V33 rat3 [V33,T07] ( 3, 5.60) long -> x11 "fgMakeTemp is creating a new local variable" ;* V34 rat4 [V34,T24] ( 0, 0 ) long -> zero-ref "runtime lookup"
-;* V35 rat5 [V35,T08] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
+; V35 rat5 [V35,T08] ( 2, 4 ) long -> x0 "fgMakeTemp is creating a new local variable"
;* V36 rat6 [V36,T25] ( 0, 0 ) long -> zero-ref "runtime lookup" ;* V37 rat7 [V37,T09] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable" ;
-; Lcl frame size = 16
+; Lcl frame size = 32
G_M47719_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x70]! - stp x19, x20, [sp, #0x20] - stp x21, x22, [sp, #0x30] - stp x23, x24, [sp, #0x40] - stp x25, x26, [sp, #0x50] - stp x27, x28, [sp, #0x60]
+ stp fp, lr, [sp, #-0x80]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50] + stp x25, x26, [sp, #0x60] + stp x27, x28, [sp, #0x70]
mov fp, sp
- str x0, [fp, #0x18]
+ str x0, [fp, #0x28]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; gcrRegs +[x20] ;; size=40 bbWeight=1 PerfScore 8.50 G_M47719_IG02: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz
- cbz x20, G_M47719_IG17
+ cbz x20, G_M47719_IG21
ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- cbz x0, G_M47719_IG19
+ cbz x0, G_M47719_IG14
ldr x0, [x19, #0x10] cbnz x0, G_M47719_IG03 movz x0, #0xD1FFAB1E @@ -97,12 +97,13 @@ G_M47719_IG03: ; bbWeight=1, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ldr x1, [x1] blr x1 ; gcr arg pop 0
- ldr x0, [x19]
+ ldr x23, [x19] + mov x0, x23
ldr x1, [x0, #0x38] ldr x1, [x1] ldr x11, [x1, #0x48] cbz x11, G_M47719_IG05
- ;; size=56 bbWeight=1 PerfScore 23.00
+ ;; size=60 bbWeight=1 PerfScore 23.50
G_M47719_IG04: ; bbWeight=0.80, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref b G_M47719_IG06 ;; size=4 bbWeight=0.80 PerfScore 0.80 @@ -123,12 +124,12 @@ G_M47719_IG06: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 blr x2 ; gcrRegs -[x0-x1] ; gcr arg pop 0
- sxtw w23, w0 - ldr x24, [x19, #0x08] - ; gcrRegs +[x24] - ldr w25, [x24, #0x08] - sxtw w26, w25 - ldr x27, [x19, #0x30]
+ sxtw w24, w0 + ldr x25, [x19, #0x08] + ; gcrRegs +[x25] + ldr w26, [x25, #0x08] + sxtw w27, w26 + ldr x28, [x19, #0x30]
mov w0, #1 movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -136,18 +137,18 @@ G_M47719_IG06: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 ldr x1, [x1] blr x1 ; gcr arg pop 0
- mov w0, w23 - mul x0, x27, x0
+ mov w0, w24 + mul x0, x28, x0
lsr x0, x0, #32 add x0, x0, #1
- mov w1, w26
+ mov w1, w27
mul x0, x0, x1
- lsr x27, x0, #32 - cmp w26, #0 - beq G_M47719_IG16 - udiv w0, w23, w26 - msub w0, w0, w26, w23 - cmp w0, w27
+ lsr x28, x0, #32 + cmp w27, #0 + beq G_M47719_IG20 + udiv w0, w24, w27 + msub w0, w0, w27, w24 + cmp w0, w28
cset x0, eq movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 @@ -155,47 +156,48 @@ G_M47719_IG06: ; bbWeight=1, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 ldr x1, [x1] blr x1 ; gcr arg pop 0
- cmp w27, w25 - bhs G_M47719_IG15 - add x0, x24, #16
+ cmp w28, w26 + bhs G_M47719_IG19 + add x0, x25, #16
; byrRegs +[x0]
- ubfiz x1, x27, #2, #32 - add x24, x0, x1 - ; gcrRegs -[x24] - ; byrRegs +[x24] - ldr x25, [x19, #0x10] - ; gcrRegs +[x25] - movn w26, #0 - ldr w0, [x24]
+ ubfiz x1, x28, #2, #32 + add x25, x0, x1 + ; gcrRegs -[x25] + ; byrRegs +[x25] + ldr x26, [x19, #0x10] + ; gcrRegs +[x26] + movn w27, #0 + ldr w0, [x25]
; byrRegs -[x0]
- sub w27, w0, #1 - tbnz w27, #31, G_M47719_IG19 - ldr w28, [x25, #0x08] - ;; size=176 bbWeight=1 PerfScore 64.00 -G_M47719_IG07: ; bbWeight=1, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=1000000 {x24}, byref, isz - cmp w27, w28 - bhs G_M47719_IG15
+ sub w28, w0, #1 + tbnz w28, #31, G_M47719_IG14 + ldr w2, [x26, #0x08] + str w2, [fp, #0x24] // [V29 cse2] + ;; size=180 bbWeight=1 PerfScore 65.00 +G_M47719_IG07: ; bbWeight=1, gcrefRegs=4580000 {x19 x20 x22 x26}, byrefRegs=2000000 {x25}, byref, isz + cmp w28, w2 + bhs G_M47719_IG19
mov w0, #24 mov x1, #16
- umaddl x0, w27, w0, x1 - add x2, x25, x0 - ; byrRegs +[x2] - str x2, [fp, #0x10] // [V09 loc7]
+ umaddl x0, w28, w0, x1 + add x3, x26, x0 + ; byrRegs +[x3] + str x3, [fp, #0x18] // [V09 loc7]
; GC ptr vars +{V09}
- ldr w0, [x2, #0x10] - cmp w0, w23 - bne G_M47719_IG18
+ ldr w0, [x3, #0x10] + cmp w0, w24 + bne G_M47719_IG22
ldr x0, [x19] ldr x1, [x0, #0x38] ldr x1, [x1] ldr x11, [x1, #0x50] cbz x11, G_M47719_IG09 ;; size=60 bbWeight=1 PerfScore 26.50
-G_M47719_IG08: ; bbWeight=0.80, gcVars=0000000000000004 {V09}, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=1000000 {x24}, gcvars, byref - ; byrRegs -[x2]
+G_M47719_IG08: ; bbWeight=0.80, gcVars=0000000000000004 {V09}, gcrefRegs=4580000 {x19 x20 x22 x26}, byrefRegs=2000000 {x25}, gcvars, byref + ; byrRegs -[x3]
b G_M47719_IG10 ;; size=4 bbWeight=0.80 PerfScore 0.80
-G_M47719_IG09: ; bbWeight=0.20, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=1000000 {x24}, byref
+G_M47719_IG09: ; bbWeight=0.20, gcrefRegs=4580000 {x19 x20 x22 x26}, byrefRegs=2000000 {x25}, byref
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 @@ -203,32 +205,32 @@ G_M47719_IG09: ; bbWeight=0.20, gcrefRegs=2580000 {x19 x20 x22 x25}, byre ; gcr arg pop 0 mov x11, x0 ;; size=20 bbWeight=0.20 PerfScore 0.60
-G_M47719_IG10: ; bbWeight=1, gcrefRegs=2580000 {x19 x20 x22 x25}, byrefRegs=1000000 {x24}, byref, isz - ldr x2, [fp, #0x10] // [V09 loc7] - ; byrRegs +[x2] - ldr x1, [x2]
+G_M47719_IG10: ; bbWeight=1, gcrefRegs=4580000 {x19 x20 x22 x26}, byrefRegs=2000000 {x25}, byref, isz + ldr x3, [fp, #0x18] // [V09 loc7] + ; byrRegs +[x3] + ldr x1, [x3]
; gcrRegs +[x1] mov x0, x22 ; gcrRegs +[x0] mov x2, x20 ; gcrRegs +[x2]
- ; byrRegs -[x2] - ldr x3, [x11] - blr x3
+ ldr x4, [x11] + blr x4
; gcrRegs -[x0-x2]
+ ; byrRegs -[x3]
; gcr arg pop 0
- cbz w0, G_M47719_IG18 - tbz w26, #31, G_M47719_IG21 - ldr x20, [fp, #0x10] // [V09 loc7]
...

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,22 +155,37 @@ 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=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ; byrRegs -[x22]
- mov w0, #1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M46876_IG20: ; bbWeight=0.50, epilog, nogc, extend
+ mov w0, wzr + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46876_IG16: ; bbWeight=1, 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
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M46876_IG17: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, #1 + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46876_IG18: ; bbWeight=1, 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
-; 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 185.47, 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)

-24 (-1.90%) : 54202.dasm - Microsoft.Extensions.Options.Generators.Parser:TrackRangeAttributeForSubstitution(Microsoft.CodeAnalysis.AttributeData,Microsoft.CodeAnalysis.ITypeSymbol,byref):this (FullOpts)

@@ -9,73 +9,73 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 7, 4.50) ref -> x20 this class-hnd single-def <Microsoft.Extensions.Options.Generators.Parser>
-; V01 arg1 [V01,T03] ( 7, 5.50) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.AttributeData> -; V02 arg2 [V02,T07] ( 4, 3.50) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.ITypeSymbol> -; V03 arg3 [V03,T10] ( 3, 2.50) byref -> x22 single-def
+; V01 arg1 [V01,T03] ( 7, 6 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.AttributeData> +; V02 arg2 [V02,T08] ( 4, 3.50) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.ITypeSymbol> +; V03 arg3 [V03,T11] ( 3, 2.50) byref -> x22 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IParameterSymbol]>
-; V05 loc1 [V05,T13] ( 5, 3.50) ref -> x26 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol> -; V06 loc2 [V06,T24] ( 4, 2.50) ubyte -> x27 -; V07 loc3 [V07,T08] ( 8, 5 ) ref -> x28 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol>
+; V05 loc1 [V05,T16] ( 5, 3.50) ref -> x26 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol> +; V06 loc2 [V06,T25] ( 4, 2.50) ubyte -> x27 +; V07 loc3 [V07,T09] ( 8, 5 ) ref -> x28 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol>
;* V08 loc4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol]>
-; V09 loc5 [V09,T35] ( 3, 1.50) ref -> x24 class-hnd <System.Object> -; V10 loc6 [V10,T15] ( 6, 3 ) ref -> x24 class-hnd single-def <Microsoft.CodeAnalysis.INamedTypeSymbol> -; V11 loc7 [V11,T01] ( 7, 17.50) int -> [fp+0x2C]
+; V09 loc5 [V09,T28] ( 3, 2 ) ref -> x24 class-hnd <System.Object> +; V10 loc6 [V10,T13] ( 6, 4 ) ref -> x24 class-hnd single-def <Microsoft.CodeAnalysis.INamedTypeSymbol> +; V11 loc7 [V11,T01] ( 7, 18.50) int -> [fp+0x2C]
;* V12 loc8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]> ;* V13 loc9 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.TypedConstant>
-; V14 loc10 [V14,T26] ( 5, 2 ) ref -> x2 ld-addr-op class-hnd <System.Collections.Generic.HashSet`1[System.Object]>
+; V14 loc10 [V14,T27] ( 5, 2 ) ref -> x2 ld-addr-op class-hnd <System.Collections.Generic.HashSet`1[System.Object]>
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T09] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.IMethodSymbol>
+; V16 tmp1 [V16,T10] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.IMethodSymbol>
;* V17 tmp2 [V17 ] ( 0, 0 ) ref -> zero-ref single-def ;* V18 tmp3 [V18 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IParameterSymbol]>
-; V19 tmp4 [V19,T16] ( 3, 3 ) ref -> x26 class-hnd exact single-def "impAppendStmt" <Microsoft.Extensions.Options.Generators.OptionsSourceGenContext>
+; V19 tmp4 [V19,T17] ( 3, 3 ) ref -> x26 class-hnd exact single-def "impAppendStmt" <Microsoft.Extensions.Options.Generators.OptionsSourceGenContext>
;* V20 tmp5 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V21 tmp6 [V21,T27] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer> -; V22 tmp7 [V22,T28] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
+; V21 tmp6 [V21,T30] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer> +; V22 tmp7 [V22,T31] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
;* V23 tmp8 [V23 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V24 tmp9 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ; V25 tmp10 [V25,T00] ( 4, 19 ) ref -> x0 "spilling varStr"
-;* V26 tmp11 [V26,T06] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" -; V27 tmp12 [V27,T36] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Object>
+;* V26 tmp11 [V26,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" +; V27 tmp12 [V27,T39] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Object>
;* V28 tmp13 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
-; V29 tmp14 [V29,T37] ( 3, 1.50) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp14 [V29,T40] ( 3, 1.50) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V30 tmp15 [V30,T47] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V31 tmp16 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.SymbolHolder>
-; V32 tmp17 [V32,T44] ( 2, 1 ) ubyte -> x0 single-def "Inline return value spill temp" -; V33 tmp18 [V33,T29] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
+; V32 tmp17 [V32,T45] ( 2, 1 ) ubyte -> x0 single-def "Inline return value spill temp" +; V33 tmp18 [V33,T32] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
;* V34 tmp19 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.SymbolHolder>
-; V35 tmp20 [V35,T45] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" -; V36 tmp21 [V36,T17] ( 3, 3 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
+; V35 tmp20 [V35,T46] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" +; V36 tmp21 [V36,T18] ( 3, 3 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
;* V37 tmp22 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.SymbolHolder>
-; V38 tmp23 [V38,T18] ( 3, 3 ) ref -> x28 class-hnd exact single-def "Inlining Arg" <System.String>
+; V38 tmp23 [V38,T19] ( 3, 3 ) ref -> x28 class-hnd exact single-def "Inlining Arg" <System.String>
;* V39 tmp24 [V39 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V40 tmp25 [V40,T19] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.Object]> -; V41 tmp26 [V41,T43] ( 3, 1 ) ubyte -> x24 "Inline return value spill temp" -; V42 tmp27 [V42,T20] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]> -; V43 tmp28 [V43,T42] ( 3, 1.42) byref -> x0 single-def "Inline stloc first use temp" -; V44 tmp29 [V44,T21] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]>
+; V40 tmp25 [V40,T20] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.Object]> +; V41 tmp26 [V41,T44] ( 3, 1 ) ubyte -> x24 "Inline return value spill temp" +; V42 tmp27 [V42,T21] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]> +; V43 tmp28 [V43,T43] ( 3, 1.42) byref -> x0 single-def "Inline stloc first use temp" +; V44 tmp29 [V44,T22] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]>
;* V45 tmp30 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[System.Object]> ;* V46 tmp31 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V47 tmp32 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.OptionsSourceGenContext>
-; V48 tmp33 [V48,T25] ( 3, 2.50) ref -> x25 single-def "field V04.array (fldOffset=0x0)" P-INDEP -; V49 tmp34 [V49,T38] ( 3, 1.50) ref -> x0 "field V08.array (fldOffset=0x0)" P-INDEP -; V50 tmp35 [V50,T39] ( 3, 1.50) ref -> x0 "field V12.array (fldOffset=0x0)" P-INDEP
+; V48 tmp33 [V48,T26] ( 3, 2.50) ref -> x25 single-def "field V04.array (fldOffset=0x0)" P-INDEP +; V49 tmp34 [V49,T41] ( 3, 1.50) ref -> x0 "field V08.array (fldOffset=0x0)" P-INDEP +; V50 tmp35 [V50,T23] ( 3, 3 ) ref -> x0 "field V12.array (fldOffset=0x0)" P-INDEP
;* V51 tmp36 [V51 ] ( 0, 0 ) ref -> zero-ref "field V13._type (fldOffset=0x0)" P-INDEP
-; V52 tmp37 [V52,T40] ( 3, 1.50) ref -> x24 "field V13._value (fldOffset=0x8)" P-INDEP -; V53 tmp38 [V53,T46] ( 2, 1 ) int -> x1 "field V13._kind (fldOffset=0x10)" P-INDEP -; V54 tmp39 [V54,T23] ( 4, 2.50) ref -> x24 single-def "field V18.array (fldOffset=0x0)" P-INDEP -; V55 tmp40 [V55,T12] ( 2, 4 ) ref -> x0 single-def "argument with side effect" -; V56 tmp41 [V56,T30] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V57 tmp42 [V57,T22] ( 3, 3 ) byref -> x1 "BlockOp address local"
+; V52 tmp37 [V52,T29] ( 3, 2 ) ref -> x24 "field V13._value (fldOffset=0x8)" P-INDEP +; V53 tmp38 [V53,T38] ( 2, 2 ) int -> x1 "field V13._kind (fldOffset=0x10)" P-INDEP +; V54 tmp39 [V54,T24] ( 4, 2.50) ref -> x24 single-def "field V18.array (fldOffset=0x0)" P-INDEP +; V55 tmp40 [V55,T15] ( 2, 4 ) ref -> x0 single-def "argument with side effect" +; V56 tmp41 [V56,T33] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V57 tmp42 [V57,T06] ( 3, 6 ) byref -> x1 "BlockOp address local"
; V58 tmp43 [V58,T48] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V59 tmp44 [V59,T31] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V60 tmp45 [V60,T32] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V61 tmp46 [V61,T33] ( 2, 2 ) ref -> x3 single-def "argument with side effect" -; V62 tmp47 [V62,T34] ( 2, 2 ) ref -> x20 single-def "argument with side effect" -; V63 cse0 [V63,T14] ( 5, 3.50) long -> x23 "CSE - moderate" -; V64 cse1 [V64,T41] ( 3, 1.50) ref -> x25 "CSE - moderate"
+; V59 tmp44 [V59,T34] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V60 tmp45 [V60,T35] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V61 tmp46 [V61,T36] ( 2, 2 ) ref -> x3 single-def "argument with side effect" +; V62 tmp47 [V62,T37] ( 2, 2 ) ref -> x20 single-def "argument with side effect" +; V63 cse0 [V63,T14] ( 5, 4 ) long -> x23 "CSE - moderate" +; V64 cse1 [V64,T42] ( 3, 1.50) ref -> x25 "CSE - moderate"
; V65 cse2 [V65,T02] ( 16, 13 ) long -> [fp+0x20] multi-def "CSE - aggressive" ; V66 cse3 [V66,T05] ( 4, 6.50) int -> [fp+0x1C] spill-single-def "CSE - aggressive"
-; V67 cse4 [V67,T11] ( 2, 4.50) byref -> x25 hoist "CSE - moderate"
+; V67 cse4 [V67,T12] ( 2, 4.50) byref -> x25 hoist "CSE - moderate"
; ; Lcl frame size = 32 @@ -169,7 +169,7 @@ G_M10085_IG06: ; bbWeight=0.50, gcrefRegs=7380000 {x19 x20 x21 x24 x25 x2 blr x1 ldr w1, [x0, #0x08] cmp w1, #0
- bls G_M10085_IG34
+ bls G_M10085_IG35
ldr x28, [x0, #0x10] ; gcrRegs +[x28] str x21, [fp, #0x20] // [V65 cse2] @@ -179,7 +179,7 @@ G_M10085_IG07: ; bbWeight=1, gcrefRegs=17180000 {x19 x20 x24 x25 x26 x28} ldr w1, [x25, #0x08] str w1, [fp, #0x1C] // [V66 cse3] cmp w1, #2
- bne G_M10085_IG09
+ bne G_M10085_IG10
;; size=16 bbWeight=1 PerfScore 5.50 G_M10085_IG08: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=400000 {x22}, byref, isz ; gcrRegs -[x25] @@ -191,7 +191,7 @@ G_M10085_IG08: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, ldr x1, [x1] blr x1 ; gcrRegs -[x0 x28]
- cbz w0, G_M10085_IG25
+ cbz w0, G_M10085_IG09
ldr x0, [x24, #0x10] ; gcrRegs +[x0] ldr x21, [fp, #0x20] // [V65 cse2] @@ -201,13 +201,17 @@ G_M10085_IG08: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, ; gcrRegs -[x24 x26] mov x26, x0 ; gcrRegs +[x26]
- str x21, [fp, #0x20] // [V65 cse2] - b G_M10085_IG25 - ;; size=60 bbWeight=0.50 PerfScore 9.50 -G_M10085_IG09: ; bbWeight=0.50, gcrefRegs=16180000 {x19 x20 x25 x26 x28}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x0] +[x25 x28]
+ b G_M10085_IG27 + ;; size=56 bbWeight=0.50 PerfScore 9.00 +G_M10085_IG09: ; bbWeight=0.25, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=400000 {x22}, byref + ; gcrRegs -[x0] + ldr x21, [fp, #0x20] // [V65 cse2] + b G_M10085_IG27 + ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M10085_IG10: ; bbWeight=0.50, gcrefRegs=16180000 {x19 x20 x25 x26 x28}, byrefRegs=400000 {x22}, byref, isz + ; gcrRegs +[x25 x28]
cmp w1, #3
- bne G_M10085_IG25
+ bne G_M10085_IG16
mov x24, xzr ; gcrRegs +[x24] mov w2, wzr @@ -215,7 +219,7 @@ G_M10085_IG09: ; bbWeight=0.50, gcrefRegs=16180000 {x19 x20 x25 x26 x28}, ; gcrRegs -[x25] ; byrRegs +[x25] ;; size=20 bbWeight=0.50 PerfScore 1.50
-G_M10085_IG10: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG11: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
str w2, [fp, #0x2C] // [V11 loc7] ldr x0, [x25, w2, UXTW #3] ; gcrRegs +[x0] @@ -223,14 +227,14 @@ G_M10085_IG10: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, by add x11, x21, #24 ldr x3, [x11] blr x3
- cbz x0, G_M10085_IG13
+ cbz x0, G_M10085_IG14
;; size=28 bbWeight=4 PerfScore 46.00
-G_M10085_IG11: ; bbWeight=1, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG12: ; bbWeight=1, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
ldr w1, [x0, #0x08] cmp w1, #4
- bne G_M10085_IG13
+ bne G_M10085_IG14
;; size=12 bbWeight=1 PerfScore 4.50
-G_M10085_IG12: ; bbWeight=0.50, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG13: ; bbWeight=0.50, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
ldr x0, [x0, #0x0C] ; gcrRegs -[x0] movz x1, #116 @@ -238,9 +242,9 @@ G_M10085_IG12: ; bbWeight=0.50, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x2 movk x1, #112 LSL #32 movk x1, #101 LSL #48 cmp x0, x1
- beq G_M10085_IG15
+ beq G_M10085_IG17
;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M10085_IG13: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG14: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
ldr w1, [fp, #0x2C] // [V11 loc7] add w1, w1, #1 ldr w0, [fp, #0x1C] // [V66 cse3] @@ -248,15 +252,20 @@ G_M10085_IG13: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, by cmp w0, w1 str x21, [fp, #0x20] // [V65 cse2] ldr w2, [fp, #0x2C] // [V11 loc7]
- bgt G_M10085_IG10
+ bgt G_M10085_IG11
;; size=32 bbWeight=4 PerfScore 40.00
-G_M10085_IG14: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=400000 {x22}, byref
+G_M10085_IG15: ; bbWeight=1, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=400000 {x22}, byref
; byrRegs -[x25] ldr x21, [fp, #0x20] // [V65 cse2]
- b G_M10085_IG18 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M10085_IG15: ; bbWeight=0.50, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x24]
+ b G_M10085_IG21 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M10085_IG16: ; bbWeight=0.25, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=400000 {x22}, byref + ; gcrRegs -[x24 x28] + ldr x21, [fp, #0x20] // [V65 cse2] + b G_M10085_IG27 + ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M10085_IG17: ; bbWeight=1, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=400000 {x22}, byref, isz + ; gcrRegs +[x28]
mov x0, x19 ; gcrRegs +[x0] ldr x2, [x23, #0x38] @@ -264,7 +273,7 @@ G_M10085_IG15: ; bbWeight=0.50, gcrefRegs=14180000 {x19 x20 x26 x28}, byr ldr w1, [x0, #0x08] ldr w24, [fp, #0x2C] // [V11 loc7] cmp w24, w1
- bhs G_M10085_IG34
+ bhs G_M10085_IG35
mov w1, #24 mov x2, #16 umaddl x1, w24, w1, x2 @@ -275,33 +284,35 @@ G_M10085_IG15: ; bbWeight=0.50, gcrefRegs=14180000 {x19 x20 x26 x28}, byr ldr w1, [x1, #0x10] ; byrRegs -[x1] cmp w1, #4
- beq G_M10085_IG35
+ beq G_M10085_IG36
...

+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, 53 ) 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.50) 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.50) 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, 61.00) 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.50) int -> registers +; V10 loc8 [V10,T68] ( 2, 4.50) int -> x1 +; V11 loc9 [V11,T19] ( 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,T18] ( 10, 24.50) 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,T07] ( 11, 20.50) int -> x21
;* V02 loc1 [V02,T51] ( 0, 0 ) int -> zero-ref
-; V03 loc2 [V03,T00] ( 35, 73 ) int -> x22
+; V03 loc2 [V03,T00] ( 39, 77.50) 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,T09] ( 12, 18.04) 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,T08] ( 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_IG49
;; 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_IG64
add x24, x19, #12 ; byrRegs +[x24] ldrh w0, [x24, w0, UXTW #2] cmp w23, w20
- bhs G_M18406_IG60
+ bhs G_M18406_IG64
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, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, w21 ccmp w22, #0, nc, lt
- blt G_M18406_IG45
+ blt G_M18406_IG49 + ;; size=12 bbWeight=1 PerfScore 2.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_IG64
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 - ;; 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_IG20: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M18406_IG23 + ;; size=4 bbWeight=1 PerfScore 1.00 +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=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cmp w22, w21 + bge G_M18406_IG49 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M18406_IG24: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cmp w22, w20 + bhs G_M18406_IG64 + 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_IG49 + ;; 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_IG64
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 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M18406_IG26: ; bbWeight=4.00, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG28: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref + b G_M18406_IG31 + ;; size=4 bbWeight=1 PerfScore 1.00 +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=1, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz + cmp w22, w21 + bge G_M18406_IG49 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M18406_IG32: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz + cmp w22, w20 + bhs G_M18406_IG64
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_IG49
add w21, w22, #1 sub w2, w20, w21 cmp w20, w21
- blo G_M18406_IG61
+ blo G_M18406_IG65
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_IG49
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_IG66
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 ...

realworld.run.osx.arm64.checked.mch

-12 (-1.67%) : 1321.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector1[float],System.Numerics.Vector1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)

@@ -9,40 +9,40 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T11] ( 5, 14 ) byref -> x0 single-def
-; V01 arg1 [V01,T10] ( 9, 16.50) int -> x1 single-def -; V02 arg2 [V02,T38] ( 5, 3.50) simd16 -> d0 HFA(simd16) single-def <System.Numerics.Vector`1[float]> -; V03 arg3 [V03,T21] ( 5, 14 ) simd16 -> d1 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[float]> -; V04 arg4 [V04,T22] ( 5, 14 ) simd16 -> d2 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[int]> -; V05 arg5 [V05,T00] ( 16, 51 ) byref -> x2 single-def -; V06 arg6 [V06,T02] ( 12, 35 ) byref -> x3 single-def
+; V01 arg1 [V01,T10] ( 9, 17.50) int -> x1 single-def +; V02 arg2 [V02,T38] ( 5, 4.50) simd16 -> d0 HFA(simd16) single-def <System.Numerics.Vector`1[float]> +; V03 arg3 [V03,T22] ( 5, 14 ) simd16 -> d1 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[float]> +; V04 arg4 [V04,T23] ( 5, 14 ) simd16 -> d2 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[int]> +; V05 arg5 [V05,T00] ( 16, 52 ) byref -> x2 single-def +; V06 arg6 [V06,T02] ( 12, 36 ) byref -> x3 single-def
; V07 arg7 [V07,T03] ( 10, 34 ) byref -> x4 single-def ; V08 arg8 [V08,T04] ( 10, 34 ) byref -> x5 single-def
-; V09 arg9 [V09,T12] ( 4, 3 ) byref -> x6 single-def -; V10 arg10 [V10,T13] ( 4, 3 ) byref -> x7 single-def -; V11 arg11 [V11,T14] ( 2, 1 ) byref -> [fp+0x10] single-def -; V12 arg12 [V12,T15] ( 2, 1 ) byref -> [fp+0x18] single-def -; V13 loc0 [V13,T27] ( 5, 13 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V14 loc1 [V14,T39] ( 2, 4.50) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> -; V15 loc2 [V15,T24] ( 7, 14 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> -; V16 loc3 [V16,T40] ( 2, 4.50) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> -; V17 loc4 [V17,T41] ( 2, 4.50) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[float]> -; V18 loc5 [V18,T25] ( 6, 13.50) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[float]> -; V19 loc6 [V19,T26] ( 6, 13.50) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]> -; V20 loc7 [V20,T45] ( 3, 1.50) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> -; V21 loc8 [V21,T07] ( 6, 20.50) int -> x10
+; V09 arg9 [V09,T12] ( 4, 3.50) byref -> x6 single-def +; V10 arg10 [V10,T13] ( 4, 3.50) byref -> x7 single-def +; V11 arg11 [V11,T14] ( 2, 1.50) byref -> x8 single-def +; V12 arg12 [V12,T15] ( 2, 1.50) byref -> x9 single-def +; V13 loc0 [V13,T27] ( 5, 13.50) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V14 loc1 [V14,T41] ( 2, 4.50) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> +; V15 loc2 [V15,T21] ( 7, 16 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> +; V16 loc3 [V16,T39] ( 2, 5 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> +; V17 loc4 [V17,T40] ( 2, 5 ) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[float]> +; V18 loc5 [V18,T25] ( 6, 15 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[float]> +; V19 loc6 [V19,T26] ( 6, 15 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]> +; V20 loc7 [V20,T45] ( 3, 3 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> +; V21 loc8 [V21,T09] ( 6, 20.50) int -> x10
; V22 loc9 [V22,T05] ( 7, 28 ) byref -> x11 ; V23 loc10 [V23,T37] ( 2, 8 ) simd16 -> d22 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]> ;* V24 loc11 [V24 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ; V25 loc12 [V25,T28] ( 3, 12 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]> ; V26 loc13 [V26,T17] ( 6, 24 ) simd16 -> d22 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]>
-; V27 loc14 [V27,T08] ( 6, 20.50) int -> x6
+; V27 loc14 [V27,T07] ( 6, 21 ) int -> x6
; V28 loc15 [V28,T06] ( 7, 28 ) byref -> x10 ; V29 loc16 [V29,T29] ( 3, 12 ) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[float]> ; V30 loc17 [V30,T30] ( 3, 12 ) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> ; V31 loc18 [V31,T31] ( 3, 12 ) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> ;* V32 loc19 [V32 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]> ; V33 loc20 [V33,T18] ( 6, 24 ) simd16 -> d19 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]>
-; V34 loc21 [V34,T09] ( 6, 20.50) int -> x3
+; V34 loc21 [V34,T08] ( 6, 21 ) int -> x3
; V35 loc22 [V35,T01] ( 11, 44 ) byref -> x6 ;* V36 loc23 [V36 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V37 loc24 [V37 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> @@ -61,7 +61,7 @@ ;* V50 tmp8 [V50 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt" ;* V51 tmp9 [V51 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[int]> ;* V52 tmp10 [V52 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
-; V53 cse0 [V53,T23] ( 4, 16 ) simd16 -> d21 "CSE - aggressive"
+; V53 cse0 [V53,T24] ( 4, 16 ) simd16 -> d21 "CSE - aggressive"
; V54 cse1 [V54,T33] ( 3, 12 ) simd16 -> d25 "CSE - aggressive" ; V55 cse2 [V55,T42] ( 2, 4.25) simd8 -> d19 hoist "CSE - aggressive" ; V56 cse3 [V56,T43] ( 2, 4.25) simd8 -> d20 hoist "CSE - aggressive" @@ -69,40 +69,38 @@ ; V58 cse5 [V58,T34] ( 3, 12 ) simd16 -> d24 "CSE - aggressive" ; V59 cse6 [V59,T35] ( 3, 12 ) simd16 -> d17 "CSE - aggressive" ; V60 cse7 [V60,T36] ( 3, 12 ) simd16 -> d23 "CSE - aggressive"
-; V61 cse8 [V61,T46] ( 3, 1.50) simd16 -> d16 "CSE - moderate" -; V62 cse9 [V62,T47] ( 3, 1.50) simd16 -> d18 "CSE - moderate"
+; V61 cse8 [V61,T47] ( 3, 2 ) simd16 -> d16 "CSE - moderate" +; V62 cse9 [V62,T46] ( 3, 3 ) simd16 -> d18 "CSE - moderate"
; ; Lcl frame size = 0 G_M58832_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x10]! mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50 -G_M58832_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+ ldp x8, x9, [fp, #0x10] // [V11 arg11], [V12 arg12] + ; byrRegs +[x8-x9] + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M58832_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
; byrRegs +[x0 x2-x7] cbnz w1, G_M58832_IG05 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M58832_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {x6 x7}, byref
+G_M58832_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=03C0 {x6 x7 x8 x9}, byref
; byrRegs -[x0 x2-x5] movi v0.4s, #0 str q0, [x6] movi v1.4s, #0 str q1, [x7] movi v2.4s, #0
- ldr x8, [fp, #0x10] // [V11 arg11] - ; byrRegs +[x8]
str q2, [x8] movi v16.4s, #0
- ldr x9, [fp, #0x18] // [V12 arg12] - ; byrRegs +[x9]
str q16, [x9]
- ;; size=40 bbWeight=0.50 PerfScore 5.00
+ ;; size=32 bbWeight=0.50 PerfScore 3.00
G_M58832_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M58832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, gcvars, byref, isz - ; byrRegs -[x8-x9] +[x0 x2-x5]
+G_M58832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, gcvars, byref, isz + ; byrRegs +[x0 x2-x5]
ldr q16, [@RWD00] mov v17.16b, v16.16b ldr d18, [@RWD16] @@ -111,11 +109,11 @@ G_M58832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 cmp w1, #0 ble G_M58832_IG08 ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M58832_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+G_M58832_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
ldr d19, [@RWD24] ldr d20, [@RWD32] ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M58832_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+G_M58832_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
sbfiz x11, x10, #6, #32 add x11, x0, x11 ; byrRegs +[x11] @@ -154,7 +152,7 @@ G_M58832_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 cmp w10, w1 blt G_M58832_IG07 ;; size=144 bbWeight=4 PerfScore 218.00
-G_M58832_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+G_M58832_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
; byrRegs -[x11] fcmgt v16.4s, v17.4s, v16.4s str q16, [x6] @@ -163,8 +161,8 @@ G_M58832_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 ; byrRegs -[x6] cmp w1, #0 ble G_M58832_IG10
- ;; size=24 bbWeight=0.50 PerfScore 2.25 -G_M58832_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 x3 x4 x5 x7}, byref, isz
+ ;; size=24 bbWeight=1 PerfScore 4.50 +G_M58832_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=03BD {x0 x2 x3 x4 x5 x7 x8 x9}, byref, isz
sbfiz x10, x6, #6, #32 add x10, x0, x10 ; byrRegs +[x10] @@ -200,7 +198,7 @@ G_M58832_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 x3 cmp w6, w1 blt G_M58832_IG09 ;; size=132 bbWeight=4 PerfScore 220.00
-G_M58832_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 x3 x4 x5 x7}, byref, isz
+G_M58832_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=03BD {x0 x2 x3 x4 x5 x7 x8 x9}, byref, isz
; byrRegs -[x10] fmul v17.4s, v0.4s, v0.4s ldr q18, [@RWD48] @@ -217,12 +215,12 @@ G_M58832_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 ; byrRegs -[x3] cmp w1, #0 ble G_M58832_IG13
- ;; size=56 bbWeight=0.50 PerfScore 12.50 -G_M58832_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0035 {x0 x2 x4 x5}, byref, isz
+ ;; size=56 bbWeight=1 PerfScore 25.00 +G_M58832_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0335 {x0 x2 x4 x5 x8 x9}, byref, isz
; byrRegs -[x7] ldr d22, [@RWD64] ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M58832_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0035 {x0 x2 x4 x5}, byref, isz
+G_M58832_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0335 {x0 x2 x4 x5 x8 x9}, byref, isz
sbfiz x6, x3, #6, #32 add x6, x0, x6 ; byrRegs +[x6] @@ -279,25 +277,21 @@ G_M58832_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0035 {x0 x2 x4 cmp w3, w1 blt G_M58832_IG12 ;; size=216 bbWeight=4 PerfScore 344.00
-G_M58832_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58832_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0300 {x8 x9}, byref
; byrRegs -[x0 x2 x4-x6] fmul v16.4s, v16.4s, v16.4s fmul v16.4s, v16.4s, v18.4s fmul v17.4s, v20.4s, v20.4s fcmgt v17.4s, v17.4s, v16.4s
- ldr x8, [fp, #0x10] // [V11 arg11] - ; byrRegs +[x8]
str q17, [x8] fmul v17.4s, v21.4s, v21.4s fcmgt v16.4s, v17.4s, v16.4s
- ldr x9, [fp, #0x18] // [V12 arg12] - ; byrRegs +[x9]
str q16, [x9]
- ;; size=40 bbWeight=0.50 PerfScore 10.00 -G_M58832_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 16.00 +G_M58832_IG14: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
RWD00 dq FF7FFFFFFF7FFFFFh, FF7FFFFFFF7FFFFFh RWD16 dq 3C23D70A3C23D70Ah RWD24 dq 3F4B70CA3F4B70CAh @@ -307,7 +301,7 @@ RWD48 dq 358637BD358637BDh, 358637BD358637BDh RWD64 dq 3E8000003E800000h
-; Total bytes of code 720, prolog size 8, PerfScore 822.50, instruction count 180, allocated bytes for code 720 (MethodHash=18e61a2f) for method BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
+; Total bytes of code 708, prolog size 12, PerfScore 845.25, instruction count 177, allocated bytes for code 708 (MethodHash=18e61a2f) for method BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
; ============================================================ Unwind Info: @@ -318,7 +312,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 180 (0x000b4) Actual length = 720 (0x0002d0)
+ Function Length : 177 (0x000b1) Actual length = 708 (0x0002c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-0.75%) : 29621.dasm - System.Management.Automation.ParameterBinderController:BindPositionalParameters(System.Collections.ObjectModel.Collection1[System.Management.Automation.CommandParameterInternal],uint,uint,byref):System.Collections.ObjectModel.Collection1[System.Management.Automation.CommandParameterInternal]:this (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 36 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T09] ( 10, 13 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Management.Automation.ParameterBinderController> -; V01 arg1 [V01,T17] ( 5, 4 ) ref -> x23 class-hnd single-def <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]>
+; V00 this [V00,T10] ( 10, 13 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Management.Automation.ParameterBinderController> +; V01 arg1 [V01,T17] ( 5, 4 ) ref -> x22 class-hnd single-def <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]>
; V02 arg2 [V02,T03] ( 9, 16 ) int -> x19 ; V03 arg3 [V03,T05] ( 8, 14 ) int -> x20 single-def
-; V04 arg4 [V04,T13] ( 7, 11 ) byref -> x22 single-def -; V05 loc0 [V05,T02] ( 10, 22.50) ref -> x24 class-hnd <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> -; V06 loc1 [V06,T10] ( 6, 15 ) ref -> x26 class-hnd exact single-def <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]> -; V07 loc2 [V07,T23] ( 6, 4.50) ref -> x27 class-hnd single-def <<unknown class>> -; V08 loc3 [V08 ] ( 3, 3 ) int -> [fp+0x90] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V04 arg4 [V04,T13] ( 7, 11 ) byref -> x21 single-def +; V05 loc0 [V05,T02] ( 10, 22.50) ref -> x23 class-hnd <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> +; V06 loc1 [V06,T09] ( 6, 15.50) ref -> x25 class-hnd exact single-def <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]> +; V07 loc2 [V07,T23] ( 6, 4.50) ref -> x26 class-hnd single-def <<unknown class>> +; V08 loc3 [V08 ] ( 3, 3.50) int -> [fp+0x90] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V09 loc4 [V09 ] ( 5, 9.50) struct (40) [fp+0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SortedDictionary`2+ValueCollection+Enumerator[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V10 loc5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]>
-; V11 loc6 [V11,T11] ( 7, 14 ) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Management.Automation.CommandParameterInternal> -; V12 loc7 [V12,T04] ( 9, 18 ) ubyte -> x7 -; V13 loc8 [V13,T00] ( 8, 25 ) int -> x21
+; V11 loc6 [V11,T11] ( 7, 14 ) ref -> x28 class-hnd exact <System.Management.Automation.CommandParameterInternal> +; V12 loc7 [V12,T04] ( 9, 18 ) ubyte -> x6 +; V13 loc8 [V13,T00] ( 8, 26 ) int -> x19
; V14 OutArgs [V14 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T18] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> -; V16 tmp2 [V16,T26] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]>
+; V15 tmp1 [V15,T18] ( 3, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> +; V16 tmp2 [V16,T26] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]>
;* V17 tmp3 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V18 tmp4 [V18,T36] ( 2, 0 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ; V19 tmp5 [V19,T37] ( 2, 0 ) ref -> x20 class-hnd exact single-def "non-inline candidate call" <System.String> @@ -41,21 +41,21 @@ ; V30 tmp16 [V30,T32] ( 2, 2 ) struct (40) [fp+0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ; V31 tmp17 [V31,T22] ( 5, 5 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <<unknown class>> ; V32 tmp18 [V32 ] ( 8, 8 ) struct (32) [fp+0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]]>
-; V33 tmp19 [V33,T27] ( 3, 3 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V33 tmp19 [V33,T27] ( 3, 3 ) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V34 tmp20 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V35 tmp21 [V35,T33] ( 2, 1 ) int -> x23 single-def "Inline return value spill temp"
+; V35 tmp21 [V35,T33] ( 2, 1 ) int -> x22 single-def "Inline return value spill temp"
;* V36 tmp22 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V37 tmp23 [V37,T25] ( 4, 3 ) int -> x23 "Inlining Arg"
+; V37 tmp23 [V37,T25] ( 4, 3 ) int -> x22 "Inlining Arg"
;* V38 tmp24 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V39 tmp25 [V39 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V40 tmp26 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V41 tmp27 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]> ;* V42 tmp28 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V43 tmp29 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V44 tmp30 [V44,T07] ( 2, 16 ) ref -> x19 class-hnd "Inlining Arg" <System.__Canon>
+; V44 tmp30 [V44,T07] ( 2, 16 ) ref -> x20 class-hnd "Inlining Arg" <System.__Canon>
;* V45 tmp31 [V45 ] ( 0, 0 ) ref -> zero-ref "field V38.value (fldOffset=0x0)" P-INDEP ;* V46 tmp32 [V46 ] ( 0, 0 ) int -> zero-ref "field V38.key (fldOffset=0x8)" P-INDEP
-; V47 tmp33 [V47,T06] ( 7, 16 ) ref -> x28 "field V39.value (fldOffset=0x0)" P-INDEP
+; V47 tmp33 [V47,T06] ( 7, 16 ) ref -> x27 "field V39.value (fldOffset=0x0)" P-INDEP
;* V48 tmp34 [V48 ] ( 0, 0 ) int -> zero-ref "field V39.key (fldOffset=0x8)" P-INDEP ;* V49 tmp35 [V49 ] ( 0, 0 ) ref -> zero-ref "field V40.value (fldOffset=0x0)" P-INDEP ;* V50 tmp36 [V50 ] ( 0, 0 ) int -> zero-ref "field V40.key (fldOffset=0x8)" P-INDEP @@ -68,9 +68,9 @@ ; V57 tmp43 [V57,T01] ( 3, 24 ) ref -> x0 "arr expr" ; V58 tmp44 [V58,T08] ( 2, 16 ) int -> x1 "argument with side effect" ; V59 PSPSym [V59,T34] ( 1, 1 ) long -> [fp+0x98] do-not-enreg[V] "PSPSym"
-; V60 cse0 [V60,T20] ( 3, 6 ) int -> x0 "CSE - aggressive" -; V61 cse1 [V61,T12] ( 6, 14 ) long -> x25 "CSE - aggressive" -; V62 cse2 [V62,T21] ( 4, 5.50) long -> x23 "CSE - moderate"
+; V60 cse0 [V60,T20] ( 3, 6 ) int -> x1 "CSE - aggressive" +; V61 cse1 [V61,T12] ( 6, 14 ) long -> x24 "CSE - aggressive" +; V62 cse2 [V62,T21] ( 4, 5.50) long -> x22 "CSE - moderate"
; V63 cse3 [V63,T14] ( 3, 10 ) ref -> x0 "CSE - aggressive" ; ; Lcl frame size = 160 @@ -95,24 +95,22 @@ G_M4554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x5, [fp, #0x98] // [V59 PSPSym] str x0, [fp, #0x18] // [V00 this] ; GC ptr vars +{V00}
- mov x21, x0 - ; gcrRegs +[x21] - mov x23, x1 - ; gcrRegs +[x23]
+ mov x22, x1 + ; gcrRegs +[x22]
mov w19, w2 mov w20, w3
- mov x22, x4 - ; byrRegs +[x22] - ;; size=92 bbWeight=1 PerfScore 18.00 -G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=A00000 {x21 x23}, byrefRegs=400000 {x22}, gcvars, byref, isz
+ mov x21, x4 + ; byrRegs +[x21] + ;; size=88 bbWeight=1 PerfScore 17.50 +G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000400 {V00}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x24, x0 - ; gcrRegs +[x24]
+ mov x23, x0 + ; gcrRegs +[x23]
movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -124,20 +122,20 @@ G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=A000 movk x14, #0xD1FFAB1E LSL #16 movk x14, #1 LSL #32 str x14, [x0, #0x08]
- add x14, x24, #8
+ add x14, x23, #8
; byrRegs +[x14] mov x15, x0 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- str xzr, [x22] - ldr x0, [x23, #0x08]
+ str xzr, [x21] + ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- movz x25, #0xD1FFAB1E // code for <unknown method> - movk x25, #0xD1FFAB1E LSL #16 - movk x25, #1 LSL #32 - mov x11, x25
+ movz x24, #0xD1FFAB1E // code for <unknown method> + movk x24, #0xD1FFAB1E LSL #16 + movk x24, #1 LSL #32 + mov x11, x24
ldr x1, [x11] blr x1 ; gcrRegs -[x0] @@ -145,16 +143,16 @@ G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=A000 cmp w0, #0 ble G_M4554_IG23 ;; size=104 bbWeight=1 PerfScore 21.50
-G_M4554_IG03: ; bbWeight=0.50, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=400000 {x22}, byref
+G_M4554_IG03: ; bbWeight=0.50, gcrefRegs=C00000 {x22 x23}, byrefRegs=200000 {x21}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x26, x0 - ; gcrRegs +[x26] - mov x1, x23
+ mov x25, x0 + ; gcrRegs +[x25] + mov x1, x22
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -164,47 +162,51 @@ G_M4554_IG03: ; bbWeight=0.50, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=44 bbWeight=0.50 PerfScore 4.50
-G_M4554_IG04: ; bbWeight=0.50, gcrefRegs=5A00000 {x21 x23 x24 x26}, byrefRegs=400000 {x22}, byref - ldr x0, [x21, #0x28]
+G_M4554_IG04: ; bbWeight=0.50, gcrefRegs=2C00000 {x22 x23 x25}, byrefRegs=200000 {x21}, byref + ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- ldr w1, [x21, #0x58] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #1 LSL #32 - ldr x2, [x2] - blr x2
+ ldr x0, [x0, #0x28] + ldr x2, [fp, #0x18] // [V00 this] + ; gcrRegs +[x2] + ldr w1, [x2, #0x58] + movz x3, #0xD1FFAB1E // code for <unknown method> + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #1 LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x2]
; gcr arg pop 0
- mov x27, x0 - ; gcrRegs +[x27] - ;; size=32 bbWeight=0.50 PerfScore 6.00 -G_M4554_IG05: ; bbWeight=0.50, gcrefRegs=DA00000 {x21 x23 x24 x26 x27}, byrefRegs=400000 {x22}, byref, isz
+ mov x26, x0 + ; gcrRegs +[x26] + ;; size=40 bbWeight=0.50 PerfScore 8.00 +G_M4554_IG05: ; bbWeight=0.50, gcrefRegs=6C00000 {x22 x23 x25 x26}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x27, #0x18]
+ ldr x0, [x26, #0x18]
; gcrRegs +[x0] ldr w0, [x0, #0x20] ; gcrRegs -[x0] cmp w0, #0 ble G_M4554_IG25 str wzr, [fp, #0x90] // [V08 loc3]
- ldr x1, [x27, #0x10]
+ ldr x1, [x26, #0x10]
; gcrRegs +[x1] cbnz x1, G_M4554_IG06 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1 x23] +[x0]
+ ; gcrRegs -[x1 x22] +[x0]
; gcr arg pop 0 mov x1, x0 ; gcrRegs +[x1] add x14, x1, #8 ; byrRegs +[x14]
- mov x15, x27
+ mov x15, x26
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- add x14, x27, #16
+ add x14, x26, #16
; byrRegs +[x14] mov x15, x1 ; gcrRegs +[x15] @@ -212,7 +214,7 @@ G_M4554_IG05: ; bbWeight=0.50, gcrefRegs=DA00000 {x21 x23 x24 x26 x27}, b ; gcrRegs -[x15] ; byrRegs -[x14] ;; size=72 bbWeight=0.50 PerfScore 9.75
-G_M4554_IG06: ; bbWeight=0.50, gcrefRegs=D200002 {x1 x21 x24 x26 x27}, byrefRegs=400000 {x22}, byref, isz
+G_M4554_IG06: ; bbWeight=0.50, gcrefRegs=6800002 {x1 x23 x25 x26}, byrefRegs=200000 {x21}, byref, isz
ldr x0, [x1, #0x08] ; gcrRegs +[x0] ldr x0, [x0, #0x18] @@ -228,18 +230,18 @@ G_M4554_IG06: ; bbWeight=0.50, gcrefRegs=D200002 {x1 x21 x24 x26 x27}, by add w0, w0, #1 orr w0, w0, #1 clz w0, w0
- eor w23, w0, #31
+ eor w22, w0, #31
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #1 LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x28, x0 - ; gcrRegs +[x28]
...

-16 (-0.48%) : 1539.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)

@@ -8,103 +8,103 @@ ; 0 inlinees with PGO data; 41 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T21] ( 3, 3 ) long -> x0 single-def -; V01 arg1 [V01,T17] ( 6, 4 ) byref -> x26 single-def -; V02 arg2 [V02,T15] ( 6, 5 ) byref -> x24 single-def -; V03 arg3 [V03,T22] ( 3, 3 ) long -> x3 single-def -; V04 arg4 [V04,T14] ( 7, 5.50) byref -> x23 single-def -; V05 arg5 [V05,T18] ( 6, 4 ) byref -> x27 single-def -; V06 arg6 [V06,T16] ( 5, 4.50) byref -> x25 single-def -; V07 arg7 [V07,T87] ( 5, 3.50) float -> [fp-0x94] single-def -; V08 arg8 [V08,T45] ( 6, 14.50) float -> d8 single-def -; V09 arg9 [V09,T77] ( 3, 4 ) float -> [fp-0x98] single-def -; V10 arg10 [V10,T12] ( 3, 6 ) int -> x21 single-def
+; V00 arg0 [V00,T25] ( 3, 3 ) long -> x0 single-def +; V01 arg1 [V01,T14] ( 6, 6 ) byref -> x23 single-def +; V02 arg2 [V02,T19] ( 6, 5.50) byref -> x26 single-def +; V03 arg3 [V03,T26] ( 3, 3 ) long -> x3 single-def +; V04 arg4 [V04,T13] ( 7, 7 ) byref -> x22 single-def +; V05 arg5 [V05,T15] ( 6, 6 ) byref -> x24 single-def +; V06 arg6 [V06,T20] ( 5, 5 ) byref -> x27 single-def +; V07 arg7 [V07,T92] ( 5, 3.50) float -> [fp-0x94] single-def +; V08 arg8 [V08,T45] ( 6, 15 ) float -> d8 single-def +; V09 arg9 [V09,T78] ( 3, 4 ) float -> [fp-0x98] single-def +; V10 arg10 [V10,T18] ( 3, 6 ) int -> x25 single-def
;* V11 arg11 [V11 ] ( 0, 0 ) byref -> zero-ref single-def
-; V12 arg12 [V12,T05] ( 10, 16.50) byref -> x19 single-def -; V13 arg13 [V13,T08] ( 9, 15.50) byref -> x20 single-def -; V14 arg14 [V14,T13] ( 8, 7.50) byref -> x22 single-def -; V15 arg15 [V15,T23] ( 4, 4.50) byref -> x28 single-def -; V16 loc0 [V16,T19] ( 5, 5 ) byref -> x0 single-def -; V17 loc1 [V17,T20] ( 5, 5 ) byref -> x3 single-def
+; V12 arg12 [V12,T06] ( 10, 17.50) byref -> x19 single-def +; V13 arg13 [V13,T07] ( 9, 16.50) byref -> x20 single-def +; V14 arg14 [V14,T12] ( 8, 9.50) byref -> x21 single-def +; V15 arg15 [V15,T21] ( 4, 6.50) byref -> x28 single-def +; V16 loc0 [V16,T22] ( 5, 5 ) byref -> x0 single-def +; V17 loc1 [V17,T23] ( 5, 5 ) byref -> x3 single-def
; V18 loc2 [V18 ] ( 4, 7 ) struct (32) [fp-0xB8] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuPhysics.Collidables.CapsuleWide> ; V19 loc3 [V19 ] ( 4, 7 ) struct (32) [fp-0xD8] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuPhysics.Collidables.CylinderWide> ; V20 loc4 [V20 ] ( 2, 5 ) struct ( 8) [fp-0xE0] HFA(float) do-not-enreg[XS] addr-exposed ld-addr-op <BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]>
-; V21 loc5 [V21 ] ( 6, 4.50) simd12 -> [fp-0xF0] HFA(float) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector3> -; V22 loc6 [V22,T105] ( 3, 2.50) float -> d9 ld-addr-op -; V23 loc7 [V23,T109] ( 2, 1.50) float -> [fp-0xF4] ld-addr-op spill-single-def -; V24 loc8 [V24,T93] ( 5, 4.50) float -> d10 ld-addr-op -; V25 loc9 [V25,T110] ( 2, 1.50) float -> d11 ld-addr-op -; V26 loc10 [V26,T111] ( 2, 1.50) float -> [fp-0xF8] spill-single-def -; V27 loc11 [V27,T112] ( 2, 1.50) float -> [fp-0xFC] spill-single-def -; V28 loc12 [V28,T94] ( 2, 4.50) simd16 -> [fp-0x110] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V29 loc13 [V29,T95] ( 2, 4.50) simd16 -> [fp-0x120] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V30 loc14 [V30,T96] ( 2, 4.50) simd16 -> [fp-0x130] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V31 loc15 [V31,T97] ( 2, 4.50) simd16 -> [fp-0x140] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]>
+; V21 loc5 [V21 ] ( 6, 6 ) simd12 -> [fp-0xF0] HFA(float) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector3> +; V22 loc6 [V22,T105] ( 3, 3 ) float -> d9 ld-addr-op +; V23 loc7 [V23,T109] ( 2, 2 ) float -> [fp-0xF4] ld-addr-op spill-single-def +; V24 loc8 [V24,T93] ( 5, 5 ) float -> d10 ld-addr-op +; V25 loc9 [V25,T110] ( 2, 2 ) float -> d11 ld-addr-op +; V26 loc10 [V26,T111] ( 2, 2 ) float -> [fp-0xF8] spill-single-def +; V27 loc11 [V27,T112] ( 2, 2 ) float -> [fp-0xFC] spill-single-def +; V28 loc12 [V28,T95] ( 2, 5 ) simd16 -> [fp-0x110] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V29 loc13 [V29,T96] ( 2, 5 ) simd16 -> [fp-0x120] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V30 loc14 [V30,T97] ( 2, 5 ) simd16 -> [fp-0x130] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V31 loc15 [V31,T98] ( 2, 5 ) simd16 -> [fp-0x140] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]>
;* V32 loc16 [V32 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op <BepuUtilities.Vector3Wide>
-; V33 loc17 [V33 ] ( 6, 6.50) struct (64) [fp-0x180] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> -; V34 loc18 [V34 ] ( 6, 6.50) struct (64) [fp-0x1C0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide>
+; V33 loc17 [V33 ] ( 6, 9 ) struct (64) [fp-0x180] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> +; V34 loc18 [V34 ] ( 6, 9 ) struct (64) [fp-0x1C0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide>
;* V35 loc19 [V35 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op <BepuUtilities.Vector3Wide>
-; V36 loc20 [V36 ] ( 5, 6 ) struct (48) [fp-0x1F0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V37 loc21 [V37 ] ( 5, 6 ) struct (48) [fp-0x220] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V38 loc22 [V38 ] ( 15, 38.50) simd16 -> [fp-0x230] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[float]> -; V39 loc23 [V39 ] ( 7, 17.50) struct (48) [fp-0x260] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V40 loc24 [V40 ] ( 3, 8.50) struct (64) [fp-0x2A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> -; V41 loc25 [V41 ] ( 3, 8.50) struct (64) [fp-0x2E0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> -; V42 loc26 [V42,T98] ( 2, 4.50) simd16 -> [fp-0x2F0] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V43 loc27 [V43,T74] ( 3, 6.50) float -> [fp-0x2F4] -; V44 loc28 [V44,T38] ( 11, 22.50) float -> [fp-0x2F8] -; V45 loc29 [V45,T10] ( 6, 11 ) ubyte -> x23 -; V46 loc30 [V46,T09] ( 4, 12.50) int -> x25
+; V36 loc20 [V36 ] ( 5, 8 ) struct (48) [fp-0x1F0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V37 loc21 [V37 ] ( 5, 8 ) struct (48) [fp-0x220] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V38 loc22 [V38 ] ( 15, 41 ) simd16 -> [fp-0x230] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[float]> +; V39 loc23 [V39 ] ( 7, 19 ) struct (48) [fp-0x260] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V40 loc24 [V40 ] ( 3, 9 ) struct (64) [fp-0x2A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> +; V41 loc25 [V41 ] ( 3, 9 ) struct (64) [fp-0x2E0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> +; V42 loc26 [V42,T99] ( 2, 5 ) simd16 -> [fp-0x2F0] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V43 loc27 [V43,T68] ( 3, 9 ) float -> [fp-0x2F4] +; V44 loc28 [V44,T38] ( 11, 23 ) float -> [fp-0x2F8] +; V45 loc29 [V45,T09] ( 6, 13.50) ubyte -> x22 +; V46 loc30 [V46,T10] ( 4, 13 ) int -> x23
;* V47 loc31 [V47 ] ( 0, 0 ) long -> zero-ref ;* V48 loc32 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <BepuUtilities.Memory.Buffer`1[ubyte]> ;* V49 loc33 [V49 ] ( 0, 0 ) long -> zero-ref ; V50 loc34 [V50 ] ( 6, 16 ) simd16 -> [fp-0x310] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[int]> ; V51 loc35 [V51 ] ( 5, 20 ) simd16 -> [fp-0x320] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[float]>
-; V52 loc36 [V52 ] ( 4, 10 ) struct (48) [fp-0x350] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V53 loc37 [V53 ] ( 7, 22 ) struct (48) [fp-0x380] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide>
+; V52 loc36 [V52 ] ( 4, 16 ) struct (48) [fp-0x350] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V53 loc37 [V53 ] ( 7, 28 ) struct (48) [fp-0x380] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide>
; V54 loc38 [V54,T35] ( 7, 28 ) simd16 -> d16 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
-; V55 loc39 [V55,T51] ( 3, 12 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -;* V56 loc40 [V56,T101] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V57 loc41 [V57,T52] ( 3, 12 ) simd16 -> d20 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -;* V58 loc42 [V58,T102] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
+; V55 loc39 [V55,T54] ( 3, 12 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +;* V56 loc40 [V56,T103] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V57 loc41 [V57,T55] ( 3, 12 ) simd16 -> d20 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +;* V58 loc42 [V58,T104] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
; V59 loc43 [V59,T47] ( 4, 16 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]>
-; V60 loc44 [V60,T53] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> -; V61 loc45 [V61,T54] ( 3, 12 ) simd16 -> d24 HFA(simd16) <System.Numerics.Vector`1[float]> -; V62 loc46 [V62,T66] ( 2, 8 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V60 loc44 [V60,T56] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> +; V61 loc45 [V61,T57] ( 3, 12 ) simd16 -> d24 HFA(simd16) <System.Numerics.Vector`1[float]> +; V62 loc46 [V62,T70] ( 2, 8 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
; V63 loc47 [V63,T33] ( 8, 32 ) simd16 -> d25 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
-; V64 loc48 [V64,T55] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V64 loc48 [V64,T58] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
; V65 loc49 [V65,T48] ( 4, 16 ) simd16 -> d27 HFA(simd16) <System.Numerics.Vector`1[float]> ; V66 loc50 [V66,T40] ( 5, 20 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[float]> ;* V67 loc51 [V67 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V68 loc52 [V68 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V69 loc53 [V69 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]>
-; V70 loc54 [V70,T56] ( 3, 12 ) simd16 -> d29 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V70 loc54 [V70,T59] ( 3, 12 ) simd16 -> d29 HFA(simd16) <System.Numerics.Vector`1[float]>
;* V71 loc55 [V71 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V72 loc56 [V72 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V73 loc57 [V73 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]>
-; V74 loc58 [V74,T67] ( 2, 8 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V74 loc58 [V74,T71] ( 2, 8 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]>
; V75 loc59 [V75,T39] ( 6, 20 ) simd16 -> d16 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
-; V76 loc60 [V76,T86] ( 2, 6 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
+; V76 loc60 [V76,T72] ( 2, 8 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
; V77 loc61 [V77,T44] ( 5, 18 ) simd16 -> d21 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> ; V78 loc62 [V78,T32] ( 16, 48 ) float -> d17 ; V79 loc63 [V79,T34] ( 11, 30 ) float -> d24
-; V80 loc64 [V80,T68] ( 2, 8 ) float -> d21 -; V81 loc65 [V81,T50] ( 4, 14 ) float -> d27 -; V82 loc66 [V82,T49] ( 5, 14 ) float -> d21
+; V80 loc64 [V80,T73] ( 2, 8 ) float -> d21 +; V81 loc65 [V81,T52] ( 4, 14 ) float -> d27 +; V82 loc66 [V82,T51] ( 5, 14 ) float -> d21
; V83 loc67 [V83,T46] ( 6, 16 ) float -> d27 ; V84 loc68 [V84 ] ( 2, 8 ) simd16 -> [fp-0x390] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[int]>
-; V85 loc69 [V85,T03] ( 6, 40 ) int -> x0 -; V86 loc70 [V86,T01] ( 7, 54 ) int -> x1
+; V85 loc69 [V85,T03] ( 6, 42 ) int -> x0 +; V86 loc70 [V86,T01] ( 7, 60 ) int -> x1
; V87 loc71 [V87,T11] ( 5, 10 ) int -> x1
-; V88 loc72 [V88,T02] ( 4, 50 ) int -> x2
+; V88 loc72 [V88,T02] ( 4, 52 ) int -> x2
;* V89 loc73 [V89 ] ( 0, 0 ) int -> zero-ref ;* V90 loc74 [V90,T29] ( 0, 0 ) int -> zero-ref ; V91 OutArgs [V91 ] ( 1, 1 ) struct (32) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V92 tmp1 [V92,T78] ( 3, 6 ) simd12 -> d17 "Clone op1 for vector length" -; V93 tmp2 [V93,T79] ( 3, 6 ) simd12 -> d18 "Clone op1 for vector length" -; V94 tmp3 [V94,T69] ( 2, 8 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> -; V95 tmp4 [V95,T70] ( 2, 8 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> -; V96 tmp5 [V96,T07] ( 2, 16 ) int -> x25 "dup spill"
+; V92 tmp1 [V92,T79] ( 3, 6 ) simd12 -> d17 "Clone op1 for vector length" +; V93 tmp2 [V93,T80] ( 3, 6 ) simd12 -> d18 "Clone op1 for vector length" +; V94 tmp3 [V94,T49] ( 2, 16 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> +; V95 tmp4 [V95,T50] ( 2, 16 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> +; V96 tmp5 [V96,T08] ( 2, 16 ) int -> x23 "dup spill"
;* V97 tmp6 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <BepuUtilities.Memory.Buffer`1[ubyte]> ;* V98 tmp7 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <BepuUtilities.Memory.Buffer`1[ubyte]> ;* V99 tmp8 [V99 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> @@ -112,15 +112,15 @@ ;* V101 tmp10 [V101 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V102 tmp11 [V102 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V103 tmp12 [V103 ] ( 0, 0 ) float -> zero-ref "impAppendStmt"
-; V104 tmp13 [V104,T106] ( 3, 2 ) float -> d18 "Inline return value spill temp" -; V105 tmp14 [V105,T61] ( 7, 9 ) float -> d17 "Inlining Arg" -; V106 tmp15 [V106,T76] ( 4, 6 ) float -> d18 "Inlining Arg"
+; V104 tmp13 [V104,T108] ( 3, 2 ) float -> d18 "Inline return value spill temp" +; V105 tmp14 [V105,T67] ( 7, 9 ) float -> d17 "Inlining Arg" +; V106 tmp15 [V106,T77] ( 4, 6 ) float -> d18 "Inlining Arg"
;* V107 tmp16 [V107 ] ( 0, 0 ) float -> zero-ref "Inlining Arg" ;* V108 tmp17 [V108 ] ( 0, 0 ) float -> zero-ref "Inlining Arg" ;* V109 tmp18 [V109 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V110 tmp19 [V110 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V111 tmp20 [V111,T28] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
-; V112 tmp21 [V112,T65] ( 4, 8 ) simd12 -> d16 "Clone op1 for vector normalize (1)"
+; V112 tmp21 [V112,T69] ( 4, 8 ) simd12 -> d16 "Clone op1 for vector normalize (1)"
;* V113 tmp22 [V113 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V114 tmp23 [V114 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V115 tmp24 [V115 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> @@ -135,29 +135,29 @@ ;* V124 tmp33 [V124 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V125 tmp34 [V125 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V126 tmp35 [V126 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]>
-; V127 tmp36 [V127,T24] ( 4, 4 ) byref -> x0 single-def "Inlining Arg"
+; V127 tmp36 [V127,T16] ( 4, 8 ) byref -> x0 single-def "Inlining Arg"
;* V128 tmp37 [V128 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V129 tmp38 [V129 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V130 tmp39 [V130 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]>
-; V131 tmp40 [V131,T25] ( 4, 4 ) byref -> x0 single-def "Inlining Arg"
+; V131 tmp40 [V131,T17] ( 4, 8 ) byref -> x0 single-def "Inlining Arg"
;* V132 tmp41 [V132 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V133 tmp42 [V133 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V134 tmp43 [V134 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]>
-; V135 tmp44 [V135,T75] ( 6, 6 ) float -> d22 "Inlining Arg" -; V136 tmp45 [V136,T107] ( 2, 2 ) float -> d23 "Inlining Arg"
+; V135 tmp44 [V135,T53] ( 6, 12 ) float -> d22 "Inlining Arg" +; V136 tmp45 [V136,T102] ( 2, 4 ) float -> d23 "Inlining Arg"
;* V137 tmp46 [V137 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <BepuUtilities.Vector3Wide>
-; V138 tmp47 [V138 ] ( 3, 1.50) simd16 -> [fp-0x3A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Numerics.Vector`1[float]> -; V139 tmp48 [V139,T27] ( 5, 2.50) byref -> x0 single-def "Inline stloc first use temp" -; V140 tmp49 [V140,T104] ( 5, 2.50) float -> d25 "Inline stloc first use temp"
+; V138 tmp47 [V138 ] ( 3, 3 ) simd16 -> [fp-0x3A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Numerics.Vector`1[float]> +; V139 tmp48 [V139,T24] ( 5, 5 ) byref -> x0 single-def "Inline stloc first use temp" +; V140 tmp49 [V140,T94] ( 5, 5 ) float -> d25 "Inline stloc first use temp"
;* V141 tmp50 [V141,T30] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V142 tmp51 [V142,T57] ( 3, 12 ) float -> d16 "Inline return value spill temp"
+; V142 tmp51 [V142,T60] ( 3, 12 ) float -> d16 "Inline return value spill temp"
; V143 tmp52 [V143,T31] ( 7, 56 ) float -> d21 "Inlining Arg" ; V144 tmp53 [V144,T36] ( 4, 28 ) float -> d16 "Inlining Arg" ;* V145 tmp54 [V145 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <BepuUtilities.Vector3Wide> ; V146 tmp55 [V146 ] ( 3, 12 ) simd16 -> [fp-0x3B0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Numerics.Vector`1[float]>
-; V147 tmp56 [V147,T04] ( 5, 20 ) byref -> x0 "Inline stloc first use temp"
+; V147 tmp56 [V147,T05] ( 5, 20 ) byref -> x0 "Inline stloc first use temp"
; V148 tmp57 [V148,T41] ( 5, 20 ) float -> d21 "Inline stloc first use temp"
-;* V149 tmp58 [V149,T26] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V149 tmp58 [V149,T27] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V150 tmp59 [V150 ] ( 0, 0 ) float -> zero-ref "Inlining Arg" ; V151 tmp60 [V151 ] ( 3, 6 ) simd16 -> [fp-0xB8] HFA(simd16) do-not-enreg[XS] addr-exposed "field V18.Radius (fldOffset=0x0)" P-DEP ; V152 tmp61 [V152 ] ( 3, 6 ) simd16 -> [fp-0xA8] HFA(simd16) do-not-enreg[XS] addr-exposed "field V18.HalfLength (fldOffset=0x10)" P-DEP @@ -165,71 +165,71 @@ ; V154 tmp63 [V154 ] ( 3, 6 ) simd16 -> [fp-0xC8] HFA(simd16) do-not-enreg[XS] addr-exposed "field V19.HalfLength (fldOffset=0x10)" P-DEP ; V155 tmp64 [V155 ] ( 2, 5 ) float -> [fp-0xE0] do-not-enreg[X] addr-exposed "field V20.TerminationEpsilon (fldOffset=0x0)" P-DEP ; V156 tmp65 [V156 ] ( 2, 5 ) float -> [fp-0xDC] do-not-enreg[X] addr-exposed "field V20.ContainmentEpsilon (fldOffset=0x4)" P-DEP
-; V157 tmp66 [V157,T88] ( 3, 5 ) simd16 -> [fp-0x3C0] HFA(simd16) spill-single-def "field V32.X (fldOffset=0x0)" P-INDEP -; V158 tmp67 [V158,T89] ( 3, 5 ) simd16 -> [fp-0x3D0] HFA(simd16) spill-single-def "field V32.Y (fldOffset=0x10)" P-INDEP -; V159 tmp68 [V159,T90] ( 3, 5 ) simd16 -> d15 HFA(simd16) "field V32.Z (fldOffset=0x20)" P-INDEP -; V160 tmp69 [V160 ] ( 3, 5 ) simd16 -> [fp-0x180] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.X (fldOffset=0x0)" P-DEP -; V161 tmp70 [V161 ] ( 3, 5 ) simd16 -> [fp-0x170] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.Y (fldOffset=0x10)" P-DEP -; V162 tmp71 [V162 ] ( 3, 5 ) simd16 -> [fp-0x160] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.Z (fldOffset=0x20)" P-DEP -; V163 tmp72 [V163 ] ( 3, 5 ) simd16 -> [fp-0x150] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.W (fldOffset=0x30)" P-DEP -; V164 tmp73 [V164 ] ( 3, 5 ) simd16 -> [fp-0x1C0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.X (fldOffset=0x0)" P-DEP -; V165 tmp74 [V165 ] ( 3, 5 ) simd16 -> [fp-0x1B0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.Y (fldOffset=0x10)" P-DEP -; V166 tmp75 [V166 ] ( 3, 5 ) simd16 -> [fp-0x1A0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.Z (fldOffset=0x20)" P-DEP -; V167 tmp76 [V167 ] ( 3, 5 ) simd16 -> [fp-0x190] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.W (fldOffset=0x30)" P-DEP -; V168 tmp77 [V168,T62] ( 4, 9 ) simd16 -> [fp-0x3E0] HFA(simd16) spill-single-def "field V35.X (fldOffset=0x0)" P-INDEP -; V169 tmp78 [V169,T63] ( 4, 9 ) simd16 -> [fp-0x3F0] HFA(simd16) spill-single-def "field V35.Y (fldOffset=0x10)" P-INDEP -; V170 tmp79 [V170,T64] ( 4, 9 ) simd16 -> [fp-0x400] HFA(simd16) spill-single-def "field V35.Z (fldOffset=0x20)" P-INDEP -; V171 tmp80 [V171 ] ( 3, 5 ) simd16 -> [fp-0x1F0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V36.X (fldOffset=0x0)" P-DEP -; V172 tmp81 [V172 ] ( 3, 5 ) simd16 -> [fp-0x1E0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V36.Y (fldOffset=0x10)" P-DEP -; V173 tmp82 [V173 ] ( 3, 5 ) simd16 -> [fp-0x1D0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V36.Z (fldOffset=0x20)" P-DEP
...

+12 (+1.16%) : 19724.dasm - Roslyn.Utilities.EnumerableExtensions+d58`1[System.Canon]:MoveNext():ubyte:this (FullOpts)

@@ -8,19 +8,19 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T00] ( 25, 34.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]> -; V01 loc0 [V01,T31] ( 4, 2.50) ubyte -> registers
+; V00 this [V00,T00] ( 25, 35.50) ref -> [fp+0x18] this class-hnd EH-live single-def <Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]> +; V01 loc0 [V01,T27] ( 4, 3 ) ubyte -> registers
; V02 loc1 [V02,T32] ( 3, 2.50) int -> x1 single-def ; V03 loc2 [V03,T24] ( 6, 6.50) ref -> [fp+0x10] class-hnd EH-live spill-single-def <<unknown class>> ; V04 loc3 [V04,T26] ( 2, 4 ) ref -> x20 class-hnd <<unknown class>>
-; V05 loc4 [V05,T17] ( 5, 11 ) ref -> x20 class-hnd <<unknown class>>
+; V05 loc4 [V05,T14] ( 5, 11.50) ref -> x20 class-hnd <<unknown class>>
; V06 loc5 [V06,T01] ( 8, 28.50) int -> x21 ; V07 loc6 [V07,T12] ( 3, 12 ) ref -> x22 class-hnd <<unknown class>> ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T28] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
+; V09 tmp1 [V09,T29] ( 3, 3 ) ref -> x19 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.__Canon]>
;* V10 tmp2 [V10 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ;* V11 tmp3 [V11 ] ( 0, 0 ) long -> zero-ref "spilling helperCall"
-; V12 tmp4 [V12,T27] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
+; V12 tmp4 [V12,T28] ( 4, 3 ) long -> x11 "VirtualCall with runtime lookup"
;* V13 tmp5 [V13 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" ; V14 tmp6 [V14,T10] ( 4, 12 ) long -> x11 "VirtualCall with runtime lookup" ;* V15 tmp7 [V15 ] ( 0, 0 ) long -> zero-ref "spilling helperCall" @@ -40,16 +40,16 @@ ; V29 cse0 [V29,T09] ( 7, 13 ) long -> x19 hoist multi-def "CSE - aggressive" ; V30 rat0 [V30,T33] ( 3, 2.20) long -> x1 "Spilling to split statement for tree" ; V31 rat1 [V31,T35] ( 3, 2 ) long -> x2 "runtime lookup"
-; V32 rat2 [V32,T29] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
+; V32 rat2 [V32,T30] ( 3, 2.80) long -> x2 "fgMakeTemp is creating a new local variable"
; V33 rat3 [V33,T34] ( 3, 2.20) long -> x1 "Spilling to split statement for tree"
-; V34 rat4 [V34,T30] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
+; V34 rat4 [V34,T31] ( 3, 2.80) long -> x11 "fgMakeTemp is creating a new local variable"
; V35 rat5 [V35,T18] ( 3, 8.80) long -> x1 "Spilling to split statement for tree"
-; V36 rat6 [V36,T14] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V36 rat6 [V36,T15] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
; V37 rat7 [V37,T19] ( 3, 8.80) long -> x1 "Spilling to split statement for tree"
-; V38 rat8 [V38,T15] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
+; V38 rat8 [V38,T16] ( 3, 11.20) long -> x11 "fgMakeTemp is creating a new local variable"
; V39 rat9 [V39,T20] ( 3, 8.80) long -> x1 "Spilling to split statement for tree" ; V40 rat10 [V40,T22] ( 3, 8 ) long -> registers "runtime lookup"
-; V41 rat11 [V41,T16] ( 3, 11.20) long -> x2 "fgMakeTemp is creating a new local variable"
+; V41 rat11 [V41,T17] ( 3, 11.20) long -> x2 "fgMakeTemp is creating a new local variable"
; V42 rat12 [V42,T07] ( 3, 17.60) long -> x0 "Spilling to split statement for tree" ; V43 rat13 [V43,T06] ( 3, 22.40) long -> x11 "fgMakeTemp is creating a new local variable" ; @@ -74,9 +74,13 @@ G_M19356_IG03: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, b cmp w1, #1 beq G_M19356_IG23 mov w19, wzr
+ mov w20, w19 + mov x19, x0 + ; gcrRegs +[x19]
b G_M19356_IG38
- ;; size=16 bbWeight=0.50 PerfScore 1.50
+ ;; size=24 bbWeight=0.50 PerfScore 2.00
G_M19356_IG04: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz
+ ; gcrRegs -[x19]
movn w1, #0 str w1, [x0, #0x28] ldr x1, [x0] @@ -324,19 +328,24 @@ G_M19356_IG24: ; bbWeight=4, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, b ;; size=76 bbWeight=4 PerfScore 112.00 G_M19356_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x20 x22]
- mov w19, wzr - ldr x0, [fp, #0x18] // [V00 this]
+ ldr x19, [fp, #0x18] // [V00 this] + ; gcrRegs +[x19] + mov w20, wzr + mov x0, x19
; gcrRegs +[x0] movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x19]
; gcr arg pop 0
+ ldr x19, [fp, #0x18] // [V00 this] + ; gcrRegs +[x19]
b G_M19356_IG38
- ;; size=32 bbWeight=0.50 PerfScore 4.50
+ ;; size=40 bbWeight=0.50 PerfScore 5.75
G_M19356_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ ; gcrRegs -[x19]
bl CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=4 bbWeight=0 PerfScore 0.00 @@ -427,7 +436,7 @@ G_M19356_IG36: ; bbWeight=4, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 cmp w21, w14 blt G_M19356_IG24 ;; size=44 bbWeight=4 PerfScore 48.00
-G_M19356_IG37: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
+G_M19356_IG37: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ldr x19, [fp, #0x18] // [V00 this] ; gcrRegs +[x19] @@ -441,11 +450,9 @@ G_M19356_IG37: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} mov w0, #1 str w0, [x19, #0x28] sxtw w20, w0
- mov w19, w20 - ; gcrRegs -[x19] - ;; size=32 bbWeight=0.50 PerfScore 3.25 -G_M19356_IG38: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov w0, w19
+ ;; size=28 bbWeight=1 PerfScore 6.00 +G_M19356_IG38: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov w0, w20
;; size=4 bbWeight=1 PerfScore 0.50 G_M19356_IG39: ; bbWeight=1, epilog, nogc, extend ldp x21, x22, [sp, #0x40] @@ -454,6 +461,7 @@ G_M19356_IG39: ; bbWeight=1, epilog, nogc, extend ret lr ;; size=16 bbWeight=1 PerfScore 4.00 G_M19356_IG40: ; bbWeight=0, gcVars=0000000001000001 {V00 V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, funclet prolog, nogc
+ ; gcrRegs -[x19]
; GC ptr vars +{V03 V24} stp fp, lr, [sp, #-0x40]! stp x19, x20, [sp, #0x20] @@ -506,7 +514,7 @@ G_M19356_IG45: ; bbWeight=0, funclet epilog, nogc, extend ret lr ;; size=16 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1036, prolog size 28, PerfScore 519.85, instruction count 259, allocated bytes for code 1036 (MethodHash=9312b463) for method Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
+; Total bytes of code 1048, prolog size 28, PerfScore 524.35, instruction count 262, allocated bytes for code 1048 (MethodHash=9312b463) for method Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -517,7 +525,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 227 (0x000e3) Actual length = 908 (0x00038c)
+ Function Length : 230 (0x000e6) Actual length = 920 (0x000398)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

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

+12 (+1.88%) : 20053.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)

@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T15] ( 15, 7 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V01 loc0 [V01,T19] ( 7, 3.50) int -> x0 single-def ; V02 loc1 [V02,T11] ( 6, 20.50) ref -> x20 class-hnd <<unknown class>>
-; V03 loc2 [V03,T06] ( 4, 33 ) int -> x19
+; V03 loc2 [V03,T06] ( 4, 33.50) int -> x19
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ;* V06 loc5 [V06 ] ( 0, 0 ) struct (24) zero-ref <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> @@ -36,7 +36,7 @@ ;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <<unknown class>> ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref ; V27 tmp20 [V27,T04] ( 4, 52 ) int -> x1 "Inline stloc first use temp"
-; V28 tmp21 [V28,T17] ( 5, 5 ) int -> registers "Single return block return value"
+; V28 tmp21 [V28,T17] ( 5, 6 ) int -> registers "Single return block return value"
; V29 tmp22 [V29,T13] ( 3, 12 ) ref -> x0 "field V04.array (fldOffset=0x0)" P-INDEP ; V30 tmp23 [V30,T12] ( 2, 20 ) ref -> x23 "field V05._array (fldOffset=0x0)" P-INDEP ; V31 tmp24 [V31,T03] ( 4, 52 ) int -> x24 "field V05._index (fldOffset=0x8)" P-INDEP @@ -117,8 +117,9 @@ G_M16133_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x1, [x1] blr x1 ; gcrRegs -[x0 x19]
- b G_M16133_IG21 - ;; size=72 bbWeight=0.50 PerfScore 8.50
+ mov w19, w0 + b G_M16133_IG20 + ;; size=76 bbWeight=0.50 PerfScore 8.75
G_M16133_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] movz x0, #0xD1FFAB1E @@ -154,8 +155,9 @@ G_M16133_IG09: ; bbWeight=0.50, extend movk x1, #1 LSL #32 ldr x1, [x1] blr x1
- b G_M16133_IG21 - ;; size=28 bbWeight=0.50 PerfScore 3.50
+ mov w19, w0 + b G_M16133_IG20 + ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M16133_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] movz x0, #0xD1FFAB1E @@ -181,8 +183,9 @@ G_M16133_IG12: ; bbWeight=0.50, extend ldr x1, [x1] blr x1 ; gcrRegs -[x19]
- b G_M16133_IG21 - ;; size=28 bbWeight=0.50 PerfScore 3.50
+ mov w19, w0 + b G_M16133_IG20 + ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M16133_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] mov x0, x19 @@ -284,7 +287,7 @@ G_M16133_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0 x20] mov w0, w19 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M16133_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M16133_IG21: ; bbWeight=0.50, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -322,7 +325,7 @@ G_M16133_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by brk_unix #0 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 640, prolog size 36, PerfScore 771.12, instruction count 160, allocated bytes for code 640 (MethodHash=4b2bc0fa) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
+; Total bytes of code 652, prolog size 36, PerfScore 771.88, instruction count 163, allocated bytes for code 652 (MethodHash=4b2bc0fa) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
; ============================================================ Unwind Info: @@ -333,7 +336,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 160 (0x000a0) Actual length = 640 (0x000280)
+ Function Length : 163 (0x000a3) Actual length = 652 (0x00028c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
benchmarks.run.osx.arm64.checked.mch 181 9 17 155 -88 +108
benchmarks.run_pgo.osx.arm64.checked.mch 2,692 948 724 1,020 -9,400 +6,268
benchmarks.run_tiered.osx.arm64.checked.mch 66 5 9 52 -52 +96
coreclr_tests.run.osx.arm64.checked.mch 3,959 212 193 3,554 -1,708 +1,264
libraries.crossgen2.osx.arm64.checked.mch 538 23 24 491 -768 +508
libraries.pmi.osx.arm64.checked.mch 849 35 49 765 -424 +724
libraries_tests.run.osx.arm64.Release.mch 1,195 509 271 415 -3,628 +1,608
librariestestsnotieredcompilation.run.osx.arm64.Release.mch 984 170 155 659 -1,540 +1,484
realworld.run.osx.arm64.checked.mch 230 18 15 197 -712 +244
10,694 1,929 1,457 7,308 -18,320 +12,304

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 264,502 15 264,487 1 (0.00%) 1 (0.00%)
libraries.pmi.osx.arm64.checked.mch 316,414 18 316,396 46 (0.01%) 46 (0.01%)
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,293 21,618 279,675 2,236 (0.74%) 2,236 (0.74%)
realworld.run.osx.arm64.checked.mch 31,596 3 31,593 10 (0.03%) 10 (0.03%)
1,733,619 561,303 1,172,316 2,902 (0.17%) 2,902 (0.17%)

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: 11101028 (overridden on cmd)
Total bytes of diff: 11101048 (overridden on cmd)
Total bytes of delta: 20 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          12 : 1996.dasm (1.68 % of base)
          12 : 5520.dasm (0.59 % of base)
          12 : 7099.dasm (0.10 % of base)
           8 : 13515.dasm (1.18 % of base)
           8 : 7886.dasm (0.18 % of base)
           8 : 9400.dasm (0.45 % of base)
           8 : 9404.dasm (0.48 % of base)
           4 : 14200.dasm (0.09 % of base)
           4 : 14392.dasm (0.09 % of base)
           4 : 21251.dasm (0.16 % of base)
           4 : 21269.dasm (0.17 % of base)
           4 : 463.dasm (0.23 % of base)
           4 : 4854.dasm (0.45 % of base)
           4 : 7441.dasm (0.28 % of base)
           4 : 11068.dasm (0.17 % of base)
           4 : 11950.dasm (0.56 % of base)
           4 : 9809.dasm (0.41 % of base)

Top file improvements (bytes):
         -32 : 7989.dasm (-1.75 % of base)
         -20 : 8953.dasm (-2.19 % of base)
          -8 : 17010.dasm (-0.14 % of base)
          -8 : 4821.dasm (-0.42 % of base)
          -4 : 10876.dasm (-0.22 % of base)
          -4 : 14357.dasm (-0.44 % of base)
          -4 : 16702.dasm (-0.12 % of base)
          -4 : 536.dasm (-0.37 % of base)
          -4 : 11506.dasm (-0.11 % of base)

26 total files with Code Size differences (9 improved, 17 regressed), 30 unchanged.

Top method regressions (bytes):
          12 (1.68 % of base) : 1996.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
          12 (0.59 % of base) : 5520.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
          12 (0.10 % of base) : 7099.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)
           8 (1.18 % of base) : 13515.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
           8 (0.18 % of base) : 7886.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
           8 (0.45 % of base) : 9400.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (FullOpts)
           8 (0.48 % of base) : 9404.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (FullOpts)
           4 (0.16 % of base) : 21251.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.17 % of base) : 21269.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):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)
           4 (0.41 % of base) : 9809.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():this (FullOpts)
           4 (0.45 % of base) : 4854.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle: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)
           4 (0.23 % of base) : 463.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           4 (0.56 % of base) : 11950.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)

Top method improvements (bytes):
         -32 (-1.75 % of base) : 7989.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -20 (-2.19 % of base) : 8953.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():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)
          -8 (-0.42 % of base) : 4821.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -4 (-0.44 % of base) : 14357.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):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.22 % of base) : 10876.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (FullOpts)
          -4 (-0.11 % of base) : 11506.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          -4 (-0.37 % of base) : 536.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte: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.18 % of base) : 13515.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
          12 (0.59 % of base) : 5520.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
           4 (0.56 % of base) : 11950.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
           8 (0.48 % of base) : 9404.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (FullOpts)
           8 (0.45 % of base) : 9400.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (FullOpts)
           4 (0.45 % of base) : 4854.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (FullOpts)
           4 (0.41 % of base) : 9809.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():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)
           4 (0.23 % of base) : 463.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           8 (0.18 % of base) : 7886.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):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)
           4 (0.17 % of base) : 21269.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.16 % of base) : 21251.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
          12 (0.10 % of base) : 7099.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):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):
         -20 (-2.19 % of base) : 8953.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
         -32 (-1.75 % of base) : 7989.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -4 (-0.44 % of base) : 14357.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
          -8 (-0.42 % of base) : 4821.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -4 (-0.37 % of base) : 536.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (FullOpts)
          -4 (-0.22 % of base) : 10876.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (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.11 % of base) : 11506.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (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: 24782000 (overridden on cmd)
Total bytes of diff: 24778868 (overridden on cmd)
Total bytes of delta: -3132 (-0.01 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          68 : 32656.dasm (6.34 % of base)
          68 : 32669.dasm (6.34 % of base)
          68 : 34590.dasm (8.33 % of base)
          36 : 32992.dasm (4.41 % of base)
          36 : 38663.dasm (4.41 % of base)
          36 : 44359.dasm (4.41 % of base)
          36 : 52743.dasm (4.41 % of base)
          36 : 54632.dasm (1.74 % of base)
          36 : 55452.dasm (4.41 % of base)
          36 : 60936.dasm (1.74 % of base)
          36 : 61359.dasm (1.74 % of base)
          36 : 65088.dasm (1.74 % of base)
          36 : 66580.dasm (1.74 % of base)
          36 : 33108.dasm (1.74 % of base)
          36 : 48811.dasm (1.74 % of base)
          36 : 56619.dasm (4.41 % of base)
          36 : 60607.dasm (1.74 % of base)
          36 : 62415.dasm (4.41 % of base)
          36 : 62932.dasm (4.41 % of base)
          36 : 65659.dasm (4.41 % of base)

Top file improvements (bytes):
         -44 : 29934.dasm (-1.03 % of base)
         -44 : 54212.dasm (-1.79 % of base)
         -40 : 58541.dasm (-6.76 % of base)
         -40 : 60881.dasm (-6.76 % of base)
         -40 : 54643.dasm (-6.76 % of base)
         -40 : 60626.dasm (-6.76 % of base)
         -36 : 55827.dasm (-0.93 % of base)
         -36 : 66066.dasm (-0.93 % of base)
         -36 : 58445.dasm (-0.93 % of base)
         -36 : 65491.dasm (-0.93 % of base)
         -32 : 37377.dasm (-1.03 % of base)
         -32 : 58481.dasm (-6.72 % of base)
         -32 : 58913.dasm (-2.17 % of base)
         -32 : 59589.dasm (-1.03 % of base)
         -32 : 64505.dasm (-2.17 % of base)
         -32 : 17325.dasm (-1.75 % of base)
         -32 : 29205.dasm (-1.03 % of base)
         -32 : 32281.dasm (-1.03 % of base)
         -32 : 38069.dasm (-1.03 % of base)
         -32 : 9166.dasm (-2.17 % of base)

75 total files with Code Size differences (41 improved, 34 regressed), 20 unchanged.

Top method regressions (bytes):
          68 (8.33 % of base) : 34590.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          68 (6.34 % of base) : 32656.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          68 (6.34 % of base) : 32669.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          36 (1.74 % of base) : 54632.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)
          36 (1.74 % of base) : 60936.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)
          36 (1.74 % of base) : 61359.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)
          36 (1.74 % of base) : 65088.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)
          36 (1.74 % of base) : 66580.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)
          36 (1.74 % of base) : 33108.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)
          36 (1.74 % of base) : 48811.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)
          36 (1.74 % of base) : 60607.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)
          36 (4.41 % of base) : 32992.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 38663.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 44359.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 52743.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 55452.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 56619.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 62415.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 62932.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 65659.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)

Top method improvements (bytes):
         -44 (-1.03 % of base) : 29934.dasm - System.Collections.Generic.ArraySortHelper`1[int]:IntroSort(System.Span`1[int],int,System.Comparison`1[int]) (Tier1)
         -44 (-1.79 % of base) : 54212.dasm - System.Threading.ManualResetEventSlim:Wait(int,System.Threading.CancellationToken):ubyte:this (Tier1)
         -40 (-6.76 % of base) : 58541.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 60881.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 54643.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 60626.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -36 (-0.93 % of base) : 55827.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.93 % of base) : 66066.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.93 % of base) : 58445.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.93 % of base) : 65491.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 (-1.75 % of base) : 17325.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -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) : 64505.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)
         -32 (-6.72 % of base) : 58481.dasm - System.Text.RegularExpressions.RegexInterpreter:Scan(System.ReadOnlySpan`1[ushort]):this (Tier1)
         -32 (-1.03 % of base) : 37377.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -32 (-1.03 % of base) : 59589.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -32 (-1.03 % of base) : 29205.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -32 (-1.03 % of base) : 32281.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -32 (-1.03 % of base) : 38069.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)

Top method regressions (percentages):
          20 (19.23 % of base) : 51761.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
          20 (19.23 % of base) : 55370.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
          20 (13.51 % of base) : 62505.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
          20 (13.51 % of base) : 65675.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
          68 (8.33 % of base) : 34590.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          32 (7.21 % of base) : 60653.dasm - System.Text.RegularExpressions.RegexInterpreter:Scan(System.ReadOnlySpan`1[ushort]):this (Tier1)
          32 (7.21 % of base) : 54773.dasm - System.Text.RegularExpressions.RegexInterpreter:Scan(System.ReadOnlySpan`1[ushort]):this (Tier1)
          68 (6.34 % of base) : 32656.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          68 (6.34 % of base) : 32669.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          16 (5.88 % of base) : 65929.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
          36 (4.41 % of base) : 32992.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 38663.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 44359.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 52743.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 55452.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 56619.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 62415.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 62932.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 65659.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          36 (4.41 % of base) : 26148.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)

Top method improvements (percentages):
         -16 (-15.38 % of base) : 56608.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
         -20 (-8.93 % of base) : 49548.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -20 (-8.93 % of base) : 24362.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -20 (-8.93 % of base) : 18625.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -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 (-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) : 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) : 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) : 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.16 % of base) : 54547.dasm - System.Collections.Concurrent.AddRemoveFromDifferentThreads`1+<>c__DisplayClass10_0[int]:<SetupConcurrentQueueIteration>b__1():this (Tier1-OSR)
         -16 (-8.16 % of base) : 57664.dasm - System.Collections.Concurrent.AddRemoveFromDifferentThreads`1+<>c__DisplayClass10_0[System.__Canon]:<SetupConcurrentQueueIteration>b__1():this (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)
         -40 (-6.76 % of base) : 58541.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 60881.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 54643.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 60626.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -32 (-6.72 % of base) : 58481.dasm - System.Text.RegularExpressions.RegexInterpreter:Scan(System.ReadOnlySpan`1[ushort]):this (Tier1)


benchmarks.run_tiered.osx.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os osx -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15471752 (overridden on cmd)
Total bytes of diff: 15471796 (overridden on cmd)
Total bytes of delta: 44 (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 : 46567.dasm (0.49 % of base)
           4 : 29581.dasm (0.09 % of base)
           4 : 40388.dasm (0.28 % of base)
           4 : 7445.dasm (0.25 % of base)
           4 : 14771.dasm (0.44 % of base)
           4 : 5968.dasm (0.29 % of base)
           4 : 28945.dasm (0.09 % of base)
           4 : 6305.dasm (0.23 % of base)

Top file improvements (bytes):
         -32 : 9082.dasm (-1.75 % of base)
          -8 : 31181.dasm (-1.01 % of base)
          -4 : 23612.dasm (-0.22 % of base)
          -4 : 28109.dasm (-0.37 % of base)
          -4 : 29593.dasm (-0.44 % of base)

14 total files with Code Size differences (5 improved, 9 regressed), 36 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.49 % of base) : 46567.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (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.44 % of base) : 14771.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
           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)
           4 (0.23 % of base) : 6305.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
           4 (0.25 % of base) : 7445.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)

Top method improvements (bytes):
         -32 (-1.75 % of base) : 9082.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          -8 (-1.01 % of base) : 31181.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
          -4 (-0.44 % of base) : 29593.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)
          -4 (-0.22 % of base) : 23612.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (Tier0-FullOpts)
          -4 (-0.37 % of base) : 28109.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (Tier1)

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)
           8 (0.49 % of base) : 46567.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (Tier1)
           4 (0.44 % of base) : 14771.dasm - System.Security.Cryptography.X509Certificates.SecTrustChainPal:GetCertsArray(System.Collections.Generic.List`1[System.Runtime.InteropServices.SafeHandle]):Microsoft.Win32.SafeHandles.SafeCreateHandle:this (Tier0-FullOpts)
           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.25 % of base) : 7445.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
           4 (0.23 % of base) : 6305.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (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):
         -32 (-1.75 % of base) : 9082.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          -8 (-1.01 % of base) : 31181.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
          -4 (-0.44 % of base) : 29593.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)
          -4 (-0.37 % of base) : 28109.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (Tier1)
          -4 (-0.22 % of base) : 23612.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (Tier0-FullOpts)


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: 390213652 (overridden on cmd)
Total bytes of diff: 390213208 (overridden on cmd)
Total bytes of delta: -444 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          64 : 283511.dasm (3.59 % of base)
          28 : 150573.dasm (12.50 % of base)
          24 : 204623.dasm (3.14 % of base)
          24 : 235800.dasm (2.69 % of base)
          24 : 384268.dasm (2.46 % of base)
          16 : 208260.dasm (7.84 % of base)
          16 : 208886.dasm (7.84 % of base)
          16 : 213757.dasm (0.65 % of base)
          16 : 219214.dasm (0.65 % of base)
          12 : 1630.dasm (5.77 % of base)
          12 : 12359.dasm (5.77 % of base)
          12 : 198219.dasm (4.29 % of base)
          12 : 204977.dasm (4.69 % of base)
          12 : 206066.dasm (5.77 % of base)
          12 : 207346.dasm (5.77 % of base)
          12 : 207670.dasm (5.77 % of base)
          12 : 210087.dasm (5.77 % of base)
          12 : 219219.dasm (0.74 % of base)
          12 : 219800.dasm (1.05 % of base)
          12 : 229125.dasm (5.77 % of base)

Top file improvements (bytes):
         -80 : 435660.dasm (-7.25 % of base)
         -28 : 5223.dasm (-4.73 % of base)
         -24 : 195261.dasm (-3.70 % of base)
         -24 : 202633.dasm (-4.08 % of base)
         -24 : 206009.dasm (-4.08 % of base)
         -24 : 207608.dasm (-4.08 % of base)
         -24 : 208193.dasm (-4.08 % of base)
         -24 : 208847.dasm (-4.08 % of base)
         -24 : 214716.dasm (-4.08 % of base)
         -24 : 220530.dasm (-4.08 % of base)
         -24 : 227637.dasm (-4.08 % of base)
         -24 : 235892.dasm (-4.08 % of base)
         -24 : 266022.dasm (-4.08 % of base)
         -24 : 266380.dasm (-4.08 % of base)
         -24 : 277481.dasm (-4.08 % of base)
         -24 : 277549.dasm (-4.08 % of base)
         -24 : 281210.dasm (-4.08 % of base)
         -24 : 4209.dasm (-4.08 % of base)
         -24 : 195157.dasm (-3.70 % of base)
         -24 : 195188.dasm (-3.70 % of base)

71 total files with Code Size differences (39 improved, 32 regressed), 20 unchanged.

Top method regressions (bytes):
          64 (3.59 % of base) : 283511.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (Instrumented Tier1)
          28 (12.50 % of base) : 150573.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
          24 (3.14 % of base) : 204623.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
          24 (2.69 % of base) : 235800.dasm - System.Globalization.CultureData:ConvertIcuTimeFormatString(System.ReadOnlySpan`1[ushort]):System.String (Instrumented Tier1)
          24 (2.46 % of base) : 384268.dasm - VectorTest:VectorTReturnTest():int (FullOpts)
          16 (0.65 % of base) : 213757.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (Tier1-OSR)
          16 (0.65 % of base) : 219214.dasm - JitTest_lcsbox_lcs_cs.LCS:findLCS(int[,,,],int[,,,],ushort[][],int[]) (Tier1-OSR)
          16 (7.84 % of base) : 208260.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 208886.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (1.06 % of base) : 447711.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
          12 (4.69 % of base) : 204977.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
          12 (0.74 % of base) : 219219.dasm - JitTest_lcsmixed_lcs_cs.LCS:findLCS(int[,,,][,,,],int[,][,][,][,],ushort[][],int[]) (Tier1-OSR)
          12 (1.05 % of base) : 219800.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
          12 (0.73 % of base) : 4219.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Instrumented Tier1)
          12 (4.29 % of base) : 198219.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
          12 (4.48 % of base) : 284644.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 1630.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 12359.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 206066.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 207346.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

Top method improvements (bytes):
         -80 (-7.25 % of base) : 435660.dasm - Test_fgloop.EHTest:f1(int,long,long,int,long):int (FullOpts)
         -28 (-4.73 % of base) : 5223.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-3.70 % of base) : 195157.dasm - SizeParamIndex.PInvoke.Helper:EqualArray[short](short[],int,short[],int):ubyte (Tier1-OSR)
         -24 (-3.70 % of base) : 195188.dasm - SizeParamIndex.PInvoke.Helper:EqualArray[ushort](ushort[],int,ushort[],int):ubyte (Tier1-OSR)
         -24 (-3.70 % of base) : 195261.dasm - SizeParamIndex.ReversePInvoke.Helper:EqualArray[ushort](ushort[],int,ushort[],int):ubyte (Tier1-OSR)
         -24 (-4.08 % of base) : 202633.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 206009.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 207608.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 208193.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 208847.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) : 220530.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)
         -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) : 266022.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 266380.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 277481.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 277549.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 281210.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)

Top method regressions (percentages):
          28 (12.50 % of base) : 150573.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 208260.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (7.84 % of base) : 208886.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 1630.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 12359.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 206066.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 207346.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 207670.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 210087.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 229125.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 265917.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 268117.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (5.77 % of base) : 283984.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
           8 (4.76 % of base) : 208467.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
          12 (4.69 % of base) : 204977.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)
          12 (4.48 % of base) : 284644.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
          12 (4.29 % of base) : 198219.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
           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)

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) : 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) : 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) : 215525.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) : 222649.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) : 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) : 4333.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)
         -12 (-5.45 % of base) : 219780.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 219835.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 220703.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 220750.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 446831.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (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: 63645568 (overridden on cmd)
Total bytes of diff: 63645308 (overridden on cmd)
Total bytes of delta: -260 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         116 : 221989.dasm (3.37 % of base)
         116 : 206138.dasm (3.40 % of base)
          84 : 182352.dasm (1.36 % of base)
          36 : 100545.dasm (0.64 % of base)
          28 : 114297.dasm (4.14 % of base)
          12 : 198893.dasm (0.04 % of base)
          12 : 240712.dasm (2.07 % of base)
          12 : 42528.dasm (0.22 % of base)
          12 : 22424.dasm (1.87 % of base)
          12 : 69223.dasm (1.91 % of base)
           8 : 173611.dasm (1.21 % of base)
           8 : 242462.dasm (1.28 % of base)
           8 : 216208.dasm (0.16 % of base)
           4 : 193946.dasm (0.47 % of base)
           4 : 21908.dasm (0.17 % of base)
           4 : 242663.dasm (0.97 % of base)
           4 : 34819.dasm (0.47 % of base)
           4 : 100377.dasm (1.01 % of base)
           4 : 16814.dasm (0.23 % of base)
           4 : 204185.dasm (0.55 % of base)

Top file improvements (bytes):
        -436 : 77859.dasm (-0.55 % of base)
         -52 : 135233.dasm (-0.59 % of base)
         -52 : 43151.dasm (-0.59 % of base)
         -36 : 7298.dasm (-2.05 % of base)
         -32 : 261388.dasm (-1.63 % of base)
         -24 : 75437.dasm (-0.44 % of base)
         -20 : 222351.dasm (-2.16 % of base)
         -16 : 114323.dasm (-2.38 % of base)
         -16 : 114850.dasm (-2.16 % of base)
         -12 : 174471.dasm (-0.79 % of base)
          -8 : 194040.dasm (-0.38 % of base)
          -8 : 34905.dasm (-0.38 % of base)
          -8 : 86961.dasm (-0.24 % of base)
          -8 : 199675.dasm (-0.92 % of base)
          -8 : 87224.dasm (-0.32 % of base)
          -4 : 107240.dasm (-0.18 % of base)
          -4 : 242956.dasm (-0.44 % of base)
          -4 : 107252.dasm (-0.09 % of base)
          -4 : 107261.dasm (-0.26 % of base)
          -4 : 203792.dasm (-0.66 % of base)

47 total files with Code Size differences (23 improved, 24 regressed), 20 unchanged.

Top method regressions (bytes):
         116 (3.37 % of base) : 221989.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
         116 (3.40 % of base) : 206138.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          84 (1.36 % of base) : 182352.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
          36 (0.64 % of base) : 100545.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          28 (4.14 % of base) : 114297.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)
          12 (0.22 % of base) : 42528.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          12 (1.91 % of base) : 69223.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
          12 (0.04 % 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)
          12 (1.87 % of base) : 22424.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
          12 (2.07 % of base) : 240712.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray: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)
           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 (0.33 % of base) : 89605.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo],byref):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.97 % of base) : 242663.dasm - Microsoft.Extensions.Primitives.StringValues:GetHashCode():int:this (FullOpts)
           4 (0.47 % of base) : 193946.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.47 % of base) : 34819.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__60`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.55 % of base) : 204185.dasm - System.Data.ProviderBase.DbConnectionPool:PoolCreateRequest(System.Object):this (FullOpts)

Top method improvements (bytes):
        -436 (-0.55 % of base) : 77859.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
         -52 (-0.59 % of base) : 135233.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -52 (-0.59 % of base) : 43151.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -36 (-2.05 % of base) : 7298.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -32 (-1.63 % of base) : 261388.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (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)
         -20 (-2.16 % of base) : 222351.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -16 (-2.38 % of base) : 114323.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (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)
          -8 (-0.38 % of base) : 194040.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -8 (-0.38 % of base) : 34905.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -8 (-0.24 % 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)
          -8 (-0.32 % of base) : 87224.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindXmlContainerRewriterInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder+XmlElementRootInfo,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundXmlContainerRewriterInfo:this (FullOpts)
          -8 (-0.92 % of base) : 199675.dasm - Microsoft.VisualBasic.Strings:SplitHelper(System.String,System.String,int,int):System.String[] (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)
          -4 (-0.66 % of base) : 203792.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
          -4 (-0.44 % of base) : 242956.dasm - System.Net.WebClient:DownloadBits(System.Net.WebRequest,System.IO.Stream):ubyte[]:this (FullOpts)

Top method regressions (percentages):
          28 (4.14 % of base) : 114297.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)
         116 (3.40 % of base) : 206138.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
         116 (3.37 % of base) : 221989.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          12 (2.07 % of base) : 240712.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
          12 (1.91 % of base) : 69223.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):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)
           4 (0.97 % of base) : 242663.dasm - Microsoft.Extensions.Primitives.StringValues:GetHashCode():int:this (FullOpts)
          36 (0.64 % of base) : 100545.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
           4 (0.55 % of base) : 204185.dasm - System.Data.ProviderBase.DbConnectionPool:PoolCreateRequest(System.Object):this (FullOpts)
           4 (0.53 % of base) : 230997.dasm - System.Reflection.Metadata.Ecma335.SignatureDecoder`2[System.__Canon,System.__Canon]:DecodeMethodSignature(byref):System.Reflection.Metadata.MethodSignature`1[System.__Canon]:this (FullOpts)
           4 (0.47 % of base) : 193946.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.47 % of base) : 34819.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__60`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.45 % of base) : 226758.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():this (FullOpts)
           4 (0.33 % of base) : 89605.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.ConstraintsHelper:CheckConstraints(Microsoft.CodeAnalysis.VisualBasic.Symbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSubstitution,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeParameterDiagnosticInfo],byref):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 (0.23 % of base) : 16814.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

Top method improvements (percentages):
         -16 (-2.38 % of base) : 114323.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
         -16 (-2.16 % of base) : 114850.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
         -20 (-2.16 % of base) : 222351.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -36 (-2.05 % of base) : 7298.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -32 (-1.63 % of base) : 261388.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -8 (-0.92 % of base) : 199675.dasm - Microsoft.VisualBasic.Strings:SplitHelper(System.String,System.String,int,int):System.String[] (FullOpts)
          -4 (-0.87 % of base) : 228888.dasm - System.Reflection.Metadata.BlobBuilder:TryWriteBytes(System.IO.Stream,int):int: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.66 % of base) : 203792.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
         -52 (-0.59 % of base) : 135233.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -52 (-0.59 % of base) : 43151.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
        -436 (-0.55 % of base) : 77859.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (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.44 % of base) : 242956.dasm - System.Net.WebClient:DownloadBits(System.Net.WebRequest,System.IO.Stream):ubyte[]:this (FullOpts)
          -8 (-0.38 % of base) : 194040.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -8 (-0.38 % of base) : 34905.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -4 (-0.35 % of base) : 226282.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
          -8 (-0.32 % of base) : 87224.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindXmlContainerRewriterInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder+XmlElementRootInfo,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundXmlContainerRewriterInfo:this (FullOpts)
          -4 (-0.27 % of base) : 20418.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (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)


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: 80239056 (overridden on cmd)
Total bytes of diff: 80239356 (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):
          64 : 15018.dasm (4.18 % of base)
          52 : 188323.dasm (1.78 % of base)
          52 : 209218.dasm (1.82 % of base)
          48 : 156545.dasm (0.87 % of base)
          44 : 297161.dasm (3.24 % of base)
          44 : 31113.dasm (1.36 % of base)
          40 : 271655.dasm (10.10 % of base)
          40 : 271656.dasm (10.10 % of base)
          24 : 147893.dasm (0.27 % of base)
          20 : 239540.dasm (0.08 % of base)
          20 : 113774.dasm (15.62 % of base)
          16 : 132565.dasm (1.67 % of base)
          12 : 197288.dasm (0.16 % of base)
          12 : 225896.dasm (0.10 % of base)
          12 : 247203.dasm (2.29 % of base)
          12 : 48724.dasm (1.16 % of base)
          12 : 5483.dasm (1.68 % of base)
          12 : 104938.dasm (1.87 % of base)
          12 : 178586.dasm (1.16 % of base)
          12 : 225806.dasm (0.15 % of base)

Top file improvements (bytes):
         -52 : 7814.dasm (-1.02 % of base)
         -36 : 18379.dasm (-2.12 % of base)
         -32 : 225989.dasm (-0.38 % of base)
         -32 : 254936.dasm (-1.75 % of base)
         -28 : 137113.dasm (-0.70 % of base)
         -24 : 222742.dasm (-3.31 % of base)
         -20 : 73960.dasm (-0.31 % of base)
         -16 : 113081.dasm (-2.38 % of base)
         -16 : 184297.dasm (-1.17 % of base)
         -12 : 133573.dasm (-1.92 % of base)
         -12 : 50041.dasm (-0.28 % of base)
         -12 : 179874.dasm (-0.28 % of base)
         -12 : 237007.dasm (-0.86 % of base)
          -8 : 137659.dasm (-0.52 % of base)
          -8 : 179554.dasm (-0.33 % of base)
          -8 : 463.dasm (-0.42 % of base)
          -8 : 49722.dasm (-0.33 % of base)
          -8 : 11645.dasm (-0.66 % of base)
          -8 : 186451.dasm (-0.88 % of base)
          -8 : 198588.dasm (-0.38 % of base)

52 total files with Code Size differences (25 improved, 27 regressed), 20 unchanged.

Top method regressions (bytes):
          64 (4.18 % of base) : 15018.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (FullOpts)
          52 (1.78 % of base) : 188323.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          52 (1.82 % of base) : 209218.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):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)
          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)
          40 (10.10 % of base) : 271655.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          40 (10.10 % of base) : 271656.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          24 (0.27 % of base) : 147893.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          20 (15.62 % of base) : 113774.dasm - Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
          20 (0.08 % 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)
          16 (1.67 % of base) : 132565.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser+PartialManifestInfo:AddChunk(Microsoft.Diagnostics.Tracing.TraceEvent):Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:this (FullOpts)
          12 (0.16 % of base) : 197288.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
          12 (1.87 % of base) : 104938.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
          12 (1.16 % of base) : 178586.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          12 (1.16 % of base) : 48724.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__60`1[System.__Canon]:MoveNext():ubyte:this (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)
          12 (0.15 % of base) : 225806.dasm - System.Xml.Serialization.XmlSerializationReaderCodeGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)

Top method improvements (bytes):
         -52 (-1.02 % of base) : 7814.dasm - System.Number:TryParseNumber[ubyte](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
         -36 (-2.12 % of base) : 18379.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -32 (-1.75 % of base) : 254936.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-0.38 % of base) : 225989.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,ubyte):this (FullOpts)
         -28 (-0.70 % of base) : 137113.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)
         -24 (-3.31 % of base) : 222742.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
         -20 (-0.31 % of base) : 73960.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -16 (-2.38 % of base) : 113081.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (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 (-0.28 % of base) : 50041.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesAndTokensIntoTrivia>d__175:MoveNext():ubyte:this (FullOpts)
         -12 (-0.28 % of base) : 179874.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesAndTokensIntoTrivia>d__175:MoveNext():ubyte:this (FullOpts)
         -12 (-1.92 % of base) : 133573.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:IsNamespaceGroupIncludesButNotEquivalentTo(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol):ubyte (FullOpts)
         -12 (-0.86 % of base) : 237007.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object: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.33 % of base) : 179554.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -8 (-0.33 % of base) : 49722.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -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.88 % of base) : 186451.dasm - Newtonsoft.Json.Linq.JsonPath.ScanMultipleFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
          -8 (-0.42 % of base) : 463.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (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)

Top method regressions (percentages):
          20 (15.62 % of base) : 113774.dasm - Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
          40 (10.10 % of base) : 271655.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          40 (10.10 % of base) : 271656.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          64 (4.18 % of base) : 15018.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (FullOpts)
          44 (3.24 % of base) : 297161.dasm - System.Net.HttpListenerRequest+Helpers:GetCharSetValueFromHeader(System.String):System.String (FullOpts)
          12 (2.29 % of base) : 247203.dasm - System.Data.DataTable:GetInheritedNamespace(System.Collections.Generic.List`1[System.Data.DataTable]):System.String:this (FullOpts)
           4 (2.22 % of base) : 61638.dasm - Microsoft.FSharp.Collections.MapTreeModule:ofList[ubyte,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[ubyte,System.Nullable`1[int]]]):Microsoft.FSharp.Collections.MapTree`2[ubyte,System.Nullable`1[int]] (FullOpts)
          12 (1.87 % of base) : 104938.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
          52 (1.82 % of base) : 209218.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          52 (1.78 % of base) : 188323.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          12 (1.68 % of base) : 5483.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
          16 (1.67 % of base) : 132565.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser+PartialManifestInfo:AddChunk(Microsoft.Diagnostics.Tracing.TraceEvent):Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest: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)
           8 (1.18 % of base) : 291693.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
          12 (1.16 % of base) : 178586.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          12 (1.16 % of base) : 48724.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__60`1[System.__Canon]:MoveNext():ubyte: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)

Top method improvements (percentages):
         -24 (-3.31 % of base) : 222742.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
         -16 (-2.38 % of base) : 113081.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
         -36 (-2.12 % of base) : 18379.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -12 (-1.92 % of base) : 133573.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:IsNamespaceGroupIncludesButNotEquivalentTo(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol):ubyte (FullOpts)
         -32 (-1.75 % of base) : 254936.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -4 (-1.67 % of base) : 237592.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (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)
          -4 (-1.05 % of base) : 297958.dasm - Microsoft.Extensions.Primitives.StringValues:GetHashCode():int:this (FullOpts)
         -52 (-1.02 % of base) : 7814.dasm - System.Number:TryParseNumber[ubyte](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          -8 (-0.88 % of base) : 186451.dasm - Newtonsoft.Json.Linq.JsonPath.ScanMultipleFilter+<ExecuteFilter>d__2:MoveNext():ubyte:this (FullOpts)
         -12 (-0.86 % of base) : 237007.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -28 (-0.70 % of base) : 137113.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)
          -8 (-0.66 % of base) : 11645.dasm - System.Version:TryFormatCore[ubyte](System.Span`1[ubyte],int,byref):ubyte: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.44 % of base) : 293269.dasm - System.Net.WebClient:DownloadBits(System.Net.WebRequest,System.IO.Stream):ubyte[]:this (FullOpts)
          -8 (-0.42 % of base) : 463.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -4 (-0.42 % of base) : 240068.dasm - Microsoft.VisualBasic.Strings:SplitHelper(System.String,System.String,int,int):System.String[] (FullOpts)
         -32 (-0.38 % of base) : 225989.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,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)
          -8 (-0.33 % of base) : 179554.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)


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: 72839284 (overridden on cmd)
Total bytes of diff: 72837264 (overridden on cmd)
Total bytes of delta: -2020 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          64 : 58507.dasm (3.58 % of base)
          44 : 97004.dasm (0.31 % of base)
          40 : 100729.dasm (5.08 % of base)
          40 : 168262.dasm (0.28 % of base)
          36 : 62964.dasm (1.34 % of base)
          36 : 123877.dasm (2.78 % of base)
          24 : 131042.dasm (0.89 % of base)
          20 : 100367.dasm (0.14 % of base)
          20 : 11933.dasm (0.41 % of base)
          20 : 68782.dasm (0.41 % of base)
          20 : 57711.dasm (0.14 % of base)
          20 : 99662.dasm (0.90 % of base)
          12 : 172064.dasm (4.29 % of base)
          12 : 4643.dasm (0.55 % of base)
          12 : 167662.dasm (0.09 % of base)
          12 : 100732.dasm (2.01 % of base)
          12 : 99920.dasm (0.82 % of base)
          12 : 116143.dasm (0.87 % of base)
          12 : 128643.dasm (0.81 % of base)
          12 : 133618.dasm (0.60 % of base)

Top file improvements (bytes):
         -36 : 116412.dasm (-0.25 % of base)
         -36 : 163497.dasm (-0.25 % of base)
         -36 : 70100.dasm (-0.25 % of base)
         -36 : 79972.dasm (-0.25 % of base)
         -36 : 116660.dasm (-0.25 % of base)
         -32 : 59119.dasm (-1.17 % of base)
         -32 : 114587.dasm (-0.22 % of base)
         -32 : 35349.dasm (-0.22 % of base)
         -32 : 75677.dasm (-0.22 % of base)
         -32 : 116542.dasm (-1.73 % of base)
         -32 : 97669.dasm (-1.75 % of base)
         -28 : 110249.dasm (-0.19 % of base)
         -24 : 64120.dasm (-0.17 % of base)
         -24 : 156876.dasm (-1.47 % of base)
         -24 : 72305.dasm (-0.17 % of base)
         -24 : 4657.dasm (-4.03 % of base)
         -24 : 157545.dasm (-0.17 % of base)
         -20 : 81993.dasm (-1.44 % of base)
         -20 : 160833.dasm (-9.62 % of base)
         -20 : 87757.dasm (-2.06 % of base)

83 total files with Code Size differences (48 improved, 35 regressed), 20 unchanged.

Top method regressions (bytes):
          64 (3.58 % of base) : 58507.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (Instrumented Tier1)
          44 (0.31 % of base) : 97004.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
          40 (5.08 % of base) : 100729.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
          40 (0.28 % of base) : 168262.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
          36 (2.78 % of base) : 123877.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:PickPivotAndPartition(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]):int (Tier1-OSR)
          36 (1.34 % of base) : 62964.dasm - System.Formats.Asn1.AsnDecoder:ProcessConstructedBitString(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ubyte],System.Formats.Asn1.AsnDecoder+BitStringCopyAction,ubyte,byref,byref):int (Tier1-OSR)
          24 (0.89 % of base) : 131042.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          20 (0.14 % of base) : 100367.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
          20 (0.14 % of base) : 57711.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
          20 (0.41 % of base) : 11933.dasm - System.Text.RegularExpressions.RegexParser:ScanGroupOpen():System.Text.RegularExpressions.RegexNode:this (Tier1)
          20 (0.41 % of base) : 68782.dasm - System.Text.RegularExpressions.RegexParser:ScanGroupOpen():System.Text.RegularExpressions.RegexNode:this (Tier1)
          20 (0.90 % of base) : 99662.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
          12 (0.09 % of base) : 167662.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
          12 (0.81 % of base) : 128643.dasm - System.MulticastDelegate:CombineImpl(System.Delegate):System.Delegate:this (Instrumented Tier1)
          12 (0.82 % of base) : 99920.dasm - System.Net.Http.Tests.HttpHeadersTest+<>c__DisplayClass152_0:<ConcurrentReads_AreThreadSafe>g__ReaderWorker|1():this (Tier1-OSR)
          12 (0.60 % of base) : 133618.dasm - System.Number:<NumberToBigInteger>g__DivideAndConquer|11_1(byref,byref,byref):int (Tier1-OSR)
          12 (4.29 % of base) : 172064.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
          12 (0.55 % of base) : 4643.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
          12 (2.01 % of base) : 100732.dasm - System.Threading.PortableThreadPool+WorkerThread:MaybeAddWorkingWorker(System.Threading.PortableThreadPool) (Tier1)
          12 (0.87 % of base) : 116143.dasm - System.UriHelper:UnescapeString(ulong,int,int,byref,ushort,ushort,ushort,int,System.UriParser,ubyte) (Tier1-OSR)

Top method improvements (bytes):
         -36 (-0.25 % of base) : 116412.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -36 (-0.25 % of base) : 163497.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -36 (-0.25 % of base) : 70100.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -36 (-0.25 % of base) : 79972.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -36 (-0.25 % of base) : 116660.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -32 (-0.22 % of base) : 114587.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -32 (-0.22 % of base) : 35349.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -32 (-0.22 % of base) : 75677.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -32 (-1.73 % of base) : 116542.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -32 (-1.75 % of base) : 97669.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -32 (-1.17 % of base) : 59119.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
         -28 (-0.19 % of base) : 110249.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -24 (-0.17 % of base) : 64120.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -24 (-0.17 % of base) : 72305.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -24 (-0.17 % of base) : 157545.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Instrumented Tier1)
         -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)
         -24 (-4.03 % of base) : 4657.dasm - System.Text.Unicode.Utf16Utility:GetPointerToFirstInvalidChar(ulong,int,byref,byref):ulong (Tier1-OSR)
         -20 (-1.44 % of base) : 81993.dasm - System.IO.Tests.StringReaderTests:ReadToEndPseudoRandom() (Tier1-OSR)
         -20 (-2.06 % of base) : 87757.dasm - System.Linq.Enumerable+SelectEnumerableIterator`2[int,int]:ToArray():int[]:this (Tier1-OSR)
         -20 (-9.62 % of base) : 160833.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

Top method regressions (percentages):
          40 (5.08 % of base) : 100729.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
          12 (4.29 % of base) : 172064.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (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) : 169554.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) : 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) : 46428.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)
           4 (3.85 % of base) : 87809.dasm - System.Linq.EnumerableSorter`1[int]:ComputeMap(int[],int):int[]:this (Tier1-OSR)
          64 (3.58 % of base) : 58507.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (Instrumented Tier1)
          36 (2.78 % of base) : 123877.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:PickPivotAndPartition(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]):int (Tier1-OSR)
           8 (2.17 % of base) : 87797.dasm - System.Linq.EnumerableSorter`2[int,int]:ComputeKeys(int[],int):this (Tier1-OSR)
          12 (2.01 % of base) : 100732.dasm - System.Threading.PortableThreadPool+WorkerThread:MaybeAddWorkingWorker(System.Threading.PortableThreadPool) (Tier1)
           4 (1.72 % of base) : 6416.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(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.47 % of base) : 23448.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
           4 (1.47 % of base) : 5471.dasm - System.Security.Cryptography.Tests.SP800108HmacCounterKdfTests:AspNetCoreTestVectors_LargeKdk(System.String) (Tier1-OSR)

Top method improvements (percentages):
         -20 (-9.62 % of base) : 160833.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) : 58521.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) : 81041.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) : 130981.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) : 162447.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) : 65954.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)
         -16 (-7.84 % of base) : 116529.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) : 167767.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)


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: 159911512 (overridden on cmd)
Total bytes of diff: 159911456 (overridden on cmd)
Total bytes of delta: -56 (-0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          52 : 87832.dasm (1.82 % of base)
          44 : 148498.dasm (3.16 % of base)
          40 : 287755.dasm (2.62 % of base)
          36 : 279738.dasm (1.67 % of base)
          36 : 287665.dasm (2.40 % of base)
          36 : 287670.dasm (2.18 % of base)
          36 : 285908.dasm (2.65 % of base)
          36 : 279324.dasm (1.80 % of base)
          28 : 158358.dasm (1.36 % of base)
          28 : 158388.dasm (1.36 % of base)
          28 : 156773.dasm (1.49 % of base)
          24 : 157649.dasm (0.67 % of base)
          24 : 285897.dasm (1.38 % of base)
          24 : 157090.dasm (0.67 % of base)
          20 : 158389.dasm (0.54 % of base)
          20 : 291858.dasm (0.72 % of base)
          16 : 14928.dasm (0.35 % of base)
          16 : 157408.dasm (0.67 % of base)
          16 : 158379.dasm (0.35 % of base)
          16 : 4141.dasm (1.35 % of base)

Top file improvements (bytes):
        -164 : 285514.dasm (-4.98 % of base)
         -36 : 276282.dasm (-0.97 % of base)
         -32 : 163474.dasm (-0.40 % of base)
         -32 : 145739.dasm (-1.72 % of base)
         -32 : 162779.dasm (-1.73 % of base)
         -28 : 276189.dasm (-0.79 % of base)
         -24 : 168878.dasm (-3.31 % of base)
         -24 : 54202.dasm (-1.90 % of base)
         -20 : 284633.dasm (-1.34 % of base)
         -20 : 157068.dasm (-0.93 % of base)
         -20 : 276052.dasm (-0.81 % of base)
         -20 : 287701.dasm (-0.71 % of base)
         -16 : 272020.dasm (-0.64 % of base)
         -12 : 285525.dasm (-0.71 % of base)
         -12 : 272973.dasm (-0.65 % of base)
         -12 : 48969.dasm (-0.82 % of base)
         -12 : 156333.dasm (-0.52 % of base)
         -12 : 273157.dasm (-0.65 % of base)
         -12 : 287617.dasm (-0.62 % of base)
         -12 : 43189.dasm (-0.82 % of base)

61 total files with Code Size differences (32 improved, 29 regressed), 20 unchanged.

Top method regressions (bytes):
          52 (1.82 % of base) : 87832.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte: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 (1.49 % of base) : 156773.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long]](System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 158358.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 158388.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ulong,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ulong]](System.ReadOnlySpan`1[ulong],System.ReadOnlySpan`1[ulong]):ulong (FullOpts)
          24 (0.67 % of base) : 157090.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanSpanScalarIntoSpan>g__Vectorized128|234_1[long,System.Numerics.Tensors.TensorPrimitives+AddMultiplyOperator`1[long]](byref,byref,long,byref,ulong) (FullOpts)
          24 (0.67 % of base) : 157649.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanSpanScalarIntoSpan>g__Vectorized128|234_1[ulong,System.Numerics.Tensors.TensorPrimitives+AddMultiplyOperator`1[ulong]](byref,byref,ulong,byref,ulong) (FullOpts)
          24 (1.38 % of base) : 285897.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2317_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (0.54 % of base) : 158389.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanScalarSpanIntoSpan>g__Vectorized128|235_1[long,System.Numerics.Tensors.TensorPrimitives+MultiplyAddOperator`1[long]](byref,long,byref,byref,ulong) (FullOpts)
          20 (0.72 % of base) : 291858.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex33272_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          16 (0.35 % of base) : 14928.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
          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)
          16 (0.35 % of base) : 158379.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanScalarIntoSpan>g__Vectorized128|232_1[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+InvertedBinaryOperator`2[System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[long],long]](byref,long,byref,ulong) (FullOpts)
          16 (0.38 % of base) : 158375.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanScalarIntoSpan>g__Vectorized128|232_1[ulong,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+InvertedBinaryOperator`2[System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong],ulong]](byref,ulong,byref,ulong) (FullOpts)

Top method improvements (bytes):
        -164 (-4.98 % of base) : 285514.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2239_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)
         -32 (-1.72 % of base) : 145739.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-1.73 % of base) : 162779.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-0.40 % of base) : 163474.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,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)
         -24 (-1.90 % of base) : 54202.dasm - Microsoft.Extensions.Options.Generators.Parser:TrackRangeAttributeForSubstitution(Microsoft.CodeAnalysis.AttributeData,Microsoft.CodeAnalysis.ITypeSymbol,byref):this (FullOpts)
         -24 (-3.31 % of base) : 168878.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
         -20 (-0.93 % of base) : 157068.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanScalarIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+AddMultiplyOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],long,System.Span`1[long]) (FullOpts)
         -20 (-1.34 % of base) : 284633.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1110_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -20 (-0.71 % of base) : 287701.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2753_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -20 (-0.81 % of base) : 276052.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4414_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.52 % of base) : 156333.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanScalarIntoSpan[ulong,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+InvertedBinaryOperator`2[System.Numerics.Tensors.TensorPrimitives+DivideOperator`1[ulong],ulong]](System.ReadOnlySpan`1[ulong],ulong,System.Span`1[ulong]) (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 (-0.62 % of base) : 287617.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2632_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) : 273157.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3670_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)
          52 (1.82 % of base) : 87832.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (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 (1.49 % of base) : 156773.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long]](System.ReadOnlySpan`1[long]):long (FullOpts)
           4 (1.43 % of base) : 21108.dasm - System.Security.Cryptography.X509Certificates.CertificatePolicyChain:MatchesApplicationPolicies(System.Security.Cryptography.OidCollection):ubyte:this (FullOpts)
           4 (1.43 % of base) : 222532.dasm - System.Security.Cryptography.X509Certificates.CertificatePolicyChain:MatchesCertificatePolicies(System.Security.Cryptography.OidCollection):ubyte: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)
          28 (1.36 % of base) : 158358.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 158388.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ulong,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ulong]](System.ReadOnlySpan`1[ulong],System.ReadOnlySpan`1[ulong]):ulong (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)
           8 (1.18 % of base) : 74480.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
          12 (1.15 % of base) : 45327.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__47`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          12 (1.15 % of base) : 51410.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__52`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method improvements (percentages):
        -164 (-4.98 % of base) : 285514.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2239_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)
          -8 (-2.11 % of base) : 26291.dasm - System.Dynamic.DynamicObject+MetaDynamic:IsOverridden(System.Reflection.MethodInfo):ubyte:this (FullOpts)
         -24 (-1.90 % of base) : 54202.dasm - Microsoft.Extensions.Options.Generators.Parser:TrackRangeAttributeForSubstitution(Microsoft.CodeAnalysis.AttributeData,Microsoft.CodeAnalysis.ITypeSymbol,byref):this (FullOpts)
         -32 (-1.73 % of base) : 162779.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-1.72 % of base) : 145739.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -8 (-1.52 % of base) : 53842.dasm - System.Diagnostics.Activity+BaggageLinkedList:Set(System.Collections.Generic.KeyValuePair`2[System.String,System.String]):this (FullOpts)
          -8 (-1.43 % of base) : 42464.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetAddedProjects>d__3:MoveNext():ubyte:this (FullOpts)
          -8 (-1.43 % of base) : 48187.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetAddedProjects>d__3:MoveNext():ubyte:this (FullOpts)
          -8 (-1.43 % of base) : 48183.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetRemovedProjects>d__5:MoveNext():ubyte:this (FullOpts)
          -8 (-1.43 % of base) : 42460.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetRemovedProjects>d__5:MoveNext():ubyte:this (FullOpts)
          -8 (-1.41 % of base) : 12246.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetAddedProjects>d__3:MoveNext():ubyte:this (FullOpts)
          -8 (-1.41 % of base) : 30103.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetRemovedProjects>d__5:MoveNext():ubyte:this (FullOpts)
          -8 (-1.37 % of base) : 119209.dasm - System.Globalization.Tests.Factory+<GetDataset>d__4:MoveNext():ubyte: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)
          -4 (-1.05 % of base) : 57381.dasm - Microsoft.Extensions.Primitives.StringValues:GetHashCode():int:this (FullOpts)
         -36 (-0.97 % of base) : 276282.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4419_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -8 (-0.96 % of base) : 219204.dasm - System.Security.Cryptography.RandomNumberGenerator:GetHexStringCore(System.Span`1[ushort],ubyte) (FullOpts)
         -20 (-0.93 % of base) : 157068.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanScalarIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+AddMultiplyOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],long,System.Span`1[long]) (FullOpts)
          -8 (-0.90 % of base) : 287579.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2559_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: 15078748 (overridden on cmd)
Total bytes of diff: 15078280 (overridden on cmd)
Total bytes of delta: -468 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          72 : 1331.dasm (0.60 % of base)
          36 : 1542.dasm (0.47 % of base)
          24 : 1319.dasm (0.14 % of base)
          24 : 15987.dasm (0.62 % of base)
          16 : 14835.dasm (1.35 % of base)
          12 : 20053.dasm (1.87 % of base)
          12 : 19724.dasm (1.16 % of base)
           8 : 12283.dasm (0.58 % of base)
           8 : 23149.dasm (0.34 % of base)
           8 : 8723.dasm (0.89 % of base)
           8 : 7144.dasm (0.18 % of base)
           4 : 21911.dasm (0.10 % of base)
           4 : 21141.dasm (0.16 % of base)
           4 : 18473.dasm (0.15 % of base)
           4 : 463.dasm (0.23 % of base)

Top file improvements (bytes):
        -392 : 1329.dasm (-3.49 % of base)
        -128 : 1299.dasm (-1.65 % of base)
         -68 : 1583.dasm (-0.46 % of base)
         -24 : 20718.dasm (-0.40 % of base)
         -16 : 1539.dasm (-0.48 % of base)
         -12 : 1321.dasm (-1.67 % of base)
         -12 : 18187.dasm (-0.24 % of base)
         -12 : 29621.dasm (-0.75 % of base)
          -8 : 19023.dasm (-0.14 % of base)
          -8 : 1038.dasm (-0.11 % of base)
          -4 : 18395.dasm (-0.12 % of base)
          -4 : 28489.dasm (-0.20 % of base)
          -4 : 31155.dasm (-0.36 % of base)
          -4 : 9922.dasm (-0.08 % of base)
          -4 : 21597.dasm (-0.11 % of base)
          -4 : 536.dasm (-0.37 % of base)
          -4 : 9477.dasm (-0.20 % of base)
          -4 : 9852.dasm (-0.14 % of base)

33 total files with Code Size differences (18 improved, 15 regressed), 26 unchanged.

Top method regressions (bytes):
          72 (0.60 % of base) : 1331.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
          36 (0.47 % of base) : 1542.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]:FindClosestPoint(byref,byref,byref,byref,byref) (FullOpts)
          24 (0.14 % of base) : 1319.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
          24 (0.62 % of base) : 15987.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (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)
          12 (1.87 % of base) : 20053.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
          12 (1.16 % of base) : 19724.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           8 (0.89 % of base) : 8723.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
           8 (0.34 % of base) : 23149.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<FindMostSpecificImplementationInBases>g__findMostSpecificImplementationInBases|92_1(Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],byref,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbol (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)
           8 (0.18 % of base) : 7144.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
           4 (0.10 % of base) : 21911.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
           4 (0.16 % of base) : 21141.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.15 % of base) : 18473.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.23 % of base) : 463.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

Top method improvements (bytes):
        -392 (-3.49 % of base) : 1329.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
        -128 (-1.65 % of base) : 1299.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -68 (-0.46 % of base) : 1583.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):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)
         -16 (-0.48 % of base) : 1539.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
         -12 (-1.67 % of base) : 1321.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
         -12 (-0.24 % of base) : 18187.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (FullOpts)
         -12 (-0.75 % of base) : 29621.dasm - System.Management.Automation.ParameterBinderController:BindPositionalParameters(System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal],uint,uint,byref):System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]:this (FullOpts)
          -8 (-0.11 % of base) : 1038.dasm - BepuPhysics.Collidables.ConvexHullHelper:ComputeHull(System.Span`1[System.Numerics.Vector3],BepuUtilities.Memory.BufferPool,byref) (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.08 % of base) : 9922.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking:MakeCtorForIncrClassConstructionPhase2C(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs,FSharp.Compiler.TypedTree+Expr,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassConstructionBindingsPhase2C],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.CheckExpressions+SafeInitData):System.Tuple`4[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassReprInfo] (FullOpts)
          -4 (-0.14 % of base) : 9852.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2B_TypeCheckAndIncrementalGeneralization$cont@1927-2(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2A,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.Unit):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2B,System.Tuple`7[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]]] (FullOpts)
          -4 (-0.20 % of base) : 9477.dasm - FSharp.Compiler.CheckExpressions:TcIncrementalLetRecGeneralization(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]):System.Tuple`5[FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]] (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) : 18395.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -4 (-0.20 % of base) : 28489.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -4 (-0.36 % of base) : 31155.dasm - System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
          -4 (-0.37 % of base) : 536.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (FullOpts)

Top method regressions (percentages):
          12 (1.87 % of base) : 20053.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (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)
          12 (1.16 % of base) : 19724.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           8 (0.89 % of base) : 8723.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
          24 (0.62 % of base) : 15987.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          72 (0.60 % of base) : 1331.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (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)
          36 (0.47 % of base) : 1542.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]:FindClosestPoint(byref,byref,byref,byref,byref) (FullOpts)
           8 (0.34 % of base) : 23149.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<FindMostSpecificImplementationInBases>g__findMostSpecificImplementationInBases|92_1(Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],byref,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
           4 (0.23 % of base) : 463.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           8 (0.18 % of base) : 7144.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
           4 (0.16 % of base) : 21141.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.15 % of base) : 18473.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
          24 (0.14 % of base) : 1319.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
           4 (0.10 % of base) : 21911.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)

Top method improvements (percentages):
        -392 (-3.49 % of base) : 1329.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -12 (-1.67 % of base) : 1321.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
        -128 (-1.65 % of base) : 1299.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -12 (-0.75 % of base) : 29621.dasm - System.Management.Automation.ParameterBinderController:BindPositionalParameters(System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal],uint,uint,byref):System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]:this (FullOpts)
         -16 (-0.48 % of base) : 1539.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder,BepuPhysics.Collidables.Cylinder,BepuPhysics.Collidables.CylinderWide,BepuPhysics.Collidables.CylinderSupportFinder]]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
         -68 (-0.46 % of base) : 1583.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):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.37 % of base) : 536.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (FullOpts)
          -4 (-0.36 % of base) : 31155.dasm - System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -12 (-0.24 % of base) : 18187.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (FullOpts)
          -4 (-0.20 % of base) : 28489.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -4 (-0.20 % of base) : 9477.dasm - FSharp.Compiler.CheckExpressions:TcIncrementalLetRecGeneralization(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]):System.Tuple`5[FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]] (FullOpts)
          -4 (-0.14 % of base) : 9852.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2B_TypeCheckAndIncrementalGeneralization$cont@1927-2(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2A,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.Unit):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2B,System.Tuple`7[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]]] (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)
          -8 (-0.11 % of base) : 1038.dasm - BepuPhysics.Collidables.ConvexHullHelper:ComputeHull(System.Span`1[System.Numerics.Vector3],BepuUtilities.Memory.BufferPool,byref) (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.08 % of base) : 9922.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking:MakeCtorForIncrClassConstructionPhase2C(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs,FSharp.Compiler.TypedTree+Expr,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassConstructionBindingsPhase2C],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.CheckExpressions+SafeInitData):System.Tuple`4[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassReprInfo] (FullOpts)



windows arm64

Diffs are based on 1,478,010 contexts (263,527 MinOpts, 1,214,483 FullOpts).

MISSED contexts: 2,751 (0.19%)

Overall (-4,376 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,887,636 +8
benchmarks.run_pgo.windows.arm64.checked.mch 36,162,312 -1,268
benchmarks.run_tiered.windows.arm64.checked.mch 15,269,056 -4
coreclr_tests.run.windows.arm64.checked.mch 277,085,768 -384
libraries.crossgen2.windows.arm64.checked.mch 66,990,496 -244
libraries.pmi.windows.arm64.checked.mch 79,835,620 +164
libraries_tests.run.windows.arm64.Release.mch 6,478,404 -2,100
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 168,105,436 +80
realworld.run.windows.arm64.checked.mch 15,900,008 -452
smoke_tests.nativeaot.windows.arm64.checked.mch 3,865,048 -176

FullOpts (-4,376 bytes)

Collection Base size (bytes) Diff size (bytes)
benchmarks.run.windows.arm64.checked.mch 10,887,100 +8
benchmarks.run_pgo.windows.arm64.checked.mch 23,135,448 -1,268
benchmarks.run_tiered.windows.arm64.checked.mch 4,070,224 -4
coreclr_tests.run.windows.arm64.checked.mch 138,793,200 -384
libraries.crossgen2.windows.arm64.checked.mch 66,988,860 -244
libraries.pmi.windows.arm64.checked.mch 79,715,636 +164
libraries_tests.run.windows.arm64.Release.mch 5,254,404 -2,100
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 155,046,156 +80
realworld.run.windows.arm64.checked.mch 15,336,032 -452
smoke_tests.nativeaot.windows.arm64.checked.mch 3,864,036 -176

Example diffs

benchmarks.run.windows.arm64.checked.mch

-20 (-2.18%) : 9253.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 14 single block inlinees; 5 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 15, 9 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Jil.Serialize.InlineSerializer`1[System.__Canon]> -; V01 loc0 [V01,T27] ( 2, 1 ) ref -> x20 class-hnd single-def <System.Reflection.MethodInfo> -; V02 loc1 [V02,T09] ( 7, 2 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <Sigil.Local>
+; V00 this [V00,T01] ( 15, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <Jil.Serialize.InlineSerializer`1[System.__Canon]> +; V01 loc0 [V01,T27] ( 2, 1.50) ref -> x20 class-hnd single-def <System.Reflection.MethodInfo> +; V02 loc1 [V02,T11] ( 7, 2 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <Sigil.Local>
;# 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,T23] ( 2, 2 ) long -> x0 "spilling helperCall"
-; V06 tmp3 [V06,T10] ( 2, 2 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> -; V07 tmp4 [V07,T05] ( 4, 4 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]>
+; V06 tmp3 [V06,T12] ( 2, 2 ) ref -> x0 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit> +; V07 tmp4 [V07,T04] ( 4, 5 ) ref -> x6 class-hnd exact single-def "dup spill" <System.Type[]>
;* V08 tmp5 [V08,T28] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "impAppendStmt" <System.RuntimeType> ;* V09 tmp6 [V09 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Strict ordering of exceptions for Array store" <System.RuntimeType>
-; V10 tmp7 [V10,T11] ( 2, 2 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
+; V10 tmp7 [V10,T08] ( 2, 4 ) ref -> x21 class-hnd single-def "impAppendStmt" <Sigil.NonGeneric.Emit>
; V11 tmp8 [V11,T24] ( 2, 2 ) long -> x0 "spilling helperCall" ; V12 tmp9 [V12,T25] ( 2, 2 ) long -> x0 "spilling helperCall" ; V13 tmp10 [V13,T00] ( 5, 16.50) int -> x0 "Inline stloc first use temp" ;* V14 tmp11 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type>
-; V15 tmp12 [V15,T12] ( 2, 2 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> -; V16 tmp13 [V16,T08] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
+; V15 tmp12 [V15,T09] ( 2, 4 ) ref -> x2 class-hnd exact single-def "Inlining Arg" <System.String> +; V16 tmp13 [V16,T02] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>>
; V17 tmp14 [V17,T13] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> ; V18 tmp15 [V18,T14] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> ; V19 tmp16 [V19,T15] ( 2, 2 ) ref -> x0 class-hnd single-def "Inlining Arg" <Sigil.NonGeneric.Emit> @@ -38,11 +38,11 @@ ; V27 tmp24 [V27,T26] ( 3, 1.50) ref -> x1 class-hnd "Inline return value spill temp" <System.Reflection.MethodInfo> ;* V28 tmp25 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V29 PSPSym [V29,T29] ( 1, 1 ) long -> [fp+0x30] do-not-enreg[V] "PSPSym"
-; V30 cse0 [V30,T07] ( 5, 3.50) long -> x19 "CSE - aggressive" -; V31 cse1 [V31,T03] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive" -; V32 rat0 [V32,T04] ( 3, 4.40) long -> x1 "Spilling to split statement for tree" -; V33 rat1 [V33,T06] ( 3, 4 ) long -> x19 "runtime lookup" -; V34 rat2 [V34,T02] ( 3, 5.60) long -> x19 "fgMakeTemp is creating a new local variable"
+; V30 cse0 [V30,T10] ( 5, 3.50) long -> x19 "CSE - aggressive" +; V31 cse1 [V31,T05] ( 2, 4.50) byref -> x1 hoist "CSE - aggressive" +; V32 rat0 [V32,T06] ( 3, 4.40) long -> x1 "Spilling to split statement for tree" +; V33 rat1 [V33,T07] ( 3, 4 ) long -> x19 "runtime lookup" +; V34 rat2 [V34,T03] ( 3, 5.60) long -> x19 "fgMakeTemp is creating a new local variable"
; ; Lcl frame size = 40 @@ -113,7 +113,7 @@ G_M44361_IG07: ; bbWeight=4, gcrefRegs=0040 {x6}, byrefRegs=0002 {x1}, by cmp w0, #1 blt G_M44361_IG07 ;; size=20 bbWeight=4 PerfScore 24.00
-G_M44361_IG08: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref
+G_M44361_IG08: ; bbWeight=1, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] ; byrRegs -[x1] movz x0, #0xD1FFAB1E @@ -162,40 +162,38 @@ G_M44361_IG08: ; bbWeight=0.50, gcrefRegs=0040 {x6}, byrefRegs=0000 {}, b ; gcr arg pop 0 str x0, [fp, #0x18] // [V02 loc1] ; GC ptr vars +{V02}
- ;; size=148 bbWeight=0.50 PerfScore 18.50 -G_M44361_IG09: ; bbWeight=0.50, gcVars=0000000000000202 {V00 V02}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=148 bbWeight=1 PerfScore 37.00 +G_M44361_IG09: ; bbWeight=0.50, gcVars=0000000000000802 {V00 V02}, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x1, [x2, #0x18]
+ ldr x21, [fp, #0x20] // [V00 this] + ; gcrRegs +[x21] + ldr x1, [x21, #0x18]
; gcrRegs +[x1] ldr x0, [x1, #0x08] ; gcrRegs +[x0] ldr x1, [fp, #0x18] // [V02 loc1]
- movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3]
+ movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2]
ldr wzr, [x0]
- blr x3 - ; gcrRegs -[x1-x2]
+ blr x2 + ; gcrRegs -[x1]
; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18]
+ ldr x0, [x21, #0x18]
ldr x0, [x0, #0x08] ldr x1, [fp, #0x18] // [V02 loc1] ; gcrRegs +[x1]
- movz x3, #0xD1FFAB1E // code for <unknown method> - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3]
+ movz x2, #0xD1FFAB1E // code for <unknown method> + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2]
ldr wzr, [x0]
- blr x3 - ; gcrRegs -[x1-x2]
+ blr x2 + ; gcrRegs -[x1]
; gcr arg pop 0
- ;; size=80 bbWeight=0.50 PerfScore 18.50 -G_M44361_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+ ;; size=76 bbWeight=0.50 PerfScore 17.50 +G_M44361_IG10: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0] ldr x1, [fp, #0x18] // [V02 loc1] ; gcrRegs +[x1] @@ -212,31 +210,25 @@ G_M44361_IG10: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz - ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18]
+G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz + ldr x0, [x21, #0x18]
; gcrRegs +[x0] ldr x0, [x0, #0x08] movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32
- movz x3, #0xD1FFAB1E // code for Sigil.Emit`1[System.__Canon]:LoadConstant(System.String):Sigil.Emit`1[System.__Canon]:this - movk x3, #0xD1FFAB1E LSL #16 - movk x3, #0xD1FFAB1E LSL #32 - ldr x3, [x3]
+ movz x2, #0xD1FFAB1E // code for Sigil.Emit`1[System.__Canon]:LoadConstant(System.String):Sigil.Emit`1[System.__Canon]:this + movk x2, #0xD1FFAB1E LSL #16 + movk x2, #0xD1FFAB1E LSL #32 + ldr x2, [x2]
ldr wzr, [x0]
- blr x3 - ; gcrRegs -[x2]
+ blr x2
; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18]
+ ldr x0, [x21, #0x18]
ldr x0, [x0, #0x08] mov x1, x20 ; gcrRegs +[x1] mov x2, xzr
- ; gcrRegs -[x2]
movz x3, #0xD1FFAB1E // code for <unknown method> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 @@ -245,16 +237,13 @@ G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x1 x20] ; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldrb w0, [x2, #0x34]
+ ldrb w0, [x21, #0x34]
; gcrRegs -[x0] cbz w0, G_M44361_IG13 mov x0, x19
- ldr x19, [x2, #0x18]
+ ldr x19, [x21, #0x18]
; gcrRegs +[x19] bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
- ; gcrRegs -[x2]
; byrRegs +[x0] ; gcr arg pop 0 ldr x1, [x0, #0x18] @@ -271,20 +260,19 @@ G_M44361_IG11: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} blr x3 ; gcrRegs -[x1 x19] ; gcr arg pop 0
- ;; size=152 bbWeight=0.50 PerfScore 30.50
+ ;; size=140 bbWeight=0.50 PerfScore 27.50
G_M44361_IG12: ; bbWeight=0.50, epilog, nogc, extend ldr x21, [sp, #0x48] ldp x19, x20, [sp, #0x38] ldp fp, lr, [sp], #0x50 ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50
-G_M44361_IG13: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[x0] +[x2]
+G_M44361_IG13: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0]
mov x0, x19
- ldr x19, [x2, #0x18]
+ ldr x19, [x21, #0x18]
; gcrRegs +[x19] bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
- ; gcrRegs -[x2]
; byrRegs +[x0] ; gcr arg pop 0 ldr x1, [x0, #0x10] @@ -310,14 +298,13 @@ G_M44361_IG14: ; bbWeight=0.50, epilog, nogc, extend ret lr ;; size=16 bbWeight=0.50 PerfScore 2.50 G_M44361_IG15: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x21]
mov x0, x19
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x19, [x2, #0x18]
+ ldr x21, [fp, #0x20] // [V00 this] + ; gcrRegs +[x21] + ldr x19, [x21, #0x18]
; gcrRegs +[x19] bl CORINFO_HELP_GETGENERICS_GCSTATIC_BASE
- ; gcrRegs -[x2]
; byrRegs +[x0] ; gcr arg pop 0 ldr x1, [x0] @@ -333,10 +320,8 @@ G_M44361_IG15: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs= blr x2 ; gcrRegs -[x1 x19] ; gcr arg pop 0
- ldr x2, [fp, #0x20] // [V00 this] - ; gcrRegs +[x2] - ldr x0, [x2, #0x18] - ldrb w1, [x2, #0x34]
+ ldr x0, [x21, #0x18] + ldrb w1, [x21, #0x34]
cbz w1, G_M44361_IG16 movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 @@ -344,16 +329,16 @@ G_M44361_IG15: ; bbWeight=0.50, gcVars=0000000000000002 {V00}, gcrefRegs= ldr x1, [x1] ; gcrRegs +[x1] b G_M44361_IG17
- ;; size=84 bbWeight=0.50 PerfScore 17.75 -G_M44361_IG16: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref - ; gcrRegs -[x1-x2]
+ ;; size=80 bbWeight=0.50 PerfScore 16.75 +G_M44361_IG16: ; bbWeight=0.50, gcrefRegs=200001 {x0 x21}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1]
movz x1, #0xD1FFAB1E movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] ; gcrRegs +[x1] ...

-32 (-1.75%) : 7166.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)

@@ -22,7 +22,7 @@ ; V11 loc7 [V11,T09] ( 18, 40 ) ushort -> x24 ;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 loc9 [V13,T43] ( 3, 6 ) ubyte -> x0
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T18] ( 7, 14 ) ushort -> x25 ;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune> ; V17 loc13 [V17,T28] ( 4, 8 ) int -> x27 @@ -342,8 +342,9 @@ G_M13139_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
+ mov w22, w25
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 28.00
+ ;; size=44 bbWeight=2 PerfScore 29.00
G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -353,8 +354,9 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
+ mov w22, w25
b G_M13139_IG45
- ;; size=28 bbWeight=2 PerfScore 14.00
+ ;; size=32 bbWeight=2 PerfScore 15.00
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 bgt G_M13139_IG21 @@ -382,9 +384,8 @@ G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ;; size=28 bbWeight=2 PerfScore 13.00 G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref add w22, w22, #2
- mov w25, w22
b G_M13139_IG45
- ;; size=12 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref sbfiz x0, x22, #1, #32 add x0, x19, x0 @@ -401,9 +402,8 @@ G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ; gcr arg pop 0 add w0, w0, w22 sub w22, w0, #1
- mov w25, w22
b G_M13139_IG45
- ;; size=64 bbWeight=2 PerfScore 24.00
+ ;; size=60 bbWeight=2 PerfScore 23.00
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -414,9 +414,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -426,9 +425,8 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22
b G_M13139_IG45
- ;; size=32 bbWeight=2 PerfScore 15.00
+ ;; size=28 bbWeight=2 PerfScore 14.00
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 ble G_M13139_IG43 @@ -666,19 +664,16 @@ G_M13139_IG40: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, cmp w24, w27 blt G_M13139_IG35 ;; size=112 bbWeight=16 PerfScore 344.00
-G_M13139_IG41: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M13139_IG41: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] ldrb w0, [fp, #-0x80] // [V14 loc10]
- cbz w0, G_M13139_IG42
+ cbz w0, G_M13139_IG45 + ;; size=8 bbWeight=4 PerfScore 12.00 +G_M13139_IG42: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
add w27, w22, #1 sxtw w22, w27
- mov w25, w22
b G_M13139_IG45
- ;; size=24 bbWeight=2 PerfScore 11.00 -G_M13139_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref - mov w25, w22 - b G_M13139_IG45 - ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=2 PerfScore 4.00
G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -689,9 +684,8 @@ G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -701,14 +695,12 @@ G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22 - ;; size=28 bbWeight=2 PerfScore 13.00
+ ;; size=24 bbWeight=2 PerfScore 12.00
G_M13139_IG45: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- add w25, w25, #1 - cmp w25, w20 - mov w22, w25
+ add w22, w22, #1 + cmp w22, w20
blt G_M13139_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
+ ;; size=12 bbWeight=4 PerfScore 8.00
G_M13139_IG46: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x23] sub x0, fp, #120 // [V05 loc1] @@ -771,7 +763,7 @@ G_M13139_IG50: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1828, prolog size 76, PerfScore 1420.00, instruction count 457, allocated bytes for code 1828 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
+; Total bytes of code 1796, prolog size 76, PerfScore 1417.50, instruction count 449, allocated bytes for code 1796 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
; ============================================================ Unwind Info: @@ -782,7 +774,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 457 (0x001c9) Actual length = 1828 (0x000724)
+ Function Length : 449 (0x001c1) Actual length = 1796 (0x000704)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-20 (-0.48%) : 806.dasm - System.Number:TryParseNumberushort:ubyte (FullOpts)

@@ -11,37 +11,37 @@ ; V00 arg0 [V00,T27] ( 7, 6 ) byref -> x23 single-def ; V01 arg1 [V01,T03] ( 29, 52.50) long -> x19 single-def ; V02 arg2 [V02,T07] ( 12, 24.50) int -> x22 single-def
-; V03 arg3 [V03,T05] ( 30, 32 ) byref -> x20 single-def
+; V03 arg3 [V03,T05] ( 30, 33 ) byref -> x20 single-def
; V04 arg4 [V04,T06] ( 20, 25 ) ref -> x21 class-hnd single-def <System.Globalization.NumberFormatInfo> ;* V05 loc0 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]> ;* V06 loc1 [V06 ] ( 0, 0 ) struct (16) zero-ref multireg-arg <System.ReadOnlySpan`1[ushort]> ;* V07 loc2 [V07 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op <System.ReadOnlySpan`1[ushort]>
-; V08 loc3 [V08,T76] ( 4, 5.50) ubyte -> [fp+0xCC] -; V09 loc4 [V09,T02] ( 35, 63.50) int -> [fp+0xC8] -; V10 loc5 [V10,T00] ( 62,120.50) long -> [fp+0xC0] -; V11 loc6 [V11,T01] ( 29, 77 ) int -> [fp+0xBC]
+; V08 loc3 [V08,T77] ( 4, 5.50) ubyte -> [fp+0xFC] +; V09 loc4 [V09,T02] ( 35, 63.50) int -> [fp+0xF8] +; V10 loc5 [V10,T00] ( 62,120.50) long -> [fp+0xF0] +; V11 loc6 [V11,T01] ( 29, 77.50) int -> [fp+0xEC]
; V12 loc7 [V12,T04] ( 23, 46 ) long -> x0
-; V13 loc8 [V13,T20] ( 8, 15 ) int -> [fp+0xB8] -; V14 loc9 [V14,T56] ( 7, 7 ) int -> [fp+0xB4] -; V15 loc10 [V15,T77] ( 3, 5 ) int -> [fp+0xB0] spill-single-def -; V16 loc11 [V16,T28] ( 6, 8 ) int -> [fp+0xAC] -; V17 loc12 [V17,T125] ( 3, 2 ) ubyte -> registers
+; V13 loc8 [V13,T21] ( 8, 15 ) int -> [fp+0xE8] +; V14 loc9 [V14,T56] ( 7, 7 ) int -> [fp+0xE4] +; V15 loc10 [V15,T78] ( 3, 5 ) int -> [fp+0xE0] spill-single-def +; V16 loc11 [V16,T28] ( 6, 8 ) int -> [fp+0xDC] +; V17 loc12 [V17,T124] ( 3, 2.50) ubyte -> registers
;* V18 loc13 [V18 ] ( 0, 0 ) ubyte -> zero-ref ; V19 loc14 [V19,T151] ( 3, 1.50) long -> x27
-; V20 loc15 [V20,T21] ( 9, 13 ) int -> x2 -; V21 loc16 [V21,T124] ( 4, 2 ) int -> x0
+; V20 loc15 [V20,T19] ( 9, 15.50) int -> x2 +; V21 loc16 [V21,T125] ( 4, 2 ) int -> x0
;# V22 OutArgs [V22 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V23 tmp1 [V23,T126] ( 3, 2 ) int -> x5 ; V24 tmp2 [V24,T57] ( 3, 6 ) byref -> x0 single-def "Span.get_Item ptrToSpan" ; V25 tmp3 [V25,T42] ( 2, 8 ) long -> x0 "dup spill"
-; V26 tmp4 [V26,T14] ( 2, 16 ) long -> x4 "dup spill" -; V27 tmp5 [V27,T31] ( 3, 8 ) int -> x5
+; V26 tmp4 [V26,T14] ( 2, 16 ) long -> x28 "dup spill" +; V27 tmp5 [V27,T31] ( 3, 8 ) int -> x27
;* V28 tmp6 [V28 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ; V29 tmp7 [V29,T43] ( 2, 8 ) long -> x0 "dup spill" ;* V30 tmp8 [V30 ] ( 0, 0 ) long -> zero-ref "dup spill" ;* V31 tmp9 [V31 ] ( 0, 0 ) int -> zero-ref "dup spill" ; V32 tmp10 [V32,T120] ( 3, 3 ) int -> x0 "Span.get_Item index"
-; V33 tmp11 [V33,T116] ( 3, 3 ) byref -> x1 single-def "Span.get_Item ptrToSpan"
+; V33 tmp11 [V33,T117] ( 3, 3 ) byref -> x1 single-def "Span.get_Item ptrToSpan"
; V34 tmp12 [V34,T134] ( 2, 2 ) long -> x4 "dup spill" ; V35 tmp13 [V35,T152] ( 3, 1.50) int -> x5 ;* V36 tmp14 [V36 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> @@ -50,7 +50,7 @@ ; V39 tmp17 [V39,T153] ( 3, 1.50) int -> x27 ; V40 tmp18 [V40,T15] ( 2, 16 ) long -> x28 "dup spill" ; V41 tmp19 [V41,T32] ( 3, 8 ) int -> x1
-; V42 tmp20 [V42,T117] ( 3, 3 ) byref -> x0 single-def "dup spill"
+; V42 tmp20 [V42,T58] ( 3, 6 ) byref -> x0 single-def "dup spill"
; V43 tmp21 [V43,T16] ( 2, 16 ) long -> x28 "dup spill" ; V44 tmp22 [V44,T33] ( 3, 8 ) int -> x1 ; V45 tmp23 [V45,T154] ( 3, 1.50) int -> x1 @@ -78,7 +78,7 @@ ;* V67 tmp45 [V67 ] ( 0, 0 ) int -> zero-ref ;* V68 tmp46 [V68 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V69 tmp47 [V69 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V70 tmp48 [V70,T78] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V70 tmp48 [V70,T79] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V71 tmp49 [V71 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V72 tmp50 [V72 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V73 tmp51 [V73,T135] ( 2, 2 ) int -> x25 "Inlining Arg" @@ -96,7 +96,7 @@ ;* V85 tmp63 [V85 ] ( 0, 0 ) int -> zero-ref ;* V86 tmp64 [V86 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V87 tmp65 [V87 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V88 tmp66 [V88,T79] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V88 tmp66 [V88,T80] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V89 tmp67 [V89 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V90 tmp68 [V90 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V91 tmp69 [V91,T136] ( 2, 2 ) int -> x28 "Inlining Arg" @@ -114,17 +114,17 @@ ;* V103 tmp81 [V103 ] ( 0, 0 ) int -> zero-ref ;* V104 tmp82 [V104 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V105 tmp83 [V105 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V106 tmp84 [V106,T80] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V106 tmp84 [V106,T81] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V107 tmp85 [V107 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V108 tmp86 [V108 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V109 tmp87 [V109,T137] ( 2, 2 ) int -> [fp+0xA8] spill-single-def "Inlining Arg"
+; V109 tmp87 [V109,T137] ( 2, 2 ) int -> [fp+0xD8] spill-single-def "Inlining Arg"
; V110 tmp88 [V110,T129] ( 2, 2 ) byref -> x26 single-def "Inlining Arg" ;* V111 tmp89 [V111 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V112 tmp90 [V112 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V113 tmp91 [V113 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V114 tmp92 [V114 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V115 tmp93 [V115 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V116 tmp94 [V116,T158] ( 3, 1.50) int -> [fp+0xA4] spill-single-def "Inline stloc first use temp"
+; V116 tmp94 [V116,T158] ( 3, 1.50) int -> [fp+0xD4] spill-single-def "Inline stloc first use temp"
;* V117 tmp95 [V117 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V118 tmp96 [V118 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V119 tmp97 [V119 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" @@ -132,7 +132,7 @@ ;* V121 tmp99 [V121 ] ( 0, 0 ) int -> zero-ref ;* V122 tmp100 [V122 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V123 tmp101 [V123 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V124 tmp102 [V124,T81] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V124 tmp102 [V124,T82] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V125 tmp103 [V125 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V126 tmp104 [V126 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V127 tmp105 [V127,T138] ( 2, 2 ) int -> x28 "Inlining Arg" @@ -150,17 +150,17 @@ ;* V139 tmp117 [V139 ] ( 0, 0 ) int -> zero-ref ;* V140 tmp118 [V140 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V141 tmp119 [V141 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V142 tmp120 [V142,T82] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V142 tmp120 [V142,T83] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V143 tmp121 [V143 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V144 tmp122 [V144 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V145 tmp123 [V145,T139] ( 2, 2 ) int -> [fp+0xA0] spill-single-def "Inlining Arg" -; V146 tmp124 [V146,T131] ( 2, 2 ) byref -> [fp+0x68] spill-single-def "Inlining Arg"
+; V145 tmp123 [V145,T139] ( 2, 2 ) int -> [fp+0xD0] spill-single-def "Inlining Arg" +; V146 tmp124 [V146,T131] ( 2, 2 ) byref -> [fp+0x88] spill-single-def "Inlining Arg"
;* V147 tmp125 [V147 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V148 tmp126 [V148 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V149 tmp127 [V149 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V150 tmp128 [V150 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V151 tmp129 [V151 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V152 tmp130 [V152,T160] ( 3, 1.50) int -> [fp+0x9C] spill-single-def "Inline stloc first use temp"
+; V152 tmp130 [V152,T160] ( 3, 1.50) int -> [fp+0xCC] spill-single-def "Inline stloc first use temp"
;* V153 tmp131 [V153 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V154 tmp132 [V154 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V155 tmp133 [V155 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" @@ -184,7 +184,7 @@ ;* V173 tmp151 [V173 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V174 tmp152 [V174 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V175 tmp153 [V175 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V176 tmp154 [V176,T64] ( 3, 6 ) int -> [fp+0x98] spill-single-def "Inline stloc first use temp"
+; V176 tmp154 [V176,T65] ( 3, 6 ) int -> [fp+0xC8] spill-single-def "Inline stloc first use temp"
;* V177 tmp155 [V177 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V178 tmp156 [V178 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V179 tmp157 [V179 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -210,7 +210,7 @@ ;* V199 tmp177 [V199 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V200 tmp178 [V200 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V201 tmp179 [V201 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V202 tmp180 [V202,T65] ( 3, 6 ) int -> [fp+0x94] spill-single-def "Inline stloc first use temp"
+; V202 tmp180 [V202,T66] ( 3, 6 ) int -> [fp+0xC4] spill-single-def "Inline stloc first use temp"
;* V203 tmp181 [V203 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V204 tmp182 [V204 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V205 tmp183 [V205 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -237,7 +237,7 @@ ;* V226 tmp204 [V226 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V227 tmp205 [V227 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V228 tmp206 [V228 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V229 tmp207 [V229,T66] ( 3, 6 ) int -> [fp+0x90] spill-single-def "Inline stloc first use temp"
+; V229 tmp207 [V229,T67] ( 3, 6 ) int -> [fp+0xC0] spill-single-def "Inline stloc first use temp"
;* V230 tmp208 [V230 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V231 tmp209 [V231 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V232 tmp210 [V232 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -248,14 +248,14 @@ ; V237 tmp215 [V237,T11] ( 4, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String> ;* V238 tmp216 [V238 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V239 tmp217 [V239 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V240 tmp218 [V240,T53] ( 2, 8 ) int -> [fp+0x8C] spill-single-def "Inlining Arg" -; V241 tmp219 [V241,T39] ( 2, 8 ) byref -> [fp+0x60] spill-single-def "Inlining Arg"
+; V240 tmp218 [V240,T53] ( 2, 8 ) int -> [fp+0xBC] spill-single-def "Inlining Arg" +; V241 tmp219 [V241,T39] ( 2, 8 ) byref -> [fp+0x80] spill-single-def "Inlining Arg"
;* V242 tmp220 [V242 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V243 tmp221 [V243 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V244 tmp222 [V244 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V245 tmp223 [V245 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V246 tmp224 [V246 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V247 tmp225 [V247,T67] ( 3, 6 ) int -> [fp+0x88] spill-single-def "Inline stloc first use temp"
+; V247 tmp225 [V247,T68] ( 3, 6 ) int -> [fp+0xB8] spill-single-def "Inline stloc first use temp"
;* V248 tmp226 [V248 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V249 tmp227 [V249 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V250 tmp228 [V250 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" @@ -265,38 +265,38 @@ ;* V254 tmp232 [V254 ] ( 0, 0 ) int -> zero-ref ;* V255 tmp233 [V255 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V256 tmp234 [V256 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V257 tmp235 [V257,T83] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V257 tmp235 [V257,T84] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V258 tmp236 [V258 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V259 tmp237 [V259 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V260 tmp238 [V260,T140] ( 2, 2 ) int -> [fp+0x84] spill-single-def "Inlining Arg" -; V261 tmp239 [V261,T132] ( 2, 2 ) byref -> [fp+0x58] spill-single-def "Inlining Arg"
+; V260 tmp238 [V260,T140] ( 2, 2 ) int -> [fp+0xB4] spill-single-def "Inlining Arg" +; V261 tmp239 [V261,T132] ( 2, 2 ) byref -> [fp+0x78] spill-single-def "Inlining Arg"
;* V262 tmp240 [V262 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V263 tmp241 [V263 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V264 tmp242 [V264 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V265 tmp243 [V265 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V266 tmp244 [V266 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V267 tmp245 [V267,T161] ( 3, 1.50) int -> [fp+0x80] spill-single-def "Inline stloc first use temp"
+; V267 tmp245 [V267,T161] ( 3, 1.50) int -> [fp+0xB0] spill-single-def "Inline stloc first use temp"
;* V268 tmp246 [V268 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V269 tmp247 [V269 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V270 tmp248 [V270 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V271 tmp249 [V271 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V272 tmp250 [V272 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V273 tmp251 [V273,T115] ( 6, 3 ) long -> x0 "Inline stloc first use temp"
+; V273 tmp251 [V273,T116] ( 6, 3 ) long -> x0 "Inline stloc first use temp"
;* V274 tmp252 [V274 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V275 tmp253 [V275 ] ( 0, 0 ) int -> zero-ref ;* V276 tmp254 [V276 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V277 tmp255 [V277 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]>
-; V278 tmp256 [V278,T84] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
+; V278 tmp256 [V278,T85] ( 4, 4 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <System.String>
;* V279 tmp257 [V279 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V280 tmp258 [V280 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V281 tmp259 [V281,T141] ( 2, 2 ) int -> [fp+0x7C] spill-single-def "Inlining Arg" -; V282 tmp260 [V282,T133] ( 2, 2 ) byref -> [fp+0x50] spill-single-def "Inlining Arg"
+; V281 tmp259 [V281,T141] ( 2, 2 ) int -> [fp+0xAC] spill-single-def "Inlining Arg" +; V282 tmp260 [V282,T133] ( 2, 2 ) byref -> [fp+0x70] spill-single-def "Inlining Arg"
;* V283 tmp261 [V283 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V284 tmp262 [V284 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V285 tmp263 [V285 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V286 tmp264 [V286 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V287 tmp265 [V287 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V288 tmp266 [V288,T162] ( 3, 1.50) int -> [fp+0x78] spill-single-def "Inline stloc first use temp"
+; V288 tmp266 [V288,T162] ( 3, 1.50) int -> [fp+0xA8] spill-single-def "Inline stloc first use temp"
;* V289 tmp267 [V289 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V290 tmp268 [V290 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V291 tmp269 [V291 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" @@ -305,7 +305,7 @@ ;* V294 tmp272 [V294 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V295 tmp273 [V295 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V296 tmp274 [V296 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg"
-; V297 tmp275 [V297,T163] ( 3, 1.50) int -> x26 "Inline return value spill temp"
+; V297 tmp275 [V297,T163] ( 3, 1.50) int -> [fp+0xA4] spill-single-def "Inline return value spill temp"
;* V298 tmp276 [V298,T143] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V299 tmp277 [V299 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V300 tmp278 [V300 ] ( 0, 0 ) int -> zero-ref @@ -314,14 +314,14 @@ ; V303 tmp281 [V303,T12] ( 4, 16 ) ref -> x0 class-hnd exact "Inlining Arg" <System.String> ;* V304 tmp282 [V304 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V305 tmp283 [V305 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V306 tmp284 [V306,T54] ( 2, 8 ) int -> x26 "Inlining Arg" -; V307 tmp285 [V307,T40] ( 2, 8 ) byref -> x27 "Inlining Arg"
+; V306 tmp284 [V306,T54] ( 2, 8 ) int -> [fp+0xA0] spill-single-def "Inlining Arg" +; V307 tmp285 [V307,T40] ( 2, 8 ) byref -> [fp+0x68] spill-single-def "Inlining Arg"
;* V308 tmp286 [V308 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V309 tmp287 [V309 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V310 tmp288 [V310 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V311 tmp289 [V311 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V312 tmp290 [V312 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp"
-; V313 tmp291 [V313,T68] ( 3, 6 ) int -> x26 "Inline stloc first use temp"
+; V313 tmp291 [V313,T69] ( 3, 6 ) int -> [fp+0x9C] spill-single-def "Inline stloc first use temp"
;* V314 tmp292 [V314 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ...

+8 (+1.18%) : 12554.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)

@@ -8,53 +8,53 @@ ; 0 inlinees with PGO data; 7 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 13, 7.25) ref -> x19 this class-hnd single-def <System.Collections.BitArray> -; V01 arg1 [V01,T13] ( 8, 5 ) int -> x20 single-def -; V02 loc0 [V02,T07] ( 10, 12 ) int -> registers -; V03 loc1 [V03,T21] ( 6, 3 ) int -> x22 -; V04 loc2 [V04,T01] ( 11, 30 ) int -> x23 -; V05 loc3 [V05,T25] ( 5, 2 ) int -> x20 ld-addr-op -; V06 loc4 [V06,T30] ( 3, 1.50) int -> x24 ld-addr-op -; V07 loc5 [V07,T33] ( 2, 1 ) int -> x4 -; V08 loc6 [V08,T16] ( 3, 5 ) int -> x0 -; V09 loc7 [V09,T34] ( 2, 1 ) int -> x0 -; V10 loc8 [V10,T09] ( 2, 8 ) int -> x4 -; V11 loc9 [V11,T10] ( 2, 8 ) int -> x5
+; V00 this [V00,T08] ( 13, 7.75) ref -> x19 this class-hnd single-def <System.Collections.BitArray> +; V01 arg1 [V01,T14] ( 8, 5 ) int -> x20 single-def +; V02 loc0 [V02,T07] ( 10, 13 ) int -> registers +; V03 loc1 [V03,T22] ( 6, 3 ) int -> x22 +; V04 loc2 [V04,T01] ( 11, 31 ) int -> x23 +; V05 loc3 [V05,T25] ( 5, 2.50) int -> x20 ld-addr-op +; V06 loc4 [V06,T29] ( 3, 2 ) int -> x24 ld-addr-op +; V07 loc5 [V07,T35] ( 2, 1 ) int -> x4 +; V08 loc6 [V08,T18] ( 3, 5 ) int -> x0 +; V09 loc7 [V09,T30] ( 2, 2 ) int -> x0 +; V10 loc8 [V10,T10] ( 2, 8 ) int -> x4 +; V11 loc9 [V11,T11] ( 2, 8 ) int -> x5
;* V12 loc10 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Span`1[int]> ;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T05] ( 2, 16 ) int -> x23 "dup spill"
+; V14 tmp1 [V14,T06] ( 2, 16 ) int -> x23 "dup spill"
; V15 tmp2 [V15,T00] ( 4, 32 ) int -> x21 "impSpillLclRefs"
-; V16 tmp3 [V16,T19] ( 4, 4 ) int -> x1 "impSpillLclRefs" -; V17 tmp4 [V17,T22] ( 3, 3 ) byref -> x0 single-def "dup spill"
+; V16 tmp3 [V16,T09] ( 4, 8 ) int -> x1 "impSpillLclRefs" +; V17 tmp4 [V17,T23] ( 3, 3 ) byref -> x0 single-def "dup spill"
;* V18 tmp5 [V18 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ; V19 tmp6 [V19,T27] ( 4, 2 ) int -> x1 "Inline stloc first use temp"
-; V20 tmp7 [V20,T29] ( 2, 2 ) int -> x4 "Inlining Arg"
+; V20 tmp7 [V20,T31] ( 2, 2 ) int -> x4 "Inlining Arg"
;* V21 tmp8 [V21 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V22 tmp9 [V22,T18] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <int[]>
+; V22 tmp9 [V22,T20] ( 4, 4 ) ref -> x0 class-hnd single-def "Inlining Arg" <int[]>
;* V23 tmp10 [V23 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V24 tmp11 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[int]>
-; V25 tmp12 [V25,T20] ( 4, 4 ) int -> x1 "Inlining Arg" -; V26 tmp13 [V26,T15] ( 5, 5 ) long -> [fp+0x18] spill-single-def "Inlining Arg"
+; V25 tmp12 [V25,T21] ( 4, 4 ) int -> x1 "Inlining Arg" +; V26 tmp13 [V26,T17] ( 5, 5 ) long -> [fp+0x18] spill-single-def "Inlining Arg"
;* V27 tmp14 [V27 ] ( 0, 0 ) byref -> zero-ref single-def "Inlining Arg" ;* V28 tmp15 [V28 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V29 tmp16 [V29 ] ( 0, 0 ) byref -> zero-ref single-def "field V12._reference (fldOffset=0x0)" P-INDEP ;* V30 tmp17 [V30 ] ( 0, 0 ) int -> zero-ref "field V12._length (fldOffset=0x8)" P-INDEP ; V31 tmp18 [V31,T26] ( 4, 2 ) byref -> x0 "field V24._reference (fldOffset=0x0)" P-INDEP
-; V32 tmp19 [V32,T31] ( 3, 1.50) int -> x1 "field V24._length (fldOffset=0x8)" P-INDEP
+; V32 tmp19 [V32,T33] ( 3, 1.50) int -> x1 "field V24._length (fldOffset=0x8)" P-INDEP
; V33 tmp20 [V33,T02] ( 3, 24 ) ref -> x4 "arr expr"
-;* V34 tmp21 [V34,T11] ( 0, 0 ) ref -> zero-ref "arr expr" -;* V35 tmp22 [V35,T12] ( 0, 0 ) ref -> zero-ref "arr expr" -; V36 tmp23 [V36,T23] ( 3, 3 ) ref -> x2 single-def "arr expr" -;* V37 tmp24 [V37,T35] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
+;* V34 tmp21 [V34,T12] ( 0, 0 ) ref -> zero-ref "arr expr" +;* V35 tmp22 [V35,T13] ( 0, 0 ) ref -> zero-ref "arr expr" +; V36 tmp23 [V36,T16] ( 3, 6 ) ref -> x2 single-def "arr expr" +;* V37 tmp24 [V37,T32] ( 0, 0 ) ref -> zero-ref single-def "arr expr"
; V38 tmp25 [V38,T24] ( 3, 3 ) ref -> x0 single-def "arr expr" ; V39 tmp26 [V39,T36] ( 2, 0 ) ref -> x1 single-def "argument with side effect"
-; V40 cse0 [V40,T17] ( 2, 4.25) int -> x3 hoist "CSE - moderate" -; V41 cse1 [V41,T32] ( 3, 1.50) int -> x21 "CSE - moderate" -; V42 cse2 [V42,T06] ( 8, 7.25) ref -> x2 hoist multi-def "CSE - aggressive"
+; V40 cse0 [V40,T19] ( 2, 4.25) int -> x3 hoist "CSE - moderate" +; V41 cse1 [V41,T34] ( 3, 1.50) int -> x21 "CSE - moderate" +; V42 cse2 [V42,T05] ( 8, 8.25) ref -> x2 hoist multi-def "CSE - aggressive"
; V43 cse3 [V43,T28] ( 4, 2 ) int -> x4 "CSE - moderate"
-; V44 cse4 [V44,T04] ( 9, 18.50) int -> x25 multi-def "CSE - aggressive" -; V45 cse5 [V45,T03] ( 9, 18.50) byref -> x26 multi-def "CSE - aggressive" -; V46 cse6 [V46,T14] ( 4, 5.25) int -> registers hoist multi-def "CSE - aggressive"
+; V44 cse4 [V44,T04] ( 9, 20 ) int -> x25 multi-def "CSE - aggressive" +; V45 cse5 [V45,T03] ( 9, 20 ) byref -> x26 multi-def "CSE - aggressive" +; V46 cse6 [V46,T15] ( 4, 6.25) int -> registers hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 16 @@ -74,7 +74,7 @@ G_M25748_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by bgt G_M25748_IG05 ;; size=8 bbWeight=1 PerfScore 1.50 G_M25748_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
- tbnz w20, #31, G_M25748_IG19
+ tbnz w20, #31, G_M25748_IG20
ldr w0, [x19, #0x14] add w0, w0, #1 str w0, [x19, #0x14] @@ -96,12 +96,12 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 add w0, w4, #31 lsr w22, w0, #5 cmp w20, w4
- bge G_M25748_IG10
+ bge G_M25748_IG06
lsr w1, w20, #5 and w20, w20, #31 sxtw w23, w1 and w24, w4, #31
- cbnz w20, G_M25748_IG06
+ cbnz w20, G_M25748_IG07
neg w4, w24 add w4, w4, #32 movn w0, #0 @@ -113,7 +113,7 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 sub w3, w22, #1 ldr w25, [x0, #0x08] cmp w3, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
add x26, x0, #16 ; byrRegs +[x26] sub w0, w22, #1 @@ -138,14 +138,19 @@ G_M25748_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=800 ; gcrRegs -[x0 x2] ; byrRegs -[x26] ; gcr arg pop 0
- b G_M25748_IG10 - ;; size=152 bbWeight=0.50 PerfScore 18.00 -G_M25748_IG06: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ mov w6, w21 + b G_M25748_IG11 + ;; size=156 bbWeight=0.50 PerfScore 18.25 +G_M25748_IG06: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov w6, w21 + b G_M25748_IG11 + ;; size=8 bbWeight=0.25 PerfScore 0.38 +G_M25748_IG07: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
sub w0, w22, #1 cmp w23, w0
- bge G_M25748_IG12
+ bge G_M25748_IG13
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M25748_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25748_IG08: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
ldr x2, [x19, #0x08] ; gcrRegs +[x2] and w1, w20, #31 @@ -153,12 +158,12 @@ G_M25748_IG07: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, add w3, w3, #32 and w3, w3, #31 ;; size=20 bbWeight=0.25 PerfScore 1.25
-G_M25748_IG08: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG09: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref, isz
mov x4, x2 ; gcrRegs +[x4] ldr w25, [x4, #0x08] cmp w23, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
add x26, x4, #16 ; byrRegs +[x26] ldr w4, [x26, w23, UXTW #2] @@ -166,18 +171,18 @@ G_M25748_IG08: ; bbWeight=4, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, lsr w4, w4, w1 add w23, w23, #1 cmp w23, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
ldr w5, [x26, w23, UXTW #2] lsl w5, w5, w3 add w6, w21, #1 cmp w21, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
orr w4, w5, w4 str w4, [x26, w21, UXTW #2] cmp w23, w0
- blt G_M25748_IG11
+ blt G_M25748_IG12
;; size=76 bbWeight=4 PerfScore 78.00
-G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG10: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x2] ; byrRegs -[x26] neg w2, w24 @@ -188,7 +193,7 @@ G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ; gcrRegs +[x2] ldr w25, [x2, #0x08] cmp w23, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
add x26, x2, #16 ; byrRegs +[x26] ldr w1, [x26, w23, UXTW #2] @@ -196,65 +201,64 @@ G_M25748_IG09: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, sxtw w1, w6 add w6, w1, #1 cmp w1, w25
- bhs G_M25748_IG18
+ bhs G_M25748_IG19
and w2, w20, #31 ; gcrRegs -[x2] lsr w0, w0, w2 str w0, [x26, w1, UXTW #2]
- mov w21, w6 - ;; size=76 bbWeight=0.50 PerfScore 9.25 -G_M25748_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
+ ;; size=72 bbWeight=1 PerfScore 18.00 +G_M25748_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x26] ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- sub w1, w22, w21 - cbnz x0, G_M25748_IG13 - orr w1, w21, w1 - cbnz w1, G_M25748_IG20
+ sub w1, w22, w6 + cbnz x0, G_M25748_IG14 + orr w6, w6, w1 + cbnz w6, G_M25748_IG21
mov x0, xzr ; gcrRegs -[x0] ; byrRegs +[x0] mov w1, wzr
- b G_M25748_IG14
+ b G_M25748_IG15
;; size=32 bbWeight=0.50 PerfScore 4.00
-G_M25748_IG11: ; bbWeight=2, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
+G_M25748_IG12: ; bbWeight=2, gcrefRegs=80004 {x2 x19}, byrefRegs=0000 {}, byref
; gcrRegs +[x2] ; byrRegs -[x0] mov w21, w6
- b G_M25748_IG08
+ b G_M25748_IG09
;; size=8 bbWeight=2 PerfScore 3.00
-G_M25748_IG12: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M25748_IG13: ; bbWeight=0.25, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x2] mov w6, w21
- b G_M25748_IG09
+ b G_M25748_IG10
;; size=8 bbWeight=0.25 PerfScore 0.38
-G_M25748_IG13: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
+G_M25748_IG14: ; bbWeight=0.50, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[x0]
- mov w2, w21
+ mov w2, w6
add x2, x2, w1, UXTW ldr w3, [x0, #0x08] cmp x2, x3
- bhi G_M25748_IG20
+ bhi G_M25748_IG21
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] ...

+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, 57.75) byref -> x19 this single-def +; V01 arg1 [V01,T10] ( 8, 6 ) byref -> x21 single-def +; V02 arg2 [V02,T05] ( 9, 13.50) byref -> x20 single-def +; V03 arg3 [V03,T11] ( 4, 3.50) ref -> x22 class-hnd single-def <System.Globalization.DateTimeFormatInfo> +; V04 loc0 [V04,T07] ( 3, 12 ) int -> x2 +; V05 loc1 [V05,T19] ( 3, 2 ) 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.50) int -> x2 "CSE - moderate" +; V63 cse1 [V63,T17] ( 3, 2.50) int -> x23 "CSE - moderate" +; V64 cse2 [V64,T18] ( 3, 2.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,111 +93,114 @@ 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_IG11
;; 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=1, 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_IG12 + ;; size=16 bbWeight=1 PerfScore 5.00 +G_M44776_IG04: ; bbWeight=0.50, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
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
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 - 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
+ cbnz w0, G_M44776_IG10 + ;; size=32 bbWeight=0.50 PerfScore 4.00 +G_M44776_IG05: ; bbWeight=1, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref + b G_M44776_IG21 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M44776_IG06: ; 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 - 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
+ tbnz w0, #7, G_M44776_IG10 + b G_M44776_IG21 + ;; size=24 bbWeight=0.50 PerfScore 3.25 +G_M44776_IG07: ; 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_IG23 + 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 w0, [x19, #0x0C] cmp w0, #0xD1FFAB1E
- blo G_M44776_IG10
+ blo G_M44776_IG09
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_IG08: ; bbWeight=4, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref + b G_M44776_IG10
;; size=4 bbWeight=4 PerfScore 4.00
-G_M44776_IG10: ; bbWeight=16, gcrefRegs=400000 {x22}, byrefRegs=380000 {x19 x20 x21}, byref, isz
+G_M44776_IG09: ; 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_IG10: ; 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_IG07 + ;; size=24 bbWeight=4 PerfScore 36.00 +G_M44776_IG11: ; bbWeight=1, 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
+ b G_M44776_IG22 + ;; size=12 bbWeight=1 PerfScore 2.50 +G_M44776_IG12: ; 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
+ cmp w24, 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
+ ;; size=32 bbWeight=0.50 PerfScore 5.25 +G_M44776_IG13: ; 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_IG14: ; 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
- bhs G_M44776_IG22
+ bhs G_M44776_IG23
...

+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,101.24) 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.99, 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.99 PerfScore 0.50 +G_M4100_IG06: ; bbWeight=0.99, 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.99 PerfScore 2.48 +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 503.18, 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.ReadOnlySpan1[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=1.00, 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=1.00 PerfScore 0.50 +G_M49737_IG06: ; bbWeight=1.00, 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=1.00 PerfScore 6.52 +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 1722.86, 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.ReadOnlySpan1[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=1.00, 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=1.00 PerfScore 0.50 +G_M49737_IG06: ; bbWeight=1.00, 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=1.00 PerfScore 6.53 +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 1722.86, 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)

+20 (+13.51%) : 72810.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.BigStruct]:InsertionSort(System.Span1[System.Collections.BigStruct]) (Tier1)

@@ -10,11 +10,11 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.BigStruct]>
-; V01 loc0 [V01,T09] ( 5, 97.09) int -> x2
+; V01 loc0 [V01,T07] ( 5, 97.09) int -> x2
; V02 loc1 [V02,T11] ( 2, 48.04) struct (32) [fp+0x10] do-not-enreg[SF] ld-addr-op <System.Collections.BigStruct>
-; V03 loc2 [V03,T00] ( 7,213.20) int -> x2
+; V03 loc2 [V03,T01] ( 7,213.20) int -> x2
;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T03] ( 2,116.86) byref -> x6 "impAppendStmt"
+; V05 tmp1 [V05,T04] ( 2,116.86) byref -> x6 "impAppendStmt"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]> ;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]> @@ -22,10 +22,10 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct (32) zero-ref do-not-enreg[SF] "Inlining Arg" <System.Collections.BigStruct>
-;* V13 tmp9 [V13,T05] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" -; V14 tmp10 [V14,T01] ( 2,150.57) int -> x6 "Inlining Arg"
+;* V13 tmp9 [V13,T08] ( 0, 0 ) int -> zero-ref "Inline return value spill temp" +; V14 tmp10 [V14,T02] ( 3,180.46) int -> x6 "Inlining Arg"
;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.BigStruct]>
-; V16 tmp12 [V16,T02] ( 6,145.12) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp12 [V16,T03] ( 6,145.12) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V17 tmp13 [V17,T13] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP ;* V18 tmp14 [V18 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V19 tmp15 [V19 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP @@ -37,11 +37,11 @@ ;* V25 tmp21 [V25 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V27 tmp23 [V27 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP
-; V28 tmp24 [V28,T06] ( 3, 85.69) int -> x5 "V02.[012..016)"
+; V28 tmp24 [V28,T06] ( 4,100.63) int -> x5 "V02.[012..016)"
;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "V12.[012..016)"
-; V30 tmp26 [V30,T07] ( 3, 62.57) byref -> x4 "Spilling address for field-by-field copy" -; V31 tmp27 [V31,T08] ( 3,225.69) byref -> x2 "Spilling address for field-by-field copy" -; V32 cse0 [V32,T04] ( 3,104.50) long -> x4 "CSE - aggressive"
+; V30 tmp26 [V30,T09] ( 3, 62.57) byref -> x4 "Spilling address for field-by-field copy" +; V31 tmp27 [V31,T00] ( 3,225.69) byref -> x2 "Spilling address for field-by-field copy" +; V32 cse0 [V32,T05] ( 3,104.50) long -> x4 "CSE - aggressive"
; V33 cse1 [V33,T12] ( 3, 39.61) int -> x1 "CSE - aggressive" ; V34 cse2 [V34,T10] ( 3, 58.47) int -> x3 "CSE - aggressive" ; @@ -56,7 +56,7 @@ G_M17128_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov w2, wzr sub w1, w1, #1 cmp w1, #0
- ble G_M17128_IG08
+ ble G_M17128_IG12
;; size=16 bbWeight=1 PerfScore 2.50 G_M17128_IG03: ; bbWeight=10.43, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref add w3, w2, #1 @@ -82,7 +82,7 @@ G_M17128_IG04: ; bbWeight=29.22, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ;; size=28 bbWeight=29.22 PerfScore 204.51 G_M17128_IG05: ; bbWeight=39.87, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs -[x4 x6]
- tbnz w2, #31, G_M17128_IG07
+ tbnz w2, #31, G_M17128_IG08
;; size=4 bbWeight=39.87 PerfScore 39.87 G_M17128_IG06: ; bbWeight=37.64, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz sbfiz x4, x2, #5, #32 @@ -91,9 +91,12 @@ G_M17128_IG06: ; bbWeight=37.64, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ldr w6, [x6, #0x0C] ; byrRegs -[x6] cmp w5, w6
- blt G_M17128_IG04
+ bge G_M17128_IG10
;; size=20 bbWeight=37.64 PerfScore 225.86
-G_M17128_IG07: ; bbWeight=37.61, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M17128_IG07: ; bbWeight=22.67, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M17128_IG04 + ;; size=4 bbWeight=22.67 PerfScore 22.67 +G_M17128_IG08: ; bbWeight=37.61, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1 sbfiz x2, x2, #5, #32 add x2, x0, x2 @@ -106,13 +109,25 @@ G_M17128_IG07: ; bbWeight=37.61, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, cmp w2, w1 blt G_M17128_IG03 ;; size=36 bbWeight=37.61 PerfScore 300.91
-G_M17128_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M17128_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M17128_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M17128_IG10: ; bbWeight=14.94, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + cmp w5, w6 + ble G_M17128_IG08 + ;; size=8 bbWeight=14.94 PerfScore 22.42 +G_M17128_IG11: ; bbWeight=14.94, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M17128_IG08 + ;; size=4 bbWeight=14.94 PerfScore 14.94 +G_M17128_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x30 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 148, prolog size 8, PerfScore 881.44, instruction count 37, allocated bytes for code 148 (MethodHash=3829bd17) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
+; Total bytes of code 168, prolog size 8, PerfScore 942.46, instruction count 42, allocated bytes for code 168 (MethodHash=3829bd17) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
; ============================================================ Unwind Info: @@ -123,7 +138,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 37 (0x00025) Actual length = 148 (0x000094)
+ Function Length : 42 (0x0002a) Actual length = 168 (0x0000a8)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+19.23%) : 47618.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span1[System.Collections.IntStruct]) (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.IntStruct]>
-; V01 loc0 [V01,T06] ( 5, 95.69) int -> x2
+; V01 loc0 [V01,T04] ( 5, 95.69) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct> ; V03 loc2 [V03,T00] ( 8,239.38) int -> x2 ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -22,12 +22,12 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> ; V16 tmp12 [V16,T01] ( 6,143.27) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V17 tmp13 [V17,T09] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 84.53) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4, 98.96) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP @@ -36,7 +36,7 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 74.37) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 88.80) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ; V30 cse0 [V30,T08] ( 3, 39.16) int -> x1 "CSE - aggressive" @@ -53,7 +53,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov w2, wzr sub w1, w1, #1 cmp w1, #0
- ble G_M24360_IG08
+ ble G_M24360_IG12
;; size=16 bbWeight=1 PerfScore 2.50 G_M24360_IG03: ; bbWeight=10.19, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref add w3, w2, #1 @@ -71,27 +71,42 @@ G_M24360_IG04: ; bbWeight=28.87, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ;; size=24 bbWeight=28.87 PerfScore 187.63 G_M24360_IG05: ; bbWeight=39.38, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs -[x5]
- tbnz w2, #31, G_M24360_IG07
+ tbnz w2, #31, G_M24360_IG08
;; size=4 bbWeight=39.38 PerfScore 39.38 G_M24360_IG06: ; bbWeight=37.19, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ldr w5, [x0, w2, SXTW #2] cmp w4, w5
- blt G_M24360_IG04
+ bge G_M24360_IG10
;; size=12 bbWeight=37.19 PerfScore 167.34
-G_M24360_IG07: ; bbWeight=37.16, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M24360_IG07: ; bbWeight=22.73, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG04 + ;; size=4 bbWeight=22.73 PerfScore 22.73 +G_M24360_IG08: ; bbWeight=37.16, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1 str w4, [x0, w2, SXTW #2] sxtw w2, w3 cmp w2, w1 blt G_M24360_IG03 ;; size=20 bbWeight=37.16 PerfScore 130.05
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M24360_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M24360_IG10: ; bbWeight=14.43, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + cmp w4, w5 + ble G_M24360_IG08 + ;; size=8 bbWeight=14.43 PerfScore 21.64 +G_M24360_IG11: ; bbWeight=14.42, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG08 + ;; size=4 bbWeight=14.42 PerfScore 14.42 +G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 576.26, instruction count 26, allocated bytes for code 104 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 636.05, instruction count 31, allocated bytes for code 124 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================ Unwind Info: @@ -102,7 +117,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+20 (+19.23%) : 58246.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span1[System.Collections.IntStruct]) (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ;* V00 arg0 [V00 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.Span`1[System.Collections.IntStruct]>
-; V01 loc0 [V01,T06] ( 5, 96.34) int -> x2
+; V01 loc0 [V01,T04] ( 5, 96.34) int -> x2
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct> ; V03 loc2 [V03,T00] ( 8,240.08) int -> x2 ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -22,12 +22,12 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> ; V16 tmp12 [V16,T01] ( 6,143.84) byref -> x0 single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V17 tmp13 [V17,T09] ( 2, 2 ) int -> x1 single-def "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 85.10) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4, 99.76) int -> x4 "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP @@ -36,7 +36,7 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 74.86) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 89.52) int -> x5 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ; V30 cse0 [V30,T08] ( 3, 39.40) int -> x1 "CSE - aggressive" @@ -53,7 +53,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byre mov w2, wzr sub w1, w1, #1 cmp w1, #0
- ble G_M24360_IG08
+ ble G_M24360_IG12
;; size=16 bbWeight=1 PerfScore 2.50 G_M24360_IG03: ; bbWeight=10.27, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref add w3, w2, #1 @@ -71,27 +71,42 @@ G_M24360_IG04: ; bbWeight=28.87, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, ;; size=24 bbWeight=28.87 PerfScore 187.65 G_M24360_IG05: ; bbWeight=39.50, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ; byrRegs -[x5]
- tbnz w2, #31, G_M24360_IG07
+ tbnz w2, #31, G_M24360_IG08
;; size=4 bbWeight=39.50 PerfScore 39.50 G_M24360_IG06: ; bbWeight=37.43, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz ldr w5, [x0, w2, SXTW #2] cmp w4, w5
- blt G_M24360_IG04
+ bge G_M24360_IG10
;; size=12 bbWeight=37.43 PerfScore 168.43
-G_M24360_IG07: ; bbWeight=37.40, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
+G_M24360_IG07: ; bbWeight=22.74, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG04 + ;; size=4 bbWeight=22.74 PerfScore 22.74 +G_M24360_IG08: ; bbWeight=37.40, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz
add w2, w2, #1 str w4, [x0, w2, SXTW #2] sxtw w2, w3 cmp w2, w1 blt G_M24360_IG03 ;; size=20 bbWeight=37.40 PerfScore 130.90
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x0] + b G_M24360_IG12 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M24360_IG10: ; bbWeight=14.66, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref, isz + ; byrRegs +[x0] + cmp w4, w5 + ble G_M24360_IG08 + ;; size=8 bbWeight=14.66 PerfScore 21.99 +G_M24360_IG11: ; bbWeight=14.65, gcrefRegs=0000 {}, byrefRegs=0001 {x0}, byref + b G_M24360_IG08 + ;; size=4 bbWeight=14.65 PerfScore 14.65 +G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[x0] ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=1 PerfScore 2.00
-; Total bytes of code 104, prolog size 8, PerfScore 578.70, instruction count 26, allocated bytes for code 104 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 124, prolog size 8, PerfScore 639.08, instruction count 31, allocated bytes for code 124 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================ Unwind Info: @@ -102,7 +117,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 26 (0x0001a) Actual length = 104 (0x000068)
+ Function Length : 31 (0x0001f) Actual length = 124 (0x00007c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

benchmarks.run_tiered.windows.arm64.checked.mch

-32 (-1.75%) : 16292.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)

@@ -22,7 +22,7 @@ ; V11 loc7 [V11,T09] ( 18, 40 ) ushort -> x24 ;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 loc9 [V13,T43] ( 3, 6 ) ubyte -> x0
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [fp-0x80] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T18] ( 7, 14 ) ushort -> x25 ;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune> ; V17 loc13 [V17,T28] ( 4, 8 ) int -> x27 @@ -343,8 +343,9 @@ G_M13139_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
+ mov w22, w25
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 28.00
+ ;; size=44 bbWeight=2 PerfScore 29.00
G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -354,8 +355,9 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
+ mov w22, w25
b G_M13139_IG45
- ;; size=28 bbWeight=2 PerfScore 14.00
+ ;; size=32 bbWeight=2 PerfScore 15.00
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 bgt G_M13139_IG21 @@ -383,9 +385,8 @@ G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ;; size=28 bbWeight=2 PerfScore 13.00 G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref add w22, w22, #2
- mov w25, w22
b G_M13139_IG45
- ;; size=12 bbWeight=2 PerfScore 4.00
+ ;; size=8 bbWeight=2 PerfScore 3.00
G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref sbfiz x0, x22, #1, #32 add x0, x19, x0 @@ -402,9 +403,8 @@ G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ; gcr arg pop 0 add w0, w0, w22 sub w22, w0, #1
- mov w25, w22
b G_M13139_IG45
- ;; size=64 bbWeight=2 PerfScore 24.00
+ ;; size=60 bbWeight=2 PerfScore 23.00
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -415,9 +415,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -427,9 +426,8 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22
b G_M13139_IG45
- ;; size=32 bbWeight=2 PerfScore 15.00
+ ;; size=28 bbWeight=2 PerfScore 14.00
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz cmp w24, #127 ble G_M13139_IG43 @@ -667,19 +665,16 @@ G_M13139_IG40: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, cmp w24, w27 blt G_M13139_IG35 ;; size=112 bbWeight=16 PerfScore 344.00
-G_M13139_IG41: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
+G_M13139_IG41: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
; byrRegs -[x0] ldrb w0, [fp, #-0x80] // [V14 loc10]
- cbz w0, G_M13139_IG42
+ cbz w0, G_M13139_IG45 + ;; size=8 bbWeight=4 PerfScore 12.00 +G_M13139_IG42: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref
add w27, w22, #1 sxtw w22, w27
- mov w25, w22
b G_M13139_IG45
- ;; size=24 bbWeight=2 PerfScore 11.00 -G_M13139_IG42: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref - mov w25, w22 - b G_M13139_IG45 - ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=2 PerfScore 4.00
G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz ldr w0, [fp, #-0x70] // [V05 loc1+0x08] ldr x2, [fp, #-0x68] // [V05 loc1+0x10] @@ -690,9 +685,8 @@ G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b strh w1, [x2, w0, UXTW #2] add w0, w0, #1 str w0, [fp, #-0x70] // [V05 loc1+0x08]
- mov w25, w22
b G_M13139_IG45
- ;; size=40 bbWeight=2 PerfScore 23.00
+ ;; size=36 bbWeight=2 PerfScore 22.00
G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref ; byrRegs -[x2] sub x0, fp, #120 // [V05 loc1] @@ -702,14 +696,12 @@ G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, b ldr x2, [x2] blr x2 ; gcr arg pop 0
- mov w25, w22 - ;; size=28 bbWeight=2 PerfScore 13.00
+ ;; size=24 bbWeight=2 PerfScore 12.00
G_M13139_IG45: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=800000 {x23}, byref, isz
- add w25, w25, #1 - cmp w25, w20 - mov w22, w25
+ add w22, w22, #1 + cmp w22, w20
blt G_M13139_IG07
- ;; size=16 bbWeight=4 PerfScore 10.00
+ ;; size=12 bbWeight=4 PerfScore 8.00
G_M13139_IG46: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[x23] sub x0, fp, #120 // [V05 loc1] @@ -772,7 +764,7 @@ G_M13139_IG50: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref brk_windows #0 ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1828, prolog size 76, PerfScore 1420.00, instruction count 457, allocated bytes for code 1828 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
+; Total bytes of code 1796, prolog size 76, PerfScore 1417.50, instruction count 449, allocated bytes for code 1796 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
; ============================================================ Unwind Info: @@ -783,7 +775,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 457 (0x001c9) Actual length = 1828 (0x000724)
+ Function Length : 449 (0x001c1) Actual length = 1796 (0x000704)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-8 (-1.01%) : 31939.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)

@@ -22,20 +22,20 @@ ; V11 tmp2 [V11,T25] ( 4, 16 ) 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"
+; V14 tmp5 [V14,T07] ( 6, 24 ) ref -> x3 "arr expr"
; V15 cse0 [V15,T06] ( 8, 26.89) 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" ; 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,T15] ( 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, 20.95) long -> x10 "CSE - aggressive" +; V23 cse8 [V23,T03] ( 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"
+; V27 cse12 [V27,T23] ( 6, 0.36) long -> x10 "CSE - conservative"
; ; Lcl frame size = 0 @@ -65,18 +65,18 @@ G_M64421_IG03: ; bbWeight=1, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x 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
+ bhs G_M64421_IG28
add x4, x2, #16 ; byrRegs +[x4] mov w10, w5 ldr w4, [x4, x10, LSL #2] ; byrRegs -[x4] cmp w4, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
mov w4, w4 ldr d16, [x7, x4, LSL #3] cmp w5, w9
- bhs G_M64421_IG29
+ bhs G_M64421_IG28
ldr d17, [x7, x10, LSL #3] str d17, [x7, x4, LSL #3] cmn w6, #1 @@ -87,7 +87,7 @@ G_M64421_IG04: ; bbWeight=2, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x ;; 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
+ bhs G_M64421_IG28
str d16, [x7, w5, UXTW #3] add w5, w5, #1 cmp w5, w1 @@ -95,23 +95,23 @@ G_M64421_IG05: ; bbWeight=8, gcrefRegs=000D {x0 x2 x3}, byrefRegs=0180 {x ;; 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
+ sub w2, w1, #1 + sxtw w5, w2
tbnz w5, #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 ble G_M64421_IG16
- ldr w10, [x0, #0x08] - cmp w10, w5
+ ldr w4, [x0, #0x08] + cmp w4, w5
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, w5 + ldr d16, [x7, x10, LSL #3] + cmp w5, 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 @@ -120,28 +120,28 @@ G_M64421_IG09: ; bbWeight=1.98, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8} 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 w4, w5
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 @@ -150,24 +150,24 @@ G_M64421_IG11: ; bbWeight=15.68, gcrefRegs=0040 {x6}, byrefRegs=0180 {x7 ;; size=40 bbWeight=15.68 PerfScore 243.06 G_M64421_IG12: ; bbWeight=3.96, 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 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 @@ -176,92 +176,89 @@ G_M64421_IG13: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0180 {x7 x8} 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]
+ ; byrRegs -[x3] + ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- mov x2, x6 - ; gcrRegs +[x2] - ldr w0, [x2, #0x08]
+ mov x3, x6 + ; gcrRegs +[x3] + ldr w0, [x3, #0x08]
cmp w5, w0
- bhs G_M64421_IG29 - add x2, x2, #16 - ; gcrRegs -[x2] - ; byrRegs +[x2] - ldr d17, [x2, x11, LSL #3]
+ bhs G_M64421_IG28 + add x3, x3, #16 + ; gcrRegs -[x3] + ; byrRegs +[x3] + ldr d17, [x3, x10, LSL #3]
fdiv d17, d16, d17
- str d17, [x7, x11, LSL #3]
+ str d17, [x7, x10, LSL #3]
sub w5, w5, #1 tbz w5, #31, G_M64421_IG08 ;; size=44 bbWeight=3.96 PerfScore 110.88 G_M64421_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[x6]
- ; byrRegs -[x2 x7-x8]
+ ; byrRegs -[x3 x7-x8]
b G_M64421_IG21 ;; size=4 bbWeight=1 PerfScore 1.00 G_M64421_IG16: ; bbWeight=0.04, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz ; gcrRegs +[x0] ; byrRegs +[x7-x8] cmp w5, w9
- bhs G_M64421_IG29 - mov w11, w5 - ldr d16, [x7, x11, LSL #3] - cmp w5, w4
+ bhs G_M64421_IG28 + mov w10, w5 + ldr d16, [x7, x10, LSL #3] + cmp w5, w2
beq G_M64421_IG20 ;; size=24 bbWeight=0.04 PerfScore 0.26 G_M64421_IG17: ; bbWeight=0.02, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
- add w10, w5, #1 - cmp w10, w1
+ add w4, w5, #1 + cmp w4, w1
bge G_M64421_IG20 ;; size=12 bbWeight=0.02 PerfScore 0.04 G_M64421_IG18: ; bbWeight=0.01, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref
- ldr w2, [x0, #0x08]
+ ldr w3, [x0, #0x08]
;; size=4 bbWeight=0.01 PerfScore 0.03 G_M64421_IG19: ; bbWeight=0.16, gcrefRegs=0001 {x0}, byrefRegs=0180 {x7 x8}, byref, isz
- cmp w5, w2 - bhs G_M64421_IG29 - ldr x3, [x8, x11, LSL #3] - ; gcrRegs +[x3] - mov x6, x3
+ cmp w5, w3 + bhs G_M64421_IG28 + ldr x6, [x8, x10, LSL #3]
; gcrRegs +[x6]
- ldr w3, [x6, #0x08] - ; gcrRegs -[x3] - cmp w10, w3 - bhs G_M64421_IG29 - add x3, x6, #16 - ; byrRegs +[x3] - ldr d17, [x3, w10, UXTW #3] - cmp w10, w9 - bhs G_M64421_IG29 - ldr d18, [x7, w10, UXTW #3]
+ ldr w11, [x6, #0x08] + cmp w4, w11
...

-4 (-0.44%) : 30214.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)

@@ -14,26 +14,26 @@ ; V03 arg3 [V03,T34] ( 3, 3 ) float -> d10 single-def ; V04 arg4 [V04,T35] ( 3, 3 ) float -> d11 single-def ; V05 arg5 [V05,T36] ( 3, 3 ) float -> d12 single-def
-; V06 loc0 [V06,T08] ( 10, 14 ) ref -> x20 class-hnd exact single-def <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_0> -; V07 loc1 [V07,T39] ( 2, 3 ) double -> [fp+0x80] spill-single-def
+; V06 loc0 [V06,T07] ( 10, 20 ) ref -> x20 class-hnd exact single-def <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_0> +; V07 loc1 [V07,T40] ( 2, 3 ) double -> [fp+0x80] spill-single-def
; V08 loc2 [V08,T41] ( 2, 2 ) double -> [fp+0x78] spill-single-def ; V09 loc3 [V09,T31] ( 2, 9 ) double -> [fp+0x70] spill-single-def ; V10 loc4 [V10,T22] ( 2,129 ) simd16 -> d11 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
-; V11 loc5 [V11,T27] ( 2, 17 ) simd16 -> [fp+0x60] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> -; V12 loc6 [V12,T40] ( 2, 3 ) simd16 -> [fp+0x50] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]>
+; V11 loc5 [V11,T28] ( 2, 17 ) simd16 -> [fp+0x60] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> +; V12 loc6 [V12,T38] ( 2, 5 ) simd16 -> [fp+0x50] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]>
; V13 loc7 [V13,T23] ( 2,129 ) simd16 -> d14 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[long]> ; V14 loc8 [V14,T37] ( 3, 5 ) simd16 -> [fp+0x40] HFA(simd16) spill-single-def <System.Numerics.Vector`1[double]>
-; V15 loc9 [V15,T29] ( 5, 14 ) double -> [fp+0x38] -; V16 loc10 [V16,T21] ( 5,149 ) simd16 -> d15 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
+; V15 loc9 [V15,T27] ( 5, 18 ) double -> [fp+0x38] +; V16 loc10 [V16,T21] ( 5,153 ) simd16 -> d8 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[double]>
; V17 loc11 [V17,T02] ( 8, 70 ) ref -> x22 class-hnd exact <Algorithms.VectorDoubleRenderer+<>c__DisplayClass3_1> ; V18 loc12 [V18,T26] ( 3, 20 ) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[double]> ; V19 loc13 [V19,T20] ( 6,194 ) simd16 -> [fp+0x10] HFA(simd16) <System.Numerics.Vector`1[double]>
-; V20 loc14 [V20,T13] ( 7,784 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]> -; V21 loc15 [V21,T14] ( 7,784 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[double]> -; V22 loc16 [V22,T16] ( 5,416 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[long]> -; V23 loc17 [V23,T15] ( 6,656 ) simd16 -> d22 HFA(simd16) <System.Numerics.Vector`1[long]> -; V24 loc18 [V24,T18] ( 2,256 ) simd16 -> d23 HFA(simd16) <System.Numerics.Vector`1[double]> -; V25 loc19 [V25,T19] ( 2,256 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[double]>
+; V20 loc14 [V20,T13] ( 7,784 ) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[double]> +; V21 loc15 [V21,T14] ( 7,784 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]> +; V22 loc16 [V22,T16] ( 5,416 ) simd16 -> d10 HFA(simd16) <System.Numerics.Vector`1[long]> +; V23 loc17 [V23,T15] ( 6,656 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[long]> +; V24 loc18 [V24,T18] ( 2,256 ) simd16 -> d22 HFA(simd16) <System.Numerics.Vector`1[double]> +; V25 loc19 [V25,T19] ( 2,256 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[double]>
;* V26 loc20 [V26 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[double]> ;* V27 loc21 [V27 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[long]> ;* V28 loc22 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.Action`2[long,int]> @@ -49,15 +49,15 @@ ;* V38 tmp8 [V38 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) "Inline return value spill temp" <System.Numerics.Vector`1[double]> ; V39 tmp9 [V39,T12] ( 3, 3 ) ref -> x23 class-hnd exact single-def "Inline stloc first use temp" <double[]> ; V40 tmp10 [V40,T06] ( 6, 21 ) int -> x24 "Inline stloc first use temp"
-; V41 tmp11 [V41,T28] ( 2, 16 ) double -> d0 "Strict ordering of exceptions for Array store"
+; V41 tmp11 [V41,T29] ( 2, 16 ) double -> d0 "Strict ordering of exceptions for Array store"
;* V42 tmp12 [V42 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[double]>
-;* V43 tmp13 [V43,T07] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" -; V44 tmp14 [V44,T24] ( 3, 96 ) simd16 -> d8 HFA(simd16) ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]> -; V45 cse0 [V45,T17] ( 3,384 ) simd16 -> d20 "CSE - aggressive"
+;* V43 tmp13 [V43,T08] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" +; V44 tmp14 [V44,T24] ( 3, 96 ) simd16 -> d10 HFA(simd16) ld-addr-op "Inlining Arg" <System.Numerics.Vector`1[long]> +; V45 cse0 [V45,T17] ( 3,384 ) simd16 -> d19 "CSE - aggressive"
; V46 cse1 [V46,T09] ( 3, 10 ) long -> x21 "CSE - moderate" ; V47 cse2 [V47,T11] ( 2, 5 ) byref -> x25 hoist "CSE - moderate"
-; V48 cse3 [V48,T38] ( 4, 4 ) double -> d16 "CSE - moderate" -; V49 rat0 [V49,T30] ( 3, 12 ) simd16 -> d20 "ReplaceWithLclVar is creating a new local variable"
+; V48 cse3 [V48,T39] ( 4, 4 ) double -> d16 "CSE - moderate" +; V49 rat0 [V49,T30] ( 3, 12 ) simd16 -> d19 "ReplaceWithLclVar is creating a new local variable"
; V50 rat1 [V50,T25] ( 3, 96 ) simd16 -> d18 "ReplaceWithLclVar is creating a new local variable" ; V51 rat2 [V51,T04] ( 3, 24 ) ref -> x1 "delegate invoke call" ; @@ -174,11 +174,11 @@ G_M57953_IG03: ; bbWeight=4, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefReg G_M57953_IG04: ; bbWeight=1, gcrefRegs=980000 {x19 x20 x23}, byrefRegs=0000 {}, byref ; gcrRegs -[x22] ; byrRegs -[x25]
- ldr q9, [x23, #0x10] - str q9, [fp, #0x40] // [V14 loc8] - ldr d13, [fp, #0x78] // [V08 loc2]
+ ldr q13, [x23, #0x10] + str q13, [fp, #0x40] // [V14 loc8] + ldr d9, [fp, #0x78] // [V08 loc2]
str wzr, [x20, #0x20]
- dup v15.2d, v13.d[0]
+ dup v8.2d, v9.d[0]
b G_M57953_IG12 ;; size=24 bbWeight=1 PerfScore 9.00 G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 {}, byref, isz @@ -186,8 +186,8 @@ G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32
- mov v8.d[0], v15.d[1] - mov v9.d[0], v11.d[1]
+ mov v15.d[0], v8.d[1] + mov v13.d[0], v11.d[1]
mov v10.d[0], v14.d[1] bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] @@ -202,62 +202,62 @@ G_M57953_IG05: ; bbWeight=2, gcrefRegs=180000 {x19 x20}, byrefRegs=0000 { ; gcrRegs -[x0 x15] ; byrRegs -[x14] str wzr, [x22, #0x18]
- ldr d16, [fp, #0x80] // [V07 loc1] - dup v17.2d, v16.d[0] - str q17, [fp, #0x20] // [V18 loc12] - ldr q18, [fp, #0x40] // [V14 loc8] - mov v19.16b, v18.16b - fcmge v20.2d, v17.2d, v18.2d - umaxp v20.4s, v20.4s, v20.4s - umov x0, v20.d[0]
+ ldr d12, [fp, #0x80] // [V07 loc1] + dup v16.2d, v12.d[0] + str q16, [fp, #0x20] // [V18 loc12] + ldr q17, [fp, #0x40] // [V14 loc8] + mov v18.16b, v17.16b + fcmge v19.2d, v16.2d, v17.2d + umaxp v19.4s, v19.4s, v19.4s + umov x0, v19.d[0]
cmp x0, #0
- mov v15.d[1], v8.d[0] - mov v11.d[1], v9.d[0]
+ mov v8.d[1], v15.d[0] + mov v11.d[1], v13.d[0]
mov v14.d[1], v10.d[0] beq G_M57953_IG16 ;; size=100 bbWeight=2 PerfScore 46.00 G_M57953_IG06: ; bbWeight=16, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
- mov v20.16b, v19.16b - mov v21.16b, v15.16b - movi v8.4s, #0 - ldr q22, [@RWD32]
+ mov v19.16b, v18.16b + mov v20.16b, v8.16b + movi v10.4s, #0 + ldr q21, [@RWD32]
;; size=16 bbWeight=16 PerfScore 56.00 G_M57953_IG07: ; bbWeight=128, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz
+ fmul v22.2d, v19.2d, v19.2d
fmul v23.2d, v20.2d, v20.2d
- fmul v24.2d, v21.2d, v21.2d - fsub v23.2d, v23.2d, v24.2d - fmul v20.2d, v20.2d, v21.2d - fadd v21.2d, v20.2d, v20.2d - str q19, [fp, #0x10] // [V19 loc13] - fadd v20.2d, v23.2d, v19.2d - fadd v21.2d, v21.2d, v15.2d - add v8.2d, v8.2d, v22.2d
+ fsub v22.2d, v22.2d, v23.2d + fmul v19.2d, v19.2d, v20.2d + fadd v20.2d, v19.2d, v19.2d + str q18, [fp, #0x10] // [V19 loc13] + fadd v19.2d, v22.2d, v18.2d + fadd v20.2d, v20.2d, v8.2d + add v10.2d, v10.2d, v21.2d + fmul v22.2d, v19.2d, v19.2d
fmul v23.2d, v20.2d, v20.2d
- fmul v24.2d, v21.2d, v21.2d - fadd v23.2d, v23.2d, v24.2d - fcmge v23.2d, v11.2d, v23.2d - cmge v24.2d, v14.2d, v8.2d - and v23.2d, v23.2d, v24.2d
+ fadd v22.2d, v22.2d, v23.2d + fcmge v22.2d, v11.2d, v22.2d + cmge v23.2d, v14.2d, v10.2d
and v22.2d, v22.2d, v23.2d
- umaxp v23.4s, v22.4s, v22.4s - umov x0, v23.d[0]
+ and v21.2d, v21.2d, v22.2d + umaxp v22.4s, v21.4s, v21.4s + umov x0, v22.d[0]
cmp x0, #0
- ldr q19, [fp, #0x10] // [V19 loc13]
+ ldr q18, [fp, #0x10] // [V19 loc13]
bne G_M57953_IG07 ;; size=84 bbWeight=128 PerfScore 5184.00 G_M57953_IG08: ; bbWeight=16, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz ldr x23, [x22, #0x10] ; gcrRegs +[x23]
- str q19, [fp, #0x10] // [V19 loc13]
+ str q18, [fp, #0x10] // [V19 loc13]
cbnz x23, G_M57953_IG10 ;; size=12 bbWeight=16 PerfScore 80.00 G_M57953_IG09: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref ; gcrRegs -[x23] mov x0, x21
- mov v9.d[0], v8.d[1] - mov v10.d[0], v15.d[1] - mov v13.d[0], v11.d[1] - mov v12.d[0], v14.d[1]
+ mov v13.d[0], v10.d[1] + mov v15.d[0], v8.d[1] + mov v12.d[0], v11.d[1] + mov v9.d[0], v14.d[1]
bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0 @@ -281,28 +281,28 @@ G_M57953_IG09: ; bbWeight=8, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=00 bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x15] ; byrRegs -[x14]
- mov v8.d[1], v9.d[0] - mov v15.d[1], v10.d[0] - mov v11.d[1], v13.d[0] - mov v14.d[1], v12.d[0]
+ mov v10.d[1], v13.d[0] + mov v8.d[1], v15.d[0] + mov v11.d[1], v12.d[0] + mov v14.d[1], v9.d[0]
;; size=84 bbWeight=8 PerfScore 132.00 G_M57953_IG10: ; bbWeight=16, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRegs=0000 {}, byref, isz mov w1, wzr
- umov x1, v8.d[0]
+ umov x1, v10.d[0]
mov w2, wzr ldr x0, [x23, #0x08] ; gcrRegs +[x0] ldr x3, [x23, #0x18]
- mov v10.d[0], v15.d[1]
+ mov v15.d[0], v8.d[1]
mov v13.d[0], v11.d[1]
- mov v9.d[0], v14.d[1] - mov v12.d[0], v8.d[1]
+ mov v12.d[0], v14.d[1] + mov v9.d[0], v10.d[1]
blr x3 ; gcrRegs -[x0] ; gcr arg pop 0 mov w1, #1
- mov v8.d[1], v12.d[0] - umov x1, v8.d[1]
+ mov v10.d[1], v9.d[0] + umov x1, v10.d[1]
mov w2, #1 ldr x0, [x23, #0x08] ; gcrRegs +[x0] @@ -310,39 +310,38 @@ G_M57953_IG10: ; bbWeight=16, gcrefRegs=D80000 {x19 x20 x22 x23}, byrefRe blr x3 ; gcrRegs -[x0 x23] ; gcr arg pop 0
- ldr q8, [fp, #0x10] // [V19 loc13]
+ ldr q10, [fp, #0x10] // [V19 loc13]
ldr q16, [fp, #0x60] // [V11 loc5]
- fadd v8.2d, v8.2d, v16.2d
+ fadd v10.2d, v10.2d, v16.2d
ldr w0, [x22, #0x18] add w0, w0, #2 str w0, [x22, #0x18] ldr q17, [fp, #0x20] // [V18 loc12]
- fcmge v18.2d, v17.2d, v8.2d
+ fcmge v18.2d, v17.2d, v10.2d
umaxp v18.4s, v18.4s, v18.4s umov x0, v18.d[0] cmp x0, #0
- mov v15.d[1], v10.d[0]
+ mov v8.d[1], v15.d[0]
mov v11.d[1], v13.d[0]
- mov v14.d[1], v9.d[0] - mov v19.16b, v8.16b
+ mov v14.d[1], v12.d[0] + mov v18.16b, v10.16b
...

+4 (+0.41%) : 44819.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():this (Tier1)

@@ -8,7 +8,7 @@ ; 0 inlinees with PGO data; 8 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 22, 40 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper>
+; V00 this [V00,T01] ( 22, 40.50) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper>
;* V01 loc0 [V01,T18] ( 0, 0 ) ref -> zero-ref class-hnd exact EH-live single-def <System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper> ; V02 loc1 [V02 ] ( 6, 2.50) ubyte -> [fp+0x28] do-not-enreg[X] addr-exposed ld-addr-op ;* V03 loc2 [V03 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Type> @@ -307,7 +307,7 @@ G_M2455_IG17: ; bbWeight=4, gcrefRegs=800000 {x23}, byrefRegs=200000 {x21 cmp w20, w19 bgt G_M2455_IG06 ;; size=12 bbWeight=4 PerfScore 8.00
-G_M2455_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M2455_IG18: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x23] ; byrRegs -[x21] ldr x23, [fp, #0x18] // [V00 this] @@ -315,12 +315,10 @@ G_M2455_IG18: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byre dmb ish mov w0, #1 strb w0, [x23, #0x4D]
- mov x0, x23 - ; gcrRegs +[x0]
b G_M2455_IG22
- ;; size=24 bbWeight=0.50 PerfScore 7.50
+ ;; size=20 bbWeight=1 PerfScore 14.50
G_M2455_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; gcrRegs -[x0 x23]
+ ; gcrRegs -[x23]
movz x1, #0xD1FFAB1E // code for System.Threading.Monitor:ThrowLockTakenException() movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -394,16 +392,20 @@ G_M2455_IG21: ; bbWeight=2, gcrefRegs=1400000 {x22 x24}, byrefRegs=200000 ; byrRegs -[x14] b G_M2455_IG09 ;; size=44 bbWeight=2 PerfScore 23.00
-G_M2455_IG22: ; bbWeight=0.50, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x22 x24] +[x0]
+G_M2455_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x22 x24]
; byrRegs -[x21]
- ldrb w1, [fp, #0x28] // [V02 loc1] - cbz w1, G_M2455_IG23
+ ldr x23, [fp, #0x18] // [V00 this] + ; gcrRegs +[x23] + ldrb w0, [fp, #0x28] // [V02 loc1] + cbz w0, G_M2455_IG23 + mov x0, x23 + ; gcrRegs +[x0]
; GC ptr vars -{V00} bl <unknown method>
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x23]
; gcr arg pop 0
- ;; size=12 bbWeight=0.50 PerfScore 2.00
+ ;; size=20 bbWeight=0.50 PerfScore 3.25
G_M2455_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ldr x27, [sp, #0x78] ldp x25, x26, [sp, #0x68] @@ -444,7 +446,7 @@ G_M2455_IG26: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ret lr ;; size=28 bbWeight=0 PerfScore 0.00
-; Total bytes of code 976, prolog size 44, PerfScore 590.62, instruction count 244, allocated bytes for code 976 (MethodHash=b50cf668) for method System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():this (Tier1)
+; Total bytes of code 980, prolog size 44, PerfScore 598.88, instruction count 245, allocated bytes for code 980 (MethodHash=b50cf668) for method System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():this (Tier1)
; ============================================================ Unwind Info: @@ -455,7 +457,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 225 (0x000e1) Actual length = 900 (0x000384)
+ Function Length : 226 (0x000e2) Actual length = 904 (0x000388)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+8 (+0.49%) : 29902.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1ulong

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T08] ( 22, 16 ) ref -> x20 class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V02 arg2 [V02,T13] ( 20, 11 ) ref -> x21 class-hnd single-def <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V03 arg3 [V03,T21] ( 7, 4.50) ubyte -> x22
-; V04 arg4 [V04,T23] ( 4, 3 ) ubyte -> x23 single-def
+; V04 arg4 [V04,T24] ( 4, 3 ) ubyte -> x23 single-def
;* V05 loc0 [V05 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V06 loc1 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ; V07 loc2 [V07 ] ( 2, 1 ) ref -> [fp+0x70] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> @@ -20,11 +20,11 @@ ; V09 loc4 [V09,T00] ( 18, 42.50) ref -> x23 class-hnd single-def <System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]]> ; V10 loc5 [V10,T31] ( 3, 3 ) int -> x20 ; V11 loc6 [V11,T22] ( 3, 6.50) ref -> x22 class-hnd exact single-def <<unknown class>>
-; V12 loc7 [V12,T24] ( 4, 5 ) ubyte -> x24
+; V12 loc7 [V12,T23] ( 4, 5.50) ubyte -> x24
; V13 loc8 [V13,T01] ( 13, 36.50) int -> x25
-; V14 loc9 [V14,T17] ( 4, 9 ) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V14 loc9 [V14,T17] ( 4, 9.50) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V15 loc10 [V15,T02] ( 8, 25 ) int -> x21
-; V16 loc11 [V16,T18] ( 4, 9 ) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V16 loc11 [V16,T18] ( 4, 9.50) ref -> x2 class-hnd <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
; V17 loc12 [V17,T03] ( 8, 25 ) int -> x21 ;* V18 loc13 [V18 ] ( 0, 0 ) long -> zero-ref ld-addr-op ;# V19 OutArgs [V19 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -49,7 +49,7 @@ ; V38 tmp19 [V38,T34] ( 4, 2 ) long -> x23 "Inline stloc first use temp" ;* V39 tmp20 [V39 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ; V40 tmp21 [V40,T32] ( 4, 2 ) ref -> x24 ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
-; V41 tmp22 [V41,T15] ( 10, 10 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
+; V41 tmp22 [V41,T16] ( 10, 10 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]>
;* V42 tmp23 [V42,T42] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V43 tmp24 [V43,T29] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ; V44 tmp25 [V44 ] ( 8, 8 ) struct (40) [fp+0x40] do-not-enreg[XS] must-init addr-exposed "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> @@ -62,7 +62,7 @@ ; V51 tmp32 [V51 ] ( 8, 8 ) struct (40) [fp+0x18] do-not-enreg[XS] must-init addr-exposed "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1+NodeCacheKey[ulong]> ;* V52 tmp33 [V52 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "Inlining Arg" <System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]> ;* V53 tmp34 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp"
-; V54 tmp35 [V54,T16] ( 8, 9 ) ref -> registers "Single return block return value"
+; V54 tmp35 [V54,T15] ( 8, 11 ) ref -> registers "Single return block return value"
; V55 tmp36 [V55,T27] ( 6, 3 ) int -> x22 "field V24._info (fldOffset=0x0)" P-INDEP ;* V56 tmp37 [V56 ] ( 0, 0 ) int -> zero-ref "field V46._info (fldOffset=0x0)" P-INDEP ;* V57 tmp38 [V57 ] ( 0, 0 ) ref -> zero-ref single-def "V39.[000..008)" @@ -148,20 +148,24 @@ G_M47816_IG05: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {} ; gcrRegs -[x19 x21] mov x0, x20 ; gcrRegs +[x0]
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=8 bbWeight=0.50 PerfScore 0.75
+ ;; size=12 bbWeight=0.50 PerfScore 1.00
G_M47816_IG06: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19 x21]
+ ; gcrRegs -[x0 x2] +[x19 x21]
ldr x24, [x19, #0x18] ; gcrRegs +[x24] cmp x20, x24 bne G_M47816_IG07 mov x0, x21 ; gcrRegs +[x0]
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=20 bbWeight=0.50 PerfScore 3.00
+ ;; size=24 bbWeight=0.50 PerfScore 3.25
G_M47816_IG07: ; bbWeight=0.50, gcrefRegs=1380000 {x19 x20 x21 x24}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0]
+ ; gcrRegs -[x0 x2]
ldr w0, [x21, #0x28] cmp w0, #4 beq G_M47816_IG08 @@ -220,10 +224,12 @@ G_M47816_IG12: ; bbWeight=0.50, gcrefRegs=1180000 {x19 x20 x24}, byrefReg blr x5 ; gcrRegs -[x1-x2 x19-x20 x24] ; gcr arg pop 0
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=44 bbWeight=0.50 PerfScore 4.50
+ ;; size=48 bbWeight=0.50 PerfScore 4.75
G_M47816_IG13: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19-x21 x24-x25]
+ ; gcrRegs -[x0 x2] +[x19-x21 x24-x25]
mov x0, x25 ; gcrRegs +[x0] mov x1, x19 @@ -271,10 +277,12 @@ G_M47816_IG13: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, blr x5 ; gcrRegs -[x1-x2 x19-x21 x24-x25] ; gcr arg pop 0
+ mov x2, x0 + ; gcrRegs +[x2]
b G_M47816_IG33
- ;; size=132 bbWeight=0.50 PerfScore 15.50
+ ;; size=136 bbWeight=0.50 PerfScore 15.75
G_M47816_IG14: ; bbWeight=0.50, gcrefRegs=3380000 {x19 x20 x21 x24 x25}, byrefRegs=0000 {}, byref, isz
- ; gcrRegs -[x0] +[x19-x21 x24-x25]
+ ; gcrRegs -[x0 x2] +[x19-x21 x24-x25]
tst w23, #255 beq G_M47816_IG15 mov x0, x20 @@ -317,9 +325,9 @@ G_M47816_IG16: ; bbWeight=4, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs cmp w1, #4 beq G_M47816_IG16 ;; size=28 bbWeight=4 PerfScore 48.00
-G_M47816_IG17: ; bbWeight=0.50, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref
+G_M47816_IG17: ; bbWeight=1, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, byref
b G_M47816_IG19
- ;; size=4 bbWeight=0.50 PerfScore 0.50
+ ;; size=4 bbWeight=1 PerfScore 1.00
G_M47816_IG18: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] mov w22, wzr @@ -341,7 +349,7 @@ G_M47816_IG20: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs G_M47816_IG21: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz ldr w0, [x20, #0x28] cmp w0, #4
- bne G_M47816_IG34
+ bne G_M47816_IG35
;; size=12 bbWeight=0.50 PerfScore 2.25 G_M47816_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs=0000 {}, byref, isz movz x22, #0xD1FFAB1E @@ -401,17 +409,17 @@ G_M47816_IG22: ; bbWeight=0.50, gcrefRegs=380000 {x19 x20 x21}, byrefRegs mov w25, wzr ldr w0, [x23, #0x10] cmp w0, #0
- ble G_M47816_IG30
+ ble G_M47816_IG31
;; size=164 bbWeight=0.50 PerfScore 18.25 G_M47816_IG23: ; bbWeight=4, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ldr w0, [x23, #0x10] cmp w25, w0
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x0, [x23, #0x08] ; gcrRegs +[x0] ldr w1, [x0, #0x08] cmp w25, w1
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] @@ -432,12 +440,12 @@ G_M47816_IG23: ; bbWeight=4, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefReg G_M47816_IG24: ; bbWeight=2, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefRegs=0000 {}, byref, isz ldr w2, [x23, #0x10] cmp w25, w2
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x2, [x23, #0x08] ; gcrRegs +[x2] ldr w0, [x2, #0x08] cmp w25, w0
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -461,7 +469,7 @@ G_M47816_IG25: ; bbWeight=2, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefReg ; gcrRegs +[x2] ldr w0, [x23, #0x10] cmp w25, w0
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x0, [x23, #0x08] ; gcrRegs +[x0] sxtw x1, w25 @@ -482,25 +490,27 @@ G_M47816_IG26: ; bbWeight=4, gcrefRegs=E80000 {x19 x21 x22 x23}, byrefReg cmp w25, w1 blt G_M47816_IG23 ;; size=16 bbWeight=4 PerfScore 20.00
-G_M47816_IG27: ; bbWeight=0.50, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M47816_IG27: ; bbWeight=1, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x22]
- cbz w24, G_M47816_IG30
+ cbz w24, G_M47816_IG31 + ;; size=4 bbWeight=1 PerfScore 1.00 +G_M47816_IG28: ; bbWeight=0.50, gcrefRegs=880000 {x19 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x21]
ldr x2, [x19, #0x18] ; gcrRegs +[x2] ldr w1, [x23, #0x10] sub w21, w1, #1
- ; gcrRegs -[x21] - tbnz w21, #31, G_M47816_IG29 - ;; size=20 bbWeight=0.50 PerfScore 4.25 -G_M47816_IG28: ; bbWeight=4, gcrefRegs=880004 {x2 x19 x23}, byrefRegs=0000 {}, byref, isz
+ tbnz w21, #31, G_M47816_IG30 + ;; size=16 bbWeight=0.50 PerfScore 3.75 +G_M47816_IG29: ; bbWeight=4, gcrefRegs=880004 {x2 x19 x23}, byrefRegs=0000 {}, byref, isz
ldr w1, [x23, #0x10] cmp w21, w1
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x1, [x23, #0x08] ; gcrRegs +[x1] ldr w0, [x1, #0x08] cmp w21, w0
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -521,31 +531,29 @@ G_M47816_IG28: ; bbWeight=4, gcrefRegs=880004 {x2 x19 x23}, byrefRegs=000 mov x2, x0 ; gcrRegs +[x2] sub w21, w21, #1
- tbz w21, #31, G_M47816_IG28
+ tbz w21, #31, G_M47816_IG29
;; size=80 bbWeight=4 PerfScore 98.00
-G_M47816_IG29: ; bbWeight=0.50, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
+G_M47816_IG30: ; bbWeight=1, gcrefRegs=0004 {x2}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x19 x23]
- mov x0, x2 - ; gcrRegs +[x0]
b G_M47816_IG33
- ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M47816_IG30: ; bbWeight=0.50, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0 x2] +[x19 x21 x23]
+ ;; size=4 bbWeight=1 PerfScore 1.00 +G_M47816_IG31: ; bbWeight=0.50, gcrefRegs=A80000 {x19 x21 x23}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x2] +[x19 x21 x23]
mov x2, x21 ; gcrRegs +[x2] sub w21, w20, #1 ; gcrRegs -[x21]
- tbnz w21, #31, G_M47816_IG32
+ tbnz w21, #31, G_M47816_IG33
;; size=12 bbWeight=0.50 PerfScore 1.00
-G_M47816_IG31: ; bbWeight=4, gcrefRegs=880004 {x2 x19 x23}, byrefRegs=0000 {}, byref, isz
+G_M47816_IG32: ; bbWeight=4, gcrefRegs=880004 {x2 x19 x23}, byrefRegs=0000 {}, byref, isz
ldr w1, [x23, #0x10] cmp w21, w1
- bhs G_M47816_IG41
+ bhs G_M47816_IG42
ldr x1, [x23, #0x08] ; gcrRegs +[x1] ldr w0, [x1, #0x08] cmp w21, w0
- bhs G_M47816_IG40
+ bhs G_M47816_IG41
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -566,15 +574,14 @@ G_M47816_IG31: ; bbWeight=4, gcrefRegs=880004 {x2 x19 x23}, byrefRegs=000 mov x2, x0 ; gcrRegs +[x2] sub w21, w21, #1
- tbz w21, #31, G_M47816_IG31
+ tbz w21, #31, G_M47816_IG32
...

+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%) : 342802.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,113 +11,107 @@ ; ; V00 arg0 [V00,T01] ( 8, 13.50) long -> x0 single-def ; V01 arg1 [V01,T03] ( 7, 5.69) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.83) long -> x19 -; V03 loc1 [V03,T02] ( 10, 13.63) long -> x2 -; V04 loc2 [V04,T00] ( 10, 18.89) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.83) long -> x2 +; V03 loc1 [V03,T02] ( 10, 13.63) long -> x3 +; V04 loc2 [V04,T00] ( 10, 18.89) 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=2.73, 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=2.73 PerfScore 24.61 G_M24157_IG04: ; bbWeight=2.62, 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=2.62 PerfScore 11.81 G_M24157_IG05: ; bbWeight=2.57, 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=2.57 PerfScore 17.99 G_M24157_IG06: ; bbWeight=0.84, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG11
+ cbz x3, G_M24157_IG09
;; size=4 bbWeight=0.84 PerfScore 0.84
-G_M24157_IG07: ; bbWeight=0.83, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr w2, [x19]
+G_M24157_IG07: ; bbWeight=0.70, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x5, [x4] + cmp x5, x0 + beq G_M24157_IG11 + ;; size=12 bbWeight=0.70 PerfScore 3.13 +G_M24157_IG08: ; bbWeight=0.69, 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.69 PerfScore 1.73 +G_M24157_IG09: ; bbWeight=0.83, 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.83 PerfScore 4.17
-G_M24157_IG08: ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG10: ; bbWeight=0.69, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1] ;; size=4 bbWeight=0.69 PerfScore 0.34
-G_M24157_IG09: ; bbWeight=0.86, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG11: ; bbWeight=0.86, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0.86 PerfScore 0.43
-G_M24157_IG10: ; bbWeight=0.86, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG12: ; bbWeight=0.86, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.86 PerfScore 3.42 -G_M24157_IG11: ; bbWeight=0.70, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.86 PerfScore 1.71 +G_M24157_IG13: ; bbWeight=0.14, 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.70 PerfScore 3.13 -G_M24157_IG12: ; bbWeight=0.69, 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.69 PerfScore 1.73 -G_M24157_IG13: ; bbWeight=0.35, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - b G_M24157_IG07 - ;; size=4 bbWeight=0.35 PerfScore 0.35 -G_M24157_IG14: ; bbWeight=0.14, 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.14 PerfScore 0.65
-G_M24157_IG15: ; bbWeight=0.14, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG14: ; bbWeight=0.14, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.14 PerfScore 0.58
+ ;; size=8 bbWeight=0.14 PerfScore 0.29
-; Total bytes of code 204, prolog size 12, PerfScore 85.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 81.69, 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%) : 343724.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,111 +11,105 @@ ; ; V00 arg0 [V00,T01] ( 8, 13.50) long -> x0 single-def ; V01 arg1 [V01,T03] ( 7, 5.58) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.78) long -> x19 -; V03 loc1 [V03,T02] ( 10, 12.89) long -> x2 -; V04 loc2 [V04,T00] ( 10, 18.39) long -> x3
+; V02 loc0 [V02,T04] ( 4, 3.78) long -> x2 +; V03 loc1 [V03,T02] ( 10, 12.89) long -> x3 +; V04 loc2 [V04,T00] ( 10, 18.39) 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_IG10 + ldr x2, [x1] + ldrh w3, [x2, #0x0E] + cbz x3, G_M24157_IG08 + ldr x4, [x2, #0x40] + cmp x3, #4 + blt G_M24157_IG07
;; size=28 bbWeight=1 PerfScore 12.50 G_M24157_IG03: ; bbWeight=2.82, 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_IG10 + ldr x5, [x4, #0x08] + cmp x5, x0 + beq G_M24157_IG10
;; size=24 bbWeight=2.82 PerfScore 25.40 G_M24157_IG04: ; bbWeight=2.61, 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_IG10
;; size=12 bbWeight=2.61 PerfScore 11.72 G_M24157_IG05: ; bbWeight=2.60, 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_IG10 + add x4, x4, #32 + sub x3, x3, #4 + cmp x3, #4
bge G_M24157_IG03 ;; size=28 bbWeight=2.60 PerfScore 18.19 G_M24157_IG06: ; bbWeight=0.75, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- cbnz x2, G_M24157_IG11
+ cbz x3, G_M24157_IG08
;; size=4 bbWeight=0.75 PerfScore 0.75
-G_M24157_IG07: ; bbWeight=0.78, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ldr w2, [x19]
+G_M24157_IG07: ; bbWeight=0.45, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x5, [x4] + cmp x5, x0 + beq G_M24157_IG10 + add x4, x4, #8 + sub x3, x3, #1 + cmp x3, #0 + bgt G_M24157_IG07 + ;; size=28 bbWeight=0.45 PerfScore 3.14 +G_M24157_IG08: ; bbWeight=0.78, 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.78 PerfScore 3.88
-G_M24157_IG08: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M24157_IG09: ; bbWeight=0.58, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1] ;; size=4 bbWeight=0.58 PerfScore 0.29
-G_M24157_IG09: ; bbWeight=0.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG10: ; bbWeight=0.80, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0.80 PerfScore 0.40
-G_M24157_IG10: ; bbWeight=0.80, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG11: ; bbWeight=0.80, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
ret lr
- ;; size=12 bbWeight=0.80 PerfScore 3.20 -G_M24157_IG11: ; bbWeight=0.45, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=8 bbWeight=0.80 PerfScore 1.60 +G_M24157_IG12: ; bbWeight=0.20, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0]
- ldr x4, [x3] - cmp x4, x0 - beq G_M24157_IG09 - add x3, x3, #8 - sub x2, x2, #1 - cmp x2, #0 - bgt G_M24157_IG11 - ;; size=28 bbWeight=0.45 PerfScore 3.14 -G_M24157_IG12: ; bbWeight=0.24, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - b G_M24157_IG07 - ;; size=4 bbWeight=0.24 PerfScore 0.24 -G_M24157_IG13: ; bbWeight=0.20, 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.20 PerfScore 0.90
-G_M24157_IG14: ; bbWeight=0.20, epilog, nogc, extend - ldr x19, [sp, #0x18] - ldp fp, lr, [sp], #0x20
+G_M24157_IG13: ; bbWeight=0.20, epilog, nogc, extend + ldp fp, lr, [sp], #0x10
br x2 ; gcr arg pop 0
- ;; size=12 bbWeight=0.20 PerfScore 0.80
+ ;; size=8 bbWeight=0.20 PerfScore 0.40
-; Total bytes of code 204, prolog size 12, PerfScore 83.91, 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 80.68, 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

+20 (+8.93%) : 360355.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -10,10 +10,10 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T01] ( 8, 3.05) long -> x0 single-def
-; V01 arg1 [V01,T00] ( 7, 4.24) ref -> x1 class-hnd <System.Object> -; V02 loc0 [V02,T04] ( 4, 0.72) long -> x19 -; V03 loc1 [V03,T03] ( 10, 0.72) long -> x20 -; V04 loc2 [V04,T02] ( 10, 1.29) long -> x21
+; V01 arg1 [V01,T00] ( 7, 6.69) ref -> x1 class-hnd <System.Object> +; V02 loc0 [V02,T02] ( 5, 4.17) long -> x19 +; V03 loc1 [V03,T04] ( 10, 0.72) long -> x20 +; V04 loc2 [V04,T03] ( 10, 1.29) long -> x21
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 @@ -28,24 +28,24 @@ G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre ; gcrRegs +[x1] cbnz x1, G_M24157_IG05 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M24157_IG03: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M24157_IG03: ; bbWeight=3.45, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0]
- ;; size=4 bbWeight=1 PerfScore 0.50 -G_M24157_IG04: ; bbWeight=1, epilog, nogc, extend
+ ;; size=4 bbWeight=3.45 PerfScore 1.72 +G_M24157_IG04: ; bbWeight=3.45, epilog, nogc, extend
ldr x21, [sp, #0x28] ldp x19, x20, [sp, #0x18] ldp fp, lr, [sp], #0x30 ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00
+ ;; size=16 bbWeight=3.45 PerfScore 17.24
G_M24157_IG05: ; bbWeight=0.24, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz ; gcrRegs -[x0] ldr x19, [x1] ldrh w20, [x19, #0x0E]
- cbz x20, G_M24157_IG09
+ cbz x20, G_M24157_IG10
ldr x21, [x19, #0x40] cmp x20, #4
- blt G_M24157_IG07
+ blt G_M24157_IG08
;; size=24 bbWeight=0.24 PerfScore 2.78 G_M24157_IG06: ; bbWeight=0.24, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ldr x2, [x21] @@ -59,51 +59,64 @@ G_M24157_IG06: ; bbWeight=0.24, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b beq G_M24157_IG03 ldr x2, [x21, #0x18] cmp x2, x0
- bne G_M24157_IG12
+ bne G_M24157_IG13 + ;; size=48 bbWeight=0.24 PerfScore 4.34 +G_M24157_IG07: ; bbWeight=0.12, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
b G_M24157_IG03
- ;; size=52 bbWeight=0.24 PerfScore 4.59 -G_M24157_IG07: ; bbWeight=0.08, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+ ;; size=4 bbWeight=0.12 PerfScore 0.12 +G_M24157_IG08: ; bbWeight=0.08, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr x2, [x21] cmp x2, x0
- beq G_M24157_IG03
+ bne G_M24157_IG14
;; size=12 bbWeight=0.08 PerfScore 0.36
-G_M24157_IG08: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - add x21, x21, #8 - sub x20, x20, #1 - cmp x20, #0 - bgt G_M24157_IG07 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M24157_IG09: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG09: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + b G_M24157_IG03 + ;; size=4 bbWeight=0.04 PerfScore 0.04 +G_M24157_IG10: ; bbWeight=3.45, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19] mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG10 - mov x1, xzr - b G_M24157_IG03 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M24157_IG10: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ beq G_M24157_IG15 + ;; size=16 bbWeight=3.45 PerfScore 17.24 +G_M24157_IG11: ; 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_IG11: ; bbWeight=0, epilog, nogc, extend
+G_M24157_IG12: ; bbWeight=0, 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
-G_M24157_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M24157_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
add x21, x21, #32 sub x20, x20, #4 cmp x20, #4 bge G_M24157_IG06
- cbz x20, G_M24157_IG09 - b G_M24157_IG07
+ cbz x20, G_M24157_IG10 + b G_M24157_IG08
;; size=24 bbWeight=0 PerfScore 0.00
+G_M24157_IG14: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + add x21, x21, #8 + sub x20, x20, #1 + cmp x20, #0 + bgt G_M24157_IG08 + ldr w2, [x19] + mov w3, #0xD1FFAB1E + tst w2, w3 + bne G_M24157_IG11 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M24157_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M24157_IG03 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 224, prolog size 16, PerfScore 17.72, instruction count 56, allocated bytes for code 224 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 244, prolog size 16, PerfScore 48.35, instruction count 61, allocated bytes for code 244 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -114,7 +127,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 56 (0x00038) Actual length = 224 (0x0000e0)
+ 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)

+24 (+10.53%) : 363735.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)

@@ -5,24 +5,24 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 6, 3.66) long -> x0 single-def -; V01 arg1 [V01,T00] ( 7, 4.67) ref -> x1 class-hnd <System.Object> -; V02 loc0 [V02,T02] ( 4, 2.10) long -> x2
+; V00 arg0 [V00,T02] ( 6, 3.66) long -> x0 single-def +; V01 arg1 [V01,T01] ( 7, 4.67) ref -> x1 class-hnd <System.Object> +; V02 loc0 [V02,T03] ( 4, 2.10) 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, 1.00) int -> x8 "Inline return value spill temp"
+; V05 tmp1 [V05,T00] ( 4, 34.33) int -> x20 "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V07 tmp3 [V07,T07] ( 4, 1.53) byref -> x3 single-def "Inline stloc first use temp" -; V08 tmp4 [V08,T06] ( 4, 1.62) int -> x4 "Inline stloc first use temp" -; V09 tmp5 [V09,T03] ( 5, 2.05) int -> x5 "Inline stloc first use temp" -; V10 tmp6 [V10,T04] ( 5, 1.95) byref -> x6 "Inline stloc first use temp" -; V11 tmp7 [V11,T05] ( 5, 1.72) int -> x7 "Inline stloc first use temp"
+; V07 tmp3 [V07,T08] ( 4, 1.53) byref -> x3 single-def "Inline stloc first use temp" +; V08 tmp4 [V08,T07] ( 4, 1.62) int -> x4 "Inline stloc first use temp" +; V09 tmp5 [V09,T04] ( 5, 2.05) int -> x5 "Inline stloc first use temp" +; V10 tmp6 [V10,T05] ( 5, 1.95) byref -> x6 "Inline stloc first use temp" +; V11 tmp7 [V11,T06] ( 5, 1.72) int -> x7 "Inline stloc first use temp"
; V12 tmp8 [V12,T10] ( 2, 0.86) long -> x8 "Inline stloc first use temp"
-; V13 tmp9 [V13,T09] ( 3, 0.99) long -> x8 "Inline stloc first use temp"
+; V13 tmp9 [V13,T09] ( 3, 0.99) 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,T11] ( 2, 0.67) ref -> x3 single-def "Field obj" @@ -30,19 +30,44 @@ ; Lcl frame size = 0 G_M60590_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_M60590_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M60590_IG10
+ cbz x1, G_M60590_IG04
;; size=4 bbWeight=1 PerfScore 1.00 G_M60590_IG03: ; bbWeight=0.67, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ldr x2, [x1] cmp x2, x0
- beq G_M60590_IG10
+ bne G_M60590_IG09
;; size=12 bbWeight=0.67 PerfScore 3.00
-G_M60590_IG04: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M60590_IG04: ; bbWeight=0.67, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov x0, x1 + ; gcrRegs +[x0] + ;; size=4 bbWeight=0.67 PerfScore 0.33 +G_M60590_IG05: ; bbWeight=0.67, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + ret lr + ;; size=12 bbWeight=0.67 PerfScore 2.00 +G_M60590_IG06: ; bbWeight=33.33, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0] + mov w20, #2 + ;; size=4 bbWeight=33.33 PerfScore 16.67 +G_M60590_IG07: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cmp w20, #1 + beq G_M60590_IG04 + cbz w20, G_M60590_IG16 + ;; size=12 bbWeight=0.33 PerfScore 0.83 +G_M60590_IG08: ; bbWeight=0.33, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + b <unknown method> + ; gcr arg pop 0 + ;; size=12 bbWeight=0.33 PerfScore 1.00 +G_M60590_IG09: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
movz x3, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 @@ -62,7 +87,7 @@ G_M60590_IG04: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, b lsr x4, x4, x5 mov w5, wzr ;; size=60 bbWeight=0.33 PerfScore 4.83
-G_M60590_IG05: ; bbWeight=0.43, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz
+G_M60590_IG10: ; bbWeight=0.43, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz
add w6, w4, #1 mov w7, #24 smull x6, w6, w7 @@ -72,77 +97,59 @@ G_M60590_IG05: ; bbWeight=0.43, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, ldr x8, [x6, #0x08] and w7, w7, #0xD1FFAB1E cmp x8, x2
- bne G_M60590_IG12
+ bne G_M60590_IG13
;; size=36 bbWeight=0.43 PerfScore 4.95
-G_M60590_IG06: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0048 {x3 x6}, byref, isz
+G_M60590_IG11: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0048 {x3 x6}, byref, isz
ldr x8, [x6, #0x10]
- eor x8, x8, x0 - cmp x8, #1 - bhi G_M60590_IG12
+ eor x19, x8, x0 + cmp x19, #1 + bhi G_M60590_IG13
;; size=16 bbWeight=0.33 PerfScore 1.65
-G_M60590_IG07: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0040 {x6}, byref, isz
+G_M60590_IG12: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0040 {x6}, byref, isz
; byrRegs -[x3] dmb ishld ldr w2, [x6] cmp w7, w2
- bne G_M60590_IG14 - ;; size=16 bbWeight=0.33 PerfScore 4.79 -G_M60590_IG08: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x6] - cmp w8, #1 - beq G_M60590_IG10 - cbz w8, G_M60590_IG15 - ;; size=12 bbWeight=0.33 PerfScore 0.83 -G_M60590_IG09: ; bbWeight=0.33, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - b <unknown method> - ; gcr arg pop 0 - ;; size=8 bbWeight=0.33 PerfScore 0.67 -G_M60590_IG10: ; bbWeight=0.67, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref - mov x0, x1 - ; gcrRegs +[x0] - ;; size=4 bbWeight=0.67 PerfScore 0.33 -G_M60590_IG11: ; bbWeight=0.67, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - ret lr - ;; size=8 bbWeight=0.67 PerfScore 1.33 -G_M60590_IG12: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, gcvars, byref, isz - ; gcrRegs -[x0] - ; byrRegs +[x3] - cbz w7, G_M60590_IG14
+ bne G_M60590_IG06 + b G_M60590_IG15 + ;; size=20 bbWeight=0.33 PerfScore 5.12 +G_M60590_IG13: ; bbWeight=0.10, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz + ; byrRegs -[x6] +[x3] + cbz w7, G_M60590_IG06
;; size=4 bbWeight=0.10 PerfScore 0.10
-G_M60590_IG13: ; bbWeight=0.43, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz
+G_M60590_IG14: ; bbWeight=0.43, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz
add w5, w5, #1 add w4, w4, w5
- ldr w8, [x3, #0x04] - and w4, w4, w8
+ ldr w6, [x3, #0x04] + and w4, w4, w6
cmp w5, #8
- blt G_M60590_IG05 - ;; size=24 bbWeight=0.43 PerfScore 2.58 -G_M60590_IG14: ; bbWeight=0.00, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ blt G_M60590_IG10 + b G_M60590_IG06 + ;; size=28 bbWeight=0.43 PerfScore 3.01 +G_M60590_IG15: ; bbWeight=0.33, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; byrRegs -[x3]
- mov w8, #2 - b G_M60590_IG08 - ;; size=8 bbWeight=0.00 PerfScore 0.00 -G_M60590_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ sxtw w20, w19 + b G_M60590_IG07 + ;; size=8 bbWeight=0.33 PerfScore 0.50 +G_M60590_IG16: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1]
- b G_M60590_IG10
+ b G_M60590_IG04
;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 228, prolog size 8, PerfScore 27.58, instruction count 57, allocated bytes for code 228 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 252, prolog size 12, PerfScore 47.50, instruction count 63, allocated bytes for code 252 (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 : 57 (0x00039) Actual length = 228 (0x0000e4)
+ 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) @@ -153,7 +160,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

+28 (+12.50%) : 343338.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)

@@ -5,33 +5,34 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4.99) long -> x0 single-def -; V01 arg1 [V01,T03] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 5, 4.99) long -> x0 single-def +; V01 arg1 [V01,T04] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
;* 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,T09] ( 4, 3 ) int -> x8 "Inline return value spill temp" -; V06 tmp3 [V06,T07] ( 4, 4.58) byref -> x2 single-def "Inline stloc first use temp" -; V07 tmp4 [V07,T01] ( 3, 6.58) long -> x3 "Inlining Arg" -; V08 tmp5 [V08,T06] ( 4, 4.87) int -> x4 "Inline stloc first use temp" -; V09 tmp6 [V09,T02] ( 5, 6.16) int -> x5 "Inline stloc first use temp" -; V10 tmp7 [V10,T04] ( 5, 5.85) byref -> x6 "Inline stloc first use temp" -; V11 tmp8 [V11,T05] ( 5, 5.16) int -> x7 "Inline stloc first use temp"
+; V04 tmp1 [V04,T09] ( 2, 4 ) ref -> x2 class-hnd single-def "impAppendStmt" <int[]> +; V05 tmp2 [V05,T00] ( 4,102.99) int -> x20 "Inline return value spill temp" +; V06 tmp3 [V06,T08] ( 4, 4.58) byref -> x2 single-def "Inline stloc first use temp" +; V07 tmp4 [V07,T02] ( 3, 6.58) long -> x3 "Inlining Arg" +; V08 tmp5 [V08,T07] ( 4, 4.87) int -> x4 "Inline stloc first use temp" +; V09 tmp6 [V09,T03] ( 5, 6.16) int -> x5 "Inline stloc first use temp" +; V10 tmp7 [V10,T05] ( 5, 5.85) byref -> x6 "Inline stloc first use temp" +; V11 tmp8 [V11,T06] ( 5, 5.16) int -> x7 "Inline stloc first use temp"
; V12 tmp9 [V12,T11] ( 2, 2.58) long -> x8 "Inline stloc first use temp"
-; V13 tmp10 [V13,T10] ( 3, 2.98) long -> x8 "Inline stloc first use temp"
+; V13 tmp10 [V13,T10] ( 3, 2.98) long -> x19 "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, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + stp x19, x20, [sp, #0x10]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M32392_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // data for <unknown class>:<unknown field> @@ -64,81 +65,88 @@ G_M32392_IG03: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, ldr x8, [x6, #0x08] and w7, w7, #0xD1FFAB1E cmp x8, x3
- bne G_M32392_IG08
+ bne G_M32392_IG06
;; size=36 bbWeight=1.29 PerfScore 14.84 G_M32392_IG04: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0044 {x2 x6}, byref, isz ldr x8, [x6, #0x10]
- eor x8, x8, x0 - cmp x8, #1 - bhi G_M32392_IG08
+ eor x19, x8, x0 + cmp x19, #1 + bhi G_M32392_IG06
;; size=16 bbWeight=0.99 PerfScore 4.96 G_M32392_IG05: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0040 {x6}, byref, isz ; byrRegs -[x2] dmb ishld ldr w2, [x6] cmp w7, w2
- bne G_M32392_IG10 - ;; size=16 bbWeight=0.99 PerfScore 14.38 -G_M32392_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x6] - cmp w8, #1 - beq G_M32392_IG11 - cbz w8, G_M32392_IG13
+ bne G_M32392_IG09 + b G_M32392_IG08 + ;; size=20 bbWeight=0.99 PerfScore 15.37 +G_M32392_IG06: ; bbWeight=0.30, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz + ; byrRegs -[x6] +[x2] + cbz w7, G_M32392_IG09 + ;; size=4 bbWeight=0.30 PerfScore 0.30 +G_M32392_IG07: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz + add w5, w5, #1 + add w4, w4, w5 + ldr w6, [x2, #0x04] + and w4, w4, w6 + cmp w5, #8 + blt G_M32392_IG03 + b G_M32392_IG09 + ;; size=28 bbWeight=1.29 PerfScore 9.03 +G_M32392_IG08: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; byrRegs -[x2] + sxtw w20, w19 + b G_M32392_IG10 + ;; size=8 bbWeight=0.99 PerfScore 1.49 +G_M32392_IG09: ; bbWeight=100, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov w20, #2 + ;; size=4 bbWeight=100 PerfScore 50.00 +G_M32392_IG10: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cmp w20, #1 + beq G_M32392_IG12 + cbz w20, G_M32392_IG14
bl <unknown method> ; gcrRegs -[x1] +[x0] ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 3.50
-G_M32392_IG07: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG11: ; bbWeight=1, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M32392_IG08: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, gcvars, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M32392_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x1]
- ; byrRegs +[x2] - cbz w7, G_M32392_IG10 - ;; size=4 bbWeight=0.30 PerfScore 0.30 -G_M32392_IG09: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz - add w5, w5, #1 - add w4, w4, w5 - ldr w8, [x2, #0x04] - and w4, w4, w8 - cmp w5, #8 - blt G_M32392_IG03 - ;; size=24 bbWeight=1.29 PerfScore 7.74 -G_M32392_IG10: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w8, #2 - b G_M32392_IG06 - ;; size=8 bbWeight=0.01 PerfScore 0.01 -G_M32392_IG11: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M32392_IG12: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG13: ; bbWeight=0, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M32392_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M32392_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1] mov x0, xzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M32392_IG14: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG15: ; bbWeight=0, epilog, nogc, extend + 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
-; Total bytes of code 224, prolog size 8, PerfScore 66.73, instruction count 56, allocated bytes for code 224 (MethodHash=b7ab8177) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 252, prolog size 12, PerfScore 122.49, instruction count 63, allocated bytes for code 252 (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 : 56 (0x00038) Actual length = 224 (0x0000e0)
+ 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) @@ -152,7 +160,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

libraries.crossgen2.windows.arm64.checked.mch

-16 (-2.38%) : 36536.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)

@@ -13,35 +13,35 @@ ; V01 arg1 [V01,T35] ( 3, 3 ) int -> x1 single-def ; V02 arg2 [V02,T32] ( 5, 7.50) long -> x2 single-def ; V03 arg3 [V03,T36] ( 3, 3 ) int -> x3 single-def
-; V04 loc0 [V04,T00] ( 25,108.50) long -> registers -; V05 loc1 [V05,T06] ( 31, 69.50) long -> registers ld-addr-op -; V06 loc2 [V06,T30] ( 6, 10.50) long -> x1 single-def
+; V04 loc0 [V04,T00] ( 25,116.50) long -> registers +; V05 loc1 [V05,T04] ( 31, 76 ) long -> registers ld-addr-op +; V06 loc2 [V06,T23] ( 6, 13 ) long -> x1 single-def
; V07 loc3 [V07,T33] ( 3, 7 ) long -> x3 single-def ; V08 loc4 [V08,T20] ( 5, 18 ) int -> x0
-; V09 loc5 [V09,T05] ( 11, 70 ) int -> registers
+; V09 loc5 [V09,T05] ( 11, 74 ) int -> registers
; V10 loc6 [V10,T21] ( 4, 16 ) int -> x0
-; V11 loc7 [V11,T04] ( 13, 70 ) long -> registers -; V12 loc8 [V12,T12] ( 6, 26 ) int -> x6
+; V11 loc7 [V11,T06] ( 13, 70 ) long -> registers +; V12 loc8 [V12,T12] ( 6, 28 ) int -> x6
;# V13 OutArgs [V13 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V14 tmp1 [V14,T15] ( 3, 24 ) long -> x0 "impAppendStmt"
-; V15 tmp2 [V15,T22] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V16 tmp3 [V16,T23] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V17 tmp4 [V17,T24] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V18 tmp5 [V18,T25] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V19 tmp6 [V19,T26] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V20 tmp7 [V20,T27] ( 3, 12 ) long -> x7 "impSpillLclRefs" -; V21 tmp8 [V21,T28] ( 3, 12 ) long -> x4 "impSpillLclRefs" -; V22 tmp9 [V22,T29] ( 3, 12 ) long -> x7 "impSpillLclRefs"
+; V15 tmp2 [V15,T24] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V16 tmp3 [V16,T25] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V17 tmp4 [V17,T26] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V18 tmp5 [V18,T27] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V19 tmp6 [V19,T28] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V20 tmp7 [V20,T29] ( 3, 12 ) long -> x7 "impSpillLclRefs" +; V21 tmp8 [V21,T30] ( 3, 12 ) long -> x4 "impSpillLclRefs" +; V22 tmp9 [V22,T31] ( 3, 12 ) long -> x7 "impSpillLclRefs"
; V23 tmp10 [V23,T01] ( 6,108 ) int -> x6 "impSpillLclRefs" ; V24 tmp11 [V24,T02] ( 3, 96 ) long -> x6 "impSpillLclRefs" ; V25 tmp12 [V25,T03] ( 3, 96 ) long -> x7 "impSpillLclRefs"
-; V26 tmp13 [V26,T16] ( 9, 18 ) int -> x7 "Inline stloc first use temp"
+; V26 tmp13 [V26,T16] ( 9, 20 ) int -> x7 "Inline stloc first use temp"
;* V27 tmp14 [V27,T40] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V28 tmp15 [V28,T13] ( 12, 24 ) long -> x6 "Inline stloc first use temp"
-; V29 tmp16 [V29,T17] ( 10, 20 ) int -> registers "Inline stloc first use temp"
+; V29 tmp16 [V29,T18] ( 10, 20 ) int -> registers "Inline stloc first use temp"
; V30 tmp17 [V30,T11] ( 3, 40 ) long -> x7 "Inlining Arg" ; V31 tmp18 [V31,T07] ( 5, 66 ) int -> x9 "Inline stloc first use temp"
-; V32 tmp19 [V32,T18] ( 9, 18 ) int -> x7 "Inline stloc first use temp"
+; V32 tmp19 [V32,T17] ( 9, 20 ) int -> x7 "Inline stloc first use temp"
;* V33 tmp20 [V33,T41] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ; V34 tmp21 [V34,T14] ( 12, 24 ) long -> x6 "Inline stloc first use temp" ; V35 tmp22 [V35,T19] ( 10, 20 ) int -> registers "Inline stloc first use temp" @@ -51,7 +51,7 @@ ; V39 cse1 [V39,T38] ( 2, 4 ) int -> x7 "CSE - moderate" ; V40 cse2 [V40,T09] ( 3, 48 ) long -> x10 "CSE - aggressive" ; V41 cse3 [V41,T10] ( 3, 48 ) long -> x8 "CSE - aggressive"
-; V42 cse4 [V42,T31] ( 5, 10 ) long -> x8 "CSE - moderate"
+; V42 cse4 [V42,T22] ( 5, 14 ) long -> x8 "CSE - moderate"
; ; Lcl frame size = 0 @@ -64,7 +64,7 @@ G_M42792_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, add x1, x0, w1, SXTW add x3, x4, w3, SXTW cmp x0, x1
- bhs G_M42792_IG17
+ bhs G_M42792_IG16
;; size=20 bbWeight=1 PerfScore 4.00 G_M42792_IG03: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz add x5, x0, #1 @@ -98,17 +98,17 @@ G_M42792_IG04: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldrb w6, [x6] add w7, w7, w6, LSL #21 ;; size=96 bbWeight=2 PerfScore 52.00
-G_M42792_IG05: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG05: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add w6, w7, #7
- ;; size=4 bbWeight=2 PerfScore 1.00
+ ;; size=4 bbWeight=4 PerfScore 2.00
G_M42792_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz sub x7, x3, x4 sxtw x8, w6 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
sub x7, x1, x5 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
mov x7, x5 ldr x9, [x7] str x9, [x4] @@ -124,12 +124,12 @@ G_M42792_IG07: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp w9, w6 blt G_M42792_IG07 ;; size=24 bbWeight=16 PerfScore 104.00
-G_M42792_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG08: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x4, x4, x8 add x5, x5, x8 cmp x5, x1
- bhs G_M42792_IG16 - ;; size=16 bbWeight=2 PerfScore 5.00
+ bhs G_M42792_IG20 + ;; size=16 bbWeight=4 PerfScore 10.00
G_M42792_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz and w6, w0, #15 add w6, w6, #4 @@ -159,14 +159,14 @@ G_M42792_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ldrb w6, [x6] add w7, w7, w6, LSL #21 ;; size=84 bbWeight=2 PerfScore 47.00
-G_M42792_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG11: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add w6, w7, #19
- ;; size=4 bbWeight=2 PerfScore 1.00
+ ;; size=4 bbWeight=4 PerfScore 2.00
G_M42792_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz sub x7, x3, x4 sxtw x8, w6 cmp x7, x8
- blt G_M42792_IG22
+ blt G_M42792_IG21
and w0, w0, #16 ldrh w7, [x5] add w0, w7, w0, LSL #12 @@ -175,9 +175,9 @@ G_M42792_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, sub x8, x4, x2 sxtw x9, w0 cmp x8, x9
- blt G_M42792_IG22
+ blt G_M42792_IG21
cmp w0, #8
- blt G_M42792_IG18
+ blt G_M42792_IG17
;; size=60 bbWeight=4 PerfScore 50.00 G_M42792_IG13: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ldr x0, [x7] @@ -194,21 +194,16 @@ G_M42792_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref cmp w0, w6 blt G_M42792_IG14 ;; size=24 bbWeight=16 PerfScore 104.00
-G_M42792_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M42792_IG15: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
add x4, x4, w6, SXTW mov x0, x4
- b G_M42792_IG20 - ;; size=12 bbWeight=2 PerfScore 5.00 -G_M42792_IG16: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x0, x4 - b G_M42792_IG21 - ;; size=8 bbWeight=1 PerfScore 1.50 -G_M42792_IG17: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ b G_M42792_IG19 + ;; size=12 bbWeight=4 PerfScore 10.00 +G_M42792_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
mov x5, x0
- mov x0, x4 - b G_M42792_IG21 - ;; size=12 bbWeight=0.50 PerfScore 1.00 -G_M42792_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ b G_M42792_IG20 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M42792_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
add x0, x4, #1 add x8, x7, #1 ldrb w7, [x7] @@ -233,9 +228,9 @@ G_M42792_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, strb w7, [x4] sub w4, w6, #1 cmp w6, #4
- beq G_M42792_IG20
+ beq G_M42792_IG19
;; size=100 bbWeight=2 PerfScore 50.00
-G_M42792_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG18: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov x6, x0 add x0, x6, #1 mov x7, x8 @@ -245,38 +240,37 @@ G_M42792_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref sxtw w6, w4 sub w4, w6, #1 cmp w6, #4
- bne G_M42792_IG19
+ bne G_M42792_IG18
;; size=40 bbWeight=16 PerfScore 136.00
-G_M42792_IG20: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M42792_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x5, x1
- blo G_M42792_IG24 - ;; size=8 bbWeight=4 PerfScore 6.00 -G_M42792_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+ mov x4, x0 + blo G_M42792_IG23 + ;; size=12 bbWeight=4 PerfScore 8.00 +G_M42792_IG20: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
cmp x5, x1
- beq G_M42792_IG25 - ;; size=8 bbWeight=0.50 PerfScore 0.75 -G_M42792_IG22: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ beq G_M42792_IG24 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M42792_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
movn w0, #0
- ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M42792_IG23: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M42792_IG22: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M42792_IG24: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref - mov x4, x0
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M42792_IG23: ; bbWeight=2, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
mov x0, x5 b G_M42792_IG03
- ;; size=12 bbWeight=2 PerfScore 4.00 -G_M42792_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov x4, x0
+ ;; size=8 bbWeight=2 PerfScore 3.00 +G_M42792_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
sub x0, x4, x2
- ;; size=8 bbWeight=0.50 PerfScore 0.50 -G_M42792_IG26: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=4 bbWeight=0.50 PerfScore 0.25 +G_M42792_IG25: ; bbWeight=0.50, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-; Total bytes of code 672, prolog size 8, PerfScore 640.50, instruction count 168, allocated bytes for code 672 (MethodHash=4bf758d7) for method Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
+; Total bytes of code 656, prolog size 8, PerfScore 653.50, instruction count 164, allocated bytes for code 656 (MethodHash=4bf758d7) for method Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
; ============================================================ Unwind Info: @@ -287,7 +281,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 168 (0x000a8) Actual length = 672 (0x0002a0)
+ Function Length : 164 (0x000a4) Actual length = 656 (0x000290)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-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,T00] ( 24, 29 ) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.TraceEventDispatcher> +; V01 arg1 [V01,T07] ( 11, 9.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,T12] ( 5, 8 ) long -> x0 +; V05 loc3 [V05,T06] ( 6, 18 ) int -> x2 +; V06 loc4 [V06,T02] ( 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,T13] ( 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,T03] ( 3, 24 ) ref -> x1 "arr expr" +; V15 tmp5 [V15,T04] ( 3, 24 ) ref -> x2 "argument with side effect" +; V16 cse0 [V16,T10] ( 2, 9 ) long -> x4 hoist "CSE - aggressive" +; V17 cse1 [V17,T14] ( 3, 6 ) int -> x3 "CSE - aggressive" +; V18 cse2 [V18,T17] ( 3, 3 ) ref -> x11 "CSE - moderate" +; V19 cse3 [V19,T18] ( 3, 1.50) ref -> x0 "CSE - moderate" +; V20 cse4 [V20,T01] ( 23, 28 ) long -> x22 hoist "CSE - aggressive" +; V21 cse5 [V21,T11] ( 11, 8.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_IG19
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_IG16 + ;; size=32 bbWeight=0.50 PerfScore 6.25 +G_M63325_IG10: ; bbWeight=1, 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] @@ -192,8 +188,8 @@ G_M63325_IG10: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by 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
+ ;; size=140 bbWeight=1 PerfScore 48.00 +G_M63325_IG11: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; byrRegs -[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -201,14 +197,14 @@ G_M63325_IG11: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by 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=20 bbWeight=0.50 PerfScore 2.75 +G_M63325_IG12: ; 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 +213,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_IG14
ldr w0, [x0, #0x08] ; gcrRegs -[x0] cmp w0, w21
- ble G_M63325_IG15
+ ble G_M63325_IG14
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]
ldr wzr, [x0] ...

-20 (-2.16%) : 195357.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)

@@ -9,23 +9,23 @@ ; 0 inlinees with PGO data; 6 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 10, 9 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter> -; V01 arg1 [V01,T15] ( 3, 2.50) ref -> x20 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
+; V00 this [V00,T04] ( 10, 10 ) ref -> [fp+0x20] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter> +; V01 arg1 [V01,T15] ( 3, 2.50) ref -> x21 class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
; V02 arg2 [V02,T03] ( 7, 10.50) ref -> x19 class-hnd single-def <System.Globalization.CultureInfo>
-; V03 arg3 [V03,T11] ( 7, 4.50) ref -> [fp+0x10] class-hnd EH-live single-def <System.Object> -; V04 loc0 [V04,T20] ( 5, 3.50) ref -> x21 class-hnd single-def <<unknown class>> -; V05 loc1 [V05,T16] ( 2, 4.50) ubyte -> x20 -; V06 loc2 [V06,T05] ( 4, 9 ) long -> x22
+; V03 arg3 [V03,T11] ( 7, 4.50) ref -> [fp+0x18] class-hnd EH-live single-def <System.Object> +; V04 loc0 [V04,T20] ( 5, 3.50) ref -> x22 class-hnd single-def <<unknown class>> +; V05 loc1 [V05,T16] ( 2, 4.50) ubyte -> x21 +; V06 loc2 [V06,T05] ( 4, 9.50) long -> x23
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd <<unknown class>> ; V08 loc4 [V08,T22] ( 3, 1.25) ref -> x0 class-hnd single-def <<unknown class>>
-; V09 loc5 [V09,T00] ( 5, 16.50) int -> x21
+; V09 loc5 [V09,T00] ( 5, 16.50) int -> x22
; V10 loc6 [V10,T10] ( 2, 8 ) ref -> x1 class-hnd <<unknown class>>
-; V11 loc7 [V11,T21] ( 3, 1.50) ref -> x0 class-hnd <System.Object>
+; V11 loc7 [V11,T21] ( 3, 2 ) ref -> x0 class-hnd <System.Object>
;* V12 loc8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V13 loc9 [V13,T17] ( 2, 4.50) ubyte -> x20 -; V14 loc10 [V14,T06] ( 4, 9 ) long -> x21
+; V13 loc9 [V13,T17] ( 2, 4.50) ubyte -> x21 +; V14 loc10 [V14,T06] ( 4, 9.50) long -> x22
; V15 loc11 [V15,T23] ( 3, 1.25) ref -> x0 class-hnd single-def <<unknown class>>
-; V16 loc12 [V16,T01] ( 5, 16.50) int -> x22
+; V16 loc12 [V16,T01] ( 5, 16.50) int -> x23
; V17 loc13 [V17,T07] ( 3, 8 ) ref -> x0 class-hnd <<unknown class>> ;# V18 OutArgs [V18 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V19 tmp1 [V19,T26] ( 2, 0 ) ref -> x19 class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> @@ -40,50 +40,49 @@ ; V28 tmp10 [V28,T29] ( 2, 0 ) ref -> x2 single-def "argument with side effect" ; V29 tmp11 [V29,T30] ( 2, 0 ) ref -> x20 single-def "argument with side effect" ; V30 tmp12 [V30,T31] ( 2, 0 ) ref -> x21 single-def "argument with side effect"
-; V31 PSPSym [V31,T24] ( 1, 1 ) long -> [fp+0x20] do-not-enreg[V] "PSPSym" -; V32 cse0 [V32,T18] ( 2, 4.25) byref -> x24 hoist "CSE - moderate" -; V33 cse1 [V33,T19] ( 2, 4.25) byref -> x24 hoist "CSE - moderate" -; V34 cse2 [V34,T13] ( 3, 5 ) int -> x23 "CSE - moderate" -; V35 cse3 [V35,T14] ( 3, 5 ) int -> x23 "CSE - moderate" -; V36 cse4 [V36,T12] ( 4, 5.25) long -> x25 hoist multi-def "CSE - aggressive"
+; V31 PSPSym [V31,T24] ( 1, 1 ) long -> [fp+0x28] do-not-enreg[V] "PSPSym" +; V32 cse0 [V32,T18] ( 2, 4.25) byref -> x25 hoist "CSE - moderate" +; V33 cse1 [V33,T19] ( 2, 4.25) byref -> x25 hoist "CSE - moderate" +; V34 cse2 [V34,T13] ( 3, 5 ) int -> x24 "CSE - moderate" +; V35 cse3 [V35,T14] ( 3, 5 ) int -> x24 "CSE - moderate" +; V36 cse4 [V36,T12] ( 4, 5.25) long -> x26 hoist multi-def "CSE - aggressive"
;
-; Lcl frame size = 24
+; Lcl frame size = 32
G_M63242_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x60]! - stp x19, x20, [sp, #0x28] - stp x21, x22, [sp, #0x38] - stp x23, x24, [sp, #0x48] - str x25, [sp, #0x58]
+ stp fp, lr, [sp, #-0x70]! + stp x19, x20, [sp, #0x30] + stp x21, x22, [sp, #0x40] + stp x23, x24, [sp, #0x50] + stp x25, x26, [sp, #0x60]
mov fp, sp
- add x4, sp, #96 - stp x0, x4, [fp, #0x18] // [V00 this], [V31 PSPSym]
+ add x4, sp, #112 + stp x0, x4, [fp, #0x20] // [V00 this], [V31 PSPSym]
; GC ptr vars +{V00}
- str x3, [fp, #0x10] // [V03 arg3]
+ str x3, [fp, #0x18] // [V03 arg3]
; GC ptr vars +{V03}
- mov x20, x1
+ mov x20, x0
; gcrRegs +[x20]
+ mov x21, x1 + ; gcrRegs +[x21]
mov x19, x2 ; gcrRegs +[x19]
- mov x2, x3 - ; gcrRegs +[x2] - ;; size=48 bbWeight=1 PerfScore 9.50 -G_M63242_IG02: ; bbWeight=1, gcVars=0000000000000810 {V00 V03}, gcrefRegs=180004 {x2 x19 x20}, byrefRegs=0000 {}, gcvars, byref, isz - mov x0, x2
+ mov x0, x3
; gcrRegs +[x0]
+ ;; size=52 bbWeight=1 PerfScore 10.00 +G_M63242_IG02: ; bbWeight=1, gcVars=0000000000000810 {V00 V03}, gcrefRegs=380001 {x0 x19 x20 x21}, byrefRegs=0000 {}, gcvars, byref, isz
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1
- ; gcrRegs -[x2]
; gcr arg pop 0
- mov x21, x0 - ; gcrRegs +[x21] - cbz x21, G_M63242_IG11 - ;; size=28 bbWeight=1 PerfScore 7.00 -G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[x0 x20] - mov x0, x21
+ mov x22, x0 + ; gcrRegs +[x22] + cbz x22, G_M63242_IG11 + ;; size=24 bbWeight=1 PerfScore 6.50 +G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=580000 {x19 x20 x22}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[x0 x21] + mov x0, x22
; gcrRegs +[x0] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -93,16 +92,15 @@ G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000 ; gcrRegs -[x0] ; gcr arg pop 0 cbz w0, G_M63242_IG10
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- ldr x0, [x0, #0x08]
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x1, [x11] blr x1 ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20]
+ mov x21, x0 + ; gcrRegs +[x21]
adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class> ; gcrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -113,46 +111,45 @@ G_M63242_IG03: ; bbWeight=0.50, gcrefRegs=280000 {x19 x21}, byrefRegs=000 blr x1 ; gcrRegs +[x0] ; gcr arg pop 0
- cmp x20, x0 - cset x20, eq - ; gcrRegs -[x20] - mov x22, xzr - mov x0, x21
+ cmp x21, x0 + cset x21, eq + ; gcrRegs -[x21] + mov x23, xzr + mov x0, x22
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] mov w1, #44 mov w2, wzr ldr x3, [x11] blr x3
- ; gcrRegs -[x21]
+ ; gcrRegs -[x22]
; gcr arg pop 0
- mov w21, wzr - ldr w23, [x0, #0x08] - cmp w23, #0
+ mov w22, wzr + ldr w24, [x0, #0x08] + cmp w24, #0
ble G_M63242_IG08
- ;; size=140 bbWeight=0.50 PerfScore 19.75 -G_M63242_IG04: ; bbWeight=0.25, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, byref - add x24, x0, #16 - ; byrRegs +[x24] - adrp x25, [HIGH RELOC #0xD1FFAB1E] - add x25, x25, [LOW RELOC #0xD1FFAB1E]
+ ;; size=136 bbWeight=0.50 PerfScore 18.75 +G_M63242_IG04: ; bbWeight=0.25, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=0000 {}, byref + add x25, x0, #16 + ; byrRegs +[x25] + adrp x26, [HIGH RELOC #0xD1FFAB1E] + add x26, x26, [LOW RELOC #0xD1FFAB1E]
;; size=12 bbWeight=0.25 PerfScore 0.38
-G_M63242_IG05: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz
+G_M63242_IG05: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0]
- ldr x1, [x24, w21, UXTW #3]
+ ldr x1, [x25, w22, UXTW #3]
; gcrRegs +[x1]
- ldr x0, [fp, #0x18] // [V00 this]
+ ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- ldr x0, [x0, #0x08] - mov x11, x25
+ mov x11, x26
mov w2, #1 ldr x3, [x11] blr x3 ; gcrRegs -[x1] ; gcr arg pop 0
- cbnz w20, G_M63242_IG09 - ;; size=32 bbWeight=4 PerfScore 56.00 -G_M63242_IG06: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 {x24}, byref
+ cbnz w21, G_M63242_IG09 + ;; size=28 bbWeight=4 PerfScore 48.00 +G_M63242_IG06: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref
mov x1, x19 ; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -162,29 +159,28 @@ G_M63242_IG06: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=20 bbWeight=2 PerfScore 11.00
-G_M63242_IG07: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=1000000 {x24}, byref, isz - orr x22, x22, x0 - add w21, w21, #1 - cmp w23, w21
+G_M63242_IG07: ; bbWeight=4, gcrefRegs=180000 {x19 x20}, byrefRegs=2000000 {x25}, byref, isz + orr x23, x23, x0 + add w22, w22, #1 + cmp w24, w22
bgt G_M63242_IG05 ;; size=16 bbWeight=4 PerfScore 10.00
-G_M63242_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M63242_IG08: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref
; gcrRegs -[x19]
- ; byrRegs -[x24] - ldr x0, [fp, #0x18] // [V00 this]
+ ; byrRegs -[x25] + ldr x0, [x20, #0x08]
; gcrRegs +[x0]
- ldr x0, [x0, #0x08] - mov x1, x22
+ mov x1, x23
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x2, [x11] blr x2 ; gcr arg pop 0 b G_M63242_IG21
- ;; size=32 bbWeight=0.50 PerfScore 5.75 -G_M63242_IG09: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 {x24}, byref
+ ;; size=28 bbWeight=1 PerfScore 9.50 +G_M63242_IG09: ; bbWeight=2, gcrefRegs=180001 {x0 x19 x20}, byrefRegs=2000000 {x25}, byref
; gcrRegs +[x19]
- ; byrRegs +[x24]
+ ; byrRegs +[x25]
mov x1, x19 ; gcrRegs +[x1] adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address @@ -195,27 +191,26 @@ G_M63242_IG09: ; bbWeight=2, gcrefRegs=80001 {x0 x19}, byrefRegs=1000000 ; gcr arg pop 0 b G_M63242_IG07 ;; size=24 bbWeight=2 PerfScore 13.00
-G_M63242_IG10: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref - ; gcrRegs -[x19] +[x21]
...

+12 (+2.78%) : 18749.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 (+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)

+28 (+4.14%) : 36510.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)

@@ -11,9 +11,9 @@ ; V00 arg0 [V00,T13] ( 3, 3 ) ref -> x0 class-hnd single-def <System.Object> ; V01 arg1 [V01,T11] ( 5, 5 ) ubyte -> x19 single-def ; V02 loc0 [V02,T12] ( 7, 6 ) ref -> x20 class-hnd <System.String>
-; V03 loc1 [V03,T03] ( 10, 29 ) ref -> x21 class-hnd <<unknown class>> -; V04 loc2 [V04,T09] ( 6, 12 ) ref -> x27 class-hnd <System.String> -; V05 loc3 [V05,T01] ( 10, 63 ) int -> registers
+; V03 loc1 [V03,T03] ( 10, 31 ) ref -> x21 class-hnd <<unknown class>> +; V04 loc2 [V04,T09] ( 6, 14 ) ref -> x27 class-hnd <System.String> +; V05 loc3 [V05,T01] ( 10, 67 ) int -> registers
; V06 loc4 [V06,T02] ( 7, 35 ) int -> x23 ; V07 loc5 [V07,T07] ( 7, 18 ) ushort -> x11 ;# V08 OutArgs [V08 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -53,7 +53,7 @@ G_M34503_IG02: ; bbWeight=1, gcrefRegs=0001 {x0}, byrefRegs=0000 {}, byre mov w23, wzr ldr w24, [x20, #0x08] cmp w24, #0
- ble G_M34503_IG15
+ ble G_M34503_IG07
;; size=48 bbWeight=1 PerfScore 14.50 G_M34503_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref ; gcrRegs -[x0] @@ -65,54 +65,68 @@ G_M34503_IG03: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=000 G_M34503_IG04: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz ldrh w11, [x25, w23, UXTW #2] cmp w11, #38
- bhi G_M34503_IG06
+ bhi G_M34503_IG08
;; size=12 bbWeight=4 PerfScore 18.00 G_M34503_IG05: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz cmp w11, #34
- beq G_M34503_IG07
+ beq G_M34503_IG10
cmp w11, #38
- bne G_M34503_IG14
+ bne G_M34503_IG06
adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x11, [x11] ldr x27, [x11] ; gcrRegs +[x27]
- b G_M34503_IG10
+ b G_M34503_IG13
;; size=36 bbWeight=2 PerfScore 22.00
-G_M34503_IG06: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz
+G_M34503_IG06: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x27]
+ mov w28, w22 + b G_M34503_IG17 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M34503_IG07: ; bbWeight=0.50, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref + ; byrRegs -[x25] + mov w28, w22 + b G_M34503_IG18 + ;; size=8 bbWeight=0.50 PerfScore 0.75 +G_M34503_IG08: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz + ; byrRegs +[x25]
cmp w11, #39
- beq G_M34503_IG08
+ beq G_M34503_IG11
cmp w11, #60
- beq G_M34503_IG09
+ beq G_M34503_IG12
cmp w11, #62
- bne G_M34503_IG14
+ bne G_M34503_IG09
adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x11, [x11] ldr x27, [x11] ; gcrRegs +[x27]
- b G_M34503_IG10
+ b G_M34503_IG13
;; size=44 bbWeight=2 PerfScore 25.00
-G_M34503_IG07: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG09: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref + ; gcrRegs -[x27] + mov w28, w22 + b G_M34503_IG17 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M34503_IG10: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref + adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr + add x11, x11, [LOW RELOC #0xD1FFAB1E] + ldr x11, [x11] + ldr x27, [x11] + ; gcrRegs +[x27] + b G_M34503_IG13 + ;; size=20 bbWeight=2 PerfScore 16.00 +G_M34503_IG11: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x27] adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x11, [x11] ldr x27, [x11] ; gcrRegs +[x27]
- b G_M34503_IG10
+ b G_M34503_IG13
;; size=20 bbWeight=2 PerfScore 16.00
-G_M34503_IG08: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref - ; gcrRegs -[x27] - adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr - add x11, x11, [LOW RELOC #0xD1FFAB1E] - ldr x11, [x11] - ldr x27, [x11] - ; gcrRegs +[x27] - b G_M34503_IG10 - ;; size=20 bbWeight=2 PerfScore 16.00 -G_M34503_IG09: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG12: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x27] adrp x11, [HIGH RELOC #0xD1FFAB1E] // const ptr add x11, x11, [LOW RELOC #0xD1FFAB1E] @@ -120,8 +134,8 @@ G_M34503_IG09: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=200000 ldr x27, [x11] ; gcrRegs +[x27] ;; size=16 bbWeight=2 PerfScore 14.00
-G_M34503_IG10: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz - cbnz x21, G_M34503_IG11
+G_M34503_IG13: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz + cbnz x21, G_M34503_IG14
adrp x11, [HIGH RELOC #0xD1FFAB1E] // function address add x11, x11, [LOW RELOC #0xD1FFAB1E] ldr x0, [x11] @@ -137,7 +151,7 @@ G_M34503_IG10: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2 ; gcrRegs -[x0] ; gcr arg pop 0 tst w19, #255
- beq G_M34503_IG11
+ beq G_M34503_IG14
mov x0, x21 ; gcrRegs +[x0] mov x11, x26 @@ -146,16 +160,16 @@ G_M34503_IG10: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2 blr x2 ; gcr arg pop 0 ;; size=68 bbWeight=2 PerfScore 37.00
-G_M34503_IG11: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
+G_M34503_IG14: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0] cmp w22, w23
- bge G_M34503_IG18
+ bge G_M34503_IG22
;; size=8 bbWeight=2 PerfScore 3.00
-G_M34503_IG12: ; bbWeight=16, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
+G_M34503_IG15: ; bbWeight=16, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref, isz
add w1, w22, #1 sxtw w28, w1 cmp w22, w24
- bhs G_M34503_IG27
+ bhs G_M34503_IG31
ldrh w1, [x25, w22, UXTW #2] mov x0, x21 ; gcrRegs +[x0] @@ -165,9 +179,9 @@ G_M34503_IG12: ; bbWeight=16, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs= blr x2 ; gcr arg pop 0 cmp w28, w23
- blt G_M34503_IG17
+ blt G_M34503_IG21
;; size=48 bbWeight=16 PerfScore 240.00
-G_M34503_IG13: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG16: ; bbWeight=4, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
; gcrRegs -[x0] mov x0, x21 ; gcrRegs +[x0] @@ -181,41 +195,45 @@ G_M34503_IG13: ; bbWeight=2, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2 ; gcrRegs -[x1 x27] ; gcr arg pop 0 add w28, w28, #1
- mov w22, w28 - ;; size=36 bbWeight=2 PerfScore 20.00 -G_M34503_IG14: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz
+ ;; size=32 bbWeight=4 PerfScore 38.00 +G_M34503_IG17: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref, isz
; gcrRegs -[x0] add w23, w23, #1 cmp w24, w23
- bgt G_M34503_IG04
+ bgt G_M34503_IG20
;; size=12 bbWeight=4 PerfScore 8.00
-G_M34503_IG15: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG18: ; bbWeight=1, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; byrRegs -[x25]
- cbnz x21, G_M34503_IG20
+ cbnz x21, G_M34503_IG24
;; size=4 bbWeight=1 PerfScore 1.00
-G_M34503_IG16: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG19: ; bbWeight=0.50, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x21] tst w19, #255
- beq G_M34503_IG25 - b G_M34503_IG24
+ beq G_M34503_IG29 + b G_M34503_IG28
;; size=12 bbWeight=0.50 PerfScore 1.25
-G_M34503_IG17: ; bbWeight=8, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref - ; gcrRegs +[x21 x27]
+G_M34503_IG20: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=2000000 {x25}, byref + ; gcrRegs +[x21]
; byrRegs +[x25] mov w22, w28
- b G_M34503_IG12
+ b G_M34503_IG04 + ;; size=8 bbWeight=2 PerfScore 3.00 +G_M34503_IG21: ; bbWeight=8, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref + ; gcrRegs +[x27] + mov w22, w28 + b G_M34503_IG15
;; size=8 bbWeight=8 PerfScore 12.00
-G_M34503_IG18: ; bbWeight=1, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
+G_M34503_IG22: ; bbWeight=1, gcrefRegs=8300000 {x20 x21 x27}, byrefRegs=2000000 {x25}, byref
mov w28, w22
- b G_M34503_IG13
+ b G_M34503_IG16
;; size=8 bbWeight=1 PerfScore 1.50
-G_M34503_IG19: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG23: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x27] ; byrRegs -[x25]
- sxtw w1, w22 - add w22, w1, #1
+ sxtw w1, w28 + add w28, w1, #1
cmp w1, w24
- bhs G_M34503_IG27
+ bhs G_M34503_IG31
add x25, x20, #12 ; byrRegs +[x25] ldrh w1, [x25, w1, UXTW #2] @@ -229,15 +247,15 @@ G_M34503_IG19: ; bbWeight=2, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 { ; byrRegs -[x25] ; gcr arg pop 0 ;; size=48 bbWeight=2 PerfScore 24.00
-G_M34503_IG20: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG24: ; bbWeight=4, gcrefRegs=300000 {x20 x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0]
- cmp w24, w22 - bgt G_M34503_IG19
+ cmp w24, w28 + bgt G_M34503_IG23
;; size=8 bbWeight=4 PerfScore 6.00
-G_M34503_IG21: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
+G_M34503_IG25: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x20] tst w19, #255
- beq G_M34503_IG22
+ beq G_M34503_IG26
mov x0, x21 ; gcrRegs +[x0] adrp x26, [HIGH RELOC #0xD1FFAB1E] // function address ...

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, 19 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M34838_IG07: ; bbWeight=1, 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
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M34838_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, w3 + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M34838_IG09: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; 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 46.42, 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, 18 ) 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=1, 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
+ ;; size=4 bbWeight=1 PerfScore 0.50 +G_M35228_IG07: ; bbWeight=1, 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
+ ;; size=8 bbWeight=1 PerfScore 2.00 +G_M35228_IG08: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, w4 + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M35228_IG09: ; bbWeight=1, epilog, nogc, extend + ldp fp, lr, [sp], #0x10 + ret lr + ;; size=8 bbWeight=1 PerfScore 2.00
-; 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 48.92, 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
...

+40 (+10.10%) : 274282.dasm - System.Linq.OrderedEnumerable1[System.Numerics.Vector1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)

@@ -8,32 +8,33 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 5 ) ref -> x19 this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]>
-; V01 arg1 [V01,T04] ( 4, 3 ) byref -> x20 single-def
+; V01 arg1 [V01,T04] ( 4, 3.50) byref -> x20 single-def
; V02 loc0 [V02,T03] ( 4, 6 ) ref -> x21 class-hnd single-def <<unknown class>> ; V03 loc1 [V03,T01] ( 9, 11 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
-; V04 loc2 [V04,T08] ( 4, 3.50) simd16 -> [fp+0x30] HFA(simd16) <System.Numerics.Vector`1[float]> -; V05 loc3 [V05,T09] ( 3, 2 ) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V04 loc2 [V04,T08] ( 4, 4 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]> +; V05 loc3 [V05,T09] ( 3, 2.50) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d10 HFA(simd16) <System.Numerics.Vector`1[float]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
; V09 cse0 [V09,T05] ( 3, 5 ) long -> x22 "CSE - aggressive" ; V10 cse1 [V10,T00] ( 10, 13 ) long -> x19 multi-def "CSE - aggressive" ;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M50903_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!
- stp d8, d9, [sp, #0x50]
+ stp d8, d9, [sp, #0x40] + stp d10, d11, [sp, #0x50]
stp x19, x20, [sp, #0x60] stp x21, x22, [sp, #0x70] mov fp, sp add x2, sp, #128
- str x2, [fp, #0x48] // [V08 PSPSym]
+ str x2, [fp, #0x38] // [V08 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; byrRegs +[x20]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M50903_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref mov x0, x19 ; gcrRegs +[x0] @@ -74,32 +75,6 @@ G_M50903_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20} ;; size=16 bbWeight=0.50 PerfScore 1.75 G_M50903_IG05: ; bbWeight=0.50, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz ; gcrRegs +[x21]
- ldr x0, [fp, #0x18] // [V03 loc1] - ; gcrRegs +[x0] - add x11, x19, #16 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - mov x0, x21 - ; gcrRegs +[x0] - str q0, [fp, #0x30] // [V04 loc2] - ldr x1, [x21] - ldr x22, [x1, #0x48] - ldr x1, [x22, #0x28] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ldr x0, [fp, #0x18] // [V03 loc1] - ; gcrRegs +[x0] - add x11, x19, #8 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbz w0, G_M50903_IG09 - ;; size=60 bbWeight=0.50 PerfScore 12.75 -G_M50903_IG06: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
ldr x0, [fp, #0x18] // [V03 loc1] ; gcrRegs +[x0] add x11, x19, #16 @@ -111,19 +86,13 @@ G_M50903_IG06: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x2 mov x0, x21 ; gcrRegs +[x0] mov v0.16b, v8.16b
- mov w1, #1 - ldr x2, [x22, #0x20]
+ ldr x1, [x21] + ldr x22, [x1, #0x48] + ldr x1, [x22, #0x28]
mov v9.d[0], v8.d[1]
- blr x2
+ blr x1
; gcrRegs -[x0] ; gcr arg pop 0
- mov v8.d[1], v9.d[0] - tbz w0, #31, G_M50903_IG08 - ;; size=52 bbWeight=4 PerfScore 62.00 -G_M50903_IG07: ; bbWeight=2, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref - str q8, [fp, #0x30] // [V04 loc2] - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M50903_IG08: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz
ldr x0, [fp, #0x18] // [V03 loc1] ; gcrRegs +[x0] add x11, x19, #8 @@ -131,15 +100,53 @@ G_M50903_IG08: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x2 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
+ mov v8.d[1], v9.d[0] + cbz w0, G_M50903_IG09 + ;; size=72 bbWeight=0.50 PerfScore 13.75 +G_M50903_IG06: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V03 loc1] + ; gcrRegs +[x0] + add x11, x19, #16 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.16b, v0.16b + mov x0, x21 + ; gcrRegs +[x0] + mov v0.16b, v10.16b + mov w1, #1 + ldr x2, [x22, #0x20] + mov v11.d[0], v10.d[1] + blr x2 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.d[1], v11.d[0] + mov v8.d[1], v9.d[0] + tbz w0, #31, G_M50903_IG08 + ;; size=60 bbWeight=4 PerfScore 70.00 +G_M50903_IG07: ; bbWeight=2, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref + mov v8.16b, v10.16b + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M50903_IG08: ; bbWeight=4, gcrefRegs=200000 {x21}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V03 loc1] + ; gcrRegs +[x0] + add x11, x19, #8 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v8.d[1], v9.d[0]
cbnz w0, G_M50903_IG06
- ;; size=20 bbWeight=4 PerfScore 30.00 -G_M50903_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+ ;; size=28 bbWeight=4 PerfScore 38.00 +G_M50903_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x21] mov w0, #1 strb w0, [x20]
- ldr q0, [fp, #0x30] // [V04 loc2] - str q0, [fp, #0x20] // [V05 loc3] - ;; size=16 bbWeight=0.50 PerfScore 2.25
+ str q8, [fp, #0x20] // [V05 loc3] + ;; size=12 bbWeight=1 PerfScore 2.50
G_M50903_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x20] ldr x0, [fp, #0x18] // [V03 loc1] @@ -155,18 +162,20 @@ G_M50903_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M50903_IG11: ; bbWeight=1, epilog, nogc, extend ldp x21, x22, [sp, #0x70] ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
+ ldp d10, d11, [sp, #0x50] + ldp d8, d9, [sp, #0x40]
ldp fp, lr, [sp], #0x80 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
G_M50903_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp d8, d9, [sp, #0x20]
- stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40]
+ stp d10, d11, [sp, #0x30] + stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
add x3, fp, #128 str x3, [sp, #0x18]
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M50903_IG13: ; bbWeight=0, gcVars=0000000000000002 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V01 V03} ldr x0, [fp, #0x18] // [V03 loc1] @@ -183,25 +192,26 @@ G_M50903_IG13: ; bbWeight=0, gcVars=0000000000000002 {V03}, gcrefRegs=000 ; gcr arg pop 0 ;; size=32 bbWeight=0 PerfScore 0.00 G_M50903_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
- ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30]
+ ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40] + ldp d10, d11, [sp, #0x30]
ldp d8, d9, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 36, PerfScore 158.25, instruction count 99, allocated bytes for code 396 (MethodHash=ce5e3928) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
+; Total bytes of code 436, prolog size 40, PerfScore 176.50, instruction count 109, allocated bytes for code 436 (MethodHash=ce5e3928) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -211,9 +221,13 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
- D8 0A save_fregp X#0 Z#10 (0x0A); stp d8, d9, [sp, #80]
+ E6 save_next + D8 08 save_fregp X#0 Z#8 (0x08); stp d8, d9, [sp, #64]
8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! E4 end
+ E4 end + E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) @@ -223,15 +237,15 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ---- E6 save_next
- C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
+ C8 08 save_regp X#0 Z#8 (0x08); stp x19, x20, [sp, #64] + E6 save_next
D8 04 save_fregp X#0 Z#4 (0x04); stp d8, d9, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]!
...

+40 (+10.10%) : 274283.dasm - System.Linq.OrderedEnumerable1[System.Numerics.Vector1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)

@@ -8,32 +8,33 @@ ; Final local variable assignments ; ; V00 this [V00,T02] ( 5, 4 ) ref -> x19 this class-hnd single-def <System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]>
-; V01 arg1 [V01,T04] ( 4, 3 ) byref -> x20 single-def
+; V01 arg1 [V01,T03] ( 4, 3.50) byref -> x20 single-def
; V02 loc0 [V02,T01] ( 9, 11 ) ref -> [fp+0x18] class-hnd EH-live spill-single-def <<unknown class>>
-; V03 loc1 [V03,T03] ( 4, 5.50) ref -> x19 class-hnd single-def <<unknown class>> -; V04 loc2 [V04,T08] ( 4, 3.50) simd16 -> [fp+0x30] HFA(simd16) <System.Numerics.Vector`1[float]> -; V05 loc3 [V05,T09] ( 3, 2 ) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V03 loc1 [V03,T04] ( 4, 5.50) ref -> x19 class-hnd single-def <<unknown class>> +; V04 loc2 [V04,T08] ( 4, 4 ) simd16 -> d8 HFA(simd16) <System.Numerics.Vector`1[float]> +; V05 loc3 [V05,T09] ( 3, 2.50) simd16 -> [fp+0x20] HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V06 loc4 [V06,T07] ( 3, 10 ) simd16 -> d10 HFA(simd16) <System.Numerics.Vector`1[float]>
;# V07 OutArgs [V07 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x48] do-not-enreg[V] "PSPSym"
+; V08 PSPSym [V08,T06] ( 1, 1 ) long -> [fp+0x38] do-not-enreg[V] "PSPSym"
; V09 cse0 [V09,T05] ( 3, 5 ) long -> x22 "CSE - aggressive" ; V10 cse1 [V10,T00] ( 10, 13 ) long -> x21 multi-def "CSE - aggressive" ;
-; Lcl frame size = 64
+; Lcl frame size = 48
G_M19015_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x80]!
- stp d8, d9, [sp, #0x50]
+ stp d8, d9, [sp, #0x40] + stp d10, d11, [sp, #0x50]
stp x19, x20, [sp, #0x60] stp x21, x22, [sp, #0x70] mov fp, sp add x2, sp, #128
- str x2, [fp, #0x48] // [V08 PSPSym]
+ str x2, [fp, #0x38] // [V08 PSPSym]
mov x19, x0 ; gcrRegs +[x19] mov x20, x1 ; byrRegs +[x20]
- ;; size=36 bbWeight=1 PerfScore 7.00
+ ;; size=40 bbWeight=1 PerfScore 8.00
G_M19015_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref ldr x0, [x19, #0x08] ; gcrRegs +[x0] @@ -81,49 +82,17 @@ G_M19015_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=100000 { blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
- mov x0, x19 - ; gcrRegs +[x0] - str q0, [fp, #0x30] // [V04 loc2] - ldr x1, [x19] - ldr x22, [x1, #0x48] - ldr x1, [x22, #0x28] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - ldr x0, [fp, #0x18] // [V02 loc0] - ; gcrRegs +[x0] - add x11, x21, #8 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0 - cbz w0, G_M19015_IG09 - ;; size=88 bbWeight=0.50 PerfScore 18.50 -G_M19015_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz - ldr x0, [fp, #0x18] // [V02 loc0] - ; gcrRegs +[x0] - add x11, x21, #16 - ldr x1, [x11] - blr x1 - ; gcrRegs -[x0] - ; gcr arg pop 0
mov v8.16b, v0.16b mov x0, x19 ; gcrRegs +[x0] mov v0.16b, v8.16b
- mov w1, wzr - ldr x2, [x22, #0x20]
+ ldr x1, [x19] + ldr x22, [x1, #0x48] + ldr x1, [x22, #0x28]
mov v9.d[0], v8.d[1]
- blr x2
+ blr x1
; gcrRegs -[x0] ; gcr arg pop 0
- mov v8.d[1], v9.d[0] - tbnz w0, #31, G_M19015_IG08 - ;; size=52 bbWeight=4 PerfScore 62.00 -G_M19015_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref - str q8, [fp, #0x30] // [V04 loc2] - ;; size=4 bbWeight=2 PerfScore 2.00 -G_M19015_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz
ldr x0, [fp, #0x18] // [V02 loc0] ; gcrRegs +[x0] add x11, x21, #8 @@ -131,15 +100,53 @@ G_M19015_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20 blr x1 ; gcrRegs -[x0] ; gcr arg pop 0
+ mov v8.d[1], v9.d[0] + cbz w0, G_M19015_IG09 + ;; size=100 bbWeight=0.50 PerfScore 19.50 +G_M19015_IG06: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V02 loc0] + ; gcrRegs +[x0] + add x11, x21, #16 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.16b, v0.16b + mov x0, x19 + ; gcrRegs +[x0] + mov v0.16b, v10.16b + mov w1, wzr + ldr x2, [x22, #0x20] + mov v11.d[0], v10.d[1] + blr x2 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v10.d[1], v11.d[0] + mov v8.d[1], v9.d[0] + tbnz w0, #31, G_M19015_IG08 + ;; size=60 bbWeight=4 PerfScore 70.00 +G_M19015_IG07: ; bbWeight=2, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref + mov v8.16b, v10.16b + ;; size=4 bbWeight=2 PerfScore 1.00 +G_M19015_IG08: ; bbWeight=4, gcrefRegs=80000 {x19}, byrefRegs=100000 {x20}, byref, isz + ldr x0, [fp, #0x18] // [V02 loc0] + ; gcrRegs +[x0] + add x11, x21, #8 + mov v9.d[0], v8.d[1] + ldr x1, [x11] + blr x1 + ; gcrRegs -[x0] + ; gcr arg pop 0 + mov v8.d[1], v9.d[0]
cbnz w0, G_M19015_IG06
- ;; size=20 bbWeight=4 PerfScore 30.00 -G_M19015_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
+ ;; size=28 bbWeight=4 PerfScore 38.00 +G_M19015_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=100000 {x20}, byref
; gcrRegs -[x19] mov w0, #1 strb w0, [x20]
- ldr q0, [fp, #0x30] // [V04 loc2] - str q0, [fp, #0x20] // [V05 loc3] - ;; size=16 bbWeight=0.50 PerfScore 2.25
+ str q8, [fp, #0x20] // [V05 loc3] + ;; size=12 bbWeight=1 PerfScore 2.50
G_M19015_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[x20] ldr x0, [fp, #0x18] // [V02 loc0] @@ -155,18 +162,20 @@ G_M19015_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref G_M19015_IG11: ; bbWeight=1, epilog, nogc, extend ldp x21, x22, [sp, #0x70] ldp x19, x20, [sp, #0x60]
- ldp d8, d9, [sp, #0x50]
+ ldp d10, d11, [sp, #0x50] + ldp d8, d9, [sp, #0x40]
ldp fp, lr, [sp], #0x80 ret lr
- ;; size=20 bbWeight=1 PerfScore 5.00
+ ;; size=24 bbWeight=1 PerfScore 6.00
G_M19015_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc
- stp fp, lr, [sp, #-0x50]!
+ stp fp, lr, [sp, #-0x60]!
stp d8, d9, [sp, #0x20]
- stp x19, x20, [sp, #0x30] - stp x21, x22, [sp, #0x40]
+ stp d10, d11, [sp, #0x30] + stp x19, x20, [sp, #0x40] + stp x21, x22, [sp, #0x50]
add x3, fp, #128 str x3, [sp, #0x18]
- ;; size=24 bbWeight=0 PerfScore 0.00
+ ;; size=28 bbWeight=0 PerfScore 0.00
G_M19015_IG13: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V01 V02} ldr x0, [fp, #0x18] // [V02 loc0] @@ -183,25 +192,26 @@ G_M19015_IG13: ; bbWeight=0, gcVars=0000000000000002 {V02}, gcrefRegs=000 ; gcr arg pop 0 ;; size=32 bbWeight=0 PerfScore 0.00 G_M19015_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet epilog, nogc
- ldp x21, x22, [sp, #0x40] - ldp x19, x20, [sp, #0x30]
+ ldp x21, x22, [sp, #0x50] + ldp x19, x20, [sp, #0x40] + ldp d10, d11, [sp, #0x30]
ldp d8, d9, [sp, #0x20]
- ldp fp, lr, [sp], #0x50
+ ldp fp, lr, [sp], #0x60
ret lr
- ;; size=20 bbWeight=0 PerfScore 0.00
+ ;; size=24 bbWeight=0 PerfScore 0.00
-; Total bytes of code 396, prolog size 36, PerfScore 152.50, instruction count 99, allocated bytes for code 396 (MethodHash=dbb2b5b8) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
+; Total bytes of code 436, prolog size 40, PerfScore 170.75, instruction count 109, allocated bytes for code 436 (MethodHash=dbb2b5b8) for method System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
; ============================================================ Unwind Info: >> Start offset : 0x000000 (not in unwind data) >> End offset : 0xd1ffab1e (not in unwind data)
- Code Words : 2
+ Code Words : 3
Epilog Count : 1 E bit : 0 X bit : 0 Vers : 0
- Function Length : 80 (0x00050) Actual length = 320 (0x000140)
+ Function Length : 88 (0x00058) Actual length = 352 (0x000160)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -211,9 +221,13 @@ Unwind Info: ---- Epilog start at index 1 ---- E6 save_next C8 0C save_regp X#0 Z#12 (0x0C); stp x19, x20, [sp, #96]
- D8 0A save_fregp X#0 Z#10 (0x0A); stp d8, d9, [sp, #80]
+ E6 save_next + D8 08 save_fregp X#0 Z#8 (0x08); stp d8, d9, [sp, #64]
8F save_fplr_x #15 (0x0F); stp fp, lr, [sp, #-128]! E4 end
+ E4 end + E4 end + E4 end
Unwind Info: >> Start offset : 0xd1ffab1e (not in unwind data) @@ -223,15 +237,15 @@ Unwind Info: E bit : 1 X bit : 0 Vers : 0
- Function Length : 19 (0x00013) Actual length = 76 (0x00004c)
+ Function Length : 21 (0x00015) Actual length = 84 (0x000054)
--- One epilog, unwind codes at 0 ---- Unwind codes ---- ---- Epilog start at index 0 ---- E6 save_next
- C8 06 save_regp X#0 Z#6 (0x06); stp x19, x20, [sp, #48]
+ C8 08 save_regp X#0 Z#8 (0x08); stp x19, x20, [sp, #64] + E6 save_next
D8 04 save_fregp X#0 Z#4 (0x04); stp d8, d9, [sp, #32]
- 89 save_fplr_x #9 (0x09); stp fp, lr, [sp, #-80]! - E4 end
+ 8B save_fplr_x #11 (0x0B); stp fp, lr, [sp, #-96]!
...

+20 (+15.62%) : 69843.dasm - Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary2[System.Numerics.Vector1[float],System.Nullable1[int]]:Remove(System.Numerics.Vector1[float]):this (FullOpts)

@@ -8,38 +8,42 @@ ; 0 inlinees with PGO data; 0 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T01] ( 6, 11.50) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]> -; V01 arg1 [V01,T05] ( 4, 3.50) simd16 -> [fp+0x10] HFA(simd16) single-def <System.Numerics.Vector`1[float]>
+; V00 this [V00,T01] ( 6, 12 ) ref -> x19 this class-hnd single-def <Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]> +; V01 arg1 [V01,T05] ( 4, 4 ) simd16 -> d8 HFA(simd16) single-def <System.Numerics.Vector`1[float]>
; V02 loc0 [V02,T00] ( 6, 17 ) ref -> x0 ld-addr-op class-hnd <<unknown class>> ;# V03 OutArgs [V03 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04,T04] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V05 tmp2 [V05,T02] ( 3, 6 ) ref -> x0 class-hnd single-def "Inlining Arg" <<unknown class>> ; V06 tmp3 [V06,T03] ( 3, 2.50) byref -> x0 single-def "Inline stloc first use temp" ;
-; Lcl frame size = 24
+; Lcl frame size = 8
G_M54949_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x30]!
+ stp d8, d9, [sp, #0x18]
str x19, [sp, #0x28] mov fp, sp
+ mov v8.16b, v0.16b
mov x19, x0 ; gcrRegs +[x19]
- ;; size=16 bbWeight=1 PerfScore 3.00
+ ;; size=24 bbWeight=1 PerfScore 4.50
G_M54949_IG02: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ldr x0, [x19, #0x08] ; gcrRegs +[x0] ldrsb wzr, [x0]
- str q0, [fp, #0x10] // [V01 arg1]
+ mov v0.16b, v8.16b
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1]
+ mov v9.d[0], v8.d[1]
blr x1 ; gcrRegs -[x0] ; byrRegs +[x0] ; gcr arg pop 0
+ mov v8.d[1], v9.d[0]
cbz x0, G_M54949_IG06
- ;; size=36 bbWeight=1 PerfScore 13.50
+ ;; size=44 bbWeight=1 PerfScore 15.00
G_M54949_IG03: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0001 {x0}, byref, isz ldr x0, [x0] ; gcrRegs +[x0] @@ -54,11 +58,11 @@ G_M54949_IG04: ; bbWeight=4, gcrefRegs=80001 {x0 x19}, byrefRegs=0000 {}, ldr x0, [x0, #0x08] cbnz x0, G_M54949_IG04 ;; size=24 bbWeight=4 PerfScore 38.00
-G_M54949_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
+G_M54949_IG05: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] ldr x0, [x19, #0x08] ; gcrRegs +[x0]
- ldr q0, [fp, #0x10] // [V01 arg1]
+ mov v0.16b, v8.16b
movz x1, #0xD1FFAB1E // code for <unknown method> movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -67,14 +71,15 @@ G_M54949_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, blr x1 ; gcrRegs -[x0 x19] ; gcr arg pop 0
- ;; size=32 bbWeight=0.50 PerfScore 6.75
+ ;; size=32 bbWeight=1 PerfScore 12.00
G_M54949_IG06: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc ldr x19, [sp, #0x28]
+ ldp d8, d9, [sp, #0x18]
ldp fp, lr, [sp], #0x30 ret lr
- ;; size=12 bbWeight=1 PerfScore 4.00
+ ;; size=16 bbWeight=1 PerfScore 5.00
-; Total bytes of code 128, prolog size 16, PerfScore 67.25, instruction count 32, allocated bytes for code 128 (MethodHash=83d0295a) for method Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
+; Total bytes of code 148, prolog size 24, PerfScore 76.50, instruction count 37, allocated bytes for code 148 (MethodHash=83d0295a) for method Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
; ============================================================ Unwind Info: @@ -85,7 +90,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 32 (0x00020) Actual length = 128 (0x000080)
+ Function Length : 37 (0x00025) Actual length = 148 (0x000094)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -94,9 +99,8 @@ Unwind Info: E1 set_fp; mov fp, sp ---- Epilog start at index 1 ---- D0 05 save_reg X#0 Z#5 (0x05); str x19, [sp, #40]
+ D8 03 save_fregp X#0 Z#3 (0x03); stp d8, d9, [sp, #24]
85 save_fplr_x #5 (0x05); stp fp, lr, [sp, #-48]! E4 end E4 end
- E4 end - E4 end

libraries_tests.run.windows.arm64.Release.mch

-12 (-5.45%) : 6329.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,96 +11,97 @@ ; ; V00 arg0 [V00,T00] ( 8, 5.04) long -> x0 single-def ; V01 arg1 [V01,T01] ( 7, 5 ) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3 ) long -> x19 -; V03 loc1 [V03,T03] ( 10, 3 ) long -> x20 -; V04 loc2 [V04,T02] ( 10, 4.04) long -> x21
+; V02 loc0 [V02,T03] ( 4, 3.08) long -> x19 +; V03 loc1 [V03,T04] ( 10, 3 ) long -> x2 +; V04 loc2 [V04,T02] ( 10, 4.04) long -> x3
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=16 bbWeight=1 PerfScore 3.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1] cbz x1, G_M24157_IG04 ldr x19, [x1]
- ldrh w20, [x19, #0x0E] - cbz x20, G_M24157_IG08 - ldr x21, [x19, #0x40] - cmp x20, #4 - blt G_M24157_IG06
+ ldrh w2, [x19, #0x0E] + cbz x2, G_M24157_IG06 + ldr x3, [x19, #0x40] + cmp x2, #4 + blt G_M24157_IG10
;; size=28 bbWeight=1 PerfScore 12.50 G_M24157_IG03: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x21] - cmp x2, x0
+ ldr x4, [x3] + cmp x4, x0
beq G_M24157_IG04
- ldr x2, [x21, #0x08] - cmp x2, x0
+ ldr x4, [x3, #0x08] + cmp x4, x0
beq G_M24157_IG04
- ldr x2, [x21, #0x10] - cmp x2, x0 - bne G_M24157_IG11
+ ldr x4, [x3, #0x10] + cmp x4, x0 + bne G_M24157_IG09
;; size=36 bbWeight=1 PerfScore 13.50 G_M24157_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50 G_M24157_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M24157_IG06: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 4.00 +G_M24157_IG06: ; bbWeight=0.08, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x2, [x21] - cmp x2, x0 - beq G_M24157_IG04 - ;; size=12 bbWeight=0.04 PerfScore 0.17 -G_M24157_IG07: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - add x21, x21, #8 - sub x20, x20, #1 - cmp x20, #0 - bgt G_M24157_IG06 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M24157_IG08: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19] mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG09 - mov x1, xzr - b G_M24157_IG04 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M24157_IG09: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ beq G_M24157_IG12 + ;; size=16 bbWeight=0.08 PerfScore 0.39 +G_M24157_IG07: ; 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_IG10: ; bbWeight=0, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+G_M24157_IG08: ; bbWeight=0, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x2 ; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M24157_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz - ldr x2, [x21, #0x18] - cmp x2, x0
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M24157_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x4, [x3, #0x18] + cmp x4, x0
beq G_M24157_IG04
- add x21, x21, #32 - sub x20, x20, #4 - cmp x20, #4
+ add x3, x3, #32 + sub x2, x2, #4 + cmp x2, #4
bge G_M24157_IG03
- cbz x20, G_M24157_IG08
+ cbz x2, G_M24157_IG06 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M24157_IG10: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x4, [x3] + cmp x4, x0 + beq G_M24157_IG04 + ;; size=12 bbWeight=0.04 PerfScore 0.17 +G_M24157_IG11: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + add x3, x3, #8 + sub x2, x2, #1 + cmp x2, #0 + bgt G_M24157_IG10
b G_M24157_IG06
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00 +G_M24157_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M24157_IG04 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 16, PerfScore 35.17, instruction count 55, allocated bytes for code 220 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 208, prolog size 12, PerfScore 33.57, instruction count 52, allocated bytes for code 208 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -111,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -122,9 +123,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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]!
+ 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

-12 (-5.45%) : 6497.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,96 +11,97 @@ ; ; V00 arg0 [V00,T00] ( 8, 5.31) long -> x0 single-def ; V01 arg1 [V01,T01] ( 7, 5 ) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3 ) long -> x19 -; V03 loc1 [V03,T03] ( 10, 3 ) long -> x20 -; V04 loc2 [V04,T02] ( 10, 4.31) long -> x21
+; V02 loc0 [V02,T03] ( 4, 3.90) long -> x19 +; V03 loc1 [V03,T04] ( 10, 3 ) long -> x2 +; V04 loc2 [V04,T02] ( 10, 4.31) long -> x3
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=16 bbWeight=1 PerfScore 3.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1] cbz x1, G_M24157_IG04 ldr x19, [x1]
- ldrh w20, [x19, #0x0E] - cbz x20, G_M24157_IG08 - ldr x21, [x19, #0x40] - cmp x20, #4 - blt G_M24157_IG06
+ ldrh w2, [x19, #0x0E] + cbz x2, G_M24157_IG06 + ldr x3, [x19, #0x40] + cmp x2, #4 + blt G_M24157_IG10
;; size=28 bbWeight=1 PerfScore 12.50 G_M24157_IG03: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x21] - cmp x2, x0
+ ldr x4, [x3] + cmp x4, x0
beq G_M24157_IG04
- ldr x2, [x21, #0x08] - cmp x2, x0
+ ldr x4, [x3, #0x08] + cmp x4, x0
beq G_M24157_IG04
- ldr x2, [x21, #0x10] - cmp x2, x0 - bne G_M24157_IG11
+ ldr x4, [x3, #0x10] + cmp x4, x0 + bne G_M24157_IG09
;; size=36 bbWeight=1 PerfScore 13.50 G_M24157_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50 G_M24157_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M24157_IG06: ; bbWeight=0.31, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 4.00 +G_M24157_IG06: ; bbWeight=0.90, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x2, [x21] - cmp x2, x0 - beq G_M24157_IG04 - ;; size=12 bbWeight=0.31 PerfScore 1.40 -G_M24157_IG07: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - add x21, x21, #8 - sub x20, x20, #1 - cmp x20, #0 - bgt G_M24157_IG06 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M24157_IG08: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19] mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG09 - mov x1, xzr - b G_M24157_IG04 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M24157_IG09: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ beq G_M24157_IG12 + ;; size=16 bbWeight=0.90 PerfScore 4.50 +G_M24157_IG07: ; 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_IG10: ; bbWeight=0, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+G_M24157_IG08: ; bbWeight=0, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x2 ; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M24157_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz - ldr x2, [x21, #0x18] - cmp x2, x0
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M24157_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x4, [x3, #0x18] + cmp x4, x0
beq G_M24157_IG04
- add x21, x21, #32 - sub x20, x20, #4 - cmp x20, #4
+ add x3, x3, #32 + sub x2, x2, #4 + cmp x2, #4
bge G_M24157_IG03
- cbz x20, G_M24157_IG08
+ cbz x2, G_M24157_IG06 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M24157_IG10: ; bbWeight=0.31, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x4, [x3] + cmp x4, x0 + beq G_M24157_IG04 + ;; size=12 bbWeight=0.31 PerfScore 1.40 +G_M24157_IG11: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + add x3, x3, #8 + sub x2, x2, #1 + cmp x2, #0 + bgt G_M24157_IG10
b G_M24157_IG06
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00 +G_M24157_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M24157_IG04 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 16, PerfScore 36.40, instruction count 55, allocated bytes for code 220 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 208, prolog size 12, PerfScore 38.90, instruction count 52, allocated bytes for code 208 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -111,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -122,9 +123,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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]!
+ 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

-12 (-5.45%) : 7249.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,96 +11,97 @@ ; ; V00 arg0 [V00,T00] ( 8, 5.04) long -> x0 single-def ; V01 arg1 [V01,T01] ( 7, 5 ) ref -> x1 class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3 ) long -> x19 -; V03 loc1 [V03,T03] ( 10, 3 ) long -> x20 -; V04 loc2 [V04,T02] ( 10, 4.04) long -> x21
+; V02 loc0 [V02,T03] ( 4, 3.09) long -> x19 +; V03 loc1 [V03,T04] ( 10, 3 ) long -> x2 +; V04 loc2 [V04,T02] ( 10, 4.04) long -> x3
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; ; Lcl frame size = 8 G_M24157_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x30]! - stp x19, x20, [sp, #0x18] - str x21, [sp, #0x28]
+ stp fp, lr, [sp, #-0x20]! + str x19, [sp, #0x18]
mov fp, sp
- ;; size=16 bbWeight=1 PerfScore 3.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1] cbz x1, G_M24157_IG04 ldr x19, [x1]
- ldrh w20, [x19, #0x0E] - cbz x20, G_M24157_IG08 - ldr x21, [x19, #0x40] - cmp x20, #4 - blt G_M24157_IG06
+ ldrh w2, [x19, #0x0E] + cbz x2, G_M24157_IG06 + ldr x3, [x19, #0x40] + cmp x2, #4 + blt G_M24157_IG10
;; size=28 bbWeight=1 PerfScore 12.50 G_M24157_IG03: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
- ldr x2, [x21] - cmp x2, x0
+ ldr x4, [x3] + cmp x4, x0
beq G_M24157_IG04
- ldr x2, [x21, #0x08] - cmp x2, x0
+ ldr x4, [x3, #0x08] + cmp x4, x0
beq G_M24157_IG04
- ldr x2, [x21, #0x10] - cmp x2, x0 - bne G_M24157_IG11
+ ldr x4, [x3, #0x10] + cmp x4, x0 + bne G_M24157_IG09
;; size=36 bbWeight=1 PerfScore 13.50 G_M24157_IG04: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50 G_M24157_IG05: ; bbWeight=1, epilog, nogc, extend
- ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+ ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=16 bbWeight=1 PerfScore 5.00 -G_M24157_IG06: ; bbWeight=0.04, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 4.00 +G_M24157_IG06: ; bbWeight=0.09, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[x0]
- ldr x2, [x21] - cmp x2, x0 - beq G_M24157_IG04 - ;; size=12 bbWeight=0.04 PerfScore 0.19 -G_M24157_IG07: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - add x21, x21, #8 - sub x20, x20, #1 - cmp x20, #0 - bgt G_M24157_IG06 - ;; size=16 bbWeight=0 PerfScore 0.00 -G_M24157_IG08: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz
ldr w2, [x19] mov w3, #0xD1FFAB1E tst w2, w3
- bne G_M24157_IG09 - mov x1, xzr - b G_M24157_IG04 - ;; size=24 bbWeight=0 PerfScore 0.00 -G_M24157_IG09: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ beq G_M24157_IG12 + ;; size=16 bbWeight=0.09 PerfScore 0.43 +G_M24157_IG07: ; 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_IG10: ; bbWeight=0, epilog, nogc, extend - ldr x21, [sp, #0x28] - ldp x19, x20, [sp, #0x18] - ldp fp, lr, [sp], #0x30
+G_M24157_IG08: ; bbWeight=0, epilog, nogc, extend + ldr x19, [sp, #0x18] + ldp fp, lr, [sp], #0x20
br x2 ; gcr arg pop 0
- ;; size=16 bbWeight=0 PerfScore 0.00 -G_M24157_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz - ldr x2, [x21, #0x18] - cmp x2, x0
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M24157_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref, isz + ldr x4, [x3, #0x18] + cmp x4, x0
beq G_M24157_IG04
- add x21, x21, #32 - sub x20, x20, #4 - cmp x20, #4
+ add x3, x3, #32 + sub x2, x2, #4 + cmp x2, #4
bge G_M24157_IG03
- cbz x20, G_M24157_IG08
+ cbz x2, G_M24157_IG06 + ;; size=32 bbWeight=0 PerfScore 0.00 +G_M24157_IG10: ; bbWeight=0.04, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + ldr x4, [x3] + cmp x4, x0 + beq G_M24157_IG04 + ;; size=12 bbWeight=0.04 PerfScore 0.19 +G_M24157_IG11: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + add x3, x3, #8 + sub x2, x2, #1 + cmp x2, #0 + bgt G_M24157_IG10
b G_M24157_IG06
- ;; size=36 bbWeight=0 PerfScore 0.00
+ ;; size=20 bbWeight=0 PerfScore 0.00 +G_M24157_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[x1] + mov x1, xzr + ; gcrRegs +[x1] + b G_M24157_IG04 + ;; size=8 bbWeight=0 PerfScore 0.00
-; Total bytes of code 220, prolog size 16, PerfScore 35.19, instruction count 55, allocated bytes for code 220 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 208, prolog size 12, PerfScore 33.62, instruction count 52, allocated bytes for code 208 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -111,7 +112,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 55 (0x00037) Actual length = 220 (0x0000dc)
+ Function Length : 52 (0x00034) Actual length = 208 (0x0000d0)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e) @@ -122,9 +123,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 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]!
+ 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

+12 (+4.29%) : 38.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)

@@ -5,23 +5,23 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 8 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 5.99) long -> x0 single-def -; V01 arg1 [V01,T01] ( 6, 5 ) ref -> x1 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 6, 5.99) long -> x0 single-def +; V01 arg1 [V01,T02] ( 6, 5 ) ref -> x1 class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T12] ( 2, 2 ) ref -> x20 class-hnd single-def <System.Object> -; V04 loc2 [V04,T07] ( 4, 4.29) long -> x2
+; V03 loc1 [V03,T12] ( 2, 2 ) ref -> x19 class-hnd single-def <System.Object> +; V04 loc2 [V04,T08] ( 4, 4.29) long -> x2
;# V05 OutArgs [V05 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T08] ( 4, 3 ) int -> x19 "Inline return value spill temp"
+; V06 tmp1 [V06,T00] ( 4,102.99) int -> x20 "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V08 tmp3 [V08,T06] ( 4, 4.58) byref -> x3 single-def "Inline stloc first use temp" -; V09 tmp4 [V09,T05] ( 4, 4.87) int -> x4 "Inline stloc first use temp" -; V10 tmp5 [V10,T02] ( 5, 6.16) int -> x5 "Inline stloc first use temp" -; V11 tmp6 [V11,T03] ( 5, 5.85) byref -> x6 "Inline stloc first use temp" -; V12 tmp7 [V12,T04] ( 5, 5.16) int -> x7 "Inline stloc first use temp"
+; V08 tmp3 [V08,T07] ( 4, 4.58) byref -> x3 single-def "Inline stloc first use temp" +; V09 tmp4 [V09,T06] ( 4, 4.87) int -> x4 "Inline stloc first use temp" +; V10 tmp5 [V10,T03] ( 5, 6.16) int -> x5 "Inline stloc first use temp" +; V11 tmp6 [V11,T04] ( 5, 5.85) byref -> x6 "Inline stloc first use temp" +; V12 tmp7 [V12,T05] ( 5, 5.16) int -> x7 "Inline stloc first use temp"
; V13 tmp8 [V13,T11] ( 2, 2.58) long -> x8 "Inline stloc first use temp" ; V14 tmp9 [V14,T10] ( 3, 2.98) long -> x19 "Inline stloc first use temp" ;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -33,17 +33,17 @@ ; ; Lcl frame size = 0
-G_M33041_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+G_M33041_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
stp fp, lr, [sp, #-0x20]! stp x19, x20, [sp, #0x10] mov fp, sp ;; size=12 bbWeight=1 PerfScore 2.50 G_M33041_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M33041_IG12
+ cbz x1, G_M33041_IG13
ldr x2, [x1] cmp x2, x0
- beq G_M33041_IG12
+ beq G_M33041_IG13
movz x3, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 @@ -73,31 +73,52 @@ G_M33041_IG03: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, ldr x8, [x6, #0x08] and w7, w7, #0xD1FFAB1E cmp x8, x2
- bne G_M33041_IG09
+ bne G_M33041_IG06
;; size=36 bbWeight=1.29 PerfScore 14.84 G_M33041_IG04: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0048 {x3 x6}, byref, isz ldr x8, [x6, #0x10] eor x19, x8, x0 cmp x19, #1
- bhi G_M33041_IG09
+ bhi G_M33041_IG06
;; size=16 bbWeight=0.99 PerfScore 4.96 G_M33041_IG05: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0040 {x6}, byref, isz ; byrRegs -[x3] dmb ishld ldr w2, [x6] cmp w7, w2
- bne G_M33041_IG11 - ;; size=16 bbWeight=0.99 PerfScore 14.38 -G_M33041_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x6] - cmp w19, #1 - beq G_M33041_IG12
+ bne G_M33041_IG09 + b G_M33041_IG08 + ;; size=20 bbWeight=0.99 PerfScore 15.37 +G_M33041_IG06: ; bbWeight=0.30, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz + ; byrRegs -[x6] +[x3] + cbz w7, G_M33041_IG09 + ;; size=4 bbWeight=0.30 PerfScore 0.30 +G_M33041_IG07: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz + add w5, w5, #1 + add w4, w4, w5 + ldr w6, [x3, #0x04] + and w4, w4, w6 + cmp w5, #8 + blt G_M33041_IG03 + b G_M33041_IG09 + ;; size=28 bbWeight=1.29 PerfScore 9.03 +G_M33041_IG08: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; byrRegs -[x3] + sxtw w20, w19 + b G_M33041_IG10 + ;; size=8 bbWeight=0.99 PerfScore 1.49 +G_M33041_IG09: ; bbWeight=100, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov w20, #2 + ;; size=4 bbWeight=100 PerfScore 50.00 +G_M33041_IG10: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cmp w20, #1 + beq G_M33041_IG13
bl <unknown method> ; gcrRegs -[x1] +[x0] ; gcr arg pop 0
- mov x20, x0 - ; gcrRegs +[x20] - cbnz w19, G_M33041_IG07
+ mov x19, x0 + ; gcrRegs +[x19] + cbnz w20, G_M33041_IG11
movz x1, #8 movk x1, #0xD1FFAB1E LSL #16 movk x1, #0xD1FFAB1E LSL #32 @@ -110,44 +131,27 @@ G_M33041_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byre ; gcrRegs -[x0] ; gcr arg pop 0 ;; size=56 bbWeight=1 PerfScore 11.50
-G_M33041_IG07: ; bbWeight=1, gcrefRegs=100000 {x20}, byrefRegs=0000 {}, byref - mov x0, x20
+G_M33041_IG11: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + mov x0, x19
; gcrRegs +[x0] ;; size=4 bbWeight=1 PerfScore 0.50
-G_M33041_IG08: ; bbWeight=1, epilog, nogc, extend
+G_M33041_IG12: ; bbWeight=1, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=1 PerfScore 3.00
-G_M33041_IG09: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, gcvars, byref, isz - ; gcrRegs -[x0 x20] +[x1] - ; byrRegs +[x3] - cbz w7, G_M33041_IG11 - ;; size=4 bbWeight=0.30 PerfScore 0.30 -G_M33041_IG10: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz - add w5, w5, #1 - add w4, w4, w5 - ldr w6, [x3, #0x04] - and w4, w4, w6 - cmp w5, #8 - blt G_M33041_IG03 - ;; size=24 bbWeight=1.29 PerfScore 7.74 -G_M33041_IG11: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; byrRegs -[x3] - mov w19, #2 - b G_M33041_IG06 - ;; size=8 bbWeight=0.01 PerfScore 0.01 -G_M33041_IG12: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M33041_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs -[x0 x19] +[x1]
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M33041_IG13: ; bbWeight=0, epilog, nogc, extend
+G_M33041_IG14: ; bbWeight=0, epilog, nogc, extend
ldp x19, x20, [sp, #0x10] ldp fp, lr, [sp], #0x20 ret lr ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 280, prolog size 12, PerfScore 79.73, instruction count 70, allocated bytes for code 280 (MethodHash=84fd7eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 292, prolog size 12, PerfScore 133.49, instruction count 73, allocated bytes for code 292 (MethodHash=84fd7eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -158,7 +162,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 70 (0x00046) Actual length = 280 (0x000118)
+ Function Length : 73 (0x00049) Actual length = 292 (0x000124)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+24 (+10.71%) : 1707.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)

@@ -5,24 +5,24 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 6, 5.99) long -> x0 single-def -; V01 arg1 [V01,T01] ( 7, 5 ) ref -> x1 class-hnd <System.Object> -; V02 loc0 [V02,T07] ( 4, 4.29) long -> x2
+; V00 arg0 [V00,T01] ( 6, 5.99) long -> x0 single-def +; V01 arg1 [V01,T02] ( 7, 5 ) ref -> x1 class-hnd <System.Object> +; V02 loc0 [V02,T08] ( 4, 4.29) 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, 3 ) int -> x8 "Inline return value spill temp"
+; V05 tmp1 [V05,T00] ( 4,102.99) int -> x20 "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V07 tmp3 [V07,T06] ( 4, 4.58) byref -> x3 single-def "Inline stloc first use temp" -; V08 tmp4 [V08,T05] ( 4, 4.87) int -> x4 "Inline stloc first use temp" -; V09 tmp5 [V09,T02] ( 5, 6.16) int -> x5 "Inline stloc first use temp" -; V10 tmp6 [V10,T03] ( 5, 5.85) byref -> x6 "Inline stloc first use temp" -; V11 tmp7 [V11,T04] ( 5, 5.16) int -> x7 "Inline stloc first use temp"
+; V07 tmp3 [V07,T07] ( 4, 4.58) byref -> x3 single-def "Inline stloc first use temp" +; V08 tmp4 [V08,T06] ( 4, 4.87) int -> x4 "Inline stloc first use temp" +; V09 tmp5 [V09,T03] ( 5, 6.16) int -> x5 "Inline stloc first use temp" +; V10 tmp6 [V10,T04] ( 5, 5.85) byref -> x6 "Inline stloc first use temp" +; V11 tmp7 [V11,T05] ( 5, 5.16) int -> x7 "Inline stloc first use temp"
; V12 tmp8 [V12,T10] ( 2, 2.58) long -> x8 "Inline stloc first use temp"
-; V13 tmp9 [V13,T09] ( 3, 2.98) long -> x8 "Inline stloc first use temp"
+; V13 tmp9 [V13,T09] ( 3, 2.98) 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,T11] ( 2, 2 ) ref -> x3 single-def "Field obj" @@ -30,15 +30,16 @@ ; Lcl frame size = 0 G_M60590_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_M60590_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x1]
- cbz x1, G_M60590_IG12
+ cbz x1, G_M60590_IG13
ldr x2, [x1] cmp x2, x0
- beq G_M60590_IG12
+ beq G_M60590_IG13
movz x3, #0xD1FFAB1E // data for <unknown class>:<unknown field> movk x3, #0xD1FFAB1E LSL #16 movk x3, #0xD1FFAB1E LSL #32 @@ -68,75 +69,81 @@ G_M60590_IG03: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, ldr x8, [x6, #0x08] and w7, w7, #0xD1FFAB1E cmp x8, x2
- bne G_M60590_IG08
+ bne G_M60590_IG06
;; size=36 bbWeight=1.29 PerfScore 14.84 G_M60590_IG04: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0048 {x3 x6}, byref, isz ldr x8, [x6, #0x10]
- eor x8, x8, x0 - cmp x8, #1 - bhi G_M60590_IG08
+ eor x19, x8, x0 + cmp x19, #1 + bhi G_M60590_IG06
;; size=16 bbWeight=0.99 PerfScore 4.96 G_M60590_IG05: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0040 {x6}, byref, isz ; byrRegs -[x3] dmb ishld ldr w2, [x6] cmp w7, w2
- bne G_M60590_IG10 - ;; size=16 bbWeight=0.99 PerfScore 14.38 -G_M60590_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x6] - cmp w8, #1 - beq G_M60590_IG12 - cbz w8, G_M60590_IG11 - ;; size=12 bbWeight=1 PerfScore 2.50 -G_M60590_IG07: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10 - b <unknown method> - ; gcr arg pop 0 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M60590_IG08: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, gcvars, byref, isz - ; byrRegs +[x3] - cbz w7, G_M60590_IG10
+ bne G_M60590_IG09 + b G_M60590_IG08 + ;; size=20 bbWeight=0.99 PerfScore 15.37 +G_M60590_IG06: ; bbWeight=0.30, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz + ; byrRegs -[x6] +[x3] + cbz w7, G_M60590_IG09
;; size=4 bbWeight=0.30 PerfScore 0.30
-G_M60590_IG09: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz
+G_M60590_IG07: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0008 {x3}, byref, isz
add w5, w5, #1 add w4, w4, w5
- ldr w8, [x3, #0x04] - and w4, w4, w8
+ ldr w6, [x3, #0x04] + and w4, w4, w6
cmp w5, #8 blt G_M60590_IG03
- ;; size=24 bbWeight=1.29 PerfScore 7.74 -G_M60590_IG10: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+ b G_M60590_IG09 + ;; size=28 bbWeight=1.29 PerfScore 9.03 +G_M60590_IG08: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
; byrRegs -[x3]
- mov w8, #2 - b G_M60590_IG06 - ;; size=8 bbWeight=0.01 PerfScore 0.01 -G_M60590_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ sxtw w20, w19 + b G_M60590_IG10 + ;; size=8 bbWeight=0.99 PerfScore 1.49 +G_M60590_IG09: ; bbWeight=100, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov w20, #2 + ;; size=4 bbWeight=100 PerfScore 50.00 +G_M60590_IG10: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cmp w20, #1 + beq G_M60590_IG13 + cbz w20, G_M60590_IG12 + ;; size=12 bbWeight=1 PerfScore 2.50 +G_M60590_IG11: ; bbWeight=1, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20 + b <unknown method> + ; gcr arg pop 0 + ;; size=12 bbWeight=1 PerfScore 3.00 +G_M60590_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x1] mov x1, xzr ; gcrRegs +[x1] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60590_IG12: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
+G_M60590_IG13: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M60590_IG13: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M60590_IG14: ; bbWeight=0, epilog, nogc, extend + 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
-; Total bytes of code 224, prolog size 8, PerfScore 68.23, instruction count 56, allocated bytes for code 224 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 248, prolog size 12, PerfScore 123.99, 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 : 56 (0x00038) Actual length = 224 (0x0000e0)
+ 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) @@ -147,7 +154,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

+28 (+12.50%) : 4345.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)

@@ -5,33 +5,34 @@ ; optimized using Dynamic PGO ; fp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 1
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 1
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T00] ( 5, 4.99) long -> x0 single-def -; V01 arg1 [V01,T03] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
+; V00 arg0 [V00,T01] ( 5, 4.99) long -> x0 single-def +; V01 arg1 [V01,T04] ( 5, 4 ) ref -> x1 class-hnd single-def <System.Object>
;* 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,T09] ( 4, 3 ) int -> x8 "Inline return value spill temp" -; V06 tmp3 [V06,T07] ( 4, 4.58) byref -> x2 single-def "Inline stloc first use temp" -; V07 tmp4 [V07,T01] ( 3, 6.58) long -> x3 "Inlining Arg" -; V08 tmp5 [V08,T06] ( 4, 4.87) int -> x4 "Inline stloc first use temp" -; V09 tmp6 [V09,T02] ( 5, 6.16) int -> x5 "Inline stloc first use temp" -; V10 tmp7 [V10,T04] ( 5, 5.85) byref -> x6 "Inline stloc first use temp" -; V11 tmp8 [V11,T05] ( 5, 5.16) int -> x7 "Inline stloc first use temp"
+; V04 tmp1 [V04,T09] ( 2, 4 ) ref -> x2 class-hnd single-def "impAppendStmt" <int[]> +; V05 tmp2 [V05,T00] ( 4,102.99) int -> x20 "Inline return value spill temp" +; V06 tmp3 [V06,T08] ( 4, 4.58) byref -> x2 single-def "Inline stloc first use temp" +; V07 tmp4 [V07,T02] ( 3, 6.58) long -> x3 "Inlining Arg" +; V08 tmp5 [V08,T07] ( 4, 4.87) int -> x4 "Inline stloc first use temp" +; V09 tmp6 [V09,T03] ( 5, 6.16) int -> x5 "Inline stloc first use temp" +; V10 tmp7 [V10,T05] ( 5, 5.85) byref -> x6 "Inline stloc first use temp" +; V11 tmp8 [V11,T06] ( 5, 5.16) int -> x7 "Inline stloc first use temp"
; V12 tmp9 [V12,T11] ( 2, 2.58) long -> x8 "Inline stloc first use temp"
-; V13 tmp10 [V13,T10] ( 3, 2.98) long -> x8 "Inline stloc first use temp"
+; V13 tmp10 [V13,T10] ( 3, 2.98) long -> x19 "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, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
- stp fp, lr, [sp, #-0x10]!
+ stp fp, lr, [sp, #-0x20]! + stp x19, x20, [sp, #0x10]
mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50
+ ;; size=12 bbWeight=1 PerfScore 2.50
G_M32392_IG02: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref ; gcrRegs +[x1] movz x2, #0xD1FFAB1E // data for <unknown class>:<unknown field> @@ -64,81 +65,88 @@ G_M32392_IG03: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, ldr x8, [x6, #0x08] and w7, w7, #0xD1FFAB1E cmp x8, x3
- bne G_M32392_IG08
+ bne G_M32392_IG06
;; size=36 bbWeight=1.29 PerfScore 14.84 G_M32392_IG04: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0044 {x2 x6}, byref, isz ldr x8, [x6, #0x10]
- eor x8, x8, x0 - cmp x8, #1 - bhi G_M32392_IG08
+ eor x19, x8, x0 + cmp x19, #1 + bhi G_M32392_IG06
;; size=16 bbWeight=0.99 PerfScore 4.96 G_M32392_IG05: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0040 {x6}, byref, isz ; byrRegs -[x2] dmb ishld ldr w2, [x6] cmp w7, w2
- bne G_M32392_IG10 - ;; size=16 bbWeight=0.99 PerfScore 14.38 -G_M32392_IG06: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[x6] - cmp w8, #1 - beq G_M32392_IG11 - cbz w8, G_M32392_IG13
+ bne G_M32392_IG09 + b G_M32392_IG08 + ;; size=20 bbWeight=0.99 PerfScore 15.37 +G_M32392_IG06: ; bbWeight=0.30, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz + ; byrRegs -[x6] +[x2] + cbz w7, G_M32392_IG09 + ;; size=4 bbWeight=0.30 PerfScore 0.30 +G_M32392_IG07: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz + add w5, w5, #1 + add w4, w4, w5 + ldr w6, [x2, #0x04] + and w4, w4, w6 + cmp w5, #8 + blt G_M32392_IG03 + b G_M32392_IG09 + ;; size=28 bbWeight=1.29 PerfScore 9.03 +G_M32392_IG08: ; bbWeight=0.99, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + ; byrRegs -[x2] + sxtw w20, w19 + b G_M32392_IG10 + ;; size=8 bbWeight=0.99 PerfScore 1.49 +G_M32392_IG09: ; bbWeight=100, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref + mov w20, #2 + ;; size=4 bbWeight=100 PerfScore 50.00 +G_M32392_IG10: ; bbWeight=1, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref, isz + cmp w20, #1 + beq G_M32392_IG12 + cbz w20, G_M32392_IG14
bl <unknown method> ; gcrRegs -[x1] +[x0] ; gcr arg pop 0 ;; size=16 bbWeight=1 PerfScore 3.50
-G_M32392_IG07: ; bbWeight=1, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG11: ; bbWeight=1, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=1 PerfScore 2.00 -G_M32392_IG08: ; bbWeight=0.30, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, gcvars, byref, isz
+ ;; size=12 bbWeight=1 PerfScore 3.00 +G_M32392_IG12: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0] +[x1]
- ; byrRegs +[x2] - cbz w7, G_M32392_IG10 - ;; size=4 bbWeight=0.30 PerfScore 0.30 -G_M32392_IG09: ; bbWeight=1.29, gcrefRegs=0002 {x1}, byrefRegs=0004 {x2}, byref, isz - add w5, w5, #1 - add w4, w4, w5 - ldr w8, [x2, #0x04] - and w4, w4, w8 - cmp w5, #8 - blt G_M32392_IG03 - ;; size=24 bbWeight=1.29 PerfScore 7.74 -G_M32392_IG10: ; bbWeight=0.01, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref - ; byrRegs -[x2] - mov w8, #2 - b G_M32392_IG06 - ;; size=8 bbWeight=0.01 PerfScore 0.01 -G_M32392_IG11: ; bbWeight=0, gcrefRegs=0002 {x1}, byrefRegs=0000 {}, byref
mov x0, x1 ; gcrRegs +[x0] ;; size=4 bbWeight=0 PerfScore 0.00
-G_M32392_IG12: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG13: ; bbWeight=0, epilog, nogc, extend + ldp x19, x20, [sp, #0x10] + ldp fp, lr, [sp], #0x20
ret lr
- ;; size=8 bbWeight=0 PerfScore 0.00 -G_M32392_IG13: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=12 bbWeight=0 PerfScore 0.00 +G_M32392_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[x0-x1] mov x0, xzr ;; size=4 bbWeight=0 PerfScore 0.00
-G_M32392_IG14: ; bbWeight=0, epilog, nogc, extend - ldp fp, lr, [sp], #0x10
+G_M32392_IG15: ; bbWeight=0, epilog, nogc, extend + 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
-; Total bytes of code 224, prolog size 8, PerfScore 66.73, instruction count 56, allocated bytes for code 224 (MethodHash=b7ab8177) for method System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 252, prolog size 12, PerfScore 122.49, instruction count 63, allocated bytes for code 252 (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 : 56 (0x00038) Actual length = 224 (0x0000e0)
+ 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) @@ -152,7 +160,10 @@ Unwind Info: ---- Unwind codes ---- E1 set_fp; mov fp, sp ---- Epilog start at index 1 ----
- 81 save_fplr_x #1 (0x01); stp fp, lr, [sp, #-16]!
+ C8 02 save_regp X#0 Z#2 (0x02); stp x19, x20, [sp, #16] + 83 save_fplr_x #3 (0x03); stp fp, lr, [sp, #-32]! + E4 end + E4 end
E4 end E4 end

librariestestsnotieredcompilation.run.windows.arm64.Release.mch

-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,22 +155,37 @@ 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=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[x19] ; byrRegs -[x22]
- mov w0, #1 - ;; size=4 bbWeight=0.50 PerfScore 0.25 -G_M46876_IG20: ; bbWeight=0.50, epilog, nogc, extend
+ mov w0, wzr + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46876_IG16: ; bbWeight=1, 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
+ ;; size=20 bbWeight=1 PerfScore 6.00 +G_M46876_IG17: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref + mov w0, #1 + ;; size=4 bbWeight=1 PerfScore 0.50 +G_M46876_IG18: ; bbWeight=1, 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
-; 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 185.47, 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)

-24 (-1.90%) : 54898.dasm - Microsoft.Extensions.Options.Generators.Parser:TrackRangeAttributeForSubstitution(Microsoft.CodeAnalysis.AttributeData,Microsoft.CodeAnalysis.ITypeSymbol,byref):this (FullOpts)

@@ -9,73 +9,73 @@ ; Final local variable assignments ; ; V00 this [V00,T04] ( 7, 4.50) ref -> x20 this class-hnd single-def <Microsoft.Extensions.Options.Generators.Parser>
-; V01 arg1 [V01,T03] ( 7, 5.50) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.AttributeData> -; V02 arg2 [V02,T07] ( 4, 3.50) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.ITypeSymbol> -; V03 arg3 [V03,T10] ( 3, 2.50) byref -> x22 single-def
+; V01 arg1 [V01,T03] ( 7, 6 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.AttributeData> +; V02 arg2 [V02,T08] ( 4, 3.50) ref -> x21 class-hnd single-def <Microsoft.CodeAnalysis.ITypeSymbol> +; V03 arg3 [V03,T11] ( 3, 2.50) byref -> x22 single-def
;* V04 loc0 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IParameterSymbol]>
-; V05 loc1 [V05,T13] ( 5, 3.50) ref -> x26 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol> -; V06 loc2 [V06,T24] ( 4, 2.50) ubyte -> x27 -; V07 loc3 [V07,T08] ( 8, 5 ) ref -> x28 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol>
+; V05 loc1 [V05,T16] ( 5, 3.50) ref -> x26 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol> +; V06 loc2 [V06,T25] ( 4, 2.50) ubyte -> x27 +; V07 loc3 [V07,T09] ( 8, 5 ) ref -> x28 class-hnd <Microsoft.CodeAnalysis.ITypeSymbol>
;* V08 loc4 [V08 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.ITypeSymbol]>
-; V09 loc5 [V09,T35] ( 3, 1.50) ref -> x24 class-hnd <System.Object> -; V10 loc6 [V10,T15] ( 6, 3 ) ref -> x24 class-hnd single-def <Microsoft.CodeAnalysis.INamedTypeSymbol> -; V11 loc7 [V11,T01] ( 7, 17.50) int -> [fp+0x2C]
+; V09 loc5 [V09,T28] ( 3, 2 ) ref -> x24 class-hnd <System.Object> +; V10 loc6 [V10,T13] ( 6, 4 ) ref -> x24 class-hnd single-def <Microsoft.CodeAnalysis.INamedTypeSymbol> +; V11 loc7 [V11,T01] ( 7, 18.50) int -> [fp+0x2C]
;* V12 loc8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.TypedConstant]> ;* V13 loc9 [V13 ] ( 0, 0 ) struct (24) zero-ref ld-addr-op <Microsoft.CodeAnalysis.TypedConstant>
-; V14 loc10 [V14,T26] ( 5, 2 ) ref -> x2 ld-addr-op class-hnd <System.Collections.Generic.HashSet`1[System.Object]>
+; V14 loc10 [V14,T27] ( 5, 2 ) ref -> x2 ld-addr-op class-hnd <System.Collections.Generic.HashSet`1[System.Object]>
;# V15 OutArgs [V15 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V16 tmp1 [V16,T09] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.IMethodSymbol>
+; V16 tmp1 [V16,T10] ( 3, 5 ) ref -> x0 class-hnd single-def "dup spill" <Microsoft.CodeAnalysis.IMethodSymbol>
;* V17 tmp2 [V17 ] ( 0, 0 ) ref -> zero-ref single-def ;* V18 tmp3 [V18 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.IParameterSymbol]>
-; V19 tmp4 [V19,T16] ( 3, 3.00) ref -> x26 class-hnd exact single-def "impAppendStmt" <Microsoft.Extensions.Options.Generators.OptionsSourceGenContext>
+; V19 tmp4 [V19,T17] ( 3, 3.00) ref -> x26 class-hnd exact single-def "impAppendStmt" <Microsoft.Extensions.Options.Generators.OptionsSourceGenContext>
;* V20 tmp5 [V20 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <System.String>
-; V21 tmp6 [V21,T27] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer> -; V22 tmp7 [V22,T28] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
+; V21 tmp6 [V21,T30] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer> +; V22 tmp7 [V22,T31] ( 2, 2 ) ref -> x2 class-hnd exact single-def "impAppendStmt" <Microsoft.CodeAnalysis.SymbolEqualityComparer>
;* V23 tmp8 [V23 ] ( 0, 0 ) int -> zero-ref "non-inline candidate call" ;* V24 tmp9 [V24 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.String> ; V25 tmp10 [V25,T00] ( 4, 19 ) ref -> x0 "spilling varStr"
-;* V26 tmp11 [V26,T06] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" -; V27 tmp12 [V27,T36] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Object>
+;* V26 tmp11 [V26,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark" +; V27 tmp12 [V27,T39] ( 3, 1.50) ref -> x0 class-hnd "Inline return value spill temp" <System.Object>
;* V28 tmp13 [V28 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <System.Object>
-; V29 tmp14 [V29,T37] ( 3, 1.50) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
+; V29 tmp14 [V29,T40] ( 3, 1.50) ref -> x0 class-hnd "Inline stloc first use temp" <<unknown class>>
; V30 tmp15 [V30,T47] ( 3, 0 ) ref -> x19 class-hnd exact "NewObj constructor temp" <<unknown class>> ;* V31 tmp16 [V31 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.SymbolHolder>
-; V32 tmp17 [V32,T44] ( 2, 1 ) ubyte -> x0 single-def "Inline return value spill temp" -; V33 tmp18 [V33,T29] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
+; V32 tmp17 [V32,T45] ( 2, 1 ) ubyte -> x0 single-def "Inline return value spill temp" +; V33 tmp18 [V33,T32] ( 2, 2 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
;* V34 tmp19 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.SymbolHolder>
-; V35 tmp20 [V35,T45] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" -; V36 tmp21 [V36,T17] ( 3, 3 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
+; V35 tmp20 [V35,T46] ( 2, 1 ) ubyte -> x0 "Inline return value spill temp" +; V36 tmp21 [V36,T18] ( 3, 3 ) ref -> x1 class-hnd single-def "Inlining Arg" <Microsoft.CodeAnalysis.INamedTypeSymbol>
;* V37 tmp22 [V37 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.SymbolHolder>
-; V38 tmp23 [V38,T18] ( 3, 3.00) ref -> x28 class-hnd exact single-def "Inlining Arg" <System.String>
+; V38 tmp23 [V38,T19] ( 3, 3.00) ref -> x28 class-hnd exact single-def "Inlining Arg" <System.String>
;* V39 tmp24 [V39 ] ( 0, 0 ) ubyte -> zero-ref single-def "Inline stloc first use temp"
-; V40 tmp25 [V40,T19] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.Object]> -; V41 tmp26 [V41,T43] ( 3, 1 ) ubyte -> x24 "Inline return value spill temp" -; V42 tmp27 [V42,T20] ( 3, 3.00) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]> -; V43 tmp28 [V43,T42] ( 3, 1.42) byref -> x0 single-def "Inline stloc first use temp" -; V44 tmp29 [V44,T21] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]>
+; V40 tmp25 [V40,T20] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.HashSet`1[System.Object]> +; V41 tmp26 [V41,T44] ( 3, 1 ) ubyte -> x24 "Inline return value spill temp" +; V42 tmp27 [V42,T21] ( 3, 3.00) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]> +; V43 tmp28 [V43,T43] ( 3, 1.42) byref -> x0 single-def "Inline stloc first use temp" +; V44 tmp29 [V44,T22] ( 3, 3 ) ref -> x0 class-hnd single-def "Inlining Arg" <System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.HashSet`1[System.Object]]>
;* V45 tmp30 [V45 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def "Inlining Arg" <System.Collections.Generic.HashSet`1[System.Object]> ;* V46 tmp31 [V46 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ;* V47 tmp32 [V47 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <Microsoft.Extensions.Options.Generators.OptionsSourceGenContext>
-; V48 tmp33 [V48,T25] ( 3, 2.50) ref -> x25 single-def "field V04.array (fldOffset=0x0)" P-INDEP -; V49 tmp34 [V49,T38] ( 3, 1.50) ref -> x0 "field V08.array (fldOffset=0x0)" P-INDEP -; V50 tmp35 [V50,T39] ( 3, 1.50) ref -> x0 "field V12.array (fldOffset=0x0)" P-INDEP
+; V48 tmp33 [V48,T26] ( 3, 2.50) ref -> x25 single-def "field V04.array (fldOffset=0x0)" P-INDEP +; V49 tmp34 [V49,T41] ( 3, 1.50) ref -> x0 "field V08.array (fldOffset=0x0)" P-INDEP +; V50 tmp35 [V50,T23] ( 3, 3 ) ref -> x0 "field V12.array (fldOffset=0x0)" P-INDEP
;* V51 tmp36 [V51 ] ( 0, 0 ) ref -> zero-ref "field V13._type (fldOffset=0x0)" P-INDEP
-; V52 tmp37 [V52,T40] ( 3, 1.50) ref -> x24 "field V13._value (fldOffset=0x8)" P-INDEP -; V53 tmp38 [V53,T46] ( 2, 1 ) int -> x1 "field V13._kind (fldOffset=0x10)" P-INDEP -; V54 tmp39 [V54,T23] ( 4, 2.50) ref -> x24 single-def "field V18.array (fldOffset=0x0)" P-INDEP -; V55 tmp40 [V55,T12] ( 2, 4 ) ref -> x0 single-def "argument with side effect" -; V56 tmp41 [V56,T30] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V57 tmp42 [V57,T22] ( 3, 3 ) byref -> x1 "BlockOp address local"
+; V52 tmp37 [V52,T29] ( 3, 2 ) ref -> x24 "field V13._value (fldOffset=0x8)" P-INDEP +; V53 tmp38 [V53,T38] ( 2, 2 ) int -> x1 "field V13._kind (fldOffset=0x10)" P-INDEP +; V54 tmp39 [V54,T24] ( 4, 2.50) ref -> x24 single-def "field V18.array (fldOffset=0x0)" P-INDEP +; V55 tmp40 [V55,T15] ( 2, 4 ) ref -> x0 single-def "argument with side effect" +; V56 tmp41 [V56,T33] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V57 tmp42 [V57,T06] ( 3, 6 ) byref -> x1 "BlockOp address local"
; V58 tmp43 [V58,T48] ( 2, 0 ) ref -> x1 "argument with side effect"
-; V59 tmp44 [V59,T31] ( 2, 2.00) ref -> x0 single-def "argument with side effect" -; V60 tmp45 [V60,T32] ( 2, 2 ) ref -> x0 single-def "argument with side effect" -; V61 tmp46 [V61,T33] ( 2, 2 ) ref -> x3 single-def "argument with side effect" -; V62 tmp47 [V62,T34] ( 2, 2 ) ref -> x20 single-def "argument with side effect" -; V63 cse0 [V63,T14] ( 5, 3.50) long -> x23 "CSE - moderate" -; V64 cse1 [V64,T41] ( 3, 1.50) ref -> x25 "CSE - moderate"
+; V59 tmp44 [V59,T34] ( 2, 2.00) ref -> x0 single-def "argument with side effect" +; V60 tmp45 [V60,T35] ( 2, 2 ) ref -> x0 single-def "argument with side effect" +; V61 tmp46 [V61,T36] ( 2, 2 ) ref -> x3 single-def "argument with side effect" +; V62 tmp47 [V62,T37] ( 2, 2 ) ref -> x20 single-def "argument with side effect" +; V63 cse0 [V63,T14] ( 5, 4 ) long -> x23 "CSE - moderate" +; V64 cse1 [V64,T42] ( 3, 1.50) ref -> x25 "CSE - moderate"
; V65 cse2 [V65,T02] ( 16, 13 ) long -> [fp+0x20] multi-def "CSE - aggressive" ; V66 cse3 [V66,T05] ( 4, 6.50) int -> [fp+0x1C] spill-single-def "CSE - aggressive"
-; V67 cse4 [V67,T11] ( 2, 4.50) byref -> x25 hoist "CSE - moderate"
+; V67 cse4 [V67,T12] ( 2, 4.50) byref -> x25 hoist "CSE - moderate"
; ; Lcl frame size = 32 @@ -169,7 +169,7 @@ G_M10085_IG06: ; bbWeight=0.50, gcrefRegs=7380000 {x19 x20 x21 x24 x25 x2 blr x1 ldr w1, [x0, #0x08] cmp w1, #0
- bls G_M10085_IG34
+ bls G_M10085_IG35
ldr x28, [x0, #0x10] ; gcrRegs +[x28] str x21, [fp, #0x20] // [V65 cse2] @@ -179,7 +179,7 @@ G_M10085_IG07: ; bbWeight=1, gcrefRegs=17180000 {x19 x20 x24 x25 x26 x28} ldr w1, [x25, #0x08] str w1, [fp, #0x1C] // [V66 cse3] cmp w1, #2
- bne G_M10085_IG09
+ bne G_M10085_IG10
;; size=16 bbWeight=1 PerfScore 5.50 G_M10085_IG08: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=400000 {x22}, byref, isz ; gcrRegs -[x25] @@ -191,7 +191,7 @@ G_M10085_IG08: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, ldr x1, [x1] blr x1 ; gcrRegs -[x0 x28]
- cbz w0, G_M10085_IG25
+ cbz w0, G_M10085_IG09
ldr x0, [x24, #0x10] ; gcrRegs +[x0] ldr x21, [fp, #0x20] // [V65 cse2] @@ -201,13 +201,17 @@ G_M10085_IG08: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, ; gcrRegs -[x24 x26] mov x26, x0 ; gcrRegs +[x26]
- str x21, [fp, #0x20] // [V65 cse2] - b G_M10085_IG25 - ;; size=60 bbWeight=0.50 PerfScore 9.50 -G_M10085_IG09: ; bbWeight=0.50, gcrefRegs=16180000 {x19 x20 x25 x26 x28}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x0] +[x25 x28]
+ b G_M10085_IG27 + ;; size=56 bbWeight=0.50 PerfScore 9.00 +G_M10085_IG09: ; bbWeight=0.25, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=400000 {x22}, byref + ; gcrRegs -[x0] + ldr x21, [fp, #0x20] // [V65 cse2] + b G_M10085_IG27 + ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M10085_IG10: ; bbWeight=0.50, gcrefRegs=16180000 {x19 x20 x25 x26 x28}, byrefRegs=400000 {x22}, byref, isz + ; gcrRegs +[x25 x28]
cmp w1, #3
- bne G_M10085_IG25
+ bne G_M10085_IG16
mov x24, xzr ; gcrRegs +[x24] mov w2, wzr @@ -215,7 +219,7 @@ G_M10085_IG09: ; bbWeight=0.50, gcrefRegs=16180000 {x19 x20 x25 x26 x28}, ; gcrRegs -[x25] ; byrRegs +[x25] ;; size=20 bbWeight=0.50 PerfScore 1.50
-G_M10085_IG10: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG11: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
str w2, [fp, #0x2C] // [V11 loc7] ldr x0, [x25, w2, UXTW #3] ; gcrRegs +[x0] @@ -223,14 +227,14 @@ G_M10085_IG10: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, by add x11, x21, #24 ldr x3, [x11] blr x3
- cbz x0, G_M10085_IG13
+ cbz x0, G_M10085_IG14
;; size=28 bbWeight=4 PerfScore 46.00
-G_M10085_IG11: ; bbWeight=1, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG12: ; bbWeight=1, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
ldr w1, [x0, #0x08] cmp w1, #4
- bne G_M10085_IG13
+ bne G_M10085_IG14
;; size=12 bbWeight=1 PerfScore 4.50
-G_M10085_IG12: ; bbWeight=0.50, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG13: ; bbWeight=0.50, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
ldr x0, [x0, #0x0C] ; gcrRegs -[x0] movz x1, #116 @@ -238,9 +242,9 @@ G_M10085_IG12: ; bbWeight=0.50, gcrefRegs=15180001 {x0 x19 x20 x24 x26 x2 movk x1, #112 LSL #32 movk x1, #101 LSL #48 cmp x0, x1
- beq G_M10085_IG15
+ beq G_M10085_IG17
;; size=28 bbWeight=0.50 PerfScore 3.25
-G_M10085_IG13: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
+G_M10085_IG14: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=2400000 {x22 x25}, byref, isz
ldr w1, [fp, #0x2C] // [V11 loc7] add w1, w1, #1 ldr w0, [fp, #0x1C] // [V66 cse3] @@ -248,15 +252,20 @@ G_M10085_IG13: ; bbWeight=4, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, by cmp w0, w1 str x21, [fp, #0x20] // [V65 cse2] ldr w2, [fp, #0x2C] // [V11 loc7]
- bgt G_M10085_IG10
+ bgt G_M10085_IG11
;; size=32 bbWeight=4 PerfScore 40.00
-G_M10085_IG14: ; bbWeight=0.50, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=400000 {x22}, byref
+G_M10085_IG15: ; bbWeight=1, gcrefRegs=15180000 {x19 x20 x24 x26 x28}, byrefRegs=400000 {x22}, byref
; byrRegs -[x25] ldr x21, [fp, #0x20] // [V65 cse2]
- b G_M10085_IG18 - ;; size=8 bbWeight=0.50 PerfScore 1.50 -G_M10085_IG15: ; bbWeight=0.50, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=400000 {x22}, byref, isz - ; gcrRegs -[x24]
+ b G_M10085_IG21 + ;; size=8 bbWeight=1 PerfScore 3.00 +G_M10085_IG16: ; bbWeight=0.25, gcrefRegs=4180000 {x19 x20 x26}, byrefRegs=400000 {x22}, byref + ; gcrRegs -[x24 x28] + ldr x21, [fp, #0x20] // [V65 cse2] + b G_M10085_IG27 + ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M10085_IG17: ; bbWeight=1, gcrefRegs=14180000 {x19 x20 x26 x28}, byrefRegs=400000 {x22}, byref, isz + ; gcrRegs +[x28]
mov x0, x19 ; gcrRegs +[x0] ldr x2, [x23, #0x38] @@ -264,7 +273,7 @@ G_M10085_IG15: ; bbWeight=0.50, gcrefRegs=14180000 {x19 x20 x26 x28}, byr ldr w1, [x0, #0x08] ldr w24, [fp, #0x2C] // [V11 loc7] cmp w24, w1
- bhs G_M10085_IG34
+ bhs G_M10085_IG35
mov w1, #24 mov x2, #16 umaddl x1, w24, w1, x2 @@ -275,33 +284,35 @@ G_M10085_IG15: ; bbWeight=0.50, gcrefRegs=14180000 {x19 x20 x26 x28}, byr ldr w1, [x1, #0x10] ; byrRegs -[x1] cmp w1, #4
- beq G_M10085_IG35
+ beq G_M10085_IG36
...

+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,T07] ( 11, 20.50) int -> x21
;* V02 loc1 [V02,T51] ( 0, 0 ) int -> zero-ref
-; V03 loc2 [V03,T00] ( 35, 73 ) int -> x22
+; V03 loc2 [V03,T00] ( 39, 77.50) 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,T09] ( 12, 18.04) 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,T08] ( 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_IG42
;; 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_IG57
add x24, x19, #12 ; byrRegs +[x24] ldrh w0, [x24, w0, UXTW #2] cmp w23, w20
- bhs G_M18406_IG52
+ bhs G_M18406_IG57
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, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz
cmp w22, w21 ccmp w22, #0, nc, lt
- blt G_M18406_IG37
+ blt G_M18406_IG42 + ;; size=12 bbWeight=1 PerfScore 2.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_IG57
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 - ;; 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_IG15: ; bbWeight=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref + b G_M18406_IG18 + ;; size=4 bbWeight=1 PerfScore 1.00 +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=1, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cmp w22, w21 + bge G_M18406_IG42 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M18406_IG19: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz + cmp w22, w20 + bhs G_M18406_IG57 + 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_IG42 + ;; 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_IG57
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 - ;; size=4 bbWeight=0.50 PerfScore 0.50 -G_M18406_IG19: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
+G_M18406_IG21: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref + b G_M18406_IG24 + ;; size=4 bbWeight=1 PerfScore 1.00 +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=1, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz + cmp w22, w21 + bge G_M18406_IG42 + ;; size=8 bbWeight=1 PerfScore 1.50 +G_M18406_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz + cmp w22, w20 + bhs G_M18406_IG57
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_IG42
add w21, w22, #1 sub w2, w20, w21 cmp w20, w21
- blo G_M18406_IG53
+ blo G_M18406_IG58
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_IG42
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_IG59
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 ...

realworld.run.windows.arm64.checked.mch

-12 (-1.67%) : 1070.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector1[float],System.Numerics.Vector1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)

@@ -9,40 +9,40 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T11] ( 5, 14 ) byref -> x0 single-def
-; V01 arg1 [V01,T10] ( 9, 16.50) int -> x1 single-def -; V02 arg2 [V02,T38] ( 5, 3.50) simd16 -> d0 HFA(simd16) single-def <System.Numerics.Vector`1[float]> -; V03 arg3 [V03,T21] ( 5, 14 ) simd16 -> d1 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[float]> -; V04 arg4 [V04,T22] ( 5, 14 ) simd16 -> d2 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[int]> -; V05 arg5 [V05,T00] ( 16, 51 ) byref -> x2 single-def -; V06 arg6 [V06,T02] ( 12, 35 ) byref -> x3 single-def
+; V01 arg1 [V01,T10] ( 9, 17.50) int -> x1 single-def +; V02 arg2 [V02,T38] ( 5, 4.50) simd16 -> d0 HFA(simd16) single-def <System.Numerics.Vector`1[float]> +; V03 arg3 [V03,T22] ( 5, 14 ) simd16 -> d1 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[float]> +; V04 arg4 [V04,T23] ( 5, 14 ) simd16 -> d2 HFA(simd16) ld-addr-op single-def <System.Numerics.Vector`1[int]> +; V05 arg5 [V05,T00] ( 16, 52 ) byref -> x2 single-def +; V06 arg6 [V06,T02] ( 12, 36 ) byref -> x3 single-def
; V07 arg7 [V07,T03] ( 10, 34 ) byref -> x4 single-def ; V08 arg8 [V08,T04] ( 10, 34 ) byref -> x5 single-def
-; V09 arg9 [V09,T12] ( 4, 3 ) byref -> x6 single-def -; V10 arg10 [V10,T13] ( 4, 3 ) byref -> x7 single-def -; V11 arg11 [V11,T14] ( 2, 1 ) byref -> [fp+0x10] single-def -; V12 arg12 [V12,T15] ( 2, 1 ) byref -> [fp+0x18] single-def -; V13 loc0 [V13,T27] ( 5, 13 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V14 loc1 [V14,T39] ( 2, 4.50) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> -; V15 loc2 [V15,T24] ( 7, 14 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> -; V16 loc3 [V16,T40] ( 2, 4.50) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> -; V17 loc4 [V17,T41] ( 2, 4.50) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[float]> -; V18 loc5 [V18,T25] ( 6, 13.50) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[float]> -; V19 loc6 [V19,T26] ( 6, 13.50) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]> -; V20 loc7 [V20,T45] ( 3, 1.50) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> -; V21 loc8 [V21,T07] ( 6, 20.50) int -> x10
+; V09 arg9 [V09,T12] ( 4, 3.50) byref -> x6 single-def +; V10 arg10 [V10,T13] ( 4, 3.50) byref -> x7 single-def +; V11 arg11 [V11,T14] ( 2, 1.50) byref -> x8 single-def +; V12 arg12 [V12,T15] ( 2, 1.50) byref -> x9 single-def +; V13 loc0 [V13,T27] ( 5, 13.50) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V14 loc1 [V14,T41] ( 2, 4.50) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> +; V15 loc2 [V15,T21] ( 7, 16 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> +; V16 loc3 [V16,T39] ( 2, 5 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> +; V17 loc4 [V17,T40] ( 2, 5 ) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[float]> +; V18 loc5 [V18,T25] ( 6, 15 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[float]> +; V19 loc6 [V19,T26] ( 6, 15 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]> +; V20 loc7 [V20,T45] ( 3, 3 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]> +; V21 loc8 [V21,T09] ( 6, 20.50) int -> x10
; V22 loc9 [V22,T05] ( 7, 28 ) byref -> x11 ; V23 loc10 [V23,T37] ( 2, 8 ) simd16 -> d22 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]> ;* V24 loc11 [V24 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ; V25 loc12 [V25,T28] ( 3, 12 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]> ; V26 loc13 [V26,T17] ( 6, 24 ) simd16 -> d22 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]>
-; V27 loc14 [V27,T08] ( 6, 20.50) int -> x6
+; V27 loc14 [V27,T07] ( 6, 21 ) int -> x6
; V28 loc15 [V28,T06] ( 7, 28 ) byref -> x10 ; V29 loc16 [V29,T29] ( 3, 12 ) simd16 -> d19 HFA(simd16) <System.Numerics.Vector`1[float]> ; V30 loc17 [V30,T30] ( 3, 12 ) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> ; V31 loc18 [V31,T31] ( 3, 12 ) simd16 -> d18 HFA(simd16) <System.Numerics.Vector`1[float]> ;* V32 loc19 [V32 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]> ; V33 loc20 [V33,T18] ( 6, 24 ) simd16 -> d19 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[int]>
-; V34 loc21 [V34,T09] ( 6, 20.50) int -> x3
+; V34 loc21 [V34,T08] ( 6, 21 ) int -> x3
; V35 loc22 [V35,T01] ( 11, 44 ) byref -> x6 ;* V36 loc23 [V36 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V37 loc24 [V37 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> @@ -61,7 +61,7 @@ ;* V50 tmp8 [V50 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt" ;* V51 tmp9 [V51 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[int]> ;* V52 tmp10 [V52 ] ( 0, 0 ) simd16 -> zero-ref "impAppendStmt"
-; V53 cse0 [V53,T23] ( 4, 16 ) simd16 -> d21 "CSE - aggressive"
+; V53 cse0 [V53,T24] ( 4, 16 ) simd16 -> d21 "CSE - aggressive"
; V54 cse1 [V54,T33] ( 3, 12 ) simd16 -> d25 "CSE - aggressive" ; V55 cse2 [V55,T42] ( 2, 4.25) simd8 -> d19 hoist "CSE - aggressive" ; V56 cse3 [V56,T43] ( 2, 4.25) simd8 -> d20 hoist "CSE - aggressive" @@ -69,40 +69,38 @@ ; V58 cse5 [V58,T34] ( 3, 12 ) simd16 -> d24 "CSE - aggressive" ; V59 cse6 [V59,T35] ( 3, 12 ) simd16 -> d17 "CSE - aggressive" ; V60 cse7 [V60,T36] ( 3, 12 ) simd16 -> d23 "CSE - aggressive"
-; V61 cse8 [V61,T46] ( 3, 1.50) simd16 -> d16 "CSE - moderate" -; V62 cse9 [V62,T47] ( 3, 1.50) simd16 -> d18 "CSE - moderate"
+; V61 cse8 [V61,T47] ( 3, 2 ) simd16 -> d16 "CSE - moderate" +; V62 cse9 [V62,T46] ( 3, 3 ) simd16 -> d18 "CSE - moderate"
; ; Lcl frame size = 0 G_M58832_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG stp fp, lr, [sp, #-0x10]! mov fp, sp
- ;; size=8 bbWeight=1 PerfScore 1.50 -G_M58832_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+ ldp x8, x9, [fp, #0x10] // [V11 arg11], [V12 arg12] + ; byrRegs +[x8-x9] + ;; size=12 bbWeight=1 PerfScore 4.50 +G_M58832_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
; byrRegs +[x0 x2-x7] cbnz w1, G_M58832_IG05 ;; size=4 bbWeight=1 PerfScore 1.00
-G_M58832_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00C0 {x6 x7}, byref
+G_M58832_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=03C0 {x6 x7 x8 x9}, byref
; byrRegs -[x0 x2-x5] movi v0.4s, #0 str q0, [x6] movi v1.4s, #0 str q1, [x7] movi v2.4s, #0
- ldr x8, [fp, #0x10] // [V11 arg11] - ; byrRegs +[x8]
str q2, [x8] movi v16.4s, #0
- ldr x9, [fp, #0x18] // [V12 arg12] - ; byrRegs +[x9]
str q16, [x9]
- ;; size=40 bbWeight=0.50 PerfScore 5.00
+ ;; size=32 bbWeight=0.50 PerfScore 3.00
G_M58832_IG04: ; bbWeight=0.50, epilog, nogc, extend ldp fp, lr, [sp], #0x10 ret lr ;; size=8 bbWeight=0.50 PerfScore 1.00
-G_M58832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, gcvars, byref, isz - ; byrRegs -[x8-x9] +[x0 x2-x5]
+G_M58832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, gcvars, byref, isz + ; byrRegs +[x0 x2-x5]
ldr q16, [@RWD00] mov v17.16b, v16.16b ldr d18, [@RWD16] @@ -111,11 +109,11 @@ G_M58832_IG05: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=000 cmp w1, #0 ble G_M58832_IG08 ;; size=28 bbWeight=0.50 PerfScore 4.75
-G_M58832_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+G_M58832_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
ldr d19, [@RWD24] ldr d20, [@RWD32] ;; size=8 bbWeight=0.25 PerfScore 1.00
-G_M58832_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+G_M58832_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
sbfiz x11, x10, #6, #32 add x11, x0, x11 ; byrRegs +[x11] @@ -154,7 +152,7 @@ G_M58832_IG07: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 cmp w10, w1 blt G_M58832_IG07 ;; size=144 bbWeight=4 PerfScore 218.00
-G_M58832_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 x3 x4 x5 x6 x7}, byref, isz
+G_M58832_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=03FD {x0 x2 x3 x4 x5 x6 x7 x8 x9}, byref, isz
; byrRegs -[x11] fcmgt v16.4s, v17.4s, v16.4s str q16, [x6] @@ -163,8 +161,8 @@ G_M58832_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00FD {x0 x2 ; byrRegs -[x6] cmp w1, #0 ble G_M58832_IG10
- ;; size=24 bbWeight=0.50 PerfScore 2.25 -G_M58832_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 x3 x4 x5 x7}, byref, isz
+ ;; size=24 bbWeight=1 PerfScore 4.50 +G_M58832_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=03BD {x0 x2 x3 x4 x5 x7 x8 x9}, byref, isz
sbfiz x10, x6, #6, #32 add x10, x0, x10 ; byrRegs +[x10] @@ -200,7 +198,7 @@ G_M58832_IG09: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 x3 cmp w6, w1 blt G_M58832_IG09 ;; size=132 bbWeight=4 PerfScore 220.00
-G_M58832_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 x3 x4 x5 x7}, byref, isz
+G_M58832_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=03BD {x0 x2 x3 x4 x5 x7 x8 x9}, byref, isz
; byrRegs -[x10] fmul v17.4s, v0.4s, v0.4s ldr q18, [@RWD48] @@ -217,12 +215,12 @@ G_M58832_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=00BD {x0 x2 ; byrRegs -[x3] cmp w1, #0 ble G_M58832_IG13
- ;; size=56 bbWeight=0.50 PerfScore 12.50 -G_M58832_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0035 {x0 x2 x4 x5}, byref, isz
+ ;; size=56 bbWeight=1 PerfScore 25.00 +G_M58832_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0335 {x0 x2 x4 x5 x8 x9}, byref, isz
; byrRegs -[x7] ldr d22, [@RWD64] ;; size=4 bbWeight=0.25 PerfScore 0.50
-G_M58832_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0035 {x0 x2 x4 x5}, byref, isz
+G_M58832_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0335 {x0 x2 x4 x5 x8 x9}, byref, isz
sbfiz x6, x3, #6, #32 add x6, x0, x6 ; byrRegs +[x6] @@ -279,25 +277,21 @@ G_M58832_IG12: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0035 {x0 x2 x4 cmp w3, w1 blt G_M58832_IG12 ;; size=216 bbWeight=4 PerfScore 344.00
-G_M58832_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58832_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0300 {x8 x9}, byref
; byrRegs -[x0 x2 x4-x6] fmul v16.4s, v16.4s, v16.4s fmul v16.4s, v16.4s, v18.4s fmul v17.4s, v20.4s, v20.4s fcmgt v17.4s, v17.4s, v16.4s
- ldr x8, [fp, #0x10] // [V11 arg11] - ; byrRegs +[x8]
str q17, [x8] fmul v17.4s, v21.4s, v21.4s fcmgt v16.4s, v17.4s, v16.4s
- ldr x9, [fp, #0x18] // [V12 arg12] - ; byrRegs +[x9]
str q16, [x9]
- ;; size=40 bbWeight=0.50 PerfScore 10.00 -G_M58832_IG14: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=32 bbWeight=1 PerfScore 16.00 +G_M58832_IG14: ; bbWeight=1, epilog, nogc, extend
ldp fp, lr, [sp], #0x10 ret lr
- ;; size=8 bbWeight=0.50 PerfScore 1.00
+ ;; size=8 bbWeight=1 PerfScore 2.00
RWD00 dq FF7FFFFFFF7FFFFFh, FF7FFFFFFF7FFFFFh RWD16 dq 3C23D70A3C23D70Ah RWD24 dq 3F4B70CA3F4B70CAh @@ -307,7 +301,7 @@ RWD48 dq 358637BD358637BDh, 358637BD358637BDh RWD64 dq 3E8000003E800000h
-; Total bytes of code 720, prolog size 8, PerfScore 822.50, instruction count 180, allocated bytes for code 720 (MethodHash=18e61a2f) for method BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
+; Total bytes of code 708, prolog size 12, PerfScore 845.25, instruction count 177, allocated bytes for code 708 (MethodHash=18e61a2f) for method BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
; ============================================================ Unwind Info: @@ -318,7 +312,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 180 (0x000b4) Actual length = 720 (0x0002d0)
+ Function Length : 177 (0x000b1) Actual length = 708 (0x0002c4)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

-12 (-0.75%) : 32267.dasm - System.Management.Automation.ParameterBinderController:BindPositionalParameters(System.Collections.ObjectModel.Collection1[System.Management.Automation.CommandParameterInternal],uint,uint,byref):System.Collections.ObjectModel.Collection1[System.Management.Automation.CommandParameterInternal]:this (FullOpts)

@@ -8,23 +8,23 @@ ; 0 inlinees with PGO data; 36 single block inlinees; 8 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T09] ( 10, 13 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Management.Automation.ParameterBinderController> -; V01 arg1 [V01,T17] ( 5, 4 ) ref -> x23 class-hnd single-def <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]>
+; V00 this [V00,T10] ( 10, 13 ) ref -> [fp+0x18] this class-hnd EH-live single-def <System.Management.Automation.ParameterBinderController> +; V01 arg1 [V01,T17] ( 5, 4 ) ref -> x22 class-hnd single-def <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]>
; V02 arg2 [V02,T03] ( 9, 16 ) int -> x19 ; V03 arg3 [V03,T05] ( 8, 14 ) int -> x20 single-def
-; V04 arg4 [V04,T13] ( 7, 11 ) byref -> x22 single-def -; V05 loc0 [V05,T02] ( 10, 22.50) ref -> x24 class-hnd <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> -; V06 loc1 [V06,T10] ( 6, 15 ) ref -> x26 class-hnd exact single-def <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]> -; V07 loc2 [V07,T23] ( 6, 4.50) ref -> x27 class-hnd single-def <<unknown class>> -; V08 loc3 [V08 ] ( 3, 3 ) int -> [fp+0x90] do-not-enreg[X] must-init addr-exposed ld-addr-op
+; V04 arg4 [V04,T13] ( 7, 11 ) byref -> x21 single-def +; V05 loc0 [V05,T02] ( 10, 22.50) ref -> x23 class-hnd <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> +; V06 loc1 [V06,T09] ( 6, 15.50) ref -> x25 class-hnd exact single-def <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]> +; V07 loc2 [V07,T23] ( 6, 4.50) ref -> x26 class-hnd single-def <<unknown class>> +; V08 loc3 [V08 ] ( 3, 3.50) int -> [fp+0x90] do-not-enreg[X] must-init addr-exposed ld-addr-op
; V09 loc4 [V09 ] ( 5, 9.50) struct (40) [fp+0x68] do-not-enreg[XSF] must-init addr-exposed ld-addr-op <System.Collections.Generic.SortedDictionary`2+ValueCollection+Enumerator[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V10 loc5 [V10 ] ( 0, 0 ) ref -> zero-ref class-hnd <System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]>
-; V11 loc6 [V11,T11] ( 7, 14 ) ref -> [fp+0x10] class-hnd exact spill-single-def <System.Management.Automation.CommandParameterInternal> -; V12 loc7 [V12,T04] ( 9, 18 ) ubyte -> x7 -; V13 loc8 [V13,T00] ( 8, 25 ) int -> x21
+; V11 loc6 [V11,T11] ( 7, 14 ) ref -> x28 class-hnd exact <System.Management.Automation.CommandParameterInternal> +; V12 loc7 [V12,T04] ( 9, 18 ) ubyte -> x6 +; V13 loc8 [V13,T00] ( 8, 26 ) int -> x19
; V14 OutArgs [V14 ] ( 1, 1 ) struct (16) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V15 tmp1 [V15,T18] ( 3, 6 ) ref -> x24 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> -; V16 tmp2 [V16,T26] ( 3, 3 ) ref -> x26 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]>
+; V15 tmp1 [V15,T18] ( 3, 6 ) ref -> x23 class-hnd exact single-def "NewObj constructor temp" <System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]> +; V16 tmp2 [V16,T26] ( 3, 3 ) ref -> x25 class-hnd exact single-def "NewObj constructor temp" <System.Collections.Generic.List`1[System.Management.Automation.CommandParameterInternal]>
;* V17 tmp3 [V17 ] ( 0, 0 ) ref -> zero-ref class-hnd "impSpillSpecialSideEff" <<unknown class>> ; V18 tmp4 [V18,T36] ( 2, 0 ) ref -> x19 class-hnd single-def "non-inline candidate call" <<unknown class>> ; V19 tmp5 [V19,T37] ( 2, 0 ) ref -> x20 class-hnd exact single-def "non-inline candidate call" <System.String> @@ -41,21 +41,21 @@ ; V30 tmp16 [V30,T32] ( 2, 2 ) struct (40) [fp+0x40] do-not-enreg[SF] must-init ld-addr-op "NewObj constructor temp" <System.Collections.Generic.SortedDictionary`2+Enumerator[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ; V31 tmp17 [V31,T22] ( 5, 5 ) ref -> x0 class-hnd exact single-def "Inlining Arg" <<unknown class>> ; V32 tmp18 [V32 ] ( 8, 8 ) struct (32) [fp+0x20] do-not-enreg[XSF] must-init addr-exposed ld-addr-op "NewObj constructor temp" <System.Collections.Generic.SortedSet`1+Enumerator[System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]]>
-; V33 tmp19 [V33,T27] ( 3, 3 ) ref -> x28 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
+; V33 tmp19 [V33,T27] ( 3, 3 ) ref -> x27 class-hnd exact single-def "NewObj constructor temp" <<unknown class>>
;* V34 tmp20 [V34 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V35 tmp21 [V35,T33] ( 2, 1 ) int -> x23 single-def "Inline return value spill temp"
+; V35 tmp21 [V35,T33] ( 2, 1 ) int -> x22 single-def "Inline return value spill temp"
;* V36 tmp22 [V36 ] ( 0, 0 ) int -> zero-ref "Inlining Arg"
-; V37 tmp23 [V37,T25] ( 4, 3 ) int -> x23 "Inlining Arg"
+; V37 tmp23 [V37,T25] ( 4, 3 ) int -> x22 "Inlining Arg"
;* V38 tmp24 [V38 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V39 tmp25 [V39 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V40 tmp26 [V40 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.Collections.Generic.KeyValuePair`2[int,System.Collections.Generic.Dictionary`2[System.Management.Automation.MergedCompiledCommandParameter,System.Management.Automation.PositionalCommandParameter]]> ;* V41 tmp27 [V41 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Collections.Generic.SortedSet`1+Node[System.Collections.Generic.KeyValuePair`2[int,System.__Canon]]> ;* V42 tmp28 [V42 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V43 tmp29 [V43 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V44 tmp30 [V44,T07] ( 2, 16 ) ref -> x19 class-hnd "Inlining Arg" <System.__Canon>
+; V44 tmp30 [V44,T07] ( 2, 16 ) ref -> x20 class-hnd "Inlining Arg" <System.__Canon>
;* V45 tmp31 [V45 ] ( 0, 0 ) ref -> zero-ref "field V38.value (fldOffset=0x0)" P-INDEP ;* V46 tmp32 [V46 ] ( 0, 0 ) int -> zero-ref "field V38.key (fldOffset=0x8)" P-INDEP
-; V47 tmp33 [V47,T06] ( 7, 16 ) ref -> x28 "field V39.value (fldOffset=0x0)" P-INDEP
+; V47 tmp33 [V47,T06] ( 7, 16 ) ref -> x27 "field V39.value (fldOffset=0x0)" P-INDEP
;* V48 tmp34 [V48 ] ( 0, 0 ) int -> zero-ref "field V39.key (fldOffset=0x8)" P-INDEP ;* V49 tmp35 [V49 ] ( 0, 0 ) ref -> zero-ref "field V40.value (fldOffset=0x0)" P-INDEP ;* V50 tmp36 [V50 ] ( 0, 0 ) int -> zero-ref "field V40.key (fldOffset=0x8)" P-INDEP @@ -68,9 +68,9 @@ ; V57 tmp43 [V57,T01] ( 3, 24 ) ref -> x0 "arr expr" ; V58 tmp44 [V58,T08] ( 2, 16 ) int -> x1 "argument with side effect" ; V59 PSPSym [V59,T34] ( 1, 1 ) long -> [fp+0x98] do-not-enreg[V] "PSPSym"
-; V60 cse0 [V60,T20] ( 3, 6 ) int -> x0 "CSE - aggressive" -; V61 cse1 [V61,T12] ( 6, 14 ) long -> x25 "CSE - aggressive" -; V62 cse2 [V62,T21] ( 4, 5.50) long -> x23 "CSE - moderate"
+; V60 cse0 [V60,T20] ( 3, 6 ) int -> x1 "CSE - aggressive" +; V61 cse1 [V61,T12] ( 6, 14 ) long -> x24 "CSE - aggressive" +; V62 cse2 [V62,T21] ( 4, 5.50) long -> x22 "CSE - moderate"
; V63 cse3 [V63,T14] ( 3, 10 ) ref -> x0 "CSE - aggressive" ; ; Lcl frame size = 160 @@ -95,24 +95,22 @@ G_M4554_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, str x5, [fp, #0x98] // [V59 PSPSym] str x0, [fp, #0x18] // [V00 this] ; GC ptr vars +{V00}
- mov x21, x0 - ; gcrRegs +[x21] - mov x23, x1 - ; gcrRegs +[x23]
+ mov x22, x1 + ; gcrRegs +[x22]
mov w19, w2 mov w20, w3
- mov x22, x4 - ; byrRegs +[x22] - ;; size=92 bbWeight=1 PerfScore 18.00 -G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=A00000 {x21 x23}, byrefRegs=400000 {x22}, gcvars, byref, isz
+ mov x21, x4 + ; byrRegs +[x21] + ;; size=88 bbWeight=1 PerfScore 17.50 +G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000400 {V00}, gcrefRegs=400000 {x22}, byrefRegs=200000 {x21}, gcvars, byref, isz
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x24, x0 - ; gcrRegs +[x24]
+ mov x23, x0 + ; gcrRegs +[x23]
movz x0, #0xD1FFAB1E ; gcrRegs -[x0] movk x0, #0xD1FFAB1E LSL #16 @@ -124,20 +122,20 @@ G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=A000 movk x14, #0xD1FFAB1E LSL #16 movk x14, #0xD1FFAB1E LSL #32 str x14, [x0, #0x08]
- add x14, x24, #8
+ add x14, x23, #8
; byrRegs +[x14] mov x15, x0 ; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- str xzr, [x22] - ldr x0, [x23, #0x08]
+ str xzr, [x21] + ldr x0, [x22, #0x08]
; gcrRegs +[x0]
- movz x25, #0xD1FFAB1E // code for <unknown method> - movk x25, #0xD1FFAB1E LSL #16 - movk x25, #0xD1FFAB1E LSL #32 - mov x11, x25
+ movz x24, #0xD1FFAB1E // code for <unknown method> + movk x24, #0xD1FFAB1E LSL #16 + movk x24, #0xD1FFAB1E LSL #32 + mov x11, x24
ldr x1, [x11] blr x1 ; gcrRegs -[x0] @@ -145,16 +143,16 @@ G_M4554_IG02: ; bbWeight=1, gcVars=0000000000000200 {V00}, gcrefRegs=A000 cmp w0, #0 ble G_M4554_IG23 ;; size=104 bbWeight=1 PerfScore 21.50
-G_M4554_IG03: ; bbWeight=0.50, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs=400000 {x22}, byref
+G_M4554_IG03: ; bbWeight=0.50, gcrefRegs=C00000 {x22 x23}, byrefRegs=200000 {x21}, byref
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x26, x0 - ; gcrRegs +[x26] - mov x1, x23
+ mov x25, x0 + ; gcrRegs +[x25] + mov x1, x22
; gcrRegs +[x1] movz x2, #0xD1FFAB1E // code for <unknown method> movk x2, #0xD1FFAB1E LSL #16 @@ -164,47 +162,51 @@ G_M4554_IG03: ; bbWeight=0.50, gcrefRegs=1A00000 {x21 x23 x24}, byrefRegs ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=44 bbWeight=0.50 PerfScore 4.50
-G_M4554_IG04: ; bbWeight=0.50, gcrefRegs=5A00000 {x21 x23 x24 x26}, byrefRegs=400000 {x22}, byref - ldr x0, [x21, #0x28]
+G_M4554_IG04: ; bbWeight=0.50, gcrefRegs=2C00000 {x22 x23 x25}, byrefRegs=200000 {x21}, byref + ldr x0, [fp, #0x18] // [V00 this]
; gcrRegs +[x0]
- ldr w1, [x21, #0x58] - movz x2, #0xD1FFAB1E // code for <unknown method> - movk x2, #0xD1FFAB1E LSL #16 - movk x2, #0xD1FFAB1E LSL #32 - ldr x2, [x2] - blr x2
+ ldr x0, [x0, #0x28] + ldr x2, [fp, #0x18] // [V00 this] + ; gcrRegs +[x2] + ldr w1, [x2, #0x58] + movz x3, #0xD1FFAB1E // code for <unknown method> + movk x3, #0xD1FFAB1E LSL #16 + movk x3, #0xD1FFAB1E LSL #32 + ldr x3, [x3] + blr x3 + ; gcrRegs -[x2]
; gcr arg pop 0
- mov x27, x0 - ; gcrRegs +[x27] - ;; size=32 bbWeight=0.50 PerfScore 6.00 -G_M4554_IG05: ; bbWeight=0.50, gcrefRegs=DA00000 {x21 x23 x24 x26 x27}, byrefRegs=400000 {x22}, byref, isz
+ mov x26, x0 + ; gcrRegs +[x26] + ;; size=40 bbWeight=0.50 PerfScore 8.00 +G_M4554_IG05: ; bbWeight=0.50, gcrefRegs=6C00000 {x22 x23 x25 x26}, byrefRegs=200000 {x21}, byref, isz
; gcrRegs -[x0]
- ldr x0, [x27, #0x18]
+ ldr x0, [x26, #0x18]
; gcrRegs +[x0] ldr w0, [x0, #0x20] ; gcrRegs -[x0] cmp w0, #0 ble G_M4554_IG25 str wzr, [fp, #0x90] // [V08 loc3]
- ldr x1, [x27, #0x10]
+ ldr x1, [x26, #0x10]
; gcrRegs +[x1] cbnz x1, G_M4554_IG06 movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST
- ; gcrRegs -[x1 x23] +[x0]
+ ; gcrRegs -[x1 x22] +[x0]
; gcr arg pop 0 mov x1, x0 ; gcrRegs +[x1] add x14, x1, #8 ; byrRegs +[x14]
- mov x15, x27
+ mov x15, x26
; gcrRegs +[x15] bl CORINFO_HELP_ASSIGN_REF ; gcrRegs -[x0 x15] ; byrRegs -[x14]
- add x14, x27, #16
+ add x14, x26, #16
; byrRegs +[x14] mov x15, x1 ; gcrRegs +[x15] @@ -212,7 +214,7 @@ G_M4554_IG05: ; bbWeight=0.50, gcrefRegs=DA00000 {x21 x23 x24 x26 x27}, b ; gcrRegs -[x15] ; byrRegs -[x14] ;; size=72 bbWeight=0.50 PerfScore 9.75
-G_M4554_IG06: ; bbWeight=0.50, gcrefRegs=D200002 {x1 x21 x24 x26 x27}, byrefRegs=400000 {x22}, byref, isz
+G_M4554_IG06: ; bbWeight=0.50, gcrefRegs=6800002 {x1 x23 x25 x26}, byrefRegs=200000 {x21}, byref, isz
ldr x0, [x1, #0x08] ; gcrRegs +[x0] ldr x0, [x0, #0x18] @@ -228,18 +230,18 @@ G_M4554_IG06: ; bbWeight=0.50, gcrefRegs=D200002 {x1 x21 x24 x26 x27}, by add w0, w0, #1 orr w0, w0, #1 clz w0, w0
- eor w23, w0, #31
+ eor w22, w0, #31
movz x0, #0xD1FFAB1E movk x0, #0xD1FFAB1E LSL #16 movk x0, #0xD1FFAB1E LSL #32 bl CORINFO_HELP_NEWSFAST ; gcrRegs +[x0] ; gcr arg pop 0
- mov x28, x0 - ; gcrRegs +[x28]
...

-16 (-0.49%) : 1029.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.CollisionDetection.SweepTasks.CapsulePairDistanceTester]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.CollisionDetection.SweepTasks.CapsulePairDistanceTester]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)

@@ -8,103 +8,103 @@ ; 0 inlinees with PGO data; 39 single block inlinees; 3 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T21] ( 3, 3 ) long -> x0 single-def -; V01 arg1 [V01,T17] ( 6, 4 ) byref -> x26 single-def -; V02 arg2 [V02,T15] ( 6, 5 ) byref -> x24 single-def -; V03 arg3 [V03,T22] ( 3, 3 ) long -> x3 single-def -; V04 arg4 [V04,T14] ( 7, 5.50) byref -> x23 single-def -; V05 arg5 [V05,T18] ( 6, 4 ) byref -> x27 single-def -; V06 arg6 [V06,T16] ( 5, 4.50) byref -> x25 single-def -; V07 arg7 [V07,T85] ( 5, 3.50) float -> [fp-0x94] single-def -; V08 arg8 [V08,T45] ( 6, 14.50) float -> d8 single-def -; V09 arg9 [V09,T75] ( 3, 4 ) float -> [fp-0x98] single-def -; V10 arg10 [V10,T12] ( 3, 6 ) int -> x21 single-def
+; V00 arg0 [V00,T25] ( 3, 3 ) long -> x0 single-def +; V01 arg1 [V01,T14] ( 6, 6 ) byref -> x23 single-def +; V02 arg2 [V02,T19] ( 6, 5.50) byref -> x26 single-def +; V03 arg3 [V03,T26] ( 3, 3 ) long -> x3 single-def +; V04 arg4 [V04,T13] ( 7, 7 ) byref -> x22 single-def +; V05 arg5 [V05,T15] ( 6, 6 ) byref -> x24 single-def +; V06 arg6 [V06,T20] ( 5, 5 ) byref -> x27 single-def +; V07 arg7 [V07,T90] ( 5, 3.50) float -> [fp-0x94] single-def +; V08 arg8 [V08,T45] ( 6, 15 ) float -> d8 single-def +; V09 arg9 [V09,T76] ( 3, 4 ) float -> [fp-0x98] single-def +; V10 arg10 [V10,T18] ( 3, 6 ) int -> x25 single-def
;* V11 arg11 [V11 ] ( 0, 0 ) byref -> zero-ref single-def
-; V12 arg12 [V12,T05] ( 10, 16.50) byref -> x19 single-def -; V13 arg13 [V13,T08] ( 9, 15.50) byref -> x20 single-def -; V14 arg14 [V14,T13] ( 8, 7.50) byref -> x22 single-def -; V15 arg15 [V15,T23] ( 4, 4.50) byref -> x28 single-def -; V16 loc0 [V16,T19] ( 5, 5 ) byref -> x0 single-def -; V17 loc1 [V17,T20] ( 5, 5 ) byref -> x3 single-def
+; V12 arg12 [V12,T06] ( 10, 17.50) byref -> x19 single-def +; V13 arg13 [V13,T07] ( 9, 16.50) byref -> x20 single-def +; V14 arg14 [V14,T12] ( 8, 9.50) byref -> x21 single-def +; V15 arg15 [V15,T21] ( 4, 6.50) byref -> x28 single-def +; V16 loc0 [V16,T22] ( 5, 5 ) byref -> x0 single-def +; V17 loc1 [V17,T23] ( 5, 5 ) byref -> x3 single-def
; V18 loc2 [V18 ] ( 4, 7 ) struct (32) [fp-0xB8] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuPhysics.Collidables.CapsuleWide> ; V19 loc3 [V19 ] ( 4, 7 ) struct (32) [fp-0xD8] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuPhysics.Collidables.CapsuleWide> ; V20 loc4 [V20 ] ( 2, 5 ) struct ( 8) [fp-0xE0] do-not-enreg[XS] addr-exposed ld-addr-op <BepuPhysics.CollisionDetection.SweepTasks.CapsulePairDistanceTester>
-; V21 loc5 [V21 ] ( 6, 4.50) simd12 -> [fp-0xF0] HFA(float) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector3> -; V22 loc6 [V22,T102] ( 3, 2.50) float -> d9 ld-addr-op -; V23 loc7 [V23,T105] ( 2, 1.50) float -> [fp-0xF4] ld-addr-op spill-single-def -; V24 loc8 [V24,T98] ( 4, 3.50) float -> d10 ld-addr-op -; V25 loc9 [V25,T106] ( 2, 1.50) float -> [fp-0xF8] ld-addr-op spill-single-def -; V26 loc10 [V26,T107] ( 2, 1.50) float -> [fp-0xFC] spill-single-def -; V27 loc11 [V27,T108] ( 2, 1.50) float -> [fp-0x100] spill-single-def -; V28 loc12 [V28,T91] ( 2, 4.50) simd16 -> [fp-0x110] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V29 loc13 [V29,T92] ( 2, 4.50) simd16 -> [fp-0x120] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V30 loc14 [V30,T93] ( 2, 4.50) simd16 -> [fp-0x130] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V31 loc15 [V31,T94] ( 2, 4.50) simd16 -> [fp-0x140] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]>
+; V21 loc5 [V21 ] ( 6, 6 ) simd12 -> [fp-0xF0] HFA(float) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector3> +; V22 loc6 [V22,T101] ( 3, 3 ) float -> d9 ld-addr-op +; V23 loc7 [V23,T105] ( 2, 2 ) float -> [fp-0xF4] ld-addr-op spill-single-def +; V24 loc8 [V24,T97] ( 4, 4 ) float -> d10 ld-addr-op +; V25 loc9 [V25,T106] ( 2, 2 ) float -> [fp-0xF8] ld-addr-op spill-single-def +; V26 loc10 [V26,T107] ( 2, 2 ) float -> [fp-0xFC] spill-single-def +; V27 loc11 [V27,T108] ( 2, 2 ) float -> [fp-0x100] spill-single-def +; V28 loc12 [V28,T92] ( 2, 5 ) simd16 -> [fp-0x110] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V29 loc13 [V29,T93] ( 2, 5 ) simd16 -> [fp-0x120] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V30 loc14 [V30,T94] ( 2, 5 ) simd16 -> [fp-0x130] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V31 loc15 [V31,T95] ( 2, 5 ) simd16 -> [fp-0x140] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]>
;* V32 loc16 [V32 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op <BepuUtilities.Vector3Wide>
-; V33 loc17 [V33 ] ( 6, 6.50) struct (64) [fp-0x180] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> -; V34 loc18 [V34 ] ( 6, 6.50) struct (64) [fp-0x1C0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide>
+; V33 loc17 [V33 ] ( 6, 9 ) struct (64) [fp-0x180] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> +; V34 loc18 [V34 ] ( 6, 9 ) struct (64) [fp-0x1C0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide>
;* V35 loc19 [V35 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op <BepuUtilities.Vector3Wide>
-; V36 loc20 [V36 ] ( 5, 6 ) struct (48) [fp-0x1F0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V37 loc21 [V37 ] ( 5, 6 ) struct (48) [fp-0x220] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V38 loc22 [V38 ] ( 15, 38.50) simd16 -> [fp-0x230] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[float]> -; V39 loc23 [V39 ] ( 7, 17.50) struct (48) [fp-0x260] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V40 loc24 [V40 ] ( 3, 8.50) struct (64) [fp-0x2A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> -; V41 loc25 [V41 ] ( 3, 8.50) struct (64) [fp-0x2E0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> -; V42 loc26 [V42,T95] ( 2, 4.50) simd16 -> [fp-0x2F0] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> -; V43 loc27 [V43,T73] ( 3, 6.50) float -> [fp-0x2F4] -; V44 loc28 [V44,T38] ( 11, 22.50) float -> [fp-0x2F8] -; V45 loc29 [V45,T10] ( 6, 11 ) ubyte -> x23 -; V46 loc30 [V46,T09] ( 4, 12.50) int -> x25
+; V36 loc20 [V36 ] ( 5, 8 ) struct (48) [fp-0x1F0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V37 loc21 [V37 ] ( 5, 8 ) struct (48) [fp-0x220] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V38 loc22 [V38 ] ( 15, 41 ) simd16 -> [fp-0x230] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[float]> +; V39 loc23 [V39 ] ( 7, 19 ) struct (48) [fp-0x260] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V40 loc24 [V40 ] ( 3, 9 ) struct (64) [fp-0x2A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> +; V41 loc25 [V41 ] ( 3, 9 ) struct (64) [fp-0x2E0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.QuaternionWide> +; V42 loc26 [V42,T96] ( 2, 5 ) simd16 -> [fp-0x2F0] HFA(simd16) ld-addr-op spill-single-def <System.Numerics.Vector`1[float]> +; V43 loc27 [V43,T67] ( 3, 9 ) float -> [fp-0x2F4] +; V44 loc28 [V44,T38] ( 11, 23 ) float -> [fp-0x2F8] +; V45 loc29 [V45,T09] ( 6, 13.50) ubyte -> x22 +; V46 loc30 [V46,T10] ( 4, 13 ) int -> x23
;* V47 loc31 [V47 ] ( 0, 0 ) long -> zero-ref ;* V48 loc32 [V48 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <BepuUtilities.Memory.Buffer`1[ubyte]> ;* V49 loc33 [V49 ] ( 0, 0 ) long -> zero-ref ; V50 loc34 [V50 ] ( 6, 16 ) simd16 -> [fp-0x310] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[int]> ; V51 loc35 [V51 ] ( 5, 20 ) simd16 -> [fp-0x320] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[float]>
-; V52 loc36 [V52 ] ( 4, 10 ) struct (48) [fp-0x350] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> -; V53 loc37 [V53 ] ( 7, 22 ) struct (48) [fp-0x380] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide>
+; V52 loc36 [V52 ] ( 4, 16 ) struct (48) [fp-0x350] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide> +; V53 loc37 [V53 ] ( 7, 28 ) struct (48) [fp-0x380] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <BepuUtilities.Vector3Wide>
; V54 loc38 [V54,T35] ( 7, 28 ) simd16 -> d16 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
-; V55 loc39 [V55,T51] ( 3, 12 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -;* V56 loc40 [V56,T96] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -; V57 loc41 [V57,T52] ( 3, 12 ) simd16 -> d20 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> -;* V58 loc42 [V58,T97] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
+; V55 loc39 [V55,T54] ( 3, 12 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +;* V56 loc40 [V56,T99] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +; V57 loc41 [V57,T55] ( 3, 12 ) simd16 -> d20 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> +;* V58 loc42 [V58,T100] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
; V59 loc43 [V59,T47] ( 4, 16 ) simd16 -> d21 HFA(simd16) <System.Numerics.Vector`1[float]>
-; V60 loc44 [V60,T53] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> -; V61 loc45 [V61,T54] ( 3, 12 ) simd16 -> d24 HFA(simd16) <System.Numerics.Vector`1[float]> -; V62 loc46 [V62,T65] ( 2, 8 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V60 loc44 [V60,T56] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]> +; V61 loc45 [V61,T57] ( 3, 12 ) simd16 -> d24 HFA(simd16) <System.Numerics.Vector`1[float]> +; V62 loc46 [V62,T69] ( 2, 8 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
; V63 loc47 [V63,T33] ( 8, 32 ) simd16 -> d25 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
-; V64 loc48 [V64,T55] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V64 loc48 [V64,T58] ( 3, 12 ) simd16 -> d17 HFA(simd16) <System.Numerics.Vector`1[float]>
; V65 loc49 [V65,T48] ( 4, 16 ) simd16 -> d27 HFA(simd16) <System.Numerics.Vector`1[float]> ; V66 loc50 [V66,T40] ( 5, 20 ) simd16 -> d20 HFA(simd16) <System.Numerics.Vector`1[float]> ;* V67 loc51 [V67 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V68 loc52 [V68 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V69 loc53 [V69 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]>
-; V70 loc54 [V70,T56] ( 3, 12 ) simd16 -> d29 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V70 loc54 [V70,T59] ( 3, 12 ) simd16 -> d29 HFA(simd16) <System.Numerics.Vector`1[float]>
;* V71 loc55 [V71 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V72 loc56 [V72 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]> ;* V73 loc57 [V73 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) <System.Numerics.Vector`1[float]>
-; V74 loc58 [V74,T66] ( 2, 8 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]>
+; V74 loc58 [V74,T70] ( 2, 8 ) simd16 -> d16 HFA(simd16) <System.Numerics.Vector`1[float]>
; V75 loc59 [V75,T39] ( 6, 20 ) simd16 -> d16 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
-; V76 loc60 [V76,T84] ( 2, 6 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
+; V76 loc60 [V76,T71] ( 2, 8 ) simd16 -> d17 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]>
; V77 loc61 [V77,T44] ( 5, 18 ) simd16 -> d21 HFA(simd16) ld-addr-op <System.Numerics.Vector`1[float]> ; V78 loc62 [V78,T32] ( 16, 48 ) float -> d17 ; V79 loc63 [V79,T34] ( 11, 30 ) float -> d24
-; V80 loc64 [V80,T67] ( 2, 8 ) float -> d21 -; V81 loc65 [V81,T50] ( 4, 14 ) float -> d27 -; V82 loc66 [V82,T49] ( 5, 14 ) float -> d21
+; V80 loc64 [V80,T72] ( 2, 8 ) float -> d21 +; V81 loc65 [V81,T52] ( 4, 14 ) float -> d27 +; V82 loc66 [V82,T51] ( 5, 14 ) float -> d21
; V83 loc67 [V83,T46] ( 6, 16 ) float -> d27 ; V84 loc68 [V84 ] ( 2, 8 ) simd16 -> [fp-0x390] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op <System.Numerics.Vector`1[int]>
-; V85 loc69 [V85,T03] ( 6, 40 ) int -> x0 -; V86 loc70 [V86,T01] ( 7, 54 ) int -> x1
+; V85 loc69 [V85,T03] ( 6, 42 ) int -> x0 +; V86 loc70 [V86,T01] ( 7, 60 ) int -> x1
; V87 loc71 [V87,T11] ( 5, 10 ) int -> x1
-; V88 loc72 [V88,T02] ( 4, 50 ) int -> x2
+; V88 loc72 [V88,T02] ( 4, 52 ) int -> x2
;* V89 loc73 [V89 ] ( 0, 0 ) int -> zero-ref ;* V90 loc74 [V90,T29] ( 0, 0 ) int -> zero-ref ; V91 OutArgs [V91 ] ( 1, 1 ) struct (32) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V92 tmp1 [V92,T76] ( 3, 6 ) simd12 -> d18 "Clone op1 for vector length" -; V93 tmp2 [V93,T77] ( 3, 6 ) simd12 -> d19 "Clone op1 for vector length" -; V94 tmp3 [V94,T68] ( 2, 8 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> -; V95 tmp4 [V95,T69] ( 2, 8 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> -; V96 tmp5 [V96,T07] ( 2, 16 ) int -> x25 "dup spill"
+; V92 tmp1 [V92,T77] ( 3, 6 ) simd12 -> d18 "Clone op1 for vector length" +; V93 tmp2 [V93,T78] ( 3, 6 ) simd12 -> d19 "Clone op1 for vector length" +; V94 tmp3 [V94,T49] ( 2, 16 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> +; V95 tmp4 [V95,T50] ( 2, 16 ) simd12 -> d17 HFA(float) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector3> +; V96 tmp5 [V96,T08] ( 2, 16 ) int -> x23 "dup spill"
;* V97 tmp6 [V97 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <BepuUtilities.Memory.Buffer`1[ubyte]> ;* V98 tmp7 [V98 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <BepuUtilities.Memory.Buffer`1[ubyte]> ;* V99 tmp8 [V99 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> @@ -116,7 +116,7 @@ ;* V105 tmp14 [V105 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V106 tmp15 [V106 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ; V107 tmp16 [V107,T28] ( 2, 2 ) ubyte -> x0 "Inline stloc first use temp"
-; V108 tmp17 [V108,T64] ( 4, 8 ) simd12 -> d16 "Clone op1 for vector normalize (1)"
+; V108 tmp17 [V108,T68] ( 4, 8 ) simd12 -> d16 "Clone op1 for vector normalize (1)"
;* V109 tmp18 [V109 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V110 tmp19 [V110 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V111 tmp20 [V111 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> @@ -131,98 +131,98 @@ ;* V120 tmp29 [V120 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V121 tmp30 [V121 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V122 tmp31 [V122 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]>
-; V123 tmp32 [V123,T24] ( 4, 4 ) byref -> x0 single-def "Inlining Arg"
+; V123 tmp32 [V123,T16] ( 4, 8 ) byref -> x0 single-def "Inlining Arg"
;* V124 tmp33 [V124 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V125 tmp34 [V125 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V126 tmp35 [V126 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]>
-; V127 tmp36 [V127,T25] ( 4, 4 ) byref -> x0 single-def "Inlining Arg"
+; V127 tmp36 [V127,T17] ( 4, 8 ) byref -> x0 single-def "Inlining Arg"
;* V128 tmp37 [V128 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V129 tmp38 [V129 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]> ;* V130 tmp39 [V130 ] ( 0, 0 ) simd16 -> zero-ref HFA(simd16) ld-addr-op "NewObj constructor temp" <System.Numerics.Vector`1[float]>
-; V131 tmp40 [V131,T74] ( 6, 6 ) float -> d22 "Inlining Arg" -; V132 tmp41 [V132,T103] ( 2, 2 ) float -> d23 "Inlining Arg"
+; V131 tmp40 [V131,T53] ( 6, 12 ) float -> d22 "Inlining Arg" +; V132 tmp41 [V132,T98] ( 2, 4 ) float -> d23 "Inlining Arg"
;* V133 tmp42 [V133 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <BepuUtilities.Vector3Wide>
-; V134 tmp43 [V134 ] ( 3, 1.50) simd16 -> [fp-0x3A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Numerics.Vector`1[float]> -; V135 tmp44 [V135,T27] ( 5, 2.50) byref -> x0 single-def "Inline stloc first use temp" -; V136 tmp45 [V136,T101] ( 5, 2.50) float -> d25 "Inline stloc first use temp"
+; V134 tmp43 [V134 ] ( 3, 3 ) simd16 -> [fp-0x3A0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Numerics.Vector`1[float]> +; V135 tmp44 [V135,T24] ( 5, 5 ) byref -> x0 single-def "Inline stloc first use temp" +; V136 tmp45 [V136,T91] ( 5, 5 ) float -> d25 "Inline stloc first use temp"
;* V137 tmp46 [V137,T30] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V138 tmp47 [V138,T57] ( 3, 12 ) float -> d16 "Inline return value spill temp"
+; V138 tmp47 [V138,T60] ( 3, 12 ) float -> d16 "Inline return value spill temp"
; V139 tmp48 [V139,T31] ( 7, 56 ) float -> d21 "Inlining Arg" ; V140 tmp49 [V140,T36] ( 4, 28 ) float -> d16 "Inlining Arg" ;* V141 tmp50 [V141 ] ( 0, 0 ) struct (48) zero-ref HFA(simd16) ld-addr-op "Inline ldloca(s) first use temp" <BepuUtilities.Vector3Wide> ; V142 tmp51 [V142 ] ( 3, 12 ) simd16 -> [fp-0x3B0] HFA(simd16) do-not-enreg[XS] addr-exposed ld-addr-op "Inline stloc first use temp" <System.Numerics.Vector`1[float]>
-; V143 tmp52 [V143,T04] ( 5, 20 ) byref -> x0 "Inline stloc first use temp"
+; V143 tmp52 [V143,T05] ( 5, 20 ) byref -> x0 "Inline stloc first use temp"
; V144 tmp53 [V144,T41] ( 5, 20 ) float -> d21 "Inline stloc first use temp"
-;* V145 tmp54 [V145,T26] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
+;* V145 tmp54 [V145,T27] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
;* V146 tmp55 [V146 ] ( 0, 0 ) float -> zero-ref "Inlining Arg" ; V147 tmp56 [V147 ] ( 3, 6 ) simd16 -> [fp-0xB8] HFA(simd16) do-not-enreg[XS] addr-exposed "field V18.Radius (fldOffset=0x0)" P-DEP ; V148 tmp57 [V148 ] ( 3, 6 ) simd16 -> [fp-0xA8] HFA(simd16) do-not-enreg[XS] addr-exposed "field V18.HalfLength (fldOffset=0x10)" P-DEP ; V149 tmp58 [V149 ] ( 3, 6 ) simd16 -> [fp-0xD8] HFA(simd16) do-not-enreg[XS] addr-exposed "field V19.Radius (fldOffset=0x0)" P-DEP ; V150 tmp59 [V150 ] ( 3, 6 ) simd16 -> [fp-0xC8] HFA(simd16) do-not-enreg[XS] addr-exposed "field V19.HalfLength (fldOffset=0x10)" P-DEP
-; V151 tmp60 [V151,T86] ( 3, 5 ) simd16 -> [fp-0x3C0] HFA(simd16) spill-single-def "field V32.X (fldOffset=0x0)" P-INDEP -; V152 tmp61 [V152,T87] ( 3, 5 ) simd16 -> [fp-0x3D0] HFA(simd16) spill-single-def "field V32.Y (fldOffset=0x10)" P-INDEP -; V153 tmp62 [V153,T88] ( 3, 5 ) simd16 -> d15 HFA(simd16) "field V32.Z (fldOffset=0x20)" P-INDEP -; V154 tmp63 [V154 ] ( 3, 5 ) simd16 -> [fp-0x180] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.X (fldOffset=0x0)" P-DEP -; V155 tmp64 [V155 ] ( 3, 5 ) simd16 -> [fp-0x170] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.Y (fldOffset=0x10)" P-DEP -; V156 tmp65 [V156 ] ( 3, 5 ) simd16 -> [fp-0x160] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.Z (fldOffset=0x20)" P-DEP -; V157 tmp66 [V157 ] ( 3, 5 ) simd16 -> [fp-0x150] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.W (fldOffset=0x30)" P-DEP -; V158 tmp67 [V158 ] ( 3, 5 ) simd16 -> [fp-0x1C0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.X (fldOffset=0x0)" P-DEP -; V159 tmp68 [V159 ] ( 3, 5 ) simd16 -> [fp-0x1B0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.Y (fldOffset=0x10)" P-DEP -; V160 tmp69 [V160 ] ( 3, 5 ) simd16 -> [fp-0x1A0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.Z (fldOffset=0x20)" P-DEP -; V161 tmp70 [V161 ] ( 3, 5 ) simd16 -> [fp-0x190] HFA(simd16) do-not-enreg[XS] addr-exposed "field V34.W (fldOffset=0x30)" P-DEP -; V162 tmp71 [V162,T61] ( 4, 9 ) simd16 -> [fp-0x3E0] HFA(simd16) spill-single-def "field V35.X (fldOffset=0x0)" P-INDEP -; V163 tmp72 [V163,T62] ( 4, 9 ) simd16 -> [fp-0x3F0] HFA(simd16) spill-single-def "field V35.Y (fldOffset=0x10)" P-INDEP -; V164 tmp73 [V164,T63] ( 4, 9 ) simd16 -> [fp-0x400] HFA(simd16) spill-single-def "field V35.Z (fldOffset=0x20)" P-INDEP -; V165 tmp74 [V165 ] ( 3, 5 ) simd16 -> [fp-0x1F0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V36.X (fldOffset=0x0)" P-DEP -; V166 tmp75 [V166 ] ( 3, 5 ) simd16 -> [fp-0x1E0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V36.Y (fldOffset=0x10)" P-DEP -; V167 tmp76 [V167 ] ( 3, 5 ) simd16 -> [fp-0x1D0] HFA(simd16) do-not-enreg[XS] addr-exposed "field V36.Z (fldOffset=0x20)" P-DEP -; V168 tmp77 [V168 ] ( 3, 5 ) simd16 -> [fp-0x220] HFA(simd16) do-not-enreg[XS] addr-exposed "field V37.X (fldOffset=0x0)" P-DEP -; V169 tmp78 [V169 ] ( 3, 5 ) simd16 -> [fp-0x210] HFA(simd16) do-not-enreg[XS] addr-exposed "field V37.Y (fldOffset=0x10)" P-DEP -; V170 tmp79 [V170 ] ( 3, 5 ) simd16 -> [fp-0x200] HFA(simd16) do-not-enreg[XS] addr-exposed "field V37.Z (fldOffset=0x20)" P-DEP -; V171 tmp80 [V171 ] ( 3, 8.50) simd16 -> [fp-0x260] HFA(simd16) do-not-enreg[XS] addr-exposed "field V39.X (fldOffset=0x0)" P-DEP -; V172 tmp81 [V172 ] ( 3, 8.50) simd16 -> [fp-0x250] HFA(simd16) do-not-enreg[XS] addr-exposed "field V39.Y (fldOffset=0x10)" P-DEP -; V173 tmp82 [V173 ] ( 3, 8.50) simd16 -> [fp-0x240] HFA(simd16) do-not-enreg[XS] addr-exposed "field V39.Z (fldOffset=0x20)" P-DEP
+; V151 tmp60 [V151,T79] ( 3, 6 ) simd16 -> [fp-0x3C0] HFA(simd16) spill-single-def "field V32.X (fldOffset=0x0)" P-INDEP +; V152 tmp61 [V152,T80] ( 3, 6 ) simd16 -> [fp-0x3D0] HFA(simd16) spill-single-def "field V32.Y (fldOffset=0x10)" P-INDEP +; V153 tmp62 [V153,T81] ( 3, 6 ) simd16 -> d15 HFA(simd16) "field V32.Z (fldOffset=0x20)" P-INDEP +; V154 tmp63 [V154 ] ( 3, 6 ) simd16 -> [fp-0x180] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.X (fldOffset=0x0)" P-DEP +; V155 tmp64 [V155 ] ( 3, 6 ) simd16 -> [fp-0x170] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.Y (fldOffset=0x10)" P-DEP +; V156 tmp65 [V156 ] ( 3, 6 ) simd16 -> [fp-0x160] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.Z (fldOffset=0x20)" P-DEP +; V157 tmp66 [V157 ] ( 3, 6 ) simd16 -> [fp-0x150] HFA(simd16) do-not-enreg[XS] addr-exposed "field V33.W (fldOffset=0x30)" P-DEP
...

+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 (+1.88%) : 21270.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)

@@ -11,7 +11,7 @@ ; V00 arg0 [V00,T15] ( 15, 7 ) ref -> x19 class-hnd single-def <Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol> ; V01 loc0 [V01,T19] ( 7, 3.50) int -> x0 single-def ; V02 loc1 [V02,T11] ( 6, 20.50) ref -> x20 class-hnd <<unknown class>>
-; V03 loc2 [V03,T06] ( 4, 33 ) int -> x19
+; V03 loc2 [V03,T06] ( 4, 33.50) int -> x19
;* V04 loc3 [V04 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ;* V05 loc4 [V05 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Collections.Immutable.ImmutableArray`1+Enumerator[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations]> ;* V06 loc5 [V06 ] ( 0, 0 ) struct (24) zero-ref <Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations> @@ -36,7 +36,7 @@ ;* V25 tmp18 [V25 ] ( 0, 0 ) ref -> zero-ref class-hnd "dup spill" <<unknown class>> ;* V26 tmp19 [V26 ] ( 0, 0 ) ref -> zero-ref ; V27 tmp20 [V27,T04] ( 4, 52 ) int -> x1 "Inline stloc first use temp"
-; V28 tmp21 [V28,T17] ( 5, 5 ) int -> registers "Single return block return value"
+; V28 tmp21 [V28,T17] ( 5, 6 ) int -> registers "Single return block return value"
; V29 tmp22 [V29,T13] ( 3, 12 ) ref -> x0 "field V04.array (fldOffset=0x0)" P-INDEP ; V30 tmp23 [V30,T12] ( 2, 20 ) ref -> x23 "field V05._array (fldOffset=0x0)" P-INDEP ; V31 tmp24 [V31,T03] ( 4, 52 ) int -> x24 "field V05._index (fldOffset=0x8)" P-INDEP @@ -117,8 +117,9 @@ G_M16133_IG04: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, ldr x1, [x1] blr x1 ; gcrRegs -[x0 x19]
- b G_M16133_IG21 - ;; size=72 bbWeight=0.50 PerfScore 8.50
+ mov w19, w0 + b G_M16133_IG20 + ;; size=76 bbWeight=0.50 PerfScore 8.75
G_M16133_IG05: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] movz x0, #0xD1FFAB1E @@ -154,8 +155,9 @@ G_M16133_IG09: ; bbWeight=0.50, extend movk x1, #0xD1FFAB1E LSL #32 ldr x1, [x1] blr x1
- b G_M16133_IG21 - ;; size=28 bbWeight=0.50 PerfScore 3.50
+ mov w19, w0 + b G_M16133_IG20 + ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M16133_IG10: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] movz x0, #0xD1FFAB1E @@ -181,8 +183,9 @@ G_M16133_IG12: ; bbWeight=0.50, extend ldr x1, [x1] blr x1 ; gcrRegs -[x19]
- b G_M16133_IG21 - ;; size=28 bbWeight=0.50 PerfScore 3.50
+ mov w19, w0 + b G_M16133_IG20 + ;; size=32 bbWeight=0.50 PerfScore 3.75
G_M16133_IG13: ; bbWeight=0.50, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[x19] mov x0, x19 @@ -284,7 +287,7 @@ G_M16133_IG20: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; gcrRegs -[x0 x20] mov w0, w19 ;; size=4 bbWeight=0.50 PerfScore 0.25
-G_M16133_IG21: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M16133_IG21: ; bbWeight=0.50, epilog, nogc, extend
ldp x27, x28, [sp, #0x70] ldp x25, x26, [sp, #0x60] ldp x23, x24, [sp, #0x50] @@ -322,7 +325,7 @@ G_M16133_IG25: ; bbWeight=0, gcrefRegs=80000 {x19}, byrefRegs=0000 {}, by brk_windows #0 ;; size=12 bbWeight=0 PerfScore 0.00
-; Total bytes of code 640, prolog size 36, PerfScore 771.12, instruction count 160, allocated bytes for code 640 (MethodHash=4b2bc0fa) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
+; Total bytes of code 652, prolog size 36, PerfScore 771.88, instruction count 163, allocated bytes for code 652 (MethodHash=4b2bc0fa) for method Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
; ============================================================ Unwind Info: @@ -333,7 +336,7 @@ Unwind Info: E bit : 0 X bit : 0 Vers : 0
- Function Length : 160 (0x000a0) Actual length = 640 (0x000280)
+ Function Length : 163 (0x000a3) Actual length = 652 (0x00028c)
---- Epilog scopes ---- ---- Scope 0 Epilog Start Offset : 3523193630 (0xd1ffab1e) Actual offset = 3523193630 (0xd1ffab1e) Offset from main function begin = 3523193630 (0xd1ffab1e)

+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

-36 (-1.89%) : 3423.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)

@@ -9,11 +9,11 @@ ; Final local variable assignments ; ; V00 this [V00,T16] ( 9, 19.50) ref -> x20 this class-hnd exact single-def <System.Text.UnicodeEncoding>
-; V01 arg1 [V01,T07] ( 22, 52 ) long -> x19
+; V01 arg1 [V01,T07] ( 22, 56 ) long -> x19
; V02 arg2 [V02,T36] ( 6, 5.50) int -> x21 single-def ; V03 arg3 [V03,T42] ( 4, 3 ) ref -> x22 class-hnd single-def <System.Text.DecoderNLS> ; V04 loc0 [V04,T14] ( 18, 31.50) ref -> x23 class-hnd exact single-def <<unknown class>>
-; V05 loc1 [V05,T26] ( 6, 12 ) long -> x22
+; V05 loc1 [V05,T26] ( 6, 14 ) long -> x22
; V06 loc2 [V06,T25] ( 7, 15 ) long -> x24 ; V07 loc3 [V07,T19] ( 11, 19 ) int -> [fp+0x1C] ; V08 loc4 [V08,T03] ( 24, 78 ) ushort -> x26 @@ -21,7 +21,7 @@ ; V10 loc6 [V10,T02] ( 29, 83.75) ref -> x28 class-hnd <System.Text.DecoderFallbackBuffer> ; V11 loc7 [V11,T17] ( 9, 20 ) ushort -> x25 ; V12 loc8 [V12,T18] ( 3, 20 ) long -> x0
-; V13 loc9 [V13,T04] ( 7, 70 ) long -> x19
+; V13 loc9 [V13,T04] ( 7, 72 ) long -> x19
; V14 loc10 [V14,T10] ( 5, 40 ) long -> x2 ; V15 loc11 [V15,T38] ( 3, 6 ) ref -> x21 class-hnd <<unknown class>> ; V16 loc12 [V16,T39] ( 3, 6 ) ref -> x21 class-hnd <<unknown class>> @@ -160,7 +160,7 @@ G_M55046_IG07: ; bbWeight=0.25, gcrefRegs=D00000 {x20 x22 x23}, byrefRegs adrp x1, [HIGH RELOC #0xD1FFAB1E] // <unknown class> add x1, x1, [LOW RELOC #0xD1FFAB1E] cmp x0, x1
- bne G_M55046_IG82
+ bne G_M55046_IG78
;; size=20 bbWeight=0.25 PerfScore 1.38 G_M55046_IG08: ; bbWeight=1, gcrefRegs=900000 {x20 x23}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[x22] @@ -217,7 +217,7 @@ G_M55046_IG12: ; bbWeight=0.50, gcrefRegs=10900000 {x20 x23 x28}, byrefRe ;; size=36 bbWeight=0.50 PerfScore 2.75 G_M55046_IG13: ; bbWeight=1, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz cmp x24, x22
- bhs G_M55046_IG27
+ bhs G_M55046_IG56
;; size=8 bbWeight=1 PerfScore 1.50 G_M55046_IG14: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz ldrb w21, [x20, #0x26] @@ -269,10 +269,10 @@ G_M55046_IG19: ; bbWeight=16, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs cmp x19, x0 blo G_M55046_IG16 ;; size=12 bbWeight=16 PerfScore 32.00
-G_M55046_IG20: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG20: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
cmp x19, x22
- bhs G_M55046_IG26 - ;; size=8 bbWeight=2 PerfScore 3.00
+ bhs G_M55046_IG56 + ;; size=8 bbWeight=4 PerfScore 6.00
G_M55046_IG21: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz tbz w25, #31, G_M55046_IG23 ;; size=4 bbWeight=4 PerfScore 4.00 @@ -281,10 +281,10 @@ G_M55046_IG22: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= add x19, x0, #1 ldrb w25, [x0] cmp x19, x22
- bhs G_M55046_IG25
+ bhs G_M55046_IG56
;; size=20 bbWeight=2 PerfScore 11.00 G_M55046_IG23: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
- cbz w21, G_M55046_IG28
+ cbz w21, G_M55046_IG25
;; size=4 bbWeight=4 PerfScore 4.00 G_M55046_IG24: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref mov x0, x19 @@ -292,43 +292,31 @@ G_M55046_IG24: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ldrb w0, [x0] orr w0, w0, w25, LSL #8 uxth w25, w0
- b G_M55046_IG29
+ b G_M55046_IG26
;; size=24 bbWeight=2 PerfScore 13.00
-G_M55046_IG25: ; bbWeight=1, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref - str w25, [fp, #0x1C] // [V07 loc3] - b G_M55046_IG59 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M55046_IG26: ; bbWeight=1, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref - str w25, [fp, #0x1C] // [V07 loc3] - b G_M55046_IG59 - ;; size=8 bbWeight=1 PerfScore 2.00 -G_M55046_IG27: ; bbWeight=0.50, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref - str w25, [fp, #0x1C] // [V07 loc3] - b G_M55046_IG59 - ;; size=8 bbWeight=0.50 PerfScore 1.00 -G_M55046_IG28: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG25: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
mov x0, x19 add x19, x0, #1 ldrb w0, [x0] orr w0, w25, w0, LSL #8 uxth w25, w0 ;; size=20 bbWeight=2 PerfScore 11.00
-G_M55046_IG29: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG26: ; bbWeight=4, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
movn w0, #0 str w0, [fp, #0x1C] // [V07 loc3] mov w0, #0xD1FFAB1E sub w0, w25, w0 cmp w0, #0xD1FFAB1E
- bhi G_M55046_IG48
+ bhi G_M55046_IG45
;; size=24 bbWeight=4 PerfScore 16.00
-G_M55046_IG30: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG27: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz
mov w0, #0xD1FFAB1E cmp w25, w0
- bgt G_M55046_IG39
+ bgt G_M55046_IG36
cmp w26, #0
- ble G_M55046_IG38
+ ble G_M55046_IG35
sub w27, w27, #1
- cbz w21, G_M55046_IG31
+ cbz w21, G_M55046_IG28
adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class> add x0, x0, [LOW RELOC #0xD1FFAB1E] mov x1, #2 @@ -341,9 +329,9 @@ G_M55046_IG30: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ; gcrRegs -[x0] strb w0, [x21, #0x10] strb w26, [x21, #0x11]
- b G_M55046_IG32
+ b G_M55046_IG29
;; size=64 bbWeight=2 PerfScore 24.00
-G_M55046_IG31: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG28: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class> add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -358,9 +346,9 @@ G_M55046_IG31: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ; gcrRegs -[x0] strb w0, [x21, #0x11] ;; size=32 bbWeight=2 PerfScore 12.00
-G_M55046_IG32: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz - cbnz x28, G_M55046_IG37 - cbz x23, G_M55046_IG33
+G_M55046_IG29: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz + cbnz x28, G_M55046_IG34 + cbz x23, G_M55046_IG30
mov x0, x23 ; gcrRegs +[x0] bl System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this @@ -368,9 +356,9 @@ G_M55046_IG32: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefR ; gcr arg pop 0 mov x28, x0 ; gcrRegs +[x28]
- b G_M55046_IG36
+ b G_M55046_IG33
;; size=24 bbWeight=2 PerfScore 10.00
-G_M55046_IG33: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG30: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x28] ldr x28, [x20, #0x18] ; gcrRegs +[x28] @@ -378,9 +366,9 @@ G_M55046_IG33: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 adrp x1, [HIGH RELOC #0xD1FFAB1E] add x1, x1, [LOW RELOC #0xD1FFAB1E] cmp x0, x1
- bne G_M55046_IG35
+ bne G_M55046_IG32
;; size=24 bbWeight=2 PerfScore 17.00
-G_M55046_IG34: ; bbWeight=1, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG31: ; bbWeight=1, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Text.DecoderReplacementFallbackBuffer add x0, x0, [LOW RELOC #0xD1FFAB1E] bl CORINFO_HELP_NEWSFAST @@ -398,9 +386,9 @@ G_M55046_IG34: ; bbWeight=1, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefR ; byrRegs -[x14] mov x28, x0 ; gcrRegs +[x28]
- b G_M55046_IG36
+ b G_M55046_IG33
;; size=44 bbWeight=1 PerfScore 10.50
-G_M55046_IG35: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
+G_M55046_IG32: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref
; gcrRegs -[x0 x28] adrp x0, [HIGH RELOC #0xD1FFAB1E] // System.Text.DecoderExceptionFallbackBuffer add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -410,11 +398,11 @@ G_M55046_IG35: ; bbWeight=1, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=00 mov x28, x0 ; gcrRegs +[x28] ;; size=16 bbWeight=1 PerfScore 2.50
-G_M55046_IG36: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG33: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x0] stp x24, xzr, [x28, #0x18] ;; size=4 bbWeight=2 PerfScore 2.00
-G_M55046_IG37: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG34: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref
mov x0, x28 ; gcrRegs +[x0] ldr x15, [x0] @@ -432,14 +420,14 @@ G_M55046_IG37: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefR ; gcr arg pop 0 add w27, w0, w27 ;; size=48 bbWeight=2 PerfScore 29.00
-G_M55046_IG38: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG35: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
sxtw w26, w25
- b G_M55046_IG58
+ b G_M55046_IG55
;; size=8 bbWeight=2 PerfScore 3.00
-G_M55046_IG39: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz - cbnz w26, G_M55046_IG47
+G_M55046_IG36: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref, isz + cbnz w26, G_M55046_IG44
sub w27, w27, #1
- cbz w21, G_M55046_IG40
+ cbz w21, G_M55046_IG37
adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class> add x0, x0, [LOW RELOC #0xD1FFAB1E] mov x1, #2 @@ -452,9 +440,9 @@ G_M55046_IG39: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ; gcrRegs -[x0] strb w0, [x21, #0x10] strb w25, [x21, #0x11]
- b G_M55046_IG41
+ b G_M55046_IG38
;; size=48 bbWeight=2 PerfScore 19.00
-G_M55046_IG40: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
+G_M55046_IG37: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs=0000 {}, byref
; gcrRegs -[x21] adrp x0, [HIGH RELOC #0xD1FFAB1E] // <unknown class> add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -469,9 +457,9 @@ G_M55046_IG40: ; bbWeight=2, gcrefRegs=10900000 {x20 x23 x28}, byrefRegs= ; gcrRegs -[x0] strb w0, [x21, #0x11] ;; size=32 bbWeight=2 PerfScore 12.00
-G_M55046_IG41: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz - cbnz x28, G_M55046_IG46 - cbz x23, G_M55046_IG42
+G_M55046_IG38: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefRegs=0000 {}, byref, isz + cbnz x28, G_M55046_IG43 + cbz x23, G_M55046_IG39
mov x0, x23 ; gcrRegs +[x0] bl System.Text.Decoder:get_FallbackBuffer():System.Text.DecoderFallbackBuffer:this @@ -479,9 +467,9 @@ G_M55046_IG41: ; bbWeight=2, gcrefRegs=10B00000 {x20 x21 x23 x28}, byrefR ; gcr arg pop 0 mov x28, x0 ; gcrRegs +[x28]
- b G_M55046_IG45
+ b G_M55046_IG42
;; size=24 bbWeight=2 PerfScore 10.00
-G_M55046_IG42: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG39: ; bbWeight=2, gcrefRegs=B00000 {x20 x21 x23}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[x0 x28] ...

-8 (-0.67%) : 1429.dasm - System.Number:FormatFixedushort (FullOpts)

@@ -9,26 +9,26 @@ ; ; V00 arg0 [V00,T02] ( 32, 57.50) byref -> x19 single-def ; V01 arg1 [V01,T33] ( 5, 4.50) byref -> x24 single-def
-; V02 arg2 [V02,T09] ( 11, 17.50) int -> x21
+; V02 arg2 [V02,T08] ( 11, 18.50) int -> x21
; V03 arg3 [V03,T32] ( 7, 5.75) ref -> x23 class-hnd single-def <int[]> ;* V04 arg4 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]> ;* V05 arg5 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ; V06 loc0 [V06,T06] ( 12, 21 ) int -> x27
-; V07 loc1 [V07,T08] ( 10, 20 ) long -> registers -; V08 loc2 [V08,T04] ( 14, 35 ) int -> [fp+0x3C]
+; V07 loc1 [V07,T09] ( 10, 20 ) long -> registers +; V08 loc2 [V08,T04] ( 14, 37 ) int -> [fp+0x3C]
; V09 loc3 [V09,T14] ( 11, 16 ) int -> [fp+0x38]
-; V10 loc4 [V10,T12] ( 7, 17 ) int -> [fp+0x34]
+; V10 loc4 [V10,T13] ( 7, 17.50) int -> [fp+0x34]
; V11 loc5 [V11,T25] ( 5, 8.50) int -> [fp+0x30]
-; V12 loc6 [V12,T49] ( 3, 1.50) int -> x0
+; V12 loc6 [V12,T52] ( 3, 1.50) int -> x0
; V13 loc7 [V13,T38] ( 3, 5 ) int -> x24
-; V14 loc8 [V14,T11] ( 7, 17.50) int -> x1 -; V15 loc9 [V15,T50] ( 3, 1.50) long -> x6
+; V14 loc8 [V14,T12] ( 7, 18 ) int -> x1 +; V15 loc9 [V15,T46] ( 3, 2 ) long -> x6
; V16 loc10 [V16 ] ( 2, 1 ) byref -> [fp+0x28] must-init pinned
-; V17 loc11 [V17,T03] ( 6, 41 ) long -> registers
+; V17 loc11 [V17,T03] ( 6, 41.50) long -> registers
; V18 loc12 [V18,T07] ( 8, 21 ) int -> x1 ; V19 loc13 [V19,T01] ( 6, 60 ) long -> x0 ; V20 loc14 [V20,T00] ( 7, 84 ) int -> x7
-; V21 loc15 [V21,T37] ( 4, 5.50) int -> x20
+; V21 loc15 [V21,T34] ( 4, 6 ) int -> x20
; V22 loc16 [V22,T18] ( 4, 12.50) int -> x22 ;# V23 OutArgs [V23 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V24 tmp1 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> @@ -43,12 +43,12 @@ ; V33 tmp10 [V33,T17] ( 2, 16 ) int -> x27 "dup spill" ;* V34 tmp11 [V34 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V35 tmp12 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V36 tmp13 [V36,T58] ( 2, 1 ) int -> x24
+; V36 tmp13 [V36,T59] ( 2, 1 ) int -> x24
;* V37 tmp14 [V37 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ;* V38 tmp15 [V38 ] ( 0, 0 ) long -> zero-ref ;* V39 tmp16 [V39 ] ( 0, 0 ) long -> zero-ref ; V40 tmp17 [V40,T28] ( 3, 8 ) int -> x8
-; V41 tmp18 [V41,T59] ( 2, 1 ) int -> x4
+; V41 tmp18 [V41,T50] ( 2, 2 ) int -> x4
;* V42 tmp19 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V43 tmp20 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp21 [V44,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -56,13 +56,13 @@ ;* V46 tmp23 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V47 tmp24 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp25 [V48 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline return value spill temp" <System.Span`1[ushort]>
-; V49 tmp26 [V49,T51] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
+; V49 tmp26 [V49,T53] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
;* V50 tmp27 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V51 tmp28 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ushort]> ;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V53 tmp30 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V54 tmp31 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V55 tmp32 [V55,T46] ( 2, 2 ) byref -> [fp+0x18] spill-single-def "Inlining Arg"
+; V55 tmp32 [V55,T48] ( 2, 2 ) byref -> [fp+0x18] spill-single-def "Inlining Arg"
;* V56 tmp33 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp34 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V58 tmp35 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> @@ -103,7 +103,7 @@ ;* V93 tmp70 [V93 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP ;* V94 tmp71 [V94 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP ;* V95 tmp72 [V95 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
-; V96 tmp73 [V96,T47] ( 2, 2 ) byref -> x28 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp73 [V96,T49] ( 2, 2 ) byref -> x28 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V97 tmp74 [V97 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP ;* V98 tmp75 [V98 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP ;* V99 tmp76 [V99 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP @@ -113,17 +113,17 @@ ;* V103 tmp80 [V103 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP ; V104 tmp81 [V104,T43] ( 4, 2 ) byref -> x6 single-def "field V48._reference (fldOffset=0x0)" P-INDEP ; V105 tmp82 [V105,T66] ( 1, 0.50) int -> x1 "field V48._length (fldOffset=0x8)" P-INDEP
-; V106 tmp83 [V106,T54] ( 2, 1 ) byref -> x1 single-def "field V50._reference (fldOffset=0x0)" P-INDEP
+; V106 tmp83 [V106,T55] ( 2, 1 ) byref -> x1 single-def "field V50._reference (fldOffset=0x0)" P-INDEP
; V107 tmp84 [V107,T61] ( 2, 1 ) int -> x6 "field V50._length (fldOffset=0x8)" P-INDEP ;* V108 tmp85 [V108 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-DEP ;* V109 tmp86 [V109 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-DEP
-; V110 tmp87 [V110,T55] ( 2, 1 ) byref -> x6 single-def "field V54._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp87 [V110,T56] ( 2, 1 ) byref -> x6 single-def "field V54._reference (fldOffset=0x0)" P-INDEP
;* V111 tmp88 [V111 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP ;* V112 tmp89 [V112 ] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP ;* V113 tmp90 [V113 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
-; V114 tmp91 [V114,T34] ( 2, 6 ) byref -> x2 "field V64._reference (fldOffset=0x0)" P-INDEP
+; V114 tmp91 [V114,T35] ( 2, 6 ) byref -> x2 "field V64._reference (fldOffset=0x0)" P-INDEP
; V115 tmp92 [V115,T29] ( 2, 8 ) int -> x3 "field V64._length (fldOffset=0x8)" P-INDEP
-; V116 tmp93 [V116,T56] ( 2, 1 ) byref -> x1 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
+; V116 tmp93 [V116,T57] ( 2, 1 ) byref -> x1 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
; V117 tmp94 [V117,T62] ( 2, 1 ) int -> x2 "field V67._length (fldOffset=0x8)" P-INDEP ;* V118 tmp95 [V118 ] ( 0, 0 ) byref -> zero-ref single-def "field V68._reference (fldOffset=0x0)" P-INDEP ;* V119 tmp96 [V119 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP @@ -131,19 +131,19 @@ ;* V121 tmp98 [V121 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP ;* V122 tmp99 [V122 ] ( 0, 0 ) byref -> zero-ref single-def "field V71._reference (fldOffset=0x0)" P-INDEP ;* V123 tmp100 [V123 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x8)" P-INDEP
-; V124 tmp101 [V124,T57] ( 2, 1 ) byref -> x2 single-def "field V74._reference (fldOffset=0x0)" P-INDEP
+; V124 tmp101 [V124,T58] ( 2, 1 ) byref -> x2 single-def "field V74._reference (fldOffset=0x0)" P-INDEP
; V125 tmp102 [V125,T63] ( 2, 1 ) int -> x0 "field V74._length (fldOffset=0x8)" P-INDEP ;* V126 tmp103 [V126 ] ( 0, 0 ) byref -> zero-ref single-def "field V75._reference (fldOffset=0x0)" P-INDEP ;* V127 tmp104 [V127 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP
-; V128 tmp105 [V128,T35] ( 2, 6 ) byref -> x1 "field V79._reference (fldOffset=0x0)" P-INDEP
+; V128 tmp105 [V128,T36] ( 2, 6 ) byref -> x1 "field V79._reference (fldOffset=0x0)" P-INDEP
; V129 tmp106 [V129,T30] ( 2, 8 ) int -> x2 "field V79._length (fldOffset=0x8)" P-INDEP
-; V130 tmp107 [V130,T36] ( 2, 6 ) byref -> x2 "field V82._reference (fldOffset=0x0)" P-INDEP
+; V130 tmp107 [V130,T37] ( 2, 6 ) byref -> x2 "field V82._reference (fldOffset=0x0)" P-INDEP
; V131 tmp108 [V131,T31] ( 2, 8 ) int -> x3 "field V82._length (fldOffset=0x8)" P-INDEP ; V132 tmp109 [V132,T41] ( 2, 4 ) long -> x28 "Cast away GC"
-; V133 tmp110 [V133,T48] ( 2, 2 ) long -> x6 "Cast away GC" -; V134 cse0 [V134,T52] ( 3, 1.50) int -> x0 "CSE - moderate" -; V135 cse1 [V135,T53] ( 3, 1.50) long -> x8 "CSE - moderate" -; V136 cse2 [V136,T13] ( 7, 17 ) int -> [fp+0x24] spill-single-def "CSE - aggressive"
+; V133 tmp110 [V133,T51] ( 2, 2 ) long -> x6 "Cast away GC" +; V134 cse0 [V134,T47] ( 3, 2 ) int -> x0 "CSE - moderate" +; V135 cse1 [V135,T54] ( 3, 1.50) long -> x8 "CSE - moderate" +; V136 cse2 [V136,T11] ( 7, 19 ) int -> [fp+0x24] spill-single-def "CSE - aggressive"
; V137 cse3 [V137,T19] ( 5, 12.25) byref -> registers hoist multi-def "CSE - moderate" ; ; Lcl frame size = 48 @@ -176,11 +176,11 @@ G_M3127_IG02: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x1 ldr x28, [x24, #0x10] ; byrRegs +[x28] cmp w27, #0
- ble G_M3127_IG38
+ ble G_M3127_IG40
;; size=16 bbWeight=1 PerfScore 7.50 G_M3127_IG03: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref, isz ; byrRegs -[x28]
- cbz x23, G_M3127_IG30
+ cbz x23, G_M3127_IG32
cbnz w20, G_M3127_IG04 cbnz x22, G_M3127_IG04 adrp x0, [HIGH RELOC #0xD1FFAB1E] @@ -199,19 +199,20 @@ G_M3127_IG04: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 mov w4, wzr ldr w5, [x23, #0x08] str w5, [fp, #0x24] // [V136 cse2]
+ str w4, [fp, #0x34] // [V10 loc4]
cbz w5, G_M3127_IG10 ldr w0, [x23, #0x10] sxtw w1, w0 cmp w3, w1 ble G_M3127_IG09
- ;; size=40 bbWeight=0.50 PerfScore 5.75
+ ;; size=44 bbWeight=0.50 PerfScore 6.25
G_M3127_IG05: ; bbWeight=0.25, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref add x6, x23, #16 ; byrRegs +[x6] ;; size=4 bbWeight=0.25 PerfScore 0.12 G_M3127_IG06: ; bbWeight=4, gcrefRegs=800000 {x23}, byrefRegs=3480040 {x6 x19 x22 x24 x25}, byref, isz cmp w2, w5
- bhs G_M3127_IG59
+ bhs G_M3127_IG61
ldr w4, [x6, w2, UXTW #2] cbz w4, G_M3127_IG09 add w3, w3, w20 @@ -224,22 +225,21 @@ G_M3127_IG07: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=3480040 {x6 ;; size=4 bbWeight=2 PerfScore 1.00 G_M3127_IG08: ; bbWeight=4, gcrefRegs=800000 {x23}, byrefRegs=3480040 {x6 x19 x22 x24 x25}, byref, isz cmp w2, w5
- bhs G_M3127_IG59
+ bhs G_M3127_IG61
ldr w4, [x6, w2, UXTW #2] add w1, w4, w1 orr w4, w1, w3
- tbnz w4, #31, G_M3127_IG60
+ tbnz w4, #31, G_M3127_IG62
cmp w27, w1 ldr w5, [fp, #0x24] // [V136 cse2] bgt G_M3127_IG06 ;; size=36 bbWeight=4 PerfScore 40.00
-G_M3127_IG09: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref
+G_M3127_IG09: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref
; byrRegs -[x6] cmp w1, #0 csel w4, wzr, w0, eq str w4, [fp, #0x34] // [V10 loc4]
- ldr w4, [fp, #0x34] // [V10 loc4] - ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M3127_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref, isz str wzr, [fp, #0x3C] // [V08 loc2] str wzr, [fp, #0x30] // [V11 loc5] @@ -249,7 +249,6 @@ G_M3127_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 ; byrRegs -[x24] str w3, [fp, #0x38] // [V09 loc3] tbz w3, #31, G_M3127_IG11
- str w4, [fp, #0x34] // [V10 loc4]
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] @@ -259,9 +258,8 @@ G_M3127_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 bl <unknown method> ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ldr w4, [fp, #0x34] // [V10 loc4]
ldr w5, [fp, #0x24] // [V136 cse2]
- ;; size=60 bbWeight=0.50 PerfScore 8.00
+ ;; size=52 bbWeight=0.50 PerfScore 6.50
G_M3127_IG11: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 {x19 x22 x25}, byref, isz ldr w0, [x19, #0x08] ldr x1, [x19, #0x10] @@ -282,7 +280,6 @@ G_M3127_IG11: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 ; GC ptr vars +{V55} str w3, [fp, #0x38] // [V09 loc3] tbz w3, #31, G_M3127_IG13
- str w4, [fp, #0x34] // [V10 loc4]
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] @@ -294,9 +291,9 @@ G_M3127_IG11: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 ; gcrRegs -[x0-x1] ; byrRegs -[x6] ; gcr arg pop 0
- ldp w4, w3, [fp, #0x34] // [V10 loc4], [V09 loc3]
+ ldr w3, [fp, #0x38] // [V09 loc3]
ldr w5, [fp, #0x24] // [V136 cse2]
- ;; size=96 bbWeight=0.50 PerfScore 14.25
+ ;; size=92 bbWeight=0.50 PerfScore 13.75
G_M3127_IG12: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 {x19 x22 x25}, byref ldr x6, [fp, #0x18] // [V55 tmp32] ; byrRegs +[x6] @@ -309,7 +306,6 @@ G_M3127_IG13: ; bbWeight=0.25, gcrefRegs=800000 {x23}, byrefRegs=2480000 ;; size=8 bbWeight=0.25 PerfScore 0.75 G_M3127_IG14: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=2480000 {x19 x22 x25}, gcvars, byref ; GC ptr vars -{V55}
- str w4, [fp, #0x34] // [V10 loc4]
mov x0, x19 ; byrRegs +[x0] str w3, [fp, #0x38] // [V09 loc3] @@ -318,9 +314,9 @@ G_M3127_IG14: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {} ; gcr arg pop 0 mov x6, x0 ; byrRegs +[x6]
- ldp w4, w3, [fp, #0x34] // [V10 loc4], [V09 loc3]
+ ldr w3, [fp, #0x38] // [V09 loc3]
ldr w5, [fp, #0x24] // [V136 cse2]
- ;; size=32 bbWeight=0.50 PerfScore 4.25
+ ;; size=28 bbWeight=0.50 PerfScore 3.75
G_M3127_IG15: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480040 {x6 x19 x22 x25}, byref, isz ; byrRegs -[x0] str x6, [fp, #0x28] // [V16 loc10] @@ -344,7 +340,7 @@ G_M3127_IG18: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=2080000 {x19 ; gcrRegs -[x23] ...

-8 (-0.67%) : 4820.dasm - System.Number:FormatFixedushort (FullOpts)

@@ -10,26 +10,26 @@ ; ; V00 arg0 [V00,T02] ( 32, 57.50) byref -> x19 single-def ; V01 arg1 [V01,T33] ( 5, 4.50) byref -> x24 single-def
-; V02 arg2 [V02,T09] ( 11, 17.50) int -> x21
+; V02 arg2 [V02,T08] ( 11, 18.50) int -> x21
; V03 arg3 [V03,T32] ( 7, 5.75) ref -> x23 class-hnd single-def <int[]> ;* V04 arg4 [V04 ] ( 0, 0 ) struct (16) zero-ref multireg-arg single-def <System.ReadOnlySpan`1[ushort]> ;* V05 arg5 [V05 ] ( 0, 0 ) struct (16) zero-ref multireg-arg ld-addr-op single-def <System.ReadOnlySpan`1[ushort]> ; V06 loc0 [V06,T06] ( 12, 21 ) int -> x27
-; V07 loc1 [V07,T08] ( 10, 20 ) long -> registers -; V08 loc2 [V08,T04] ( 14, 35 ) int -> [fp+0x3C]
+; V07 loc1 [V07,T09] ( 10, 20 ) long -> registers +; V08 loc2 [V08,T04] ( 14, 37 ) int -> [fp+0x3C]
; V09 loc3 [V09,T14] ( 11, 16 ) int -> [fp+0x38]
-; V10 loc4 [V10,T12] ( 7, 17 ) int -> [fp+0x34]
+; V10 loc4 [V10,T13] ( 7, 17.50) int -> [fp+0x34]
; V11 loc5 [V11,T25] ( 5, 8.50) int -> [fp+0x30]
-; V12 loc6 [V12,T49] ( 3, 1.50) int -> x0
+; V12 loc6 [V12,T52] ( 3, 1.50) int -> x0
; V13 loc7 [V13,T38] ( 3, 5 ) int -> x24
-; V14 loc8 [V14,T11] ( 7, 17.50) int -> x1 -; V15 loc9 [V15,T50] ( 3, 1.50) long -> x6
+; V14 loc8 [V14,T12] ( 7, 18 ) int -> x1 +; V15 loc9 [V15,T46] ( 3, 2 ) long -> x6
; V16 loc10 [V16 ] ( 2, 1 ) byref -> [fp+0x28] must-init pinned
-; V17 loc11 [V17,T03] ( 6, 41 ) long -> registers
+; V17 loc11 [V17,T03] ( 6, 41.50) long -> registers
; V18 loc12 [V18,T07] ( 8, 21 ) int -> x1 ; V19 loc13 [V19,T01] ( 6, 60 ) long -> x0 ; V20 loc14 [V20,T00] ( 7, 84 ) int -> x7
-; V21 loc15 [V21,T37] ( 4, 5.50) int -> x20
+; V21 loc15 [V21,T34] ( 4, 6 ) int -> x20
; V22 loc16 [V22,T18] ( 4, 12.50) int -> x22 ;# V23 OutArgs [V23 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V24 tmp1 [V24 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> @@ -44,12 +44,12 @@ ; V33 tmp10 [V33,T17] ( 2, 16 ) int -> x27 "dup spill" ;* V34 tmp11 [V34 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]> ;* V35 tmp12 [V35 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]>
-; V36 tmp13 [V36,T58] ( 2, 1 ) int -> x24
+; V36 tmp13 [V36,T59] ( 2, 1 ) int -> x24
;* V37 tmp14 [V37 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[ushort]> ;* V38 tmp15 [V38 ] ( 0, 0 ) long -> zero-ref ;* V39 tmp16 [V39 ] ( 0, 0 ) long -> zero-ref ; V40 tmp17 [V40,T28] ( 3, 8 ) int -> x8
-; V41 tmp18 [V41,T59] ( 2, 1 ) int -> x4
+; V41 tmp18 [V41,T50] ( 2, 2 ) int -> x4
;* V42 tmp19 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ubyte]> ;* V43 tmp20 [V43 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V44 tmp21 [V44,T64] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" @@ -57,13 +57,13 @@ ;* V46 tmp23 [V46 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V47 tmp24 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V48 tmp25 [V48 ] ( 0, 0 ) struct (16) zero-ref multireg-ret "Inline return value spill temp" <System.Span`1[ushort]>
-; V49 tmp26 [V49,T51] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
+; V49 tmp26 [V49,T53] ( 3, 1.50) int -> x0 "Inline stloc first use temp"
;* V50 tmp27 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.Span`1[ushort]> ;* V51 tmp28 [V51 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[SBR] multireg-ret "Return value temp for multireg return" <System.Span`1[ushort]> ;* V52 tmp29 [V52 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V53 tmp30 [V53 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V54 tmp31 [V54 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[ushort]>
-; V55 tmp32 [V55,T46] ( 2, 2 ) byref -> [fp+0x18] spill-single-def "Inlining Arg"
+; V55 tmp32 [V55,T48] ( 2, 2 ) byref -> [fp+0x18] spill-single-def "Inlining Arg"
;* V56 tmp33 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V57 tmp34 [V57 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V58 tmp35 [V58 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[ushort]> @@ -104,7 +104,7 @@ ;* V93 tmp70 [V93 ] ( 0, 0 ) int -> zero-ref "field V35._length (fldOffset=0x8)" P-INDEP ;* V94 tmp71 [V94 ] ( 0, 0 ) byref -> zero-ref "field V37._reference (fldOffset=0x0)" P-INDEP ;* V95 tmp72 [V95 ] ( 0, 0 ) int -> zero-ref "field V37._length (fldOffset=0x8)" P-INDEP
-; V96 tmp73 [V96,T47] ( 2, 2 ) byref -> x28 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
+; V96 tmp73 [V96,T49] ( 2, 2 ) byref -> x28 single-def "field V42._reference (fldOffset=0x0)" P-INDEP
;* V97 tmp74 [V97 ] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP ;* V98 tmp75 [V98 ] ( 0, 0 ) byref -> zero-ref single-def "field V43._reference (fldOffset=0x0)" P-INDEP ;* V99 tmp76 [V99 ] ( 0, 0 ) int -> zero-ref "field V43._length (fldOffset=0x8)" P-INDEP @@ -114,17 +114,17 @@ ;* V103 tmp80 [V103 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP ; V104 tmp81 [V104,T43] ( 4, 2 ) byref -> x6 single-def "field V48._reference (fldOffset=0x0)" P-INDEP ; V105 tmp82 [V105,T66] ( 1, 0.50) int -> x1 "field V48._length (fldOffset=0x8)" P-INDEP
-; V106 tmp83 [V106,T54] ( 2, 1 ) byref -> x1 single-def "field V50._reference (fldOffset=0x0)" P-INDEP
+; V106 tmp83 [V106,T55] ( 2, 1 ) byref -> x1 single-def "field V50._reference (fldOffset=0x0)" P-INDEP
; V107 tmp84 [V107,T61] ( 2, 1 ) int -> x6 "field V50._length (fldOffset=0x8)" P-INDEP ;* V108 tmp85 [V108 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-DEP ;* V109 tmp86 [V109 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-DEP
-; V110 tmp87 [V110,T55] ( 2, 1 ) byref -> x6 single-def "field V54._reference (fldOffset=0x0)" P-INDEP
+; V110 tmp87 [V110,T56] ( 2, 1 ) byref -> x6 single-def "field V54._reference (fldOffset=0x0)" P-INDEP
;* V111 tmp88 [V111 ] ( 0, 0 ) int -> zero-ref "field V54._length (fldOffset=0x8)" P-INDEP ;* V112 tmp89 [V112 ] ( 0, 0 ) byref -> zero-ref single-def "field V58._reference (fldOffset=0x0)" P-INDEP ;* V113 tmp90 [V113 ] ( 0, 0 ) int -> zero-ref "field V58._length (fldOffset=0x8)" P-INDEP
-; V114 tmp91 [V114,T34] ( 2, 6 ) byref -> x2 "field V64._reference (fldOffset=0x0)" P-INDEP
+; V114 tmp91 [V114,T35] ( 2, 6 ) byref -> x2 "field V64._reference (fldOffset=0x0)" P-INDEP
; V115 tmp92 [V115,T29] ( 2, 8 ) int -> x3 "field V64._length (fldOffset=0x8)" P-INDEP
-; V116 tmp93 [V116,T56] ( 2, 1 ) byref -> x1 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
+; V116 tmp93 [V116,T57] ( 2, 1 ) byref -> x1 single-def "field V67._reference (fldOffset=0x0)" P-INDEP
; V117 tmp94 [V117,T62] ( 2, 1 ) int -> x2 "field V67._length (fldOffset=0x8)" P-INDEP ;* V118 tmp95 [V118 ] ( 0, 0 ) byref -> zero-ref single-def "field V68._reference (fldOffset=0x0)" P-INDEP ;* V119 tmp96 [V119 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP @@ -132,19 +132,19 @@ ;* V121 tmp98 [V121 ] ( 0, 0 ) int -> zero-ref "field V70._length (fldOffset=0x8)" P-INDEP ;* V122 tmp99 [V122 ] ( 0, 0 ) byref -> zero-ref single-def "field V71._reference (fldOffset=0x0)" P-INDEP ;* V123 tmp100 [V123 ] ( 0, 0 ) int -> zero-ref "field V71._length (fldOffset=0x8)" P-INDEP
-; V124 tmp101 [V124,T57] ( 2, 1 ) byref -> x2 single-def "field V74._reference (fldOffset=0x0)" P-INDEP
+; V124 tmp101 [V124,T58] ( 2, 1 ) byref -> x2 single-def "field V74._reference (fldOffset=0x0)" P-INDEP
; V125 tmp102 [V125,T63] ( 2, 1 ) int -> x0 "field V74._length (fldOffset=0x8)" P-INDEP ;* V126 tmp103 [V126 ] ( 0, 0 ) byref -> zero-ref single-def "field V75._reference (fldOffset=0x0)" P-INDEP ;* V127 tmp104 [V127 ] ( 0, 0 ) int -> zero-ref "field V75._length (fldOffset=0x8)" P-INDEP
-; V128 tmp105 [V128,T35] ( 2, 6 ) byref -> x1 "field V79._reference (fldOffset=0x0)" P-INDEP
+; V128 tmp105 [V128,T36] ( 2, 6 ) byref -> x1 "field V79._reference (fldOffset=0x0)" P-INDEP
; V129 tmp106 [V129,T30] ( 2, 8 ) int -> x2 "field V79._length (fldOffset=0x8)" P-INDEP
-; V130 tmp107 [V130,T36] ( 2, 6 ) byref -> x2 "field V82._reference (fldOffset=0x0)" P-INDEP
+; V130 tmp107 [V130,T37] ( 2, 6 ) byref -> x2 "field V82._reference (fldOffset=0x0)" P-INDEP
; V131 tmp108 [V131,T31] ( 2, 8 ) int -> x3 "field V82._length (fldOffset=0x8)" P-INDEP ; V132 tmp109 [V132,T41] ( 2, 4 ) long -> x28 "Cast away GC"
-; V133 tmp110 [V133,T48] ( 2, 2 ) long -> x6 "Cast away GC" -; V134 cse0 [V134,T52] ( 3, 1.50) int -> x0 "CSE - moderate" -; V135 cse1 [V135,T53] ( 3, 1.50) long -> x8 "CSE - moderate" -; V136 cse2 [V136,T13] ( 7, 17 ) int -> [fp+0x24] spill-single-def "CSE - aggressive"
+; V133 tmp110 [V133,T51] ( 2, 2 ) long -> x6 "Cast away GC" +; V134 cse0 [V134,T47] ( 3, 2 ) int -> x0 "CSE - moderate" +; V135 cse1 [V135,T54] ( 3, 1.50) long -> x8 "CSE - moderate" +; V136 cse2 [V136,T11] ( 7, 19 ) int -> [fp+0x24] spill-single-def "CSE - aggressive"
; V137 cse3 [V137,T19] ( 5, 12.25) byref -> registers hoist multi-def "CSE - moderate" ; ; Lcl frame size = 48 @@ -177,11 +177,11 @@ G_M3127_IG02: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x1 ldr x28, [x24, #0x10] ; byrRegs +[x28] cmp w27, #0
- ble G_M3127_IG38
+ ble G_M3127_IG40
;; size=16 bbWeight=1 PerfScore 7.50 G_M3127_IG03: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref, isz ; byrRegs -[x28]
- cbz x23, G_M3127_IG30
+ cbz x23, G_M3127_IG32
cbnz w20, G_M3127_IG04 cbnz x22, G_M3127_IG04 adrp x0, [HIGH RELOC #0xD1FFAB1E] @@ -200,19 +200,20 @@ G_M3127_IG04: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 mov w4, wzr ldr w5, [x23, #0x08] str w5, [fp, #0x24] // [V136 cse2]
+ str w4, [fp, #0x34] // [V10 loc4]
cbz w5, G_M3127_IG10 ldr w0, [x23, #0x10] sxtw w1, w0 cmp w3, w1 ble G_M3127_IG09
- ;; size=40 bbWeight=0.50 PerfScore 5.75
+ ;; size=44 bbWeight=0.50 PerfScore 6.25
G_M3127_IG05: ; bbWeight=0.25, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref add x6, x23, #16 ; byrRegs +[x6] ;; size=4 bbWeight=0.25 PerfScore 0.12 G_M3127_IG06: ; bbWeight=4, gcrefRegs=800000 {x23}, byrefRegs=3480040 {x6 x19 x22 x24 x25}, byref, isz cmp w2, w5
- bhs G_M3127_IG59
+ bhs G_M3127_IG61
ldr w4, [x6, w2, UXTW #2] cbz w4, G_M3127_IG09 add w3, w3, w20 @@ -225,22 +226,21 @@ G_M3127_IG07: ; bbWeight=2, gcrefRegs=800000 {x23}, byrefRegs=3480040 {x6 ;; size=4 bbWeight=2 PerfScore 1.00 G_M3127_IG08: ; bbWeight=4, gcrefRegs=800000 {x23}, byrefRegs=3480040 {x6 x19 x22 x24 x25}, byref, isz cmp w2, w5
- bhs G_M3127_IG59
+ bhs G_M3127_IG61
ldr w4, [x6, w2, UXTW #2] add w1, w4, w1 orr w4, w1, w3
- tbnz w4, #31, G_M3127_IG60
+ tbnz w4, #31, G_M3127_IG62
cmp w27, w1 ldr w5, [fp, #0x24] // [V136 cse2] bgt G_M3127_IG06 ;; size=36 bbWeight=4 PerfScore 40.00
-G_M3127_IG09: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref
+G_M3127_IG09: ; bbWeight=1, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref
; byrRegs -[x6] cmp w1, #0 csel w4, wzr, w0, eq str w4, [fp, #0x34] // [V10 loc4]
- ldr w4, [fp, #0x34] // [V10 loc4] - ;; size=16 bbWeight=0.50 PerfScore 2.00
+ ;; size=12 bbWeight=1 PerfScore 2.00
G_M3127_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 {x19 x22 x24 x25}, byref, isz str wzr, [fp, #0x3C] // [V08 loc2] str wzr, [fp, #0x30] // [V11 loc5] @@ -250,7 +250,6 @@ G_M3127_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 ; byrRegs -[x24] str w3, [fp, #0x38] // [V09 loc3] tbz w3, #31, G_M3127_IG11
- str w4, [fp, #0x34] // [V10 loc4]
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] @@ -260,9 +259,8 @@ G_M3127_IG10: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=3480000 bl <unknown method> ; gcrRegs -[x0-x1] ; gcr arg pop 0
- ldr w4, [fp, #0x34] // [V10 loc4]
ldr w5, [fp, #0x24] // [V136 cse2]
- ;; size=60 bbWeight=0.50 PerfScore 8.00
+ ;; size=52 bbWeight=0.50 PerfScore 6.50
G_M3127_IG11: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 {x19 x22 x25}, byref, isz ldr w0, [x19, #0x08] ldr x1, [x19, #0x10] @@ -283,7 +281,6 @@ G_M3127_IG11: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 ; GC ptr vars +{V55} str w3, [fp, #0x38] // [V09 loc3] tbz w3, #31, G_M3127_IG13
- str w4, [fp, #0x34] // [V10 loc4]
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] @@ -295,9 +292,9 @@ G_M3127_IG11: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 ; gcrRegs -[x0-x1] ; byrRegs -[x6] ; gcr arg pop 0
- ldp w4, w3, [fp, #0x34] // [V10 loc4], [V09 loc3]
+ ldr w3, [fp, #0x38] // [V09 loc3]
ldr w5, [fp, #0x24] // [V136 cse2]
- ;; size=96 bbWeight=0.50 PerfScore 14.25
+ ;; size=92 bbWeight=0.50 PerfScore 13.75
G_M3127_IG12: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480000 {x19 x22 x25}, byref ldr x6, [fp, #0x18] // [V55 tmp32] ; byrRegs +[x6] @@ -310,7 +307,6 @@ G_M3127_IG13: ; bbWeight=0.25, gcrefRegs=800000 {x23}, byrefRegs=2480000 ;; size=8 bbWeight=0.25 PerfScore 0.75 G_M3127_IG14: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {}, gcrefRegs=800000 {x23}, byrefRegs=2480000 {x19 x22 x25}, gcvars, byref ; GC ptr vars -{V55}
- str w4, [fp, #0x34] // [V10 loc4]
mov x0, x19 ; byrRegs +[x0] str w3, [fp, #0x38] // [V09 loc3] @@ -319,9 +315,9 @@ G_M3127_IG14: ; bbWeight=0.50, gcVars=00000000000000000000000000000000 {} ; gcr arg pop 0 mov x6, x0 ; byrRegs +[x6]
- ldp w4, w3, [fp, #0x34] // [V10 loc4], [V09 loc3]
+ ldr w3, [fp, #0x38] // [V09 loc3]
ldr w5, [fp, #0x24] // [V136 cse2]
- ;; size=32 bbWeight=0.50 PerfScore 4.25
+ ;; size=28 bbWeight=0.50 PerfScore 3.75
G_M3127_IG15: ; bbWeight=0.50, gcrefRegs=800000 {x23}, byrefRegs=2480040 {x6 x19 x22 x25}, byref, isz ; byrRegs -[x0] str x6, [fp, #0x28] // [V16 loc10] @@ -345,7 +341,7 @@ G_M3127_IG18: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=2080000 {x19 ; gcrRegs -[x23] ...

+8 (+1.32%) : 15395.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)

@@ -7,7 +7,7 @@ ; fully interruptible ; Final local variable assignments ;
-; V00 loc0 [V00,T11] ( 8, 4 ) long -> x20
+; V00 loc0 [V00,T10] ( 8, 4.50) long -> x20
; V01 loc1 [V01,T02] ( 7, 18.50) long -> x0 ; V02 loc2 [V02,T05] ( 4, 12.50) long -> x19 ; V03 loc3 [V03,T21] ( 2, 0.75) int -> x22 @@ -16,26 +16,26 @@ ;# V06 OutArgs [V06 ] ( 1, 1 ) struct ( 0) [sp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V07 tmp1 [V07 ] ( 0, 0 ) long -> zero-ref ld-addr-op "NewObj constructor temp" ;* V08 tmp2 [V08 ] ( 0, 0 ) long -> zero-ref "impAppendStmt"
-; V09 tmp3 [V09,T12] ( 4, 4 ) int -> x20 "dup spill"
+; V09 tmp3 [V09,T14] ( 4, 4 ) int -> x20 "dup spill"
; V10 tmp4 [V10,T16] ( 3, 3 ) ref -> x1 class-hnd single-def "impAppendStmt" <<unknown class>> ;* V11 tmp5 [V11 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V12 tmp6 [V12 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V13 tmp7 [V13 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V14 tmp8 [V14 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V15 tmp9 [V15,T13] ( 3, 4 ) long -> x0 "Single return block return value"
+; V15 tmp9 [V15,T08] ( 3, 5 ) long -> x0 "Single return block return value"
; V16 PInvokeFrame [V16 ] ( 3, 2 ) struct (40) [fp+0x18] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" ; V17 tmp11 [V17,T00] ( 3, 24 ) ref -> x2 "arr expr" ; V18 tmp12 [V18,T17] ( 3, 3 ) ref -> x0 single-def "arr expr" ; V19 tmp13 [V19,T18] ( 3, 3 ) int -> x1 "index expr"
-; V20 cse0 [V20,T09] ( 2, 4.25) ref -> x0 hoist "CSE - aggressive" -; V21 cse1 [V21,T08] ( 3, 5 ) int -> x25 "CSE - aggressive"
+; V20 cse0 [V20,T11] ( 2, 4.25) ref -> x0 hoist "CSE - aggressive" +; V21 cse1 [V21,T09] ( 3, 5 ) int -> x25 "CSE - aggressive"
; V22 cse2 [V22,T20] ( 3, 1.50) ref -> x0 "CSE - moderate" ; V23 cse3 [V23,T19] ( 5, 2.50) int -> x20 "CSE - moderate" ; V24 cse4 [V24,T03] ( 8, 17 ) byref -> [fp+0x48] spill-single-def "CSE - aggressive"
-; V25 cse5 [V25,T15] ( 7, 3.50) byref -> [fp+0x40] "CSE - moderate" -; V26 cse6 [V26,T10] ( 2, 4.25) long -> x1 hoist "CSE - aggressive"
+; V25 cse5 [V25,T13] ( 7, 4 ) byref -> [fp+0x40] "CSE - moderate" +; V26 cse6 [V26,T12] ( 2, 4.25) long -> x1 hoist "CSE - aggressive"
; V27 rat0 [V27,T07] ( 4, 6 ) long -> x19 "fgMakeTemp is creating a new local variable"
-; V28 rat1 [V28,T14] ( 3, 4 ) int -> x21 "Spilling to split statement for tree"
+; V28 rat1 [V28,T15] ( 3, 4 ) int -> x21 "Spilling to split statement for tree"
; V29 rat2 [V29,T06] ( 5, 6 ) long -> x22 "fgMakeTemp is creating a new local variable" ; ; Lcl frame size = 64 @@ -53,13 +53,13 @@ G_M65282_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, adrp x19, [HIGH RELOC #0xD1FFAB1E] add x19, x19, [LOW RELOC #0xD1FFAB1E] ldr x0, [x19, #-0x08]
- cbnz x0, G_M65282_IG23
+ cbnz x0, G_M65282_IG24
ldr w20, [x19] sxtw w21, w20 adrp x22, [HIGH RELOC #0xD1FFAB1E] add x22, x22, [LOW RELOC #0xD1FFAB1E] ldr x0, [x22, #-0x08]
- cbnz x0, G_M65282_IG24
+ cbnz x0, G_M65282_IG25
;; size=40 bbWeight=1 PerfScore 13.50 G_M65282_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz ; byrRegs +[x19] @@ -67,13 +67,13 @@ G_M65282_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, by ; GC ptr vars +{V24} ldr w0, [x22, #0x0C] cmp w21, w0
- bge G_M65282_IG06
+ bge G_M65282_IG07
;; size=16 bbWeight=1 PerfScore 5.50 G_M65282_IG04: ; bbWeight=0.50, gcVars=0000000000000008 {V24}, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, gcvars, byref, isz adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0, #-0x08]
- cbnz x0, G_M65282_IG25
+ cbnz x0, G_M65282_IG26
;; size=16 bbWeight=0.50 PerfScore 2.50 G_M65282_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref, isz adrp x0, [HIGH RELOC #0xD1FFAB1E] @@ -87,7 +87,7 @@ G_M65282_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, str w2, [x19] ldr w2, [x1, #0x08] cmp w20, w2
- bhs G_M65282_IG22
+ bhs G_M65282_IG23
add x1, x1, #16 ; gcrRegs -[x1] ; byrRegs +[x1] @@ -97,12 +97,12 @@ G_M65282_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, sub w1, w1, #1 ldr w2, [x0, #0x08] cmp w1, w2
- bhs G_M65282_IG22
+ bhs G_M65282_IG23
add x0, x0, #16 ; gcrRegs -[x0] ; byrRegs +[x0] str xzr, [x0, w1, UXTW #3]
- cbnz x20, G_M65282_IG14
+ cbnz x20, G_M65282_IG06
adrp x0, [HIGH RELOC #0xD1FFAB1E] ; byrRegs -[x0] add x0, x0, [LOW RELOC #0xD1FFAB1E] @@ -114,31 +114,39 @@ G_M65282_IG05: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, ; gcrRegs -[x0-x1] ; byrRegs -[x19] ; gcr arg pop 0
- b G_M65282_IG14 - ;; size=104 bbWeight=0.50 PerfScore 15.75 -G_M65282_IG06: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref - ; byrRegs +[x19]
+ ldr x24, [fp, #0x48] // [V24 cse4] + ; byrRegs +[x24] + b G_M65282_IG15 + ;; size=108 bbWeight=0.50 PerfScore 16.75 +G_M65282_IG06: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; byrRegs -[x24] + ldr x24, [fp, #0x48] // [V24 cse4] + ; byrRegs +[x24] + b G_M65282_IG15 + ;; size=8 bbWeight=0.25 PerfScore 0.75 +G_M65282_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=80000 {x19}, byref + ; byrRegs -[x24] +[x19]
str x19, [fp, #0x40] // [V25 cse5] ; GC ptr vars +{V25} add x0, fp, #24 // [V16 PInvokeFrame] ;; size=8 bbWeight=0.50 PerfScore 0.75
-G_M65282_IG07: ; bbWeight=0.50, gcVars=0000000000008008 {V24 V25}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M65282_IG08: ; bbWeight=0.50, gcVars=0000000000002008 {V24 V25}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[x19] bl CORINFO_HELP_JIT_PINVOKE_BEGIN ; gcr arg pop 0 ;; size=4 bbWeight=0.50 PerfScore 0.50
-G_M65282_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M65282_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
bl <unknown method> ; gcr arg pop 0 mov x20, x0 add x0, fp, #24 // [V16 PInvokeFrame] bl CORINFO_HELP_JIT_PINVOKE_END ; gcr arg pop 0
- cbnz x20, G_M65282_IG09
+ cbnz x20, G_M65282_IG10
mov x0, xzr
- b G_M65282_IG21
+ b G_M65282_IG22
;; size=28 bbWeight=0.50 PerfScore 2.75
-G_M65282_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M65282_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
mov x19, x20 bl <unknown method> ; gcr arg pop 0 @@ -148,19 +156,19 @@ G_M65282_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr ; byrRegs +[x24] ldr w25, [x24, #0x0C] cmp w25, #0
- ble G_M65282_IG13
+ ble G_M65282_IG14
;; size=32 bbWeight=0.50 PerfScore 4.50
-G_M65282_IG10: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz - adrp x0, [HIGH RELOC #0xD1FFAB1E] - add x0, x0, [LOW RELOC #0xD1FFAB1E] - ldr x0, [x0, #-0x08] - cbnz x0, G_M65282_IG26
+G_M65282_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0, #-0x08] cbnz x0, G_M65282_IG27
+ adrp x0, [HIGH RELOC #0xD1FFAB1E] + add x0, x0, [LOW RELOC #0xD1FFAB1E] + ldr x0, [x0, #-0x08] + cbnz x0, G_M65282_IG28
;; size=32 bbWeight=0.25 PerfScore 2.50
-G_M65282_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
+G_M65282_IG12: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ldr x0, [x0] @@ -168,12 +176,12 @@ G_M65282_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=1000000 {x24 ; gcrRegs +[x0] sxtw x1, w22 ;; size=20 bbWeight=0.25 PerfScore 1.88
-G_M65282_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=1000000 {x24}, byref, isz
+G_M65282_IG13: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=1000000 {x24}, byref, isz
mov x2, x0 ; gcrRegs +[x2] ldr w3, [x2, #0x08] cmp w23, w3
- bhs G_M65282_IG22
+ bhs G_M65282_IG23
add x2, x2, #16 ; gcrRegs -[x2] ; byrRegs +[x2] @@ -181,20 +189,20 @@ G_M65282_IG12: ; bbWeight=4, gcrefRegs=0001 {x0}, byrefRegs=1000000 {x24} add x19, x19, x1 add w23, w23, #1 cmp w25, w23
- bgt G_M65282_IG12
+ bgt G_M65282_IG13
;; size=40 bbWeight=4 PerfScore 36.00
-G_M65282_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
+G_M65282_IG14: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
; gcrRegs -[x0] ; byrRegs -[x2] mov w0, #1 ldr x19, [fp, #0x40] // [V25 cse5] ; byrRegs +[x19] str w0, [x19]
- ;; size=12 bbWeight=0.50 PerfScore 1.75 -G_M65282_IG14: ; bbWeight=0.50, gcVars=0000000000000008 {V24}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz - ; byrRegs -[x19 x24]
+ ;; size=12 bbWeight=1 PerfScore 3.50 +G_M65282_IG15: ; bbWeight=0.50, gcVars=0000000000000008 {V24}, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, gcvars, byref, isz + ; byrRegs -[x19]
; GC ptr vars -{V25}
- cbnz x20, G_M65282_IG15
+ cbnz x20, G_M65282_IG16
adrp x0, [HIGH RELOC #0xD1FFAB1E] add x0, x0, [LOW RELOC #0xD1FFAB1E] ; gcrRegs +[x0] @@ -205,48 +213,46 @@ G_M65282_IG14: ; bbWeight=0.50, gcVars=0000000000000008 {V24}, gcrefRegs= ; gcrRegs -[x0-x1] ; gcr arg pop 0 ;; size=24 bbWeight=0.50 PerfScore 2.00
-G_M65282_IG15: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M65282_IG16: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz
mov x0, x20 bl <unknown method> ; gcr arg pop 0 mov w1, wzr
- ldr x22, [fp, #0x48] // [V24 cse4] - ; byrRegs +[x22] - ldr w2, [x22, #0x08]
+ ldr w2, [x24, #0x08]
cmp w2, #0
- ble G_M65282_IG20 - ;; size=28 bbWeight=0.50 PerfScore 4.25 -G_M65282_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref, isz - ldr w2, [x22, #0x08]
+ ble G_M65282_IG21 + ;; size=24 bbWeight=0.50 PerfScore 3.25 +G_M65282_IG17: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref, isz + ldr w2, [x24, #0x08]
sub w2, w2, #1 cmp w2, w1
- bne G_M65282_IG18
+ bne G_M65282_IG19
;; size=16 bbWeight=4 PerfScore 20.00
-G_M65282_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=400000 {x22}, byref
+G_M65282_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=1000000 {x24}, byref
str xzr, [x0]
- b G_M65282_IG19
+ b G_M65282_IG20
...

+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 175 9 16 150 -100 +108
benchmarks.run_pgo.windows.arm64.checked.mch 5,306 1,672 1,833 1,801 -16,116 +14,848
benchmarks.run_tiered.windows.arm64.checked.mch 64 5 9 50 -52 +48
coreclr_tests.run.windows.arm64.checked.mch 3,749 163 116 3,470 -1,152 +768
libraries.crossgen2.windows.arm64.checked.mch 553 28 29 496 -796 +552
libraries.pmi.windows.arm64.checked.mch 936 91 83 762 -728 +892
libraries_tests.run.windows.arm64.Release.mch 561 451 45 65 -2,388 +288
librariestestsnotieredcompilation.run.windows.arm64.Release.mch 1,058 179 162 717 -1,472 +1,552
realworld.run.windows.arm64.checked.mch 236 17 16 203 -708 +256
smoke_tests.nativeaot.windows.arm64.checked.mch 130 9 5 116 -216 +40
12,768 2,624 2,314 7,830 -23,728 +19,352

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 274,538 15 274,523 1 (0.00%) 1 (0.00%)
libraries.pmi.windows.arm64.checked.mch 305,619 6 305,613 48 (0.02%) 48 (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,069 21,618 293,451 2,287 (0.72%) 2,287 (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 24,055 8 24,047 135 (0.56%) 135 (0.56%)
1,478,010 263,527 1,214,483 2,751 (0.19%) 2,751 (0.19%)

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: 10887636 (overridden on cmd)
Total bytes of diff: 10887644 (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 : 2668.dasm (0.10 % of base)
          12 : 2237.dasm (2.73 % of base)
          12 : 3233.dasm (1.84 % of base)
          12 : 1262.dasm (0.59 % of base)
           8 : 12554.dasm (1.18 % of base)
           8 : 4989.dasm (0.45 % of base)
           8 : 4524.dasm (0.48 % of base)
           4 : 20749.dasm (0.16 % of base)
           4 : 10184.dasm (0.56 % of base)
           4 : 10754.dasm (0.17 % of base)
           4 : 20115.dasm (0.09 % of base)
           4 : 569.dasm (0.23 % of base)
           4 : 8066.dasm (0.41 % of base)
           4 : 20767.dasm (0.17 % of base)
           4 : 22403.dasm (0.09 % of base)
           4 : 6038.dasm (0.28 % of base)

Top file improvements (bytes):
         -32 : 7166.dasm (-1.75 % of base)
         -20 : 806.dasm (-0.48 % of base)
         -20 : 9253.dasm (-2.18 % of base)
          -8 : 18351.dasm (-0.14 % of base)
          -4 : 15577.dasm (-0.44 % of base)
          -4 : 12714.dasm (-0.11 % of base)
          -4 : 18043.dasm (-0.12 % of base)
          -4 : 10466.dasm (-0.21 % of base)
          -4 : 429.dasm (-0.37 % of base)

25 total files with Code Size differences (9 improved, 16 regressed), 34 unchanged.

Top method regressions (bytes):
          12 (1.84 % of base) : 3233.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
          12 (0.59 % of base) : 1262.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
          12 (2.73 % of base) : 2237.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          12 (0.10 % of base) : 2668.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)
           8 (1.18 % of base) : 12554.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
           8 (0.45 % of base) : 4989.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (FullOpts)
           8 (0.48 % of base) : 4524.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (FullOpts)
           4 (0.16 % of base) : 20749.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.17 % of base) : 20767.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):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)
           4 (0.41 % of base) : 8066.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():this (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.09 % of base) : 22403.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)
           4 (0.23 % of base) : 569.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           4 (0.56 % of base) : 10184.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)

Top method improvements (bytes):
         -32 (-1.75 % of base) : 7166.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -20 (-2.18 % of base) : 9253.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
         -20 (-0.48 % of base) : 806.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):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.44 % of base) : 15577.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):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.21 % of base) : 10466.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (FullOpts)
          -4 (-0.11 % of base) : 12714.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          -4 (-0.37 % of base) : 429.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte: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.18 % of base) : 12554.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
          12 (0.59 % of base) : 1262.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
           4 (0.56 % of base) : 10184.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
           8 (0.48 % of base) : 4524.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (FullOpts)
           8 (0.45 % of base) : 4989.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[System.__Canon] (FullOpts)
           4 (0.41 % of base) : 8066.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():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)
           4 (0.23 % of base) : 569.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (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.17 % of base) : 20767.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.16 % of base) : 20749.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
          12 (0.10 % of base) : 2668.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):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):
         -20 (-2.18 % of base) : 9253.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
         -32 (-1.75 % of base) : 7166.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -20 (-0.48 % of base) : 806.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          -4 (-0.44 % of base) : 15577.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
          -4 (-0.37 % of base) : 429.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (FullOpts)
          -4 (-0.21 % of base) : 10466.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (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.11 % of base) : 12714.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (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: 36162312 (overridden on cmd)
Total bytes of diff: 36161044 (overridden on cmd)
Total bytes of delta: -1268 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         160 : 45445.dasm (3.56 % of base)
         108 : 19026.dasm (3.10 % of base)
          68 : 36955.dasm (6.34 % of base)
          68 : 40519.dasm (8.33 % of base)
          48 : 47975.dasm (1.17 % of base)
          48 : 53489.dasm (1.17 % of base)
          40 : 43045.dasm (1.04 % of base)
          40 : 65978.dasm (1.04 % of base)
          40 : 73060.dasm (0.99 % of base)
          36 : 39210.dasm (4.02 % of base)
          36 : 44548.dasm (0.88 % of base)
          36 : 57163.dasm (1.77 % of base)
          36 : 58671.dasm (1.77 % of base)
          36 : 61379.dasm (1.77 % of base)
          36 : 64055.dasm (1.77 % of base)
          36 : 64904.dasm (1.77 % of base)
          36 : 65790.dasm (1.77 % of base)
          36 : 30184.dasm (1.77 % of base)
          36 : 42103.dasm (1.77 % of base)
          36 : 63796.dasm (1.77 % of base)

Top file improvements (bytes):
        -104 : 68962.dasm (-2.46 % of base)
        -104 : 43158.dasm (-2.46 % of base)
         -88 : 62812.dasm (-2.09 % of base)
         -84 : 37774.dasm (-4.84 % of base)
         -84 : 37776.dasm (-4.90 % of base)
         -80 : 36227.dasm (-4.60 % of base)
         -72 : 67422.dasm (-1.75 % of base)
         -72 : 60268.dasm (-1.75 % of base)
         -64 : 40550.dasm (-1.56 % of base)
         -48 : 70441.dasm (-1.23 % of base)
         -40 : 55099.dasm (-6.76 % of base)
         -40 : 57181.dasm (-6.76 % of base)
         -40 : 61407.dasm (-6.76 % of base)
         -40 : 64073.dasm (-6.76 % of base)
         -40 : 39997.dasm (-0.96 % of base)
         -40 : 64919.dasm (-6.76 % of base)
         -40 : 67005.dasm (-0.96 % of base)
         -36 : 66361.dasm (-0.87 % of base)
         -36 : 63217.dasm (-0.88 % of base)
         -36 : 13109.dasm (-0.87 % of base)

92 total files with Code Size differences (54 improved, 38 regressed), 20 unchanged.

Top method regressions (bytes):
         160 (3.56 % of base) : 45445.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
         108 (3.10 % of base) : 19026.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1)
          68 (8.33 % of base) : 40519.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          68 (6.34 % of base) : 36955.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          48 (1.17 % 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)
          48 (1.17 % 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)
          40 (1.04 % of base) : 43045.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 (1.04 % of base) : 65978.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.99 % of base) : 73060.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 (4.02 % of base) : 39210.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
          36 (1.77 % of base) : 57163.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)
          36 (1.77 % of base) : 58671.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)
          36 (1.77 % of base) : 61379.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)
          36 (1.77 % of base) : 64055.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)
          36 (1.77 % of base) : 64904.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)
          36 (1.77 % of base) : 65790.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)
          36 (1.77 % of base) : 30184.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)
          36 (1.77 % of base) : 42103.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)
          36 (1.77 % of base) : 63796.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)
          36 (1.77 % of base) : 71446.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 improvements (bytes):
        -104 (-2.46 % of base) : 68962.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)
        -104 (-2.46 % of base) : 43158.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)
         -88 (-2.09 % of base) : 62812.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:PopulateProperties(System.RuntimeType+RuntimeTypeCache+Filter,System.RuntimeType,System.Collections.Generic.Dictionary`2[System.String,System.Collections.Generic.List`1[System.Reflection.RuntimePropertyInfo]],System.Span`1[ubyte],ubyte,byref):this (Tier1)
         -84 (-4.84 % of base) : 37774.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
         -84 (-4.90 % of base) : 37776.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
         -80 (-4.60 % of base) : 36227.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
         -72 (-1.75 % of base) : 67422.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)
         -72 (-1.75 % of base) : 60268.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)
         -64 (-1.56 % of base) : 40550.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)
         -48 (-1.23 % of base) : 70441.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 (-6.76 % of base) : 55099.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 57181.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 61407.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 64073.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 64919.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-0.96 % of base) : 39997.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.96 % of base) : 67005.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.87 % of base) : 66361.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) : 63217.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.87 % of base) : 13109.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)

Top method regressions (percentages):
          20 (19.23 % of base) : 58246.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
          20 (19.23 % of base) : 47618.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
          20 (13.51 % of base) : 72810.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
          20 (13.51 % of base) : 67338.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.BigStruct]:InsertionSort(System.Span`1[System.Collections.BigStruct]) (Tier1)
          68 (8.33 % of base) : 40519.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          32 (7.21 % of base) : 26244.dasm - System.Text.RegularExpressions.RegexInterpreter:Scan(System.ReadOnlySpan`1[ushort]):this (Tier1)
          16 (6.90 % of base) : 14423.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
          68 (6.34 % of base) : 36955.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
          12 (6.25 % of base) : 33399.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 36959.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 58316.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 72749.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (6.25 % of base) : 38934.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
           8 (4.08 % of base) : 36726.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
           8 (4.08 % of base) : 36711.dasm - Benchstone.BenchI.LogicArray:Inner(byref):ubyte (Tier1-OSR)
          36 (4.02 % of base) : 39210.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (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.64 % of base) : 55967.dasm - System.Runtime.CompilerServices.CastHelpers:StelemRef_Helper(byref,ulong,System.Object) (Tier1)

Top method improvements (percentages):
         -16 (-15.38 % of base) : 59738.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (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) : 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) : 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) : 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) : 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)
         -40 (-6.76 % of base) : 55099.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 57181.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 61407.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 64073.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -40 (-6.76 % of base) : 64919.dasm - System.Collections.Perf_FrozenDictionary_String:TryGetValue_True_ImmutableDictionary():ubyte:this (Tier1-OSR)
         -16 (-5.41 % of base) : 57307.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
         -16 (-5.41 % of base) : 58786.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
         -16 (-5.41 % of base) : 58869.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
         -16 (-5.41 % of base) : 64727.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
         -16 (-5.41 % of base) : 23977.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
         -16 (-5.41 % of base) : 63752.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)
         -16 (-5.33 % of base) : 62154.dasm - System.Buffers.SharedArrayPoolPartitions:TryPop():System.Array:this (Tier1)


benchmarks.run_tiered.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 15269056 (overridden on cmd)
Total bytes of diff: 15269052 (overridden on cmd)
Total bytes of delta: -4 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          12 : 44460.dasm (2.73 % of base)
           8 : 29902.dasm (0.49 % of base)
           4 : 25261.dasm (0.25 % of base)
           4 : 10152.dasm (0.30 % of base)
           4 : 44819.dasm (0.41 % of base)
           4 : 47682.dasm (0.28 % of base)
           4 : 2756.dasm (0.23 % of base)
           4 : 40217.dasm (0.09 % of base)
           4 : 45277.dasm (0.09 % of base)

Top file improvements (bytes):
         -32 : 16292.dasm (-1.75 % of base)
          -8 : 31939.dasm (-1.01 % of base)
          -4 : 23254.dasm (-0.21 % of base)
          -4 : 19308.dasm (-0.37 % of base)
          -4 : 30214.dasm (-0.44 % of base)

14 total files with Code Size differences (5 improved, 9 regressed), 34 unchanged.

Top method regressions (bytes):
          12 (2.73 % of base) : 44460.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
           8 (0.49 % of base) : 29902.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (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.41 % of base) : 44819.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():this (Tier1)
           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)
           4 (0.23 % of base) : 2756.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
           4 (0.25 % of base) : 25261.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)

Top method improvements (bytes):
         -32 (-1.75 % of base) : 16292.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          -8 (-1.01 % of base) : 31939.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
          -4 (-0.44 % of base) : 30214.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)
          -4 (-0.21 % of base) : 23254.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (Tier0-FullOpts)
          -4 (-0.37 % of base) : 19308.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (Tier1)

Top method regressions (percentages):
          12 (2.73 % of base) : 44460.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
           8 (0.49 % of base) : 29902.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:CreateAlternate(System.Text.RegularExpressions.Symbolic.SymbolicRegexBuilder`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],ubyte,ubyte):System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong] (Tier1)
           4 (0.41 % of base) : 44819.dasm - System.Runtime.Serialization.DataContracts.ClassDataContract+ClassDataContractCriticalHelper:EnsureMethodsImported():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.28 % of base) : 47682.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
           4 (0.25 % of base) : 25261.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
           4 (0.23 % of base) : 2756.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (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):
         -32 (-1.75 % of base) : 16292.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
          -8 (-1.01 % of base) : 31939.dasm - LUDecomp:lubksb(double[][],int,int[],double[]) (Tier1-OSR)
          -4 (-0.44 % of base) : 30214.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)
          -4 (-0.37 % of base) : 19308.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (Tier1)
          -4 (-0.21 % of base) : 23254.dasm - System.Formats.Tar.TarHeader:GenerateExtendedAttributesDataStream(System.Collections.Generic.Dictionary`2[System.String,System.String]):System.IO.MemoryStream (Tier0-FullOpts)


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: 277085768 (overridden on cmd)
Total bytes of diff: 277085384 (overridden on cmd)
Total bytes of delta: -384 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 343338.dasm (12.50 % of base)
          24 : 188833.dasm (2.46 % of base)
          24 : 363735.dasm (10.53 % of base)
          20 : 360355.dasm (8.93 % of base)
          20 : 363729.dasm (8.93 % of base)
          16 : 201581.dasm (0.21 % of base)
          16 : 315152.dasm (1.54 % of base)
          12 : 192379.dasm (4.29 % of base)
          12 : 198964.dasm (0.28 % of base)
          12 : 254256.dasm (1.06 % of base)
          12 : 295337.dasm (0.16 % of base)
          12 : 353833.dasm (1.05 % of base)
          12 : 354667.dasm (1.32 % of base)
          12 : 355006.dasm (1.27 % of base)
          12 : 361503.dasm (1.40 % of base)
          12 : 314081.dasm (2.73 % of base)
          12 : 315571.dasm (2.31 % of base)
          12 : 345211.dasm (1.00 % of base)
          12 : 354002.dasm (1.05 % of base)
          12 : 357386.dasm (1.31 % of base)

Top file improvements (bytes):
         -28 : 319322.dasm (-4.73 % of base)
         -28 : 353851.dasm (-4.73 % of base)
         -28 : 353560.dasm (-4.73 % of base)
         -24 : 353042.dasm (-4.08 % of base)
         -24 : 361857.dasm (-4.08 % of base)
         -24 : 192376.dasm (-4.08 % of base)
         -24 : 189009.dasm (-4.08 % of base)
         -24 : 318490.dasm (-4.08 % of base)
         -24 : 345134.dasm (-4.08 % of base)
         -24 : 353920.dasm (-4.08 % of base)
         -24 : 366544.dasm (-4.08 % of base)
         -20 : 341879.dasm (-9.62 % of base)
         -16 : 158223.dasm (-2.13 % of base)
         -16 : 343724.dasm (-7.84 % of base)
         -16 : 158248.dasm (-2.13 % of base)
         -16 : 172774.dasm (-2.13 % of base)
         -16 : 342802.dasm (-7.84 % of base)
         -16 : 351723.dasm (-1.84 % of base)
         -12 : 250340.dasm (-5.45 % of base)
         -12 : 345241.dasm (-5.45 % of base)

60 total files with Code Size differences (26 improved, 34 regressed), 20 unchanged.

Top method regressions (bytes):
          28 (12.50 % of base) : 343338.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
          24 (10.53 % of base) : 363735.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
          24 (2.46 % of base) : 188833.dasm - VectorTest:VectorTReturnTest():int (FullOpts)
          20 (8.93 % of base) : 360355.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          20 (8.93 % of base) : 363729.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          16 (0.21 % of base) : 201581.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamedTypeSymbol:MakeOneDeclaredBases(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],Microsoft.CodeAnalysis.CSharp.SingleTypeDeclaration,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):System.Tuple`2[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol]]:this (FullOpts)
          16 (1.54 % of base) : 315152.dasm - System.CommandLine.CliArgument`1+<>c[System.__Canon]:<AcceptLegalFilePathsOnly>b__15_0(System.CommandLine.Parsing.ArgumentResult):this (FullOpts)
          12 (1.06 % of base) : 254256.dasm - (dynamicClass):<xsl:template match="/">(System.Xml.Xsl.Runtime.XmlQueryRuntime,System.Xml.XPath.XPathNavigator) (FullOpts)
          12 (0.16 % of base) : 295337.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
          12 (2.31 % of base) : 315571.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
          12 (1.40 % of base) : 361503.dasm - System.AppContext:GetData(System.String):System.Object (Tier1)
          12 (2.73 % of base) : 314081.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          12 (1.00 % of base) : 345211.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Instrumented Tier1)
          12 (1.05 % of base) : 353833.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
          12 (1.05 % of base) : 354002.dasm - System.IO.StreamWriter:WriteFormatHelper(System.String,System.ReadOnlySpan`1[System.Object],ubyte):this (Tier1)
          12 (4.29 % of base) : 192379.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
          12 (1.32 % of base) : 354667.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
          12 (1.27 % of base) : 355006.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
          12 (1.31 % of base) : 357386.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):
         -28 (-4.73 % of base) : 319322.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 353851.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 353560.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 353042.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 361857.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 192376.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 189009.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 318490.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 345134.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 353920.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 366544.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) : 343724.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 (-1.84 % of base) : 351723.dasm - System.RuntimeType+RuntimeTypeCache+MemberInfoCache`1[System.__Canon]:Insert(byref,System.String,int):this (Tier1)
         -12 (-2.21 % of base) : 342685.dasm - Burgers:GetCalculated1(int,int,double,double,double,double[]):double[] (Tier1-OSR)
         -12 (-5.45 % of base) : 250340.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

Top method regressions (percentages):
          28 (12.50 % of base) : 343338.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
          24 (10.53 % of base) : 363735.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
          20 (8.93 % of base) : 360355.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          20 (8.93 % of base) : 363729.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          12 (4.29 % of base) : 192379.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(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) : 348010.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) : 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) : 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)
          24 (2.46 % of base) : 188833.dasm - VectorTest:VectorTReturnTest():int (FullOpts)
           4 (2.38 % of base) : 353859.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
           4 (2.33 % of base) : 358441.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
           4 (2.33 % of base) : 318491.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
           4 (2.33 % of base) : 318539.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
          12 (2.31 % of base) : 315571.dasm - Microsoft.Build.Evaluation.SemiColonTokenizer+Enumerator:GetExpressionSubstring(int,int):System.String:this (FullOpts)
           4 (1.89 % of base) : 192566.dasm - X:T(int,int[]) (Tier1-OSR)

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) : 343724.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)
         -12 (-5.45 % of base) : 250340.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 345241.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 345350.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 353133.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 353820.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 353584.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 354493.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -28 (-4.73 % of base) : 319322.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 353851.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -28 (-4.73 % of base) : 353560.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 353042.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 361857.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 192376.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 189009.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 318490.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 345134.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 353920.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)


libraries.crossgen2.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 66990496 (overridden on cmd)
Total bytes of diff: 66990252 (overridden on cmd)
Total bytes of delta: -244 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         116 : 201336.dasm (3.37 % of base)
         116 : 159579.dasm (3.40 % of base)
          84 : 231716.dasm (1.36 % of base)
          36 : 106271.dasm (0.64 % of base)
          28 : 36510.dasm (4.14 % of base)
          12 : 156363.dasm (0.04 % of base)
          12 : 57276.dasm (0.22 % of base)
          12 : 18749.dasm (2.78 % of base)
          12 : 24036.dasm (1.87 % of base)
          12 : 266698.dasm (2.78 % of base)
          12 : 268311.dasm (2.07 % of base)
          12 : 83921.dasm (1.91 % of base)
           8 : 17470.dasm (1.82 % of base)
           8 : 191190.dasm (1.21 % of base)
           8 : 16679.dasm (1.67 % of base)
           8 : 243824.dasm (1.28 % of base)
           8 : 155596.dasm (0.16 % of base)
           4 : 256129.dasm (0.97 % of base)
           4 : 270179.dasm (0.33 % of base)
           4 : 165300.dasm (0.45 % of base)

Top file improvements (bytes):
        -436 : 26282.dasm (-0.55 % of base)
         -52 : 57899.dasm (-0.59 % of base)
         -52 : 120881.dasm (-0.59 % of base)
         -36 : 8442.dasm (-2.05 % of base)
         -32 : 237146.dasm (-1.63 % of base)
         -24 : 90139.dasm (-0.45 % of base)
         -20 : 195357.dasm (-2.16 % of base)
         -16 : 36536.dasm (-2.38 % of base)
         -16 : 37067.dasm (-2.16 % of base)
         -12 : 192050.dasm (-0.79 % of base)
          -8 : 203198.dasm (-0.20 % of base)
          -8 : 92841.dasm (-0.32 % of base)
          -8 : 157183.dasm (-0.92 % of base)
          -8 : 177149.dasm (-0.38 % of base)
          -8 : 263352.dasm (-0.66 % of base)
          -8 : 222080.dasm (-0.38 % of base)
          -8 : 92578.dasm (-0.24 % of base)
          -4 : 225286.dasm (-0.66 % of base)
          -4 : 197240.dasm (-0.87 % of base)
          -4 : 21885.dasm (-0.27 % of base)

49 total files with Code Size differences (24 improved, 25 regressed), 20 unchanged.

Top method regressions (bytes):
         116 (3.37 % of base) : 201336.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
         116 (3.40 % of base) : 159579.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          84 (1.36 % of base) : 231716.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
          36 (0.64 % of base) : 106271.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          28 (4.14 % of base) : 36510.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)
          12 (0.22 % of base) : 57276.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
          12 (1.91 % of base) : 83921.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
          12 (0.04 % 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)
          12 (1.87 % of base) : 24036.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
          12 (2.07 % of base) : 268311.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
          12 (2.78 % of base) : 18749.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          12 (2.78 % of base) : 266698.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (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 (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.97 % of base) : 256129.dasm - Microsoft.Extensions.Primitives.StringValues:GetHashCode():int:this (FullOpts)
           4 (0.47 % of base) : 221986.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method improvements (bytes):
        -436 (-0.55 % of base) : 26282.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
         -52 (-0.59 % of base) : 120881.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -52 (-0.59 % of base) : 57899.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -36 (-2.05 % of base) : 8442.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -32 (-1.63 % of base) : 237146.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (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.16 % of base) : 195357.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -16 (-2.38 % of base) : 36536.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (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.38 % of base) : 177149.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -8 (-0.38 % of base) : 222080.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -8 (-0.24 % 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)
          -8 (-0.32 % of base) : 92841.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindXmlContainerRewriterInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder+XmlElementRootInfo,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundXmlContainerRewriterInfo:this (FullOpts)
          -8 (-0.92 % of base) : 157183.dasm - Microsoft.VisualBasic.Strings:SplitHelper(System.String,System.String,int,int):System.String[] (FullOpts)
          -8 (-0.66 % of base) : 263352.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationSendPackets(System.Net.Sockets.Socket,System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (FullOpts)
          -8 (-0.20 % of base) : 203198.dasm - System.Speech.Internal.SrgsCompiler.Backend:InitFromBinaryGrammar(System.Speech.Internal.StreamMarshaler):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.66 % of base) : 225286.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
          -4 (-0.66 % of base) : 266161.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)

Top method regressions (percentages):
          28 (4.14 % of base) : 36510.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)
         116 (3.40 % of base) : 159579.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
         116 (3.37 % of base) : 201336.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          12 (2.78 % of base) : 18749.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          12 (2.78 % of base) : 266698.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          12 (2.07 % of base) : 268311.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
          12 (1.91 % of base) : 83921.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):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)
          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)
           4 (0.97 % of base) : 256129.dasm - Microsoft.Extensions.Primitives.StringValues:GetHashCode():int:this (FullOpts)
          36 (0.64 % of base) : 106271.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
           4 (0.55 % of base) : 266551.dasm - System.Data.ProviderBase.DbConnectionPool:PoolCreateRequest(System.Object):this (FullOpts)
           4 (0.53 % of base) : 199347.dasm - System.Reflection.Metadata.Ecma335.SignatureDecoder`2[System.__Canon,System.__Canon]:DecodeMethodSignature(byref):System.Reflection.Metadata.MethodSignature`1[System.__Canon]:this (FullOpts)
           4 (0.47 % of base) : 221986.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           4 (0.47 % of base) : 177064.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__60`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)

Top method improvements (percentages):
         -16 (-2.38 % of base) : 36536.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
         -16 (-2.16 % of base) : 37067.dasm - Microsoft.Diagnostics.Tracing.TraceEventDispatcher:Lookup(ulong):Microsoft.Diagnostics.Tracing.TraceEvent:this (FullOpts)
         -20 (-2.16 % of base) : 195357.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -36 (-2.05 % of base) : 8442.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -32 (-1.63 % of base) : 237146.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -8 (-0.92 % of base) : 157183.dasm - Microsoft.VisualBasic.Strings:SplitHelper(System.String,System.String,int,int):System.String[] (FullOpts)
          -4 (-0.87 % of base) : 197240.dasm - System.Reflection.Metadata.BlobBuilder:TryWriteBytes(System.IO.Stream,int):int: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)
          -4 (-0.66 % of base) : 225286.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
          -4 (-0.66 % of base) : 266161.dasm - System.Data.ProviderBase.DbReferenceCollection:Notify(int):this (FullOpts)
          -8 (-0.66 % of base) : 263352.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationSendPackets(System.Net.Sockets.Socket,System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (FullOpts)
         -52 (-0.59 % of base) : 120881.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -52 (-0.59 % of base) : 57899.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
        -436 (-0.55 % of base) : 26282.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (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)
          -4 (-0.44 % of base) : 232960.dasm - System.Net.WebClient:DownloadBits(System.Net.WebRequest,System.IO.Stream):ubyte[]:this (FullOpts)
          -8 (-0.38 % of base) : 177149.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -8 (-0.38 % of base) : 222080.dasm - Microsoft.CodeAnalysis.NodeStateTable`1+Builder[System.__Canon]:TryModifyEntries(System.Collections.Immutable.ImmutableArray`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.TimeSpan,System.Collections.Immutable.ImmutableArray`1[System.ValueTuple`2[Microsoft.CodeAnalysis.IncrementalGeneratorRunStep,int]],int):ubyte:this (FullOpts)
          -4 (-0.35 % of base) : 164824.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
          -8 (-0.32 % of base) : 92841.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindXmlContainerRewriterInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder+XmlElementRootInfo,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundXmlContainerRewriterInfo:this (FullOpts)


libraries.pmi.windows.arm64.checked.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 79835620 (overridden on cmd)
Total bytes of diff: 79835784 (overridden on cmd)
Total bytes of delta: 164 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          52 : 157404.dasm (1.78 % of base)
          52 : 176705.dasm (1.82 % of base)
          48 : 151366.dasm (1.21 % of base)
          48 : 117185.dasm (0.87 % of base)
          44 : 276312.dasm (3.15 % of base)
          40 : 274282.dasm (10.10 % of base)
          40 : 274283.dasm (10.10 % of base)
          24 : 108525.dasm (0.27 % of base)
          20 : 69843.dasm (15.62 % of base)
          16 : 147131.dasm (3.60 % of base)
          16 : 200301.dasm (2.55 % of base)
          16 : 88771.dasm (1.67 % of base)
          16 : 123699.dasm (1.54 % of base)
          16 : 123700.dasm (1.54 % of base)
          16 : 123696.dasm (1.54 % of base)
          16 : 123695.dasm (1.54 % of base)
          12 : 179323.dasm (2.29 % of base)
          12 : 209999.dasm (0.15 % of base)
          12 : 267212.dasm (2.73 % of base)
          12 : 269169.dasm (2.73 % of base)

Top file improvements (bytes):
         -36 : 227591.dasm (-2.33 % of base)
         -32 : 210182.dasm (-0.38 % of base)
         -32 : 284757.dasm (-1.75 % of base)
         -28 : 93278.dasm (-0.47 % of base)
         -28 : 97553.dasm (-0.70 % of base)
         -24 : 206926.dasm (-3.31 % of base)
         -20 : 282343.dasm (-1.61 % of base)
         -20 : 31162.dasm (-0.31 % of base)
         -16 : 120297.dasm (-0.38 % of base)
         -16 : 69139.dasm (-2.38 % of base)
         -16 : 93891.dasm (-0.78 % of base)
         -16 : 145622.dasm (-1.32 % of base)
         -12 : 120355.dasm (-0.25 % of base)
         -12 : 139258.dasm (-0.28 % of base)
         -12 : 172297.dasm (-0.28 % of base)
         -12 : 177881.dasm (-0.32 % of base)
         -12 : 253006.dasm (-0.72 % of base)
         -12 : 4766.dasm (-11.11 % of base)
         -12 : 4778.dasm (-12.00 % of base)
         -12 : 94009.dasm (-1.92 % of base)

56 total files with Code Size differences (32 improved, 24 regressed), 20 unchanged.

Top method regressions (bytes):
          52 (1.78 % of base) : 157404.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          52 (1.82 % of base) : 176705.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte: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)
          40 (10.10 % of base) : 274282.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          40 (10.10 % of base) : 274283.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          24 (0.27 % of base) : 108525.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          20 (15.62 % of base) : 69843.dasm - Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
          16 (1.67 % of base) : 88771.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser+PartialManifestInfo:AddChunk(Microsoft.Diagnostics.Tracing.TraceEvent):Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:this (FullOpts)
          16 (3.60 % of base) : 147131.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ValueAttributes(System.Collections.Generic.List`1[Newtonsoft.Json.Converters.IXmlNode]):ubyte:this (FullOpts)
          16 (1.54 % of base) : 123696.dasm - System.CommandLine.CliArgument`1+<>c[System.__Canon]:<AcceptLegalFileNamesOnly>b__16_0(System.CommandLine.Parsing.ArgumentResult):this (FullOpts)
          16 (1.54 % of base) : 123695.dasm - System.CommandLine.CliArgument`1+<>c[System.__Canon]:<AcceptLegalFilePathsOnly>b__15_0(System.CommandLine.Parsing.ArgumentResult):this (FullOpts)
          16 (1.54 % of base) : 123700.dasm - System.CommandLine.CliArgument`1+<>c[ubyte]:<AcceptLegalFileNamesOnly>b__16_0(System.CommandLine.Parsing.ArgumentResult):this (FullOpts)
          16 (1.54 % of base) : 123699.dasm - System.CommandLine.CliArgument`1+<>c[ubyte]:<AcceptLegalFilePathsOnly>b__15_0(System.CommandLine.Parsing.ArgumentResult):this (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 (1.87 % of base) : 62347.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):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)

Top method improvements (bytes):
         -36 (-2.33 % 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)
         -32 (-1.75 % of base) : 284757.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-0.38 % of base) : 210182.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,ubyte):this (FullOpts)
         -28 (-0.47 % of base) : 93278.dasm - ILCompiler.Diagnostics.PdbWriter:WriteCompilerVersion():this (FullOpts)
         -28 (-0.70 % of base) : 97553.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)
         -24 (-3.31 % of base) : 206926.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
         -20 (-0.31 % of base) : 31162.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -20 (-1.61 % of base) : 282343.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationSendPackets(System.Net.Sockets.Socket,System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int: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 (-0.38 % of base) : 120297.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypePublicSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -16 (-2.38 % of base) : 69139.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (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 (-1.92 % of base) : 94009.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:IsNamespaceGroupIncludesButNotEquivalentTo(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol):ubyte (FullOpts)
         -12 (-0.25 % of base) : 120355.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager+AnonymousTypeTemplateSymbol:.ctor(Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeManager,Microsoft.CodeAnalysis.VisualBasic.Symbols.AnonymousTypeDescriptor):this (FullOpts)
         -12 (-0.72 % of base) : 253006.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object: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 (-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)

Top method regressions (percentages):
          20 (15.62 % of base) : 69843.dasm - Microsoft.Diagnostics.Tracing.Utilities.HistoryDictionary`2[System.Numerics.Vector`1[float],System.Nullable`1[int]]:Remove(System.Numerics.Vector`1[float]):this (FullOpts)
          40 (10.10 % of base) : 274282.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetFirst(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          40 (10.10 % of base) : 274283.dasm - System.Linq.OrderedEnumerable`1[System.Numerics.Vector`1[float]]:TryGetLast(byref):System.Numerics.Vector`1[float]:this (FullOpts)
          16 (3.60 % of base) : 147131.dasm - Newtonsoft.Json.Converters.XmlNodeConverter:ValueAttributes(System.Collections.Generic.List`1[Newtonsoft.Json.Converters.IXmlNode]):ubyte: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)
           4 (2.22 % of base) : 22963.dasm - Microsoft.FSharp.Collections.MapTreeModule:ofList[ubyte,System.Nullable`1[int]](System.Collections.Generic.IComparer`1[ubyte],Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[ubyte,System.Nullable`1[int]]]):Microsoft.FSharp.Collections.MapTree`2[ubyte,System.Nullable`1[int]] (FullOpts)
          12 (1.87 % of base) : 62347.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
          52 (1.82 % of base) : 176705.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          52 (1.78 % of base) : 157404.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (FullOpts)
          16 (1.67 % of base) : 88771.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser+PartialManifestInfo:AddChunk(Microsoft.Diagnostics.Tracing.TraceEvent):Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:this (FullOpts)
          16 (1.54 % of base) : 123696.dasm - System.CommandLine.CliArgument`1+<>c[System.__Canon]:<AcceptLegalFileNamesOnly>b__16_0(System.CommandLine.Parsing.ArgumentResult):this (FullOpts)
          16 (1.54 % of base) : 123695.dasm - System.CommandLine.CliArgument`1+<>c[System.__Canon]:<AcceptLegalFilePathsOnly>b__15_0(System.CommandLine.Parsing.ArgumentResult):this (FullOpts)
          16 (1.54 % of base) : 123700.dasm - System.CommandLine.CliArgument`1+<>c[ubyte]:<AcceptLegalFileNamesOnly>b__16_0(System.CommandLine.Parsing.ArgumentResult):this (FullOpts)
          16 (1.54 % of base) : 123699.dasm - System.CommandLine.CliArgument`1+<>c[ubyte]:<AcceptLegalFilePathsOnly>b__15_0(System.CommandLine.Parsing.ArgumentResult):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)

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)
         -16 (-2.38 % of base) : 69139.dasm - Microsoft.Diagnostics.Tracing.BPerfEventSource:ULZ777DecompressInternal(ulong,int,ulong,int):int (FullOpts)
         -36 (-2.33 % 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)
         -12 (-1.92 % of base) : 94009.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:IsNamespaceGroupIncludesButNotEquivalentTo(Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.NamespaceSymbol):ubyte (FullOpts)
         -32 (-1.75 % of base) : 284757.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -4 (-1.67 % of base) : 253580.dasm - System.ComponentModel.TypeDescriptor:set_ComNativeDescriptorHandler(System.ComponentModel.IComNativeDescriptorHandler) (FullOpts)
         -20 (-1.61 % of base) : 282343.dasm - System.Net.Sockets.SocketAsyncEventArgs:DoOperationSendPackets(System.Net.Sockets.Socket,System.Net.Sockets.SafeSocketHandle,System.Threading.CancellationToken):int:this (FullOpts)
          -4 (-1.54 % of base) : 158837.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions:AssertCanRead(System.Threading.ReaderWriterLockSlim) (FullOpts)
          -4 (-1.54 % of base) : 125060.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions:AssertCanRead(System.Threading.ReaderWriterLockSlim) (FullOpts)
          -4 (-1.54 % of base) : 270600.dasm - System.Linq.Parallel.NullableIntAverageAggregationOperator+NullableIntAverageAggregationOperatorEnumerator`1[System.__Canon]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.54 % of base) : 270603.dasm - System.Linq.Parallel.NullableIntAverageAggregationOperator+NullableIntAverageAggregationOperatorEnumerator`1[ubyte]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.52 % of base) : 270629.dasm - System.Linq.Parallel.NullableLongAverageAggregationOperator+NullableLongAverageAggregationOperatorEnumerator`1[System.__Canon]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.52 % of base) : 270632.dasm - System.Linq.Parallel.NullableLongAverageAggregationOperator+NullableLongAverageAggregationOperatorEnumerator`1[ubyte]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.47 % of base) : 270543.dasm - System.Linq.Parallel.NullableDoubleAverageAggregationOperator+NullableDoubleAverageAggregationOperatorEnumerator`1[ubyte]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.47 % of base) : 270570.dasm - System.Linq.Parallel.NullableFloatAverageAggregationOperator+NullableFloatAverageAggregationOperatorEnumerator`1[System.__Canon]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.47 % of base) : 270573.dasm - System.Linq.Parallel.NullableFloatAverageAggregationOperator+NullableFloatAverageAggregationOperatorEnumerator`1[ubyte]:MoveNextCore(byref):ubyte:this (FullOpts)
          -4 (-1.47 % of base) : 220045.dasm - System.Speech.Internal.SrgsCompiler.GrammarElement:AddScript(System.String,System.String):this (FullOpts)


libraries_tests.run.windows.arm64.Release.mch

To reproduce these diffs on Windows x64: superpmi.py asmdiffs -target_os windows -target_arch arm64 -arch x64


Summary of Code Size diffs:
(Lower is better)

Total bytes of base: 6478404 (overridden on cmd)
Total bytes of diff: 6476304 (overridden on cmd)
Total bytes of delta: -2100 (-0.03 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          28 : 4345.dasm (12.50 % of base)
          24 : 1707.dasm (10.71 % of base)
          20 : 1780.dasm (2.37 % of base)
          12 : 38.dasm (4.29 % of base)
           8 : 1170.dasm (1.67 % of base)
           8 : 4298.dasm (1.67 % of base)
           8 : 5246.dasm (3.92 % of base)
           8 : 7100.dasm (1.67 % of base)
           8 : 8834.dasm (1.71 % of base)
           8 : 1366.dasm (1.71 % of base)
           8 : 4671.dasm (1.67 % of base)
           8 : 6597.dasm (1.71 % of base)
           8 : 4699.dasm (1.71 % of base)
           8 : 5903.dasm (1.71 % of base)
           4 : 1609.dasm (2.33 % of base)
           4 : 6060.dasm (0.70 % of base)
           4 : 5516.dasm (0.70 % of base)
           4 : 6252.dasm (1.45 % of base)
           4 : 9988.dasm (1.15 % of base)
           4 : 1062.dasm (1.28 % of base)

Top file improvements (bytes):
         -28 : 1727.dasm (-4.73 % of base)
         -24 : 1605.dasm (-4.08 % of base)
         -24 : 2060.dasm (-4.08 % of base)
         -12 : 10381.dasm (-5.45 % of base)
         -12 : 6329.dasm (-5.45 % of base)
         -12 : 8285.dasm (-5.45 % of base)
         -12 : 8497.dasm (-5.45 % of base)
         -12 : 10041.dasm (-5.45 % of base)
         -12 : 7426.dasm (-5.45 % of base)
         -12 : 7533.dasm (-5.45 % of base)
         -12 : 8562.dasm (-5.45 % of base)
         -12 : 8597.dasm (-5.45 % of base)
         -12 : 9009.dasm (-5.45 % of base)
         -12 : 6078.dasm (-5.45 % of base)
         -12 : 10069.dasm (-5.45 % of base)
         -12 : 6497.dasm (-5.45 % of base)
         -12 : 7249.dasm (-5.45 % of base)
         -12 : 7698.dasm (-5.45 % of base)
         -12 : 7854.dasm (-5.45 % of base)
         -12 : 8673.dasm (-5.45 % of base)

51 total files with Code Size differences (25 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
          28 (12.50 % of base) : 4345.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
          24 (10.71 % of base) : 1707.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
          20 (2.37 % of base) : 1780.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
          12 (4.29 % of base) : 38.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
           8 (3.92 % of base) : 5246.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
           8 (1.67 % of base) : 1170.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.67 % of base) : 4298.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.67 % of base) : 7100.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.71 % of base) : 8834.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.71 % of base) : 1366.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.67 % of base) : 4671.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.71 % of base) : 6597.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.71 % of base) : 4699.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.71 % of base) : 5903.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) : 7260.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 (1.45 % of base) : 6252.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)
           4 (1.45 % of base) : 336.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)
           4 (1.45 % of base) : 7295.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)

Top method improvements (bytes):
         -28 (-4.73 % of base) : 1727.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 1605.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -24 (-4.08 % of base) : 2060.dasm - System.Collections.Generic.Dictionary`2[System.__Canon,System.__Canon]:FindValue(System.__Canon):byref:this (Tier1)
         -12 (-5.45 % of base) : 10381.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 6329.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8285.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8497.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 10041.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 7426.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 7533.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8562.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8597.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 9009.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 6078.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 10069.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 6497.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 7249.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 7698.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 7854.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8673.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

Top method regressions (percentages):
          28 (12.50 % of base) : 4345.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstance_Helper(ulong,System.Object):System.Object (Tier1)
          24 (10.71 % of base) : 1707.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
          12 (4.29 % of base) : 38.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
           8 (3.92 % of base) : 5246.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)
          20 (2.37 % of base) : 1780.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[System.__Canon]:MoveNext():ubyte:this (Tier1)
           4 (2.33 % of base) : 1609.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfClass(ulong,System.Object):System.Object (Tier1)
           8 (1.71 % of base) : 8834.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.71 % of base) : 1366.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.71 % of base) : 6597.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.71 % of base) : 4699.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.71 % of base) : 5903.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.67 % of base) : 1170.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.67 % of base) : 4298.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.67 % of base) : 7100.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           8 (1.67 % of base) : 4671.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
           4 (1.54 % of base) : 8802.dasm - System.String:GetNonRandomizedHashCode():int:this (Tier1)
           4 (1.45 % of base) : 6252.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)
           4 (1.45 % of base) : 336.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)
           4 (1.45 % of base) : 7295.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)
           4 (1.45 % of base) : 1380.dasm - System.Collections.HashHelpers:GetPrime(int):int (Tier1)

Top method improvements (percentages):
         -12 (-5.45 % of base) : 10381.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 6329.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8285.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8497.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 10041.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 7426.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 7533.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8562.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8597.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 9009.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 6078.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 10069.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 6497.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 7249.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 7698.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 7854.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8673.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8693.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 8757.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -12 (-5.45 % of base) : 9569.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (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: 168105436 (overridden on cmd)
Total bytes of diff: 168105516 (overridden on cmd)
Total bytes of delta: 80 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          52 : 89746.dasm (1.82 % of base)
          44 : 156429.dasm (3.15 % of base)
          40 : 293612.dasm (2.62 % of base)
          36 : 292131.dasm (2.65 % of base)
          36 : 292192.dasm (1.67 % of base)
          36 : 292180.dasm (1.80 % of base)
          36 : 292304.dasm (2.40 % of base)
          36 : 292309.dasm (2.18 % of base)
          28 : 165766.dasm (1.49 % of base)
          28 : 165919.dasm (1.36 % of base)
          28 : 166715.dasm (1.36 % of base)
          28 : 166748.dasm (1.36 % of base)
          24 : 292130.dasm (1.38 % of base)
          24 : 165849.dasm (0.67 % of base)
          24 : 166410.dasm (0.67 % of base)
          20 : 165945.dasm (0.54 % of base)
          16 : 4071.dasm (1.35 % of base)
          16 : 92956.dasm (2.55 % of base)
          16 : 102315.dasm (1.67 % of base)
          16 : 165756.dasm (0.41 % of base)

Top file improvements (bytes):
         -36 : 289816.dasm (-0.97 % of base)
         -32 : 151540.dasm (-1.75 % of base)
         -32 : 171165.dasm (-1.73 % of base)
         -32 : 171861.dasm (-0.40 % of base)
         -28 : 291976.dasm (-0.90 % of base)
         -28 : 289813.dasm (-0.79 % of base)
         -24 : 13025.dasm (-0.40 % of base)
         -24 : 177271.dasm (-3.31 % of base)
         -24 : 54898.dasm (-1.90 % of base)
         -20 : 165845.dasm (-0.93 % of base)
         -20 : 289551.dasm (-1.34 % of base)
         -16 : 292065.dasm (-0.64 % of base)
         -16 : 147085.dasm (-0.73 % of base)
         -16 : 165747.dasm (-0.75 % of base)
         -16 : 280908.dasm (-0.63 % of base)
         -16 : 304630.dasm (-0.67 % of base)
         -12 : 49593.dasm (-0.82 % of base)
         -12 : 51541.dasm (-0.24 % of base)
         -12 : 6637.dasm (-0.24 % of base)
         -12 : 12221.dasm (-0.29 % of base)

61 total files with Code Size differences (35 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
          52 (1.82 % of base) : 89746.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte: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 (1.49 % of base) : 165766.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long]](System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 165919.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 166715.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 166748.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ulong,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ulong]](System.ReadOnlySpan`1[ulong],System.ReadOnlySpan`1[ulong]):ulong (FullOpts)
          24 (0.67 % of base) : 165849.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanSpanScalarIntoSpan>g__Vectorized128|234_1[long,System.Numerics.Tensors.TensorPrimitives+AddMultiplyOperator`1[long]](byref,byref,long,byref,ulong) (FullOpts)
          24 (0.67 % of base) : 166410.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanSpanScalarIntoSpan>g__Vectorized128|234_1[ulong,System.Numerics.Tensors.TensorPrimitives+AddMultiplyOperator`1[ulong]](byref,byref,ulong,byref,ulong) (FullOpts)
          24 (1.38 % of base) : 292130.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2915_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          20 (0.54 % of base) : 165945.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanScalarSpanIntoSpan>g__Vectorized128|235_1[long,System.Numerics.Tensors.TensorPrimitives+MultiplyAddOperator`1[long]](byref,long,byref,byref,ulong) (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 (1.67 % of base) : 102315.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser+PartialManifestInfo:AddChunk(Microsoft.Diagnostics.Tracing.TraceEvent):Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:this (FullOpts)
          16 (0.41 % of base) : 165756.dasm - System.Numerics.Tensors.TensorPrimitives:<InvokeSpanScalarIntoSpan>g__Vectorized128|232_1[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long]](byref,long,byref,ulong) (FullOpts)
          16 (0.67 % of base) : 166347.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ulong,System.Numerics.Tensors.TensorPrimitives+SubtractOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[ulong]](System.ReadOnlySpan`1[ulong],System.ReadOnlySpan`1[ulong]):ulong (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)
         -32 (-1.75 % of base) : 151540.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-1.73 % of base) : 171165.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-0.40 % of base) : 171861.dasm - System.Xml.Serialization.XmlSerializationWriter:WriteTypedPrimitive(System.String,System.String,System.Object,ubyte):this (FullOpts)
         -28 (-0.90 % of base) : 291976.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2837_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 (-1.90 % of base) : 54898.dasm - Microsoft.Extensions.Options.Generators.Parser:TrackRangeAttributeForSubstitution(Microsoft.CodeAnalysis.AttributeData,Microsoft.CodeAnalysis.ITypeSymbol,byref):this (FullOpts)
         -24 (-3.31 % of base) : 177271.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
         -20 (-0.93 % of base) : 165845.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanSpanScalarIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+AddMultiplyOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long],long,System.Span`1[long]) (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.73 % of base) : 147085.dasm - System.Buffers.SequenceReader`1[ushort]:TryReadToAnyInternal(byref,System.ReadOnlySpan`1[ushort],ubyte,int):ubyte:this (FullOpts)
         -16 (-0.75 % of base) : 165747.dasm - System.Numerics.Tensors.TensorPrimitives:InvokeSpanScalarIntoSpan[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long]](System.ReadOnlySpan`1[long],long,System.Span`1[long]) (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) : 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.24 % of base) : 51541.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (FullOpts)
         -12 (-0.24 % of base) : 6637.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (FullOpts)
         -12 (-0.29 % of base) : 12221.dasm - Microsoft.CodeAnalysis.SyntaxNode+<DescendantNodesAndTokensIntoTrivia>d__175:MoveNext():ubyte:this (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) : 127078.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)
          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)
          52 (1.82 % of base) : 89746.dasm - System.Configuration.XmlUtil:CopyXmlNode(System.Configuration.XmlUtilWriter):ubyte:this (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)
          16 (1.67 % of base) : 102315.dasm - Microsoft.Diagnostics.Tracing.Parsers.DynamicTraceEventParser+PartialManifestInfo:AddChunk(Microsoft.Diagnostics.Tracing.TraceEvent):Microsoft.Diagnostics.Tracing.Parsers.ProviderManifest:this (FullOpts)
          28 (1.49 % of base) : 165766.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+IdentityOperator`1[long],System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long]](System.ReadOnlySpan`1[long]):long (FullOpts)
          24 (1.38 % of base) : 292130.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex2915_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          28 (1.36 % of base) : 165919.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 166715.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[long,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[long],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[long]](System.ReadOnlySpan`1[long],System.ReadOnlySpan`1[long]):long (FullOpts)
          28 (1.36 % of base) : 166748.dasm - System.Numerics.Tensors.TensorPrimitives:Aggregate[ulong,System.Numerics.Tensors.TensorPrimitives+MultiplyOperator`1[ulong],System.Numerics.Tensors.TensorPrimitives+AddOperator`1[ulong]](System.ReadOnlySpan`1[ulong],System.ReadOnlySpan`1[ulong]):ulong (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)

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)
         -24 (-1.90 % of base) : 54898.dasm - Microsoft.Extensions.Options.Generators.Parser:TrackRangeAttributeForSubstitution(Microsoft.CodeAnalysis.AttributeData,Microsoft.CodeAnalysis.ITypeSymbol,byref):this (FullOpts)
         -32 (-1.75 % of base) : 151540.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -32 (-1.73 % of base) : 171165.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -4 (-1.54 % of base) : 12378.dasm - Roslyn.Utilities.ReaderWriterLockSlimExtensions:AssertCanRead(System.Threading.ReaderWriterLockSlim) (FullOpts)
          -4 (-1.45 % of base) : 62380.dasm - System.Security.AccessControl.ObjectSecurity:get_AccessRulesModified():ubyte:this (FullOpts)
          -4 (-1.45 % of base) : 62381.dasm - System.Security.AccessControl.ObjectSecurity:get_AuditRulesModified():ubyte:this (FullOpts)
          -4 (-1.45 % of base) : 62383.dasm - System.Security.AccessControl.ObjectSecurity:get_GroupModified():ubyte:this (FullOpts)
          -4 (-1.45 % of base) : 62382.dasm - System.Security.AccessControl.ObjectSecurity:get_OwnerModified():ubyte:this (FullOpts)
          -8 (-1.43 % of base) : 43059.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetAddedProjects>d__3:MoveNext():ubyte:this (FullOpts)
          -8 (-1.43 % of base) : 48788.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetAddedProjects>d__3:MoveNext():ubyte:this (FullOpts)
          -8 (-1.43 % of base) : 48784.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetRemovedProjects>d__5:MoveNext():ubyte:this (FullOpts)
          -8 (-1.43 % of base) : 43055.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetRemovedProjects>d__5:MoveNext():ubyte:this (FullOpts)
          -8 (-1.41 % of base) : 13869.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetAddedProjects>d__3:MoveNext():ubyte:this (FullOpts)
          -8 (-1.41 % of base) : 30511.dasm - Microsoft.CodeAnalysis.SolutionChanges+<GetRemovedProjects>d__5:MoveNext():ubyte:this (FullOpts)
          -8 (-1.37 % of base) : 122695.dasm - System.Globalization.Tests.Factory+<GetDataset>d__4:MoveNext():ubyte:this (FullOpts)
          -8 (-1.37 % of base) : 122666.dasm - System.Globalization.Tests.Factory+<GetDataset>d__4:MoveNext():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)


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: 15900008 (overridden on cmd)
Total bytes of diff: 15899556 (overridden on cmd)
Total bytes of delta: -452 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
          72 : 1066.dasm (0.60 % of base)
          36 : 1045.dasm (0.47 % of base)
          24 : 17308.dasm (0.62 % of base)
          24 : 1192.dasm (0.14 % of base)
          16 : 16268.dasm (1.35 % of base)
          12 : 20887.dasm (1.16 % of base)
          12 : 1611.dasm (2.73 % of base)
          12 : 21270.dasm (1.87 % of base)
           8 : 12135.dasm (0.58 % of base)
           8 : 23493.dasm (0.34 % of base)
           8 : 7059.dasm (0.18 % of base)
           8 : 8639.dasm (0.89 % of base)
           4 : 22295.dasm (0.16 % of base)
           4 : 23082.dasm (0.10 % of base)
           4 : 19721.dasm (0.15 % of base)
           4 : 568.dasm (0.23 % of base)

Top file improvements (bytes):
        -392 : 1205.dasm (-3.49 % of base)
        -128 : 1072.dasm (-1.65 % of base)
         -68 : 1080.dasm (-0.46 % of base)
         -24 : 21933.dasm (-0.40 % of base)
         -16 : 1029.dasm (-0.49 % of base)
         -12 : 19433.dasm (-0.24 % of base)
         -12 : 1070.dasm (-1.67 % of base)
         -12 : 32267.dasm (-0.75 % of base)
          -8 : 20204.dasm (-0.14 % of base)
          -8 : 966.dasm (-0.11 % of base)
          -4 : 23242.dasm (-0.11 % of base)
          -4 : 31339.dasm (-0.36 % of base)
          -4 : 428.dasm (-0.37 % of base)
          -4 : 9393.dasm (-0.20 % of base)
          -4 : 19637.dasm (-0.12 % of base)
          -4 : 9768.dasm (-0.14 % of base)
          -4 : 9838.dasm (-0.08 % of base)

33 total files with Code Size differences (17 improved, 16 regressed), 25 unchanged.

Top method regressions (bytes):
          72 (0.60 % of base) : 1066.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
          36 (0.47 % of base) : 1045.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.BoxSupportFinder,BepuPhysics.Collidables.Triangle,BepuPhysics.Collidables.TriangleWide,BepuPhysics.Collidables.TriangleSupportFinder]:FindClosestPoint(byref,byref,byref,byref,byref) (FullOpts)
          24 (0.14 % of base) : 1192.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
          24 (0.62 % of base) : 17308.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (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 (1.87 % of base) : 21270.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):int (FullOpts)
          12 (1.16 % of base) : 20887.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
          12 (2.73 % of base) : 1611.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
           8 (0.89 % of base) : 8639.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
           8 (0.34 % of base) : 23493.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<FindMostSpecificImplementationInBases>g__findMostSpecificImplementationInBases|92_1(Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],byref,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbol (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)
           8 (0.18 % of base) : 7059.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
           4 (0.10 % of base) : 23082.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)
           4 (0.16 % of base) : 22295.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.15 % of base) : 19721.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.23 % of base) : 568.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

Top method improvements (bytes):
        -392 (-3.49 % of base) : 1205.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
        -128 (-1.65 % of base) : 1072.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -68 (-0.46 % of base) : 1080.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):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)
         -16 (-0.49 % of base) : 1029.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.CollisionDetection.SweepTasks.CapsulePairDistanceTester]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.CollisionDetection.SweepTasks.CapsulePairDistanceTester]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
         -12 (-1.67 % of base) : 1070.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
         -12 (-0.24 % of base) : 19433.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (FullOpts)
         -12 (-0.75 % of base) : 32267.dasm - System.Management.Automation.ParameterBinderController:BindPositionalParameters(System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal],uint,uint,byref):System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]:this (FullOpts)
          -8 (-0.11 % of base) : 966.dasm - BepuPhysics.Collidables.ConvexHullHelper:ComputeHull(System.Span`1[System.Numerics.Vector3],BepuUtilities.Memory.BufferPool,byref) (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.08 % of base) : 9838.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking:MakeCtorForIncrClassConstructionPhase2C(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs,FSharp.Compiler.TypedTree+Expr,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassConstructionBindingsPhase2C],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.CheckExpressions+SafeInitData):System.Tuple`4[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassReprInfo] (FullOpts)
          -4 (-0.14 % of base) : 9768.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2B_TypeCheckAndIncrementalGeneralization$cont@1927-2(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2A,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.Unit):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2B,System.Tuple`7[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]]] (FullOpts)
          -4 (-0.20 % of base) : 9393.dasm - FSharp.Compiler.CheckExpressions:TcIncrementalLetRecGeneralization(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]):System.Tuple`5[FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]] (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) : 19637.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          -4 (-0.36 % of base) : 31339.dasm - System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
          -4 (-0.37 % of base) : 428.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (FullOpts)

Top method regressions (percentages):
          12 (2.73 % of base) : 1611.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          12 (1.87 % of base) : 21270.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbolExtensions:CustomModifierCount(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol):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)
          12 (1.16 % of base) : 20887.dasm - Roslyn.Utilities.EnumerableExtensions+<TransposeInternal>d__58`1[System.__Canon]:MoveNext():ubyte:this (FullOpts)
           8 (0.89 % of base) : 8639.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
          24 (0.62 % of base) : 17308.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          72 (0.60 % of base) : 1066.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (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)
          36 (0.47 % of base) : 1045.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.BoxSupportFinder,BepuPhysics.Collidables.Triangle,BepuPhysics.Collidables.TriangleWide,BepuPhysics.Collidables.TriangleSupportFinder]:FindClosestPoint(byref,byref,byref,byref,byref) (FullOpts)
           8 (0.34 % of base) : 23493.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol:<FindMostSpecificImplementationInBases>g__findMostSpecificImplementationInBases|92_1(Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol],byref,byref,byref):Microsoft.CodeAnalysis.CSharp.Symbol (FullOpts)
           4 (0.23 % of base) : 568.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           8 (0.18 % of base) : 7059.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
           4 (0.16 % of base) : 22295.dasm - Microsoft.CodeAnalysis.CSharp.InMethodBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
           4 (0.15 % of base) : 19721.dasm - Microsoft.CodeAnalysis.CSharp.WithPrimaryConstructorParametersBinder:LookupSymbolsInSingleBinder(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],int,Microsoft.CodeAnalysis.CSharp.Binder,ubyte,byref):this (FullOpts)
          24 (0.14 % of base) : 1192.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
           4 (0.10 % of base) : 23082.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindExtensionMethod(Microsoft.CodeAnalysis.SyntaxNode,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,Microsoft.CodeAnalysis.CSharp.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,ubyte,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,ubyte):Microsoft.CodeAnalysis.CSharp.MethodGroupResolution:this (FullOpts)

Top method improvements (percentages):
        -392 (-3.49 % of base) : 1205.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -12 (-1.67 % of base) : 1070.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:InternalReduce(byref,int,System.Numerics.Vector`1[float],System.Numerics.Vector`1[float],System.Numerics.Vector`1[int],byref,byref,byref,byref,byref,byref,byref,byref) (FullOpts)
        -128 (-1.65 % of base) : 1072.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -12 (-0.75 % of base) : 32267.dasm - System.Management.Automation.ParameterBinderController:BindPositionalParameters(System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal],uint,uint,byref):System.Collections.ObjectModel.Collection`1[System.Management.Automation.CommandParameterInternal]:this (FullOpts)
         -16 (-0.49 % of base) : 1029.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.CollisionDetection.SweepTasks.CapsulePairDistanceTester]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.CollisionDetection.SweepTasks.CapsulePairDistanceTester]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
         -68 (-0.46 % of base) : 1080.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TrianglePairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):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)
          -4 (-0.37 % of base) : 428.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):ubyte:this (FullOpts)
          -4 (-0.36 % of base) : 31339.dasm - System.Management.Automation.Interpreter.EnterTryCatchFinallyInstruction:Run(System.Management.Automation.Interpreter.InterpretedFrame):int:this (FullOpts)
         -12 (-0.24 % of base) : 19433.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (FullOpts)
          -4 (-0.20 % of base) : 9393.dasm - FSharp.Compiler.CheckExpressions:TcIncrementalLetRecGeneralization(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]):System.Tuple`5[FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]] (FullOpts)
          -4 (-0.14 % of base) : 9768.dasm - FSharp.Compiler.CheckDeclarations+MutRecBindingChecking:TcMutRecBindings_Phase2B_TypeCheckAndIncrementalGeneralization$cont@1927-2(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.Text.Range,FSharp.Compiler.TcGlobals+TcGlobals,FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2A,Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Core.Unit):System.Tuple`2[FSharp.Compiler.CheckDeclarations+MutRecBindingChecking+TyconBindingPhase2B,System.Tuple`7[FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+TcEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PostGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+PreGeneralizationRecursiveBinding],Microsoft.FSharp.Collections.FSharpMap`2[long,FSharp.Compiler.CheckExpressions+PreCheckingRecursiveBinding]]] (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)
          -8 (-0.11 % of base) : 966.dasm - BepuPhysics.Collidables.ConvexHullHelper:ComputeHull(System.Span`1[System.Numerics.Vector3],BepuUtilities.Memory.BufferPool,byref) (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.08 % of base) : 9838.dasm - FSharp.Compiler.CheckDeclarations+IncrClassChecking:MakeCtorForIncrClassConstructionPhase2C(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassCtorLhs,FSharp.Compiler.TypedTree+Expr,ubyte,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassConstructionBindingsPhase2C],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Typar],FSharp.Compiler.CheckExpressions+SafeInitData):System.Tuple`4[FSharp.Compiler.TypedTree+Expr,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+Expr],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckDeclarations+IncrClassChecking+IncrClassReprInfo] (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: 3865048 (overridden on cmd)
Total bytes of diff: 3864872 (overridden on cmd)
Total bytes of delta: -176 (-0.00 % of base)
    diff is an improvement.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
          12 : 2569.dasm (2.94 % of base)
          12 : 7493.dasm (2.94 % of base)
           8 : 15395.dasm (1.32 % of base)
           4 : 4209.dasm (0.26 % of base)
           4 : 1020.dasm (0.26 % of base)

Top file improvements (bytes):
         -68 : 10609.dasm (-2.07 % of base)
         -68 : 4701.dasm (-2.07 % of base)
         -36 : 3423.dasm (-1.89 % of base)
          -8 : 14163.dasm (-0.49 % of base)
          -8 : 15140.dasm (-0.49 % of base)
          -8 : 8657.dasm (-0.49 % of base)
          -8 : 1429.dasm (-0.67 % of base)
          -8 : 4820.dasm (-0.67 % of base)
          -4 : 24157.dasm (-0.39 % of base)

14 total files with Code Size differences (9 improved, 5 regressed), 37 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)
           8 (1.32 % of base) : 15395.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)
           4 (0.26 % of base) : 4209.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           4 (0.26 % of base) : 1020.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

Top method improvements (bytes):
         -68 (-2.07 % of base) : 10609.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
         -68 (-2.07 % of base) : 4701.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
         -36 (-1.89 % of base) : 3423.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
          -8 (-0.49 % of base) : 14163.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -8 (-0.49 % of base) : 15140.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -8 (-0.49 % of base) : 8657.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -8 (-0.67 % of base) : 1429.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
          -8 (-0.67 % of base) : 4820.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
          -4 (-0.39 % of base) : 24157.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):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)
           8 (1.32 % of base) : 15395.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)
           4 (0.26 % of base) : 4209.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)
           4 (0.26 % of base) : 1020.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

Top method improvements (percentages):
         -68 (-2.07 % of base) : 10609.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
         -68 (-2.07 % of base) : 4701.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
         -36 (-1.89 % of base) : 3423.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
          -8 (-0.67 % of base) : 1429.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
          -8 (-0.67 % of base) : 4820.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
          -8 (-0.49 % of base) : 14163.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -8 (-0.49 % of base) : 8657.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -8 (-0.49 % of base) : 15140.dasm - System.Globalization.TimeSpanFormat:FormatCustomized[ushort](System.TimeSpan,System.ReadOnlySpan`1[ushort],System.Globalization.DateTimeFormatInfo,byref) (FullOpts)
          -4 (-0.39 % of base) : 24157.dasm - System.Threading.WaitHandle:WaitMultiple(System.ReadOnlySpan`1[System.Threading.WaitHandle],ubyte,int):int (FullOpts)



windows x64

Diffs are based on 1,999,649 contexts (587,594 MinOpts, 1,412,055 FullOpts).

MISSED contexts: base: 3,225 (0.16%), diff: 3,239 (0.16%)

Overall (+41,365 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 46,746,711 +1,189
benchmarks.run.windows.x64.checked.mch 11,727,476 +473
benchmarks.run_pgo.windows.x64.checked.mch 34,353,258 +27,965
benchmarks.run_tiered.windows.x64.checked.mch 19,449,443 +127
coreclr_tests.run.windows.x64.checked.mch 296,148,172 +757
libraries.crossgen2.windows.x64.checked.mch 44,929,099 +208
libraries.pmi.windows.x64.checked.mch 67,669,814 +1,064
libraries_tests.run.windows.x64.Release.mch 42,430,255 +7,704
librariestestsnotieredcompilation.run.windows.x64.Release.mch 142,641,671 +1,436
realworld.run.windows.x64.checked.mch 14,769,832 -151
smoke_tests.nativeaot.windows.x64.checked.mch 5,085,273 +593

FullOpts (+41,365 bytes)

Collection Base size (bytes) Diff size (bytes)
aspnet.run.windows.x64.checked.mch 28,257,971 +1,189
benchmarks.run.windows.x64.checked.mch 11,726,881 +473
benchmarks.run_pgo.windows.x64.checked.mch 15,516,562 +27,965
benchmarks.run_tiered.windows.x64.checked.mch 4,081,554 +127
coreclr_tests.run.windows.x64.checked.mch 110,373,782 +757
libraries.crossgen2.windows.x64.checked.mch 44,927,912 +208
libraries.pmi.windows.x64.checked.mch 67,556,293 +1,064
libraries_tests.run.windows.x64.Release.mch 10,788,375 +7,704
librariestestsnotieredcompilation.run.windows.x64.Release.mch 131,858,801 +1,436
realworld.run.windows.x64.checked.mch 14,383,223 -151
smoke_tests.nativeaot.windows.x64.checked.mch 5,084,326 +593

Example diffs

aspnet.run.windows.x64.checked.mch

-7 (-10.77%) : 127877.dasm - System.Reflection.Internal.ObjectPool`1[System.Canon]:Free(System.Canon):this (Tier1)

@@ -10,69 +10,56 @@ ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.Internal.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.__Canon>
-; V02 loc0 [V02,T03] ( 4, 4.01) ref -> rbx class-hnd exact single-def <<unknown class>> -; V03 loc1 [V03,T00] ( 5, 5.03) int -> rsi
+; V02 loc0 [V02,T03] ( 4, 4.01) ref -> rcx class-hnd exact single-def <<unknown class>> +; V03 loc1 [V03,T00] ( 5, 5.03) int -> rax
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T05] ( 3, 3.01) int -> rdi "CSE - aggressive" -; V06 cse1 [V06,T04] ( 3, 3.02) long -> rcx "CSE - aggressive"
+; V05 cse0 [V05,T05] ( 3, 3.01) int -> r8 "CSE - aggressive" +; V06 cse1 [V06,T04] ( 3, 3.02) long -> r10 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M19580_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi - push rsi - push rbx - sub rsp, 32 - ;; size=7 bbWeight=1 PerfScore 3.25
+ sub rsp, 40 + ;; size=4 bbWeight=1 PerfScore 0.25
G_M19580_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx]
- mov rbx, gword ptr [rcx+0x08] - ; gcrRegs +[rbx] - xor esi, esi - mov edi, dword ptr [rbx+0x08] - test edi, edi - jle SHORT G_M19580_IG08 - ;; size=13 bbWeight=1 PerfScore 5.50 -G_M19580_IG03: ; bbWeight=1.01, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - mov ecx, esi - cmp gword ptr [rbx+8*rcx+0x10], 0
+ mov rcx, gword ptr [rcx+0x08] + xor eax, eax + mov r8d, dword ptr [rcx+0x08] + test r8d, r8d + jle SHORT G_M19580_IG07 + ;; size=15 bbWeight=1 PerfScore 5.50 +G_M19580_IG03: ; bbWeight=1.01, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + mov r10d, eax + cmp gword ptr [rcx+8*r10+0x10], 0
jne SHORT G_M19580_IG06
- ;; size=10 bbWeight=1.01 PerfScore 4.28 -G_M19580_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref - lea rcx, bword ptr [rbx+8*rcx+0x10]
+ ;; size=11 bbWeight=1.01 PerfScore 4.28 +G_M19580_IG04: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref + lea rcx, bword ptr [rcx+8*r10+0x10] + ; gcrRegs -[rcx]
; byrRegs +[rcx] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rbx]
+ ; gcrRegs -[rdx]
; byrRegs -[rcx] nop ;; size=11 bbWeight=1 PerfScore 2.25 G_M19580_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32 - pop rbx - pop rsi - pop rdi
+ add rsp, 40
ret
- ;; size=8 bbWeight=1 PerfScore 2.75 -G_M19580_IG06: ; bbWeight=1.01, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rdx rbx] - inc esi - cmp edi, esi - jle SHORT G_M19580_IG08 - ;; size=6 bbWeight=1.01 PerfScore 1.51 -G_M19580_IG07: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M19580_IG03 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M19580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rdx rbx] - add rsp, 32 - pop rbx - pop rsi - pop rdi
+ ;; size=5 bbWeight=1 PerfScore 1.25 +G_M19580_IG06: ; bbWeight=1.01, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rcx rdx] + inc eax + cmp r8d, eax + jg SHORT G_M19580_IG03 + ;; size=7 bbWeight=1.01 PerfScore 1.51 +G_M19580_IG07: ; bbWeight=0.20, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rcx rdx] + add rsp, 40
ret
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0.20 PerfScore 0.25
-; Total bytes of code 65, prolog size 7, PerfScore 20.55, instruction count 29, allocated bytes for code 65 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
+; Total bytes of code 58, prolog size 4, PerfScore 15.30, instruction count 19, allocated bytes for code 58 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
; ============================================================ Unwind Info: @@ -80,12 +67,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28

-39 (-10.63%) : 12416.dasm - System.Net.Sockets.DynamicWinsockMethods:GetMethods(int,int,int):System.Net.Sockets.DynamicWinsockMethods (Tier1)

@@ -9,95 +9,130 @@ ; 3 inlinees with PGO data; 1 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T03] ( 4, 3 ) int -> rbx single-def -; V01 arg1 [V01,T04] ( 4, 3 ) int -> rsi single-def -; V02 arg2 [V02,T05] ( 4, 3 ) int -> rdi single-def -; V03 loc0 [V03,T09] ( 4, 2 ) ref -> [rbp-0x48] class-hnd exact EH-live spill-single-def <<unknown class>> -; V04 loc1 [V04 ] ( 5, 4 ) ubyte -> [rbp-0x40] do-not-enreg[X] addr-exposed ld-addr-op -; V05 loc2 [V05,T02] ( 5, 5 ) ref -> r12 class-hnd <System.Net.Sockets.DynamicWinsockMethods> -; V06 loc3 [V06,T00] ( 7, 7 ) int -> r15 -; V07 loc4 [V07,T10] ( 3, 2 ) ref -> r12 class-hnd <System.Net.Sockets.DynamicWinsockMethods>
+; V00 arg0 [V00,T02] ( 4, 3.39) int -> rbx single-def +; V01 arg1 [V01,T03] ( 4, 3.39) int -> rsi single-def +; V02 arg2 [V02,T04] ( 4, 3.39) int -> rdi single-def +; V03 loc0 [V03,T10] ( 4, 2 ) ref -> [rbp-0x40] class-hnd exact EH-live spill-single-def <<unknown class>> +; V04 loc1 [V04 ] ( 5, 4 ) ubyte -> [rbp-0x38] do-not-enreg[X] addr-exposed ld-addr-op +; V05 loc2 [V05,T05] ( 5, 5 ) ref -> r15 class-hnd <System.Net.Sockets.DynamicWinsockMethods> +; V06 loc3 [V06,T00] ( 7, 7 ) int -> rcx +; V07 loc4 [V07,T11] ( 3, 2 ) ref -> r15 class-hnd <System.Net.Sockets.DynamicWinsockMethods>
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T13] ( 5, 0 ) ref -> r12 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.DynamicWinsockMethods> -; V10 tmp2 [V10,T08] ( 2, 4 ) ref -> rcx class-hnd exact "Inlining Arg" <<unknown class>>
+; V09 tmp1 [V09,T12] ( 5, 1.56) ref -> r13 class-hnd exact single-def "NewObj constructor temp" <System.Net.Sockets.DynamicWinsockMethods> +; V10 tmp2 [V10,T08] ( 2, 4 ) ref -> rdx class-hnd exact "Inlining Arg" <<unknown class>>
;* V11 tmp3 [V11 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <<unknown class>>
-; V12 tmp4 [V12,T12] ( 7, 0 ) ref -> rcx class-hnd exact single-def "Inlining Arg" <<unknown class>> -; V13 tmp5 [V13,T15] ( 3, 0 ) ref -> rdx class-hnd single-def "Inline stloc first use temp" <<unknown class>> -; V14 tmp6 [V14,T14] ( 4, 0 ) int -> rax "Inline stloc first use temp" -; V15 tmp7 [V15,T01] ( 3, 6 ) ref -> rcx "arr expr" -; V16 PSPSym [V16,T11] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" -; V17 cse0 [V17,T07] ( 4, 4 ) int -> r13 "CSE - aggressive" -; V18 cse1 [V18,T06] ( 5, 4 ) ref -> r14 "CSE - aggressive"
+; V12 tmp4 [V12,T09] ( 7, 3.91) ref -> rcx class-hnd exact single-def "Inlining Arg" <<unknown class>> +; V13 tmp5 [V13,T15] ( 3, 0.78) ref -> rbx class-hnd single-def "Inline stloc first use temp" <<unknown class>> +; V14 tmp6 [V14,T14] ( 4, 0.78) int -> rsi "Inline stloc first use temp" +; V15 tmp7 [V15,T01] ( 3, 6 ) ref -> rdx "arr expr" +; V16 PSPSym [V16,T13] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" +; V17 cse0 [V17,T07] ( 4, 4 ) int -> rax "CSE - aggressive" +; V18 cse1 [V18,T06] ( 5, 4.39) ref -> r14 "CSE - aggressive"
;
-; Lcl frame size = 56
+; Lcl frame size = 64
G_M33586_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
- push r12
push rdi push rsi push rbx
- sub rsp, 56
+ sub rsp, 64
lea rbp, [rsp+0x70] mov qword ptr [rbp-0x50], rsp mov ebx, ecx mov esi, edx mov edi, r8d
- ;; size=32 bbWeight=1 PerfScore 10.50
+ ;; size=30 bbWeight=1 PerfScore 9.50
G_M33586_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref mov rdx, 0xD1FFAB1E ; const ptr mov r14, gword ptr [rdx] ; gcrRegs +[r14] mov rcx, r14 ; gcrRegs +[rcx]
- mov gword ptr [rbp-0x48], rcx
+ mov gword ptr [rbp-0x40], rcx
; GC ptr vars +{V03} xor edx, edx
- mov dword ptr [rbp-0x40], edx
+ mov dword ptr [rbp-0x38], edx
;; size=25 bbWeight=1 PerfScore 4.75
-G_M33586_IG03: ; bbWeight=1, gcVars=0000000000000200 {V03}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz - cmp byte ptr [rbp-0x40], 0 - jne G_M33586_IG06 - lea rdx, [rbp-0x40]
+G_M33586_IG03: ; bbWeight=1, gcVars=0000000000000400 {V03}, gcrefRegs=4002 {rcx r14}, byrefRegs=0000 {}, gcvars, byref, isz + cmp byte ptr [rbp-0x38], 0 + jne SHORT G_M33586_IG08 + lea rdx, [rbp-0x38]
call <unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- xor r15d, r15d - mov r13d, dword ptr [r14+0x10] - test r13d, r13d - jle SHORT G_M33586_IG05 - ;; size=31 bbWeight=1 PerfScore 8.00
+ xor ecx, ecx + mov eax, dword ptr [r14+0x10] + test eax, eax + jle SHORT G_M33586_IG10 + ;; size=25 bbWeight=1 PerfScore 8.00
G_M33586_IG04: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
- mov rcx, r14 - ; gcrRegs +[rcx] - cmp r15d, r13d - jae G_M33586_IG10 - mov rcx, gword ptr [rcx+0x08] - cmp r15d, dword ptr [rcx+0x08] - jae G_M33586_IG09 - mov eax, r15d - mov r12, gword ptr [rcx+8*rax+0x10] - ; gcrRegs +[r12] - cmp dword ptr [r12+0x38], ebx - jne G_M33586_IG11 - cmp dword ptr [r12+0x3C], esi - jne SHORT G_M33586_IG11 - cmp dword ptr [r12+0x40], edi - jne SHORT G_M33586_IG11
+ mov rdx, r14 + ; gcrRegs +[rdx] + cmp ecx, eax + jae SHORT G_M33586_IG06 + mov rdx, gword ptr [rdx+0x08] + cmp ecx, dword ptr [rdx+0x08] + jae SHORT G_M33586_IG05 + mov r8d, ecx + mov r15, gword ptr [rdx+8*r8+0x10] + ; gcrRegs +[r15] + cmp dword ptr [r15+0x38], ebx + jne SHORT G_M33586_IG09 + cmp dword ptr [r15+0x3C], esi + jne SHORT G_M33586_IG09 + cmp dword ptr [r15+0x40], edi + jne SHORT G_M33586_IG09 + jmp SHORT G_M33586_IG13 + ;; size=44 bbWeight=1 PerfScore 23.75 +G_M33586_IG05: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx r14-r15] + call CORINFO_HELP_RNGCHKFAIL + ; gcr arg pop 0 + ;; size=5 bbWeight=0 PerfScore 0.00 +G_M33586_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M33586_IG07: ; bbWeight=0, gcrefRegs=200A {rcx rbx r13}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rcx rbx r13] + lea edx, [rsi+0x01] + mov dword ptr [rcx+0x10], edx + mov ecx, esi + ; gcrRegs -[rcx] + lea rcx, bword ptr [rbx+8*rcx+0x10] + ; byrRegs +[rcx] + mov rdx, r13 + ; gcrRegs +[rdx] + call CORINFO_HELP_ASSIGN_REF + ; gcrRegs -[rdx rbx] + ; byrRegs -[rcx]
jmp SHORT G_M33586_IG12
- ;; size=61 bbWeight=1 PerfScore 23.75 -G_M33586_IG05: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx r12]
+ ;; size=23 bbWeight=0 PerfScore 0.00 +G_M33586_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[r13] + call [System.Threading.Monitor:ThrowLockTakenException()] + ; gcr arg pop 0 + int3 + ;; size=7 bbWeight=0 PerfScore 0.00 +G_M33586_IG09: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[r14] + inc ecx + cmp ecx, eax + jl SHORT G_M33586_IG04 + ;; size=6 bbWeight=1 PerfScore 1.50 +G_M33586_IG10: ; bbWeight=0.39, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz
mov rcx, 0xD1FFAB1E ; System.Net.Sockets.DynamicWinsockMethods call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] ; gcr arg pop 0
- mov r12, rax - ; gcrRegs +[r12] - mov rcx, r12
+ mov r13, rax + ; gcrRegs +[r13] + mov rcx, r13
; gcrRegs +[rcx] mov edx, ebx mov r8d, esi @@ -108,127 +143,91 @@ G_M33586_IG05: ; bbWeight=0, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byr mov rcx, r14 ; gcrRegs +[rcx] inc dword ptr [rcx+0x14]
- mov rdx, gword ptr [rcx+0x08] - ; gcrRegs +[rdx] - mov eax, dword ptr [rcx+0x10] - cmp dword ptr [rdx+0x08], eax - jbe SHORT G_M33586_IG07 - lea r8d, [rax+0x01] - mov dword ptr [rcx+0x10], r8d - mov ecx, eax - ; gcrRegs -[rcx] - lea rcx, bword ptr [rdx+8*rcx+0x10] - ; byrRegs +[rcx] - mov rdx, r12 - call CORINFO_HELP_ASSIGN_REF - ; gcrRegs -[rdx r14] - ; byrRegs -[rcx] - jmp SHORT G_M33586_IG08 - ;; size=78 bbWeight=0 PerfScore 0.00 -G_M33586_IG06: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r12] - call [System.Threading.Monitor:ThrowLockTakenException()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M33586_IG07: ; bbWeight=0, gcrefRegs=1002 {rcx r12}, byrefRegs=0000 {}, byref - ; gcrRegs +[rcx r12] - mov rdx, r12
+ mov rbx, gword ptr [rcx+0x08] + ; gcrRegs +[rbx] + mov esi, dword ptr [rcx+0x10] + cmp dword ptr [rbx+0x08], esi + ja SHORT G_M33586_IG07 + ;; size=53 bbWeight=0.39 PerfScore 6.54 +G_M33586_IG11: ; bbWeight=0, gcrefRegs=2002 {rcx r13}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx r14] + mov rdx, r13
; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=9 bbWeight=0 PerfScore 0.00
-G_M33586_IG08: ; bbWeight=0, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M33586_IG12 - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M33586_IG09: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; gcrRegs -[r12] - call CORINFO_HELP_RNGCHKFAIL - ; gcr arg pop 0 - ;; size=5 bbWeight=0 PerfScore 0.00 -G_M33586_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - call [System.ThrowHelper:ThrowArgumentOutOfRange_IndexMustBeLessException()] - ; gcr arg pop 0 - int3 - ;; size=7 bbWeight=0 PerfScore 0.00 -G_M33586_IG11: ; bbWeight=1, gcrefRegs=4000 {r14}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[r14] - inc r15d - cmp r15d, r13d - jge SHORT G_M33586_IG05 - jmp G_M33586_IG04 - ;; size=13 bbWeight=1 PerfScore 3.50 -G_M33586_IG12: ; bbWeight=1, gcrefRegs=1000 {r12}, byrefRegs=0000 {}, byref, isz
...

-7 (-10.45%) : 117797.dasm - System.Reflection.Internal.ObjectPool`1[System.Canon]:Free(System.Canon):this (Tier1)

@@ -10,69 +10,56 @@ ; ; V00 this [V00,T01] ( 3, 3 ) ref -> rcx this class-hnd single-def <System.Reflection.Internal.ObjectPool`1[System.__Canon]> ; V01 arg1 [V01,T02] ( 3, 3 ) ref -> rdx class-hnd single-def <System.__Canon>
-; V02 loc0 [V02,T03] ( 4, 4.50) ref -> rbx class-hnd exact single-def <<unknown class>> -; V03 loc1 [V03,T00] ( 6, 8.01) int -> rsi
+; V02 loc0 [V02,T03] ( 4, 4.50) ref -> rcx class-hnd exact single-def <<unknown class>> +; V03 loc1 [V03,T00] ( 6, 8.01) int -> rax
; V04 OutArgs [V04 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 cse0 [V05,T04] ( 3, 3.50) int -> rdi "CSE - aggressive"
+; V05 cse0 [V05,T04] ( 3, 3.50) int -> r8 "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M19580_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
- push rdi - push rsi - push rbx - sub rsp, 32 - ;; size=7 bbWeight=1 PerfScore 3.25
+ sub rsp, 40 + ;; size=4 bbWeight=1 PerfScore 0.25
G_M19580_IG02: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rcx rdx]
- mov rbx, gword ptr [rcx+0x08] - ; gcrRegs +[rbx] - xor esi, esi - mov edi, dword ptr [rbx+0x08] - test edi, edi - jle SHORT G_M19580_IG08 - ;; size=13 bbWeight=1 PerfScore 5.50 -G_M19580_IG03: ; bbWeight=1.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[rcx] - mov ecx, esi - cmp gword ptr [rbx+8*rcx+0x10], 0
+ mov rcx, gword ptr [rcx+0x08] + xor eax, eax + mov r8d, dword ptr [rcx+0x08] + test r8d, r8d + jle SHORT G_M19580_IG07 + ;; size=15 bbWeight=1 PerfScore 5.50 +G_M19580_IG03: ; bbWeight=1.50, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref, isz + mov r10d, eax + cmp gword ptr [rcx+8*r10+0x10], 0
jne SHORT G_M19580_IG06
- ;; size=10 bbWeight=1.50 PerfScore 6.39 -G_M19580_IG04: ; bbWeight=1, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref - mov ecx, esi - lea rcx, bword ptr [rbx+8*rcx+0x10]
+ ;; size=11 bbWeight=1.50 PerfScore 6.39 +G_M19580_IG04: ; bbWeight=1, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, byref + mov eax, eax + lea rcx, bword ptr [rcx+8*rax+0x10] + ; gcrRegs -[rcx]
; byrRegs +[rcx] call CORINFO_HELP_ASSIGN_REF
- ; gcrRegs -[rdx rbx]
+ ; gcrRegs -[rdx]
; byrRegs -[rcx] nop ;; size=13 bbWeight=1 PerfScore 2.50 G_M19580_IG05: ; bbWeight=1, epilog, nogc, extend
- add rsp, 32 - pop rbx - pop rsi - pop rdi
+ add rsp, 40
ret
- ;; size=8 bbWeight=1 PerfScore 2.75 -G_M19580_IG06: ; bbWeight=1.50, gcVars=0000000000000000 {}, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs +[rdx rbx] - inc esi - cmp edi, esi - jle SHORT G_M19580_IG08 - ;; size=6 bbWeight=1.50 PerfScore 2.25 -G_M19580_IG07: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M19580_IG03 - ;; size=2 bbWeight=0.50 PerfScore 1.00 -G_M19580_IG08: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rdx rbx] - add rsp, 32 - pop rbx - pop rsi - pop rdi
+ ;; size=5 bbWeight=1 PerfScore 1.25 +G_M19580_IG06: ; bbWeight=1.50, gcVars=0000000000000000 {}, gcrefRegs=0006 {rcx rdx}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs +[rcx rdx] + inc eax + cmp r8d, eax + jg SHORT G_M19580_IG03 + ;; size=7 bbWeight=1.50 PerfScore 2.25 +G_M19580_IG07: ; bbWeight=0.19, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rcx rdx] + add rsp, 40
ret
- ;; size=8 bbWeight=0 PerfScore 0.00
+ ;; size=5 bbWeight=0.19 PerfScore 0.24
-; Total bytes of code 67, prolog size 7, PerfScore 23.64, instruction count 30, allocated bytes for code 67 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
+; Total bytes of code 60, prolog size 4, PerfScore 18.39, instruction count 20, allocated bytes for code 60 (MethodHash=881eb383) for method System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
; ============================================================ Unwind Info: @@ -80,12 +67,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x04 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x04 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28

+29 (+14.01%) : 54512.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

@@ -38,31 +38,31 @@ G_M27413_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rsi, dl ;; size=4 bbWeight=1 PerfScore 0.25
-G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x10] test esi, esi
- jne SHORT G_M27413_IG09 - ;; size=7 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG11 + ;; size=11 bbWeight=1 PerfScore 3.25
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ebp, edi and ebp, -4
- je G_M27413_IG14
+ je SHORT G_M27413_IG10
mov eax, edi and eax, -3 cmp eax, 4
- je SHORT G_M27413_IG10
+ je G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25 G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor r14d, r14d ;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b lea r13d, [rdi-0x04] cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12 - ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14 + ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rcx, bword ptr [rbx+0x10] ; byrRegs +[rcx] @@ -72,7 +72,7 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp eax, edi jne SHORT G_M27413_IG03 test r15d, r15d
- je SHORT G_M27413_IG13
+ je SHORT G_M27413_IG09
call <unknown method> ; byrRegs -[rcx] ; gcr arg pop 0 @@ -98,15 +98,35 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend jmp <unknown method> ; gcr arg pop 0 ;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG09: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + add rsp, 32 + pop rbx + pop rbp + pop rsi + pop rdi + pop r13 + pop r14 + pop r15 + ret + ;; size=15 bbWeight=0.01 PerfScore 0.06 +G_M27413_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx] + mov rcx, rbx + ; gcrRegs +[rcx] + call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] + ; gcrRegs -[rcx rbx] + ; gcr arg pop 0 + int3 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] test dil, 2
- jne SHORT G_M27413_IG13 - jmp SHORT G_M27413_IG04 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG09 + jmp G_M27413_IG04 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x14], 0
- je SHORT G_M27413_IG05
+ je G_M27413_IG05
mov rcx, rbx ; gcrRegs +[rcx] mov rax, qword ptr [rbx] @@ -117,40 +137,19 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r14d, r14d test eax, eax sete r14b
- jmp SHORT G_M27413_IG06 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06 + ;; size=37 bbWeight=0 PerfScore 0.00 +G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 1 test esi, esi
- je SHORT G_M27413_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M27413_IG07 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 32 - pop rbx - pop rbp - pop rsi - pop rdi - pop r13 - pop r14 - pop r15 - ret - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx] - mov rcx, rbx - ; gcrRegs +[rcx] - call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] - ; gcrRegs -[rcx rbx] - ; gcr arg pop 0 - int3 - ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M27413_IG07 + ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 207, prolog size 17, PerfScore 53.50, instruction count 81, allocated bytes for code 207 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 236, prolog size 17, PerfScore 53.56, instruction count 81, allocated bytes for code 236 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================ Unwind Info:

+29 (+14.01%) : 71168.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

@@ -38,31 +38,31 @@ G_M27413_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rsi, dl ;; size=4 bbWeight=1 PerfScore 0.25
-G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x10] test esi, esi
- jne SHORT G_M27413_IG09 - ;; size=7 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG11 + ;; size=11 bbWeight=1 PerfScore 3.25
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ebp, edi and ebp, -4
- je G_M27413_IG14
+ je SHORT G_M27413_IG10
mov eax, edi and eax, -3 cmp eax, 4
- je SHORT G_M27413_IG10
+ je G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25 G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor r14d, r14d ;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b lea r13d, [rdi-0x04] cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12 - ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14 + ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rcx, bword ptr [rbx+0x10] ; byrRegs +[rcx] @@ -72,7 +72,7 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp eax, edi jne SHORT G_M27413_IG03 test r15d, r15d
- je SHORT G_M27413_IG13
+ je SHORT G_M27413_IG09
call <unknown method> ; byrRegs -[rcx] ; gcr arg pop 0 @@ -98,15 +98,35 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend jmp <unknown method> ; gcr arg pop 0 ;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG09: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + add rsp, 32 + pop rbx + pop rbp + pop rsi + pop rdi + pop r13 + pop r14 + pop r15 + ret + ;; size=15 bbWeight=0.02 PerfScore 0.09 +G_M27413_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx] + mov rcx, rbx + ; gcrRegs +[rcx] + call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] + ; gcrRegs -[rcx rbx] + ; gcr arg pop 0 + int3 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] test dil, 2
- jne SHORT G_M27413_IG13 - jmp SHORT G_M27413_IG04 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG09 + jmp G_M27413_IG04 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x14], 0
- je SHORT G_M27413_IG05
+ je G_M27413_IG05
mov rcx, rbx ; gcrRegs +[rcx] mov rax, qword ptr [rbx] @@ -117,40 +137,19 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r14d, r14d test eax, eax sete r14b
- jmp SHORT G_M27413_IG06 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06 + ;; size=37 bbWeight=0 PerfScore 0.00 +G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 1 test esi, esi
- je SHORT G_M27413_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M27413_IG07 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 32 - pop rbx - pop rbp - pop rsi - pop rdi - pop r13 - pop r14 - pop r15 - ret - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx] - mov rcx, rbx - ; gcrRegs +[rcx] - call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] - ; gcrRegs -[rcx rbx] - ; gcr arg pop 0 - int3 - ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M27413_IG07 + ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 207, prolog size 17, PerfScore 53.50, instruction count 81, allocated bytes for code 207 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 236, prolog size 17, PerfScore 53.59, instruction count 81, allocated bytes for code 236 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================ Unwind Info:

+29 (+14.01%) : 79380.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

@@ -38,31 +38,31 @@ G_M27413_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref movzx rsi, dl ;; size=4 bbWeight=1 PerfScore 0.25
-G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x10] test esi, esi
- jne SHORT G_M27413_IG09 - ;; size=7 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG11 + ;; size=11 bbWeight=1 PerfScore 3.25
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ebp, edi and ebp, -4
- je G_M27413_IG14
+ je SHORT G_M27413_IG10
mov eax, edi and eax, -3 cmp eax, 4
- je SHORT G_M27413_IG10
+ je G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25 G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor r14d, r14d ;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b lea r13d, [rdi-0x04] cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12 - ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14 + ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rcx, bword ptr [rbx+0x10] ; byrRegs +[rcx] @@ -72,7 +72,7 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp eax, edi jne SHORT G_M27413_IG03 test r15d, r15d
- je SHORT G_M27413_IG13
+ je SHORT G_M27413_IG09
call <unknown method> ; byrRegs -[rcx] ; gcr arg pop 0 @@ -98,15 +98,35 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend jmp <unknown method> ; gcr arg pop 0 ;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG09: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + add rsp, 32 + pop rbx + pop rbp + pop rsi + pop rdi + pop r13 + pop r14 + pop r15 + ret + ;; size=15 bbWeight=0.00 PerfScore 0.00 +G_M27413_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx] + mov rcx, rbx + ; gcrRegs +[rcx] + call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] + ; gcrRegs -[rcx rbx] + ; gcr arg pop 0 + int3 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] test dil, 2
- jne SHORT G_M27413_IG13 - jmp SHORT G_M27413_IG04 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG09 + jmp G_M27413_IG04 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x14], 0
- je SHORT G_M27413_IG05
+ je G_M27413_IG05
mov rcx, rbx ; gcrRegs +[rcx] mov rax, qword ptr [rbx] @@ -117,40 +137,19 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r14d, r14d test eax, eax sete r14b
- jmp SHORT G_M27413_IG06 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06 + ;; size=37 bbWeight=0 PerfScore 0.00 +G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 1 test esi, esi
- je SHORT G_M27413_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M27413_IG07 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 32 - pop rbx - pop rbp - pop rsi - pop rdi - pop r13 - pop r14 - pop r15 - ret - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx] - mov rcx, rbx - ; gcrRegs +[rcx] - call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] - ; gcrRegs -[rcx rbx] - ; gcr arg pop 0 - int3 - ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M27413_IG07 + ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 207, prolog size 17, PerfScore 53.50, instruction count 81, allocated bytes for code 207 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 236, prolog size 17, PerfScore 53.50, instruction count 81, allocated bytes for code 236 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================ Unwind Info:

benchmarks.run.windows.x64.checked.mch

-16 (-4.47%) : 7478.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)

@@ -12,13 +12,13 @@ ; V01 loc0 [V01,T03] ( 8, 7 ) ref -> rsi class-hnd exact single-def <ushort[]> ; 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
+;* V04 loc3 [V04,T06] ( 0, 0 ) ubyte -> zero-ref +; 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" -;* V10 tmp4 [V10,T06] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr" +;* V10 tmp4 [V10,T07] ( 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, 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 PerfScore 2.00
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 63.33, instruction count 88, allocated bytes for code 342 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
; ============================================================ Unwind Info:

-21 (-2.44%) : 24596.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)

@@ -12,7 +12,7 @@ ; V01 arg1 [V01,T18] ( 3, 2.50) ref -> rdx class-hnd single-def <System.Text.Encoding> ; V02 loc0 [V02,T09] ( 6, 9 ) int -> rsi ;* V03 loc1 [V03 ] ( 0, 0 ) struct (40) zero-ref do-not-enreg[SF] ld-addr-op <System.Net.WebUtility+UrlDecoder>
-; V04 loc2 [V04,T21] ( 3, 3 ) ubyte -> [rsp+0x44]
+; V04 loc2 [V04,T21] ( 3, 3.50) ubyte -> [rsp+0x44]
; V05 loc3 [V05,T22] ( 3, 3 ) ubyte -> [rsp+0x40] ; V06 loc4 [V06,T00] ( 9, 24.50) int -> [rsp+0x3C] ; V07 loc5 [V07,T02] ( 7, 18 ) ushort -> [rsp+0x38] @@ -103,7 +103,7 @@ G_M62022_IG03: ; bbWeight=0.50, gcrefRegs=000C {rdx rbx}, byrefRegs=0000 xor r10d, r10d xor r9d, r9d test edi, edi
- jle G_M62022_IG25
+ jle G_M62022_IG24
;; size=40 bbWeight=0.50 PerfScore 3.38 G_M62022_IG04: ; bbWeight=0.25, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rdx] @@ -136,7 +136,7 @@ G_M62022_IG07: ; bbWeight=4, gcVars=0000000000000000 {}, gcrefRegs=5028 { G_M62022_IG08: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref mov dword ptr [rsp+0x40], 1 mov r8d, 32
- jmp G_M62022_IG18
+ jmp G_M62022_IG17
;; size=19 bbWeight=2 PerfScore 6.50 G_M62022_IG09: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz cmp r8d, 37 @@ -154,11 +154,11 @@ G_M62022_IG09: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs= ;; size=47 bbWeight=2 PerfScore 22.00 G_M62022_IG10: ; bbWeight=1, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref mov dword ptr [rsp+0x40], r10d
- jmp G_M62022_IG18
+ jmp G_M62022_IG17
;; size=10 bbWeight=1 PerfScore 3.00 G_M62022_IG11: ; bbWeight=1, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref mov dword ptr [rsp+0x40], r10d
- jmp G_M62022_IG18
+ jmp G_M62022_IG17
;; size=10 bbWeight=1 PerfScore 3.00 G_M62022_IG12: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref mov edx, 255 @@ -169,29 +169,28 @@ G_M62022_IG13: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs= movzx r11, word ptr [rbx+2*r11+0x0C] cmp r11d, 256 jge SHORT G_M62022_IG14
- mov dword ptr [rsp+0x44], eax - mov rax, 0xD1FFAB1E ; static handle - movzx rax, byte ptr [r11+rax]
+ mov dword ptr [rsp+0x40], r10d + mov r10, 0xD1FFAB1E ; static handle + movzx r10, byte ptr [r11+r10]
jmp SHORT G_M62022_IG15
- ;; size=43 bbWeight=2 PerfScore 18.50
+ ;; size=44 bbWeight=2 PerfScore 18.50
G_M62022_IG14: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref mov r11d, 255
- mov dword ptr [rsp+0x44], eax - mov eax, r11d - ;; size=13 bbWeight=2 PerfScore 3.00
+ mov dword ptr [rsp+0x40], r10d + mov r10d, r11d + ;; size=14 bbWeight=2 PerfScore 3.00
G_M62022_IG15: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz mov r11d, edx
- or r11d, eax
+ or r11d, r10d
cmp r11d, 255 je SHORT G_M62022_IG17 shl edx, 4
- or edx, eax
+ or edx, r10d
movzx rax, dl mov dword ptr [rsp+0x34], eax mov dword ptr [rsp+0x3C], ecx test r12, r12 jne SHORT G_M62022_IG16
- mov dword ptr [rsp+0x40], r10d
movsxd rdx, esi mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWARR_1_VC @@ -199,8 +198,7 @@ G_M62022_IG15: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs= ; gcr arg pop 0 mov r12, rax ; gcrRegs +[r12]
- mov r10d, dword ptr [rsp+0x40] - ;; size=67 bbWeight=2 PerfScore 19.50
+ ;; size=58 bbWeight=2 PerfScore 15.50
G_M62022_IG16: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref ; gcrRegs -[rax] lea edx, [r13+0x01] @@ -211,18 +209,14 @@ G_M62022_IG16: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs= mov eax, dword ptr [rsp+0x34] mov byte ptr [r12+rdx+0x10], al mov dword ptr [rsp+0x44], 1
- jmp G_M62022_IG24
+ jmp G_M62022_IG23
;; size=43 bbWeight=2 PerfScore 20.00
-G_M62022_IG17: ; bbWeight=1, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref - mov dword ptr [rsp+0x40], r10d - mov eax, dword ptr [rsp+0x44] - ;; size=9 bbWeight=1 PerfScore 2.00 -G_M62022_IG18: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
+G_M62022_IG17: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
mov dword ptr [rsp+0x38], r8d test r8d, 0xFF80
- jne SHORT G_M62022_IG20 - test r12, r12
jne SHORT G_M62022_IG19
+ test r12, r12 + jne SHORT G_M62022_IG18
mov dword ptr [rsp+0x3C], r9d mov dword ptr [rsp+0x44], eax movsxd rdx, esi @@ -236,7 +230,7 @@ G_M62022_IG18: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs= ; gcrRegs -[rax] mov r9d, dword ptr [rsp+0x3C] ;; size=58 bbWeight=2 PerfScore 18.50
-G_M62022_IG19: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
+G_M62022_IG18: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
mov edx, r13d lea r13d, [rdx+0x01] cmp edx, dword ptr [r12+0x08] @@ -246,16 +240,15 @@ G_M62022_IG19: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs= mov dword ptr [rsp+0x3C], r9d mov dword ptr [rsp+0x44], eax mov r8d, r13d
- mov r10d, dword ptr [rsp+0x40] - jmp G_M62022_IG24 - ;; size=50 bbWeight=2 PerfScore 24.00 -G_M62022_IG20: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
+ jmp G_M62022_IG23 + ;; size=45 bbWeight=2 PerfScore 22.00 +G_M62022_IG19: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
test r13d, r13d
- jle SHORT G_M62022_IG22
+ jle SHORT G_M62022_IG21
test r14, r14 mov dword ptr [rsp+0x3C], r9d mov dword ptr [rsp+0x44], eax
- jne SHORT G_M62022_IG21
+ jne SHORT G_M62022_IG20
movsxd rdx, esi mov rcx, 0xD1FFAB1E ; <unknown class> call CORINFO_HELP_NEWARR_1_VC @@ -264,7 +257,7 @@ G_M62022_IG20: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs= mov r14, rax ; gcrRegs +[r14] ;; size=40 bbWeight=2 PerfScore 12.50
-G_M62022_IG21: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
+G_M62022_IG20: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov gword ptr [rsp+0x20], r14 ; gcr arg write @@ -286,9 +279,9 @@ G_M62022_IG21: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs= mov eax, dword ptr [rsp+0x44] mov r9d, dword ptr [rsp+0x3C] ;; size=52 bbWeight=2 PerfScore 25.50
-G_M62022_IG22: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
+G_M62022_IG21: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
test r14, r14
- jne SHORT G_M62022_IG23
+ jne SHORT G_M62022_IG22
mov dword ptr [rsp+0x3C], r9d mov dword ptr [rsp+0x44], eax movsxd rdx, esi @@ -302,7 +295,7 @@ G_M62022_IG22: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs= ; gcrRegs -[rax] mov r9d, dword ptr [rsp+0x3C] ;; size=44 bbWeight=2 PerfScore 14.00
-G_M62022_IG23: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
+G_M62022_IG22: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
mov ecx, r15d lea r15d, [rcx+0x01] cmp ecx, dword ptr [r14+0x08] @@ -312,19 +305,22 @@ G_M62022_IG23: ; bbWeight=2, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs= mov dword ptr [rsp+0x3C], r9d mov dword ptr [rsp+0x44], eax mov r8d, r13d
- mov r10d, dword ptr [rsp+0x40] - ;; size=45 bbWeight=2 PerfScore 20.00 -G_M62022_IG24: ; bbWeight=4, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
+ ;; size=40 bbWeight=2 PerfScore 18.00 +G_M62022_IG23: ; bbWeight=4, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref
mov r9d, dword ptr [rsp+0x3C] inc r9d cmp r9d, edi mov r13d, r8d mov eax, dword ptr [rsp+0x44]
+ mov r10d, dword ptr [rsp+0x40]
jl G_M62022_IG07
- ;; size=24 bbWeight=4 PerfScore 15.00 -G_M62022_IG25: ; bbWeight=0.50, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
+ ;; size=29 bbWeight=4 PerfScore 19.00 +G_M62022_IG24: ; bbWeight=1, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRegs=0000 {}, byref, isz
test eax, eax jne SHORT G_M62022_IG27
+ ;; size=4 bbWeight=1 PerfScore 1.25 +G_M62022_IG25: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbp r12 r14]
test r10d, r10d je G_M62022_IG05 mov rcx, rbx @@ -332,10 +328,10 @@ G_M62022_IG25: ; bbWeight=0.50, gcrefRegs=5028 {rbx rbp r12 r14}, byrefRe mov edx, 43 mov r8d, 32 call [<unknown method>]
- ; gcrRegs -[rcx rbx rbp r12 r14] +[rax]
+ ; gcrRegs -[rcx rbx] +[rax]
; gcr arg pop 0 nop
- ;; size=34 bbWeight=0.50 PerfScore 3.25
+ ;; size=30 bbWeight=0.50 PerfScore 2.62
G_M62022_IG26: ; bbWeight=0.50, epilog, nogc, extend add rsp, 72 pop rbx @@ -420,7 +416,7 @@ G_M62022_IG32: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 859, prolog size 19, PerfScore 277.00, instruction count 235, allocated bytes for code 859 (MethodHash=ea6c0db9) for method System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
+; Total bytes of code 838, prolog size 19, PerfScore 271.62, instruction count 230, allocated bytes for code 838 (MethodHash=ea6c0db9) for method System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
; ============================================================ Unwind Info:

-14 (-2.03%) : 34897.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)

@@ -9,17 +9,17 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T04] ( 9, 27.50) long -> rsi single-def
-; V01 arg1 [V01,T11] ( 7, 6.50) int -> rbp -; V02 arg2 [V02,T03] ( 10, 28 ) byref -> rbx single-def
+; V01 arg1 [V01,T10] ( 7, 8.50) int -> rbp +; V02 arg2 [V02,T03] ( 10, 30 ) byref -> rbx single-def
; V03 arg3 [V03,T06] ( 3, 18 ) ubyte -> rdi single-def ; V04 loc0 [V04,T05] ( 8, 26 ) int -> r14 ; V05 loc1 [V05,T07] ( 9, 14 ) int -> registers ; V06 loc2 [V06,T13] ( 4, 5.50) ubyte -> r13 ; V07 loc3 [V07,T14] ( 3, 5 ) ubyte -> r12
-; V08 loc4 [V08,T02] ( 6, 38 ) ubyte -> [rsp+0x44]
+; V08 loc4 [V08,T02] ( 6, 38.50) ubyte -> [rsp+0x44]
; V09 loc5 [V09,T09] ( 5, 13.50) ubyte -> [rsp+0x40] ; V10 loc6 [V10,T15] ( 3, 5 ) int -> [rsp+0x3C]
-; V11 loc7 [V11 ] ( 20, 83.50) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
+; V11 loc7 [V11 ] ( 20, 87.50) int -> [rsp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V12 loc8 [V12,T16] ( 3, 1.50) int -> rax ; V13 loc9 [V13,T08] ( 7, 14 ) ushort -> r9 ; V14 OutArgs [V14 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -33,7 +33,7 @@ ;* V22 tmp8 [V22 ] ( 0, 0 ) ushort -> zero-ref "Inlining Arg" ;* V23 tmp9 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ; V24 cse0 [V24,T01] ( 3, 48 ) int -> rcx "CSE - aggressive"
-; V25 cse1 [V25,T10] ( 5, 10 ) int -> r9 multi-def "CSE - aggressive"
+; V25 cse1 [V25,T11] ( 5, 10 ) int -> r9 multi-def "CSE - aggressive"
; V26 cse2 [V26,T17] ( 3, 1.50) int -> r8 "CSE - moderate" ; ; Lcl frame size = 72 @@ -69,10 +69,10 @@ G_M23448_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr G_M23448_IG03: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref lea r8d, [rbp+0x01] cmp r8d, dword ptr [rbx]
- jge G_M23448_IG29
+ jge G_M23448_IG30
movsxd r8, r8d cmp word ptr [rsi+2*r8], 58
- jne G_M23448_IG29
+ jne G_M23448_IG30
;; size=28 bbWeight=0.50 PerfScore 4.38 G_M23448_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz mov dword ptr [rsp+0x30], ebp @@ -98,9 +98,8 @@ G_M23448_IG06: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr ;; size=40 bbWeight=2 PerfScore 19.50 G_M23448_IG07: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref mov dword ptr [rsp+0x44], eax
- mov dword ptr [rsp+0x40], r10d
jmp G_M23448_IG23
- ;; size=14 bbWeight=0.25 PerfScore 1.00
+ ;; size=9 bbWeight=0.25 PerfScore 0.75
G_M23448_IG08: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz movsxd r9, dword ptr [rsp+0x30] movzx r9, word ptr [rsi+2*r9] @@ -112,11 +111,12 @@ G_M23448_IG09: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr inc r15d xor r10d, r10d mov dword ptr [rsp+0x40], r10d
+ mov r10d, dword ptr [rsp+0x40]
jmp G_M23448_IG22
- ;; size=16 bbWeight=2 PerfScore 7.00
+ ;; size=21 bbWeight=2 PerfScore 9.00
G_M23448_IG10: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp r15d, 4
- jg G_M23448_IG29
+ jg G_M23448_IG30
test r15d, r15d je SHORT G_M23448_IG11 inc r14d @@ -129,10 +129,10 @@ G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr cmp r9d, 37 je SHORT G_M23448_IG14 cmp r9d, 46
- jne G_M23448_IG29
+ jne G_M23448_IG30
test r12d, r12d mov dword ptr [rsp+0x40], r10d
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov r8d, dword ptr [rbx] mov dword ptr [rsp+0x30], r8d xor r8d, r8d @@ -145,7 +145,7 @@ G_M23448_IG11: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr call [<unknown method>] ; gcr arg pop 0 test eax, eax
- je G_M23448_IG29
+ je G_M23448_IG30
jmp G_M23448_IG20 ;; size=93 bbWeight=2 PerfScore 37.50 G_M23448_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz @@ -156,17 +156,17 @@ G_M23448_IG12: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr cmp r9d, 93 je SHORT G_M23448_IG16 ;; size=22 bbWeight=2 PerfScore 7.50
-G_M23448_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M23448_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; byrRegs -[rbx]
- jmp G_M23448_IG29 - ;; size=5 bbWeight=0.50 PerfScore 1.00
+ jmp G_M23448_IG30 + ;; size=5 bbWeight=1 PerfScore 2.00
G_M23448_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz ; byrRegs +[rbx] mov ecx, dword ptr [rsp+0x30] inc ecx mov dword ptr [rsp+0x30], ecx cmp ecx, dword ptr [rbx]
- je G_M23448_IG29
+ je G_M23448_IG30
movsxd rcx, dword ptr [rsp+0x30] movzx rcx, word ptr [rsi+2*rcx] cmp ecx, 93 @@ -177,13 +177,12 @@ G_M23448_IG14: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, by G_M23448_IG15: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz jmp SHORT G_M23448_IG19 ;; size=2 bbWeight=2 PerfScore 4.00
-G_M23448_IG16: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+G_M23448_IG16: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov ebp, dword ptr [rsp+0x30] mov ecx, dword ptr [rbx] mov dword ptr [rsp+0x30], ecx
- mov dword ptr [rsp+0x40], r10d
jmp G_M23448_IG22
- ;; size=20 bbWeight=2 PerfScore 14.00
+ ;; size=15 bbWeight=4 PerfScore 24.00
G_M23448_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz cmp dword ptr [rsp+0x30], 0 jle SHORT G_M23448_IG18 @@ -193,7 +192,7 @@ G_M23448_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr cmp word ptr [rsi+2*rcx], 58 jne SHORT G_M23448_IG18 test r13d, r13d
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov r13d, 1 xor r10d, r10d xor r15d, r15d @@ -211,7 +210,7 @@ G_M23448_IG19: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, by or eax, dword ptr [rsp+0x44] movzx rcx, dil or eax, ecx
- jne G_M23448_IG29
+ jne G_M23448_IG30
mov r15d, 1 mov dword ptr [rsp+0x44], r15d jmp SHORT G_M23448_IG18 @@ -227,60 +226,61 @@ G_M23448_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byr ;; size=29 bbWeight=2 PerfScore 9.50 G_M23448_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref xor ecx, ecx
- mov dword ptr [rsp+0x40], r15d
+ mov r10d, r15d
mov r15d, ecx
- ;; size=10 bbWeight=2 PerfScore 3.00
+ ;; size=8 bbWeight=2 PerfScore 1.50
G_M23448_IG22: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz mov ecx, dword ptr [rsp+0x30] inc ecx mov dword ptr [rsp+0x30], ecx mov ecx, dword ptr [rsp+0x30] cmp ecx, dword ptr [rbx]
- jl SHORT G_M23448_IG25
+ jl SHORT G_M23448_IG26
;; size=18 bbWeight=4 PerfScore 29.00
-G_M23448_IG23: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+G_M23448_IG23: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov eax, dword ptr [rsp+0x44] test eax, eax
- je SHORT G_M23448_IG24
+ je SHORT G_M23448_IG25 + ;; size=8 bbWeight=1 PerfScore 2.25 +G_M23448_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov ecx, r15d sub ecx, 1 cmp ecx, 1
- ja SHORT G_M23448_IG29 - ;; size=19 bbWeight=0.50 PerfScore 2.00 -G_M23448_IG24: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ ja SHORT G_M23448_IG30 + ;; size=11 bbWeight=0.50 PerfScore 0.88 +G_M23448_IG25: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
test eax, eax setne al movzx rax, al add eax, 8
- cmp dword ptr [rsp+0x40], 0 - jne SHORT G_M23448_IG29
+ test r10d, r10d + jne SHORT G_M23448_IG30
cmp r15d, 4
- jg SHORT G_M23448_IG29
+ jg SHORT G_M23448_IG30
test r13d, r13d
- jne SHORT G_M23448_IG26
+ jne SHORT G_M23448_IG27
cmp r14d, eax
- jne SHORT G_M23448_IG29 - jmp SHORT G_M23448_IG27 - ;; size=36 bbWeight=0.50 PerfScore 5.25 -G_M23448_IG25: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
+ jne SHORT G_M23448_IG30 + jmp SHORT G_M23448_IG28 + ;; size=34 bbWeight=0.50 PerfScore 4.38 +G_M23448_IG26: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref
mov eax, dword ptr [rsp+0x44]
- mov r10d, dword ptr [rsp+0x40]
jmp G_M23448_IG05
- ;; size=14 bbWeight=2 PerfScore 8.00 -G_M23448_IG26: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz - cmp r14d, eax - jge SHORT G_M23448_IG29 - ;; size=5 bbWeight=0.50 PerfScore 0.62
+ ;; size=9 bbWeight=2 PerfScore 6.00
G_M23448_IG27: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
+ cmp r14d, eax + jge SHORT G_M23448_IG30 + ;; size=5 bbWeight=0.50 PerfScore 0.62 +G_M23448_IG28: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0008 {rbx}, byref, isz
mov eax, dword ptr [rbx] inc eax cmp dword ptr [rsp+0x30], eax
- jne SHORT G_M23448_IG29
+ jne SHORT G_M23448_IG30
inc ebp mov dword ptr [rbx], ebp mov eax, 1 ;; size=19 bbWeight=0.50 PerfScore 3.38
-G_M23448_IG28: ; bbWeight=0.50, epilog, nogc, extend
+G_M23448_IG29: ; bbWeight=0.50, epilog, nogc, extend
add rsp, 72 pop rbx pop rbp @@ -292,11 +292,11 @@ G_M23448_IG28: ; bbWeight=0.50, epilog, nogc, extend pop r15 ret ;; size=17 bbWeight=0.50 PerfScore 2.62
-G_M23448_IG29: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M23448_IG30: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; byrRegs -[rbx] xor eax, eax
- ;; size=2 bbWeight=0.50 PerfScore 0.12 -G_M23448_IG30: ; bbWeight=0.50, epilog, nogc, extend
+ ;; size=2 bbWeight=1 PerfScore 0.25 +G_M23448_IG31: ; bbWeight=1, epilog, nogc, extend
add rsp, 72 pop rbx pop rbp @@ -307,9 +307,9 @@ G_M23448_IG30: ; bbWeight=0.50, epilog, nogc, extend ...

+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, 3.50) ref -> rbx class-hnd single-def <System.Object> +; V02 arg2 [V02,T06] ( 4, 3.50) ref -> rsi class-hnd single-def <System.Object> +; V03 arg3 [V03,T08] ( 4, 3.50) int -> rbp single-def +; V04 arg4 [V04,T14] ( 2, 1.50) ref -> r14 class-hnd single-def <System.Reflection.Binder> +; V05 arg5 [V05,T07] ( 4, 5.50) ref -> rdi class-hnd single-def <System.Object[]> +; V06 arg6 [V06,T15] ( 2, 1.50) ref -> r15 class-hnd single-def <System.Globalization.CultureInfo> +; V07 loc0 [V07,T10] ( 3, 3 ) ref -> r13 class-hnd exact single-def <System.Reflection.RuntimeMethodInfo> +; V08 loc1 [V08,T03] ( 8, 7.79) 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, 7.75) 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" ;
-; 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 ebp, r9d + mov r14, gword ptr [rsp+0xB0] + ; gcrRegs +[r14] + mov rdi, gword ptr [rsp+0xB8] + ; gcrRegs +[rdi] + mov r15, gword ptr [rsp+0xC0] + ; gcrRegs +[r15] + ;; size=49 bbWeight=1 PerfScore 12.00 +G_M50642_IG02: ; bbWeight=1, gcrefRegs=C0CA {rcx rbx rsi rdi 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=C0C8 {rbx rsi rdi 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=C0CA {rcx rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz + mov r13, rcx + ; gcrRegs +[r13] + test r13, r13
je G_M50642_IG15
- test rbx, rbx
+ test rdi, rdi
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 -[rdi 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
+ ;; 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=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz + ; gcrRegs -[rcx rdx r9] +[rdi r13] + mov r12d, dword ptr [rdi+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=E0C9 {rax rbx rsi rdi 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=E0C9 {rax rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz + mov dword ptr [rsp+0x44], r8d + mov ecx, r8d + mov rdx, gword ptr [rdi+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, gcrefRegs=E049 {rax rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi]
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 PerfScore 2.00 +G_M50642_IG11: ; bbWeight=0.04, gcrefRegs=E0C9 {rax rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rdi] + mov ecx, r8d + mov rdx, gword ptr [rdi+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, gcrefRegs=E049 {rax rbx rsi r13 r14 r15}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdi] + 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 - mov rcx, r14 - ; gcrRegs +[rcx]
...

+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,101.24) 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.99, 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.99 PerfScore 0.25 +G_M4100_IG06: ; bbWeight=0.99, epilog, nogc, extend
add rsp, 120 pop rbp ret
- ;; size=6 bbWeight=0 PerfScore 0.00
+ ;; size=6 bbWeight=0.99 PerfScore 1.74 +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 352.30, instruction count 17, allocated bytes for code 47 (MethodHash=6a7feffb) for method Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
; ============================================================ Unwind Info:

-40 (-13.51%) : 97709.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan1[uint],uint,System.Span1[uint]) (Tier1)

@@ -13,23 +13,23 @@ ; V02 arg2 [V02,T03] ( 5, 7.30) byref -> r8 single-def ; V03 OutArgs [V03 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V04 tmp1 [V04 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]>
-; V05 tmp2 [V05,T00] ( 19, 14.03) int -> rdi "Inline stloc first use temp"
+; V05 tmp2 [V05,T00] ( 19, 14.03) int -> rsi "Inline stloc first use temp"
;* V06 tmp3 [V06 ] ( 0, 0 ) long -> zero-ref "Inlining Arg"
-; V07 tmp4 [V07,T01] ( 14, 10.84) long -> rbp "Inline stloc first use temp"
+; V07 tmp4 [V07,T01] ( 14, 11.83) long -> rcx "Inline stloc first use temp"
;* V08 tmp5 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]>
-; V09 tmp6 [V09,T05] ( 5, 6.20) byref -> rax single-def "Inlining Arg"
+; V09 tmp6 [V09,T05] ( 5, 8.18) byref -> rax single-def "Inlining Arg"
;* V10 tmp7 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.ReadOnlySpan`1[uint]> ;* V11 tmp8 [V11 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline stloc first use temp" <System.ReadOnlySpan`1[uint]> ;* V12 tmp9 [V12 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> ;* V13 tmp10 [V13 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.Span`1[uint]> ;* V14 tmp11 [V14 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[uint]>
-; V15 tmp12 [V15,T08] ( 5, 2.60) int -> rsi "Inlining Arg" -; V16 tmp13 [V16,T11] ( 2, 1.30) byref -> r13 single-def "Inlining Arg"
+; V15 tmp12 [V15,T08] ( 4, 2.60) int -> rbx "Inlining Arg" +; V16 tmp13 [V16,T11] ( 2, 1.30) byref -> r14 single-def "Inlining Arg"
;* V17 tmp14 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp15 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp16 [V19 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Span`1[uint]>
-; V20 tmp17 [V20,T10] ( 4, 1.95) int -> r15 "Inlining Arg" -; V21 tmp18 [V21,T12] ( 2, 1.30) byref -> r12 single-def "Inlining Arg"
+; V20 tmp17 [V20,T10] ( 3, 1.95) int -> rbp "Inlining Arg" +; V21 tmp18 [V21,T12] ( 2, 1.30) byref -> r15 single-def "Inlining Arg"
;* V22 tmp19 [V22 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V23 tmp20 [V23 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V24 tmp21 [V24 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[uint]> @@ -42,14 +42,14 @@ ;* V31 tmp28 [V31 ] ( 0, 0 ) int -> zero-ref "field V02._length (fldOffset=0x8)" P-INDEP ; V32 tmp29 [V32,T09] ( 2, 2 ) byref -> rax single-def "field V04._reference (fldOffset=0x0)" P-INDEP ;* V33 tmp30 [V33 ] ( 0, 0 ) int -> zero-ref "field V04._length (fldOffset=0x8)" P-INDEP
-; V34 tmp31 [V34,T07] ( 4, 2.92) byref -> rbx single-def "field V08._reference (fldOffset=0x0)" P-INDEP -; V35 tmp32 [V35,T04] ( 10, 7.84) int -> rsi "field V08._length (fldOffset=0x8)" P-INDEP
+; V34 tmp31 [V34,T07] ( 4, 2.92) byref -> r10 single-def "field V08._reference (fldOffset=0x0)" P-INDEP +; V35 tmp32 [V35,T04] ( 10, 8.83) int -> rbx "field V08._length (fldOffset=0x8)" P-INDEP
;* V36 tmp33 [V36 ] ( 0, 0 ) byref -> zero-ref single-def "field V10._reference (fldOffset=0x0)" P-INDEP ;* V37 tmp34 [V37 ] ( 0, 0 ) int -> zero-ref "field V10._length (fldOffset=0x8)" P-INDEP ;* V38 tmp35 [V38 ] ( 0, 0 ) byref -> zero-ref single-def "field V11._reference (fldOffset=0x0)" P-INDEP ;* V39 tmp36 [V39 ] ( 0, 0 ) int -> zero-ref "field V11._length (fldOffset=0x8)" P-INDEP
-; V40 tmp37 [V40,T15] ( 2, 0.65) byref -> r14 single-def "field V12._reference (fldOffset=0x0)" P-INDEP -; V41 tmp38 [V41,T14] ( 4, 0.97) int -> r15 "field V12._length (fldOffset=0x8)" P-INDEP
+; V40 tmp37 [V40,T15] ( 2, 0.65) byref -> rdi single-def "field V12._reference (fldOffset=0x0)" P-INDEP +; V41 tmp38 [V41,T14] ( 4, 0.97) int -> rbp "field V12._length (fldOffset=0x8)" P-INDEP
;* V42 tmp39 [V42 ] ( 0, 0 ) byref -> zero-ref "field V13._reference (fldOffset=0x0)" P-INDEP ;* V43 tmp40 [V43 ] ( 0, 0 ) int -> zero-ref "field V13._length (fldOffset=0x8)" P-INDEP ;* V44 tmp41 [V44 ] ( 0, 0 ) byref -> zero-ref single-def "field V14._reference (fldOffset=0x0)" P-INDEP @@ -66,165 +66,157 @@ G_M35723_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push r15 push r14
- push r13 - push r12
push rdi push rsi push rbp push rbx sub rsp, 40
- ;; size=16 bbWeight=1 PerfScore 8.25
+ ;; size=12 bbWeight=1 PerfScore 6.25
G_M35723_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0102 {rcx r8}, byref, isz ; byrRegs +[rcx r8] mov rax, bword ptr [r8] ; byrRegs +[rax]
- mov rbx, bword ptr [rcx] - ; byrRegs +[rbx] - mov esi, dword ptr [rcx+0x08] - xor edi, edi - mov ebp, edx - cmp esi, 8 - jle SHORT G_M35723_IG10 - ;; size=18 bbWeight=1 PerfScore 7.75 -G_M35723_IG03: ; bbWeight=3.94, gcrefRegs=0000 {}, byrefRegs=0109 {rax rbx r8}, byref, isz
+ mov r10, bword ptr [rcx] + ; byrRegs +[r10] + mov ebx, dword ptr [rcx+0x08] + xor esi, esi + mov ecx, edx
; byrRegs -[rcx]
- cmp edi, esi - jge SHORT G_M35723_IG08
+ cmp ebx, 8 + jle SHORT G_M35723_IG07 + ;; size=18 bbWeight=1 PerfScore 7.75 +G_M35723_IG03: ; bbWeight=3.94, gcrefRegs=0000 {}, byrefRegs=0501 {rax r8 r10}, byref, isz + cmp esi, ebx + jge SHORT G_M35723_IG05
;; size=4 bbWeight=3.94 PerfScore 4.92
-G_M35723_IG04: ; bbWeight=1.35, gcrefRegs=0000 {}, byrefRegs=0109 {rax rbx r8}, byref, isz - mov ecx, edi - mov ecx, dword ptr [rbx+4*rcx] - add rcx, rbp - mov rbp, rcx - movsxd rcx, edi - mov dword ptr [rax+4*rcx], ebp - inc edi - sar rbp, 32 - je SHORT G_M35723_IG08 - jmp SHORT G_M35723_IG03 - ;; size=27 bbWeight=1.35 PerfScore 10.43 -G_M35723_IG05: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0108 {rbx r8}, byref, isz - ; byrRegs -[rax] - mov r14, bword ptr [r8] - ; byrRegs +[r14] - mov r15d, dword ptr [r8+0x08] - cmp edi, esi - ja G_M35723_IG15 - mov r8d, edi - ; byrRegs -[r8] - lea r13, bword ptr [rbx+4*r8] - ; byrRegs +[r13] - sub esi, edi - js SHORT G_M35723_IG14 - cmp edi, r15d - ja G_M35723_IG15 - ;; size=35 bbWeight=0.32 PerfScore 2.76 -G_M35723_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref - ; byrRegs -[rbx] - mov r8d, edi - lea r12, bword ptr [r14+4*r8] - ; byrRegs +[r12] - sub r15d, edi - js G_M35723_IG16 - cmp esi, r15d - ja G_M35723_IG17 - ;; size=25 bbWeight=0.32 PerfScore 1.06 -G_M35723_IG07: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=3000 {r12 r13}, byref, isz - ; byrRegs -[r14] - mov r8d, esi - shl r8, 2 - mov rcx, r12 - ; byrRegs +[rcx] - mov rdx, r13 - ; byrRegs +[rdx] - call [<unknown method>] - ; byrRegs -[rcx rdx r12-r13] - ; gcr arg pop 0 - jmp SHORT G_M35723_IG13 - ;; size=21 bbWeight=0.32 PerfScore 2.03 -G_M35723_IG08: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0109 {rax rbx r8}, byref, isz - ; byrRegs +[rax rbx r8] - mov ecx, esi - mov dword ptr [rax+4*rcx], ebp - cmp edi, esi - jge SHORT G_M35723_IG13
+G_M35723_IG04: ; bbWeight=1.35, gcrefRegs=0000 {}, byrefRegs=0501 {rax r8 r10}, byref, isz + mov edx, esi + mov edx, dword ptr [r10+4*rdx] + add rdx, rcx + mov rcx, rdx + movsxd rdx, esi + mov dword ptr [rax+4*rdx], ecx + inc esi + sar rcx, 32 + jne SHORT G_M35723_IG03 + ;; size=26 bbWeight=1.35 PerfScore 7.74 +G_M35723_IG05: ; bbWeight=0.49, gcrefRegs=0000 {}, byrefRegs=0501 {rax r8 r10}, byref, isz + mov edx, ebx + mov dword ptr [rax+4*rdx], ecx + cmp esi, ebx + jge SHORT G_M35723_IG10
;; size=9 bbWeight=0.49 PerfScore 1.23
-G_M35723_IG09: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0108 {rbx r8}, byref, isz
+G_M35723_IG06: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, byref, isz
; byrRegs -[rax]
- jmp SHORT G_M35723_IG05
+ jmp SHORT G_M35723_IG11
;; size=2 bbWeight=0.32 PerfScore 0.65
-G_M35723_IG10: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0009 {rax rbx}, byref, isz
+G_M35723_IG07: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
; byrRegs -[r8] +[rax]
- test esi, esi - jle SHORT G_M35723_IG12
+ test ebx, ebx + jle SHORT G_M35723_IG09
;; size=4 bbWeight=0.01 PerfScore 0.01
-G_M35723_IG11: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0009 {rax rbx}, byref, isz - mov r8d, edi - mov r8d, dword ptr [rbx+4*r8] - add rbp, r8 - movsxd r8, edi - mov dword ptr [rax+4*r8], ebp - sar rbp, 32 - inc edi - cmp edi, esi - jl SHORT G_M35723_IG11 - ;; size=27 bbWeight=0.25 PerfScore 1.45 -G_M35723_IG12: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref - ; byrRegs -[rbx]
+G_M35723_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=0401 {rax r10}, byref, isz
mov r8d, esi
- mov dword ptr [rax+4*r8], ebp - ;; size=7 bbWeight=0.01 PerfScore 0.01 -G_M35723_IG13: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+ mov r8d, dword ptr [r10+4*r8] + add rcx, r8 + movsxd r8, esi + mov dword ptr [rax+4*r8], ecx + sar rcx, 32 + inc esi + cmp esi, ebx + jl SHORT G_M35723_IG08 + ;; size=27 bbWeight=0.25 PerfScore 1.45 +G_M35723_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref + ; byrRegs -[r10] + mov r10d, ebx + mov dword ptr [rax+4*r10], ecx + ;; size=7 bbWeight=1 PerfScore 1.25 +G_M35723_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rax] add rsp, 40 pop rbx pop rbp pop rsi pop rdi
- pop r12 - pop r13
pop r14 pop r15 ret
- ;; size=17 bbWeight=1 PerfScore 5.25 -G_M35723_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref - ; byrRegs +[r13-r14] - mov rcx, 0xD1FFAB1E - ; gcrRegs +[rcx] - mov rdx, 0xD1FFAB1E - ; gcrRegs +[rdx]
+ ;; size=13 bbWeight=1 PerfScore 4.25 +G_M35723_IG11: ; bbWeight=0.32, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0500 {r8 r10}, gcvars, byref, isz + ; byrRegs +[r8 r10] + mov rdi, bword ptr [r8] + ; byrRegs +[rdi] + mov ebp, dword ptr [r8+0x08] + cmp esi, ebx + ja SHORT G_M35723_IG16 + mov r8d, esi + ; byrRegs -[r8] + lea r14, bword ptr [r10+4*r8] + ; byrRegs +[r14] + sub ebx, esi + js SHORT G_M35723_IG15 + cmp esi, ebp + ja SHORT G_M35723_IG16 + ;; size=26 bbWeight=0.32 PerfScore 2.76 +G_M35723_IG12: ; bbWeight=0.32, gcrefRegs=0000 {}, byrefRegs=4080 {rdi r14}, byref, isz + ; byrRegs -[r10] + mov r8d, esi
...

-10 (-8.26%) : 98082.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -12,103 +12,93 @@ ; V00 arg0 [V00,T03] ( 8, 5.01) long -> rcx single-def ; V01 arg1 [V01,T02] ( 7, 5.02) ref -> rdx class-hnd <System.Object> ; V02 loc0 [V02,T04] ( 4, 3.04) long -> rbx
-; V03 loc1 [V03,T00] ( 10, 8.95) long -> rsi -; V04 loc2 [V04,T01] ( 10, 7.96) long -> rdi
+; V03 loc1 [V03,T00] ( 10, 8.95) long -> rax +; V04 loc2 [V04,T01] ( 10, 7.96) long -> r8
;# 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 rdi - push rsi
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG
push rbx
- ;; size=3 bbWeight=1 PerfScore 3.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx] test rdx, rdx
- je SHORT G_M24157_IG10
+ je SHORT G_M24157_IG15
;; size=5 bbWeight=1 PerfScore 1.25 G_M24157_IG03: ; bbWeight=1.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz mov rbx, qword ptr [rdx]
- movzx rsi, word ptr [rbx+0x0E] - test rsi, rsi - je SHORT G_M24157_IG12
+ movzx rax, word ptr [rbx+0x0E] + test rax, rax + je SHORT G_M24157_IG13
;; size=12 bbWeight=1.01 PerfScore 5.29 G_M24157_IG04: ; bbWeight=1.01, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- mov rdi, qword ptr [rbx+0x40] - cmp rsi, 4
+ mov r8, qword ptr [rbx+0x40] + cmp rax, 4
jge SHORT G_M24157_IG08 ;; size=10 bbWeight=1.01 PerfScore 3.27 G_M24157_IG05: ; bbWeight=2.94, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rdi], rcx - je SHORT G_M24157_IG10
+ cmp qword ptr [r8], rcx + je SHORT G_M24157_IG15
;; size=5 bbWeight=2.94 PerfScore 11.78 G_M24157_IG06: ; bbWeight=1.97, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- add rdi, 8 - dec rsi - test rsi, rsi
+ add r8, 8 + dec rax + test rax, rax
jg SHORT G_M24157_IG05 ;; size=12 bbWeight=1.97 PerfScore 3.45 G_M24157_IG07: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- jmp SHORT G_M24157_IG12
+ jmp SHORT G_M24157_IG13
;; size=2 bbWeight=0.02 PerfScore 0.03 G_M24157_IG08: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rdi], rcx - je SHORT G_M24157_IG10 - cmp qword ptr [rdi+0x08], rcx - je SHORT G_M24157_IG10
+ cmp qword ptr [r8], rcx + je SHORT G_M24157_IG15 + cmp qword ptr [r8+0x08], rcx + je SHORT G_M24157_IG15
;; size=11 bbWeight=0.02 PerfScore 0.16 G_M24157_IG09: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rdi+0x10], rcx - jne SHORT G_M24157_IG14
+ cmp qword ptr [r8+0x10], rcx + je SHORT G_M24157_IG15
;; size=6 bbWeight=0.02 PerfScore 0.08
-G_M24157_IG10: ; bbWeight=1.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - mov rax, rdx - ; gcrRegs +[rax] - ;; size=3 bbWeight=1.00 PerfScore 0.25 -G_M24157_IG11: ; bbWeight=1.00, epilog, nogc, extend - pop rbx - pop rsi - pop rdi - ret - ;; size=4 bbWeight=1.00 PerfScore 2.50 -G_M24157_IG12: ; bbWeight=0.02, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax]
+G_M24157_IG10: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + cmp qword ptr [r8+0x18], rcx + je SHORT G_M24157_IG15 + ;; size=6 bbWeight=0.00 PerfScore 0.01 +G_M24157_IG11: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + add r8, 32 + add rax, -4 + cmp rax, 4 + jge SHORT G_M24157_IG08 + ;; size=14 bbWeight=0.00 PerfScore 0.00 +G_M24157_IG12: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + test rax, rax + jne SHORT G_M24157_IG05 + ;; size=5 bbWeight=0.00 PerfScore 0.00 +G_M24157_IG13: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
test dword ptr [rbx], 0xD1FFAB1E
- jne SHORT G_M24157_IG18
+ jne SHORT G_M24157_IG17
;; size=8 bbWeight=0.02 PerfScore 0.07
-G_M24157_IG13: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG14: ; bbWeight=0.02, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] xor rdx, rdx ; gcrRegs +[rdx]
- jmp SHORT G_M24157_IG10 - ;; size=4 bbWeight=0.02 PerfScore 0.04 -G_M24157_IG14: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - cmp qword ptr [rdi+0x18], rcx - je SHORT G_M24157_IG10 - ;; size=6 bbWeight=0.00 PerfScore 0.01 -G_M24157_IG15: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - add rdi, 32 - add rsi, -4 - cmp rsi, 4 - jge SHORT G_M24157_IG08 - ;; size=14 bbWeight=0.00 PerfScore 0.00 -G_M24157_IG16: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - test rsi, rsi - je SHORT G_M24157_IG12 - ;; size=5 bbWeight=0.00 PerfScore 0.00 -G_M24157_IG17: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M24157_IG05 - ;; size=2 bbWeight=0.00 PerfScore 0.00 -G_M24157_IG18: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ ;; size=2 bbWeight=0.02 PerfScore 0.00 +G_M24157_IG15: ; bbWeight=1.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref + mov rax, rdx + ; gcrRegs +[rax] + ;; size=3 bbWeight=1.00 PerfScore 0.25 +G_M24157_IG16: ; bbWeight=1.00, epilog, nogc, extend + pop rbx + ret + ;; size=2 bbWeight=1.00 PerfScore 1.50 +G_M24157_IG17: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rax]
pop rbx
- pop rsi - pop rdi
tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=9 bbWeight=0.00 PerfScore 0.00
+ ;; size=7 bbWeight=0.00 PerfScore 0.00
-; Total bytes of code 121, prolog size 3, PerfScore 31.18, instruction count 47, allocated bytes for code 121 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 111, prolog size 1, PerfScore 28.15, instruction count 39, allocated bytes for code 111 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -116,11 +106,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

+11 (+13.25%) : 91041.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span1[System.Collections.IntStruct]) (Tier1)

@@ -10,7 +10,7 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T06] ( 5, 96.46) int -> rdx
+; V01 loc0 [V01,T04] ( 5, 96.46) int -> rdx
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct> ; V03 loc2 [V03,T00] ( 8,239.96) int -> rdx ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -22,12 +22,12 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> ; V16 tmp12 [V16,T01] ( 6,143.75) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP ; V17 tmp13 [V17,T10] ( 2, 2 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 85.19) int -> r10 "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4, 99.89) int -> r10 "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP @@ -36,7 +36,7 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 74.92) int -> r9 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 89.62) int -> r9 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ;* V30 tmp26 [V30 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[System.Collections.IntStruct]> @@ -56,7 +56,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr xor edx, edx dec ecx test ecx, ecx
- jle SHORT G_M24360_IG08
+ jle SHORT G_M24360_IG12
;; size=14 bbWeight=1 PerfScore 5.75 G_M24360_IG03: ; bbWeight=10.30, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz lea r8d, [rdx+0x01] @@ -77,15 +77,18 @@ G_M24360_IG04: ; bbWeight=28.78, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, G_M24360_IG05: ; bbWeight=39.66, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz ; byrRegs -[r9] test edx, edx
- jl SHORT G_M24360_IG07
+ jl SHORT G_M24360_IG08
;; size=4 bbWeight=39.66 PerfScore 49.57 G_M24360_IG06: ; bbWeight=37.46, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz movsxd r9, edx mov r9d, dword ptr [rax+4*r9] cmp r10d, r9d
- jl SHORT G_M24360_IG04
+ jge SHORT G_M24360_IG10
;; size=12 bbWeight=37.46 PerfScore 131.12
-G_M24360_IG07: ; bbWeight=37.43, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M24360_IG07: ; bbWeight=22.74, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz + jmp SHORT G_M24360_IG04 + ;; size=2 bbWeight=22.74 PerfScore 45.48 +G_M24360_IG08: ; bbWeight=37.43, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
inc edx movsxd rdx, edx mov dword ptr [rax+4*rdx], r10d @@ -93,12 +96,24 @@ G_M24360_IG07: ; bbWeight=37.43, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, cmp edx, ecx jl SHORT G_M24360_IG03 ;; size=16 bbWeight=37.43 PerfScore 112.30
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rax] + jmp SHORT G_M24360_IG12 + ;; size=2 bbWeight=1 PerfScore 2.00 +G_M24360_IG10: ; bbWeight=14.69, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz + ; byrRegs +[rax] + cmp r10d, r9d + jle SHORT G_M24360_IG08 + ;; size=5 bbWeight=14.69 PerfScore 18.37 +G_M24360_IG11: ; bbWeight=14.68, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz + jmp SHORT G_M24360_IG08 + ;; size=2 bbWeight=14.68 PerfScore 29.37 +G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rax] ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 83, prolog size 0, PerfScore 485.35, instruction count 30, allocated bytes for code 83 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 94, prolog size 0, PerfScore 580.57, instruction count 35, allocated bytes for code 94 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================ Unwind Info:

+11 (+13.25%) : 85527.dasm - System.Collections.Generic.GenericArraySortHelper1[System.Collections.IntStruct]:InsertionSort(System.Span1[System.Collections.IntStruct]) (Tier1)

@@ -10,11 +10,11 @@ ; Final local variable assignments ; ; V00 arg0 [V00,T09] ( 4, 8 ) byref -> rcx ld-addr-op single-def
-; V01 loc0 [V01,T06] ( 5, 95.08) int -> rdx
+; V01 loc0 [V01,T04] ( 5, 95.08) int -> rdx
;* V02 loc1 [V02 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Collections.IntStruct> ; V03 loc2 [V03,T00] ( 8,239.51) int -> rdx ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T01] ( 2,116.33) byref -> r9 "impAppendStmt"
+; V05 tmp1 [V05,T02] ( 2,116.33) byref -> r9 "impAppendStmt"
;* V06 tmp2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> ;* V07 tmp3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> ;* V08 tmp4 [V08 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]> @@ -22,12 +22,12 @@ ;* V10 tmp6 [V10 ] ( 0, 0 ) ubyte -> zero-ref "Inline return value spill temp" ;* V11 tmp7 [V11 ] ( 0, 0 ) byref -> zero-ref "Inlining Arg" ;* V12 tmp8 [V12 ] ( 0, 0 ) struct ( 8) zero-ref "Inlining Arg" <System.Collections.IntStruct>
-;* V13 tmp9 [V13,T04] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
+;* V13 tmp9 [V13,T06] ( 0, 0 ) int -> zero-ref "Inline return value spill temp"
;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inlining Arg" ;* V15 tmp11 [V15 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Span`1[System.Collections.IntStruct]>
-; V16 tmp12 [V16,T02] ( 6,143.22) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
+; V16 tmp12 [V16,T01] ( 6,143.22) byref -> rax single-def "field V00._reference (fldOffset=0x0)" P-INDEP
; V17 tmp13 [V17,T10] ( 2, 2 ) int -> rcx "field V00._length (fldOffset=0x8)" P-INDEP
-; V18 tmp14 [V18,T05] ( 3, 84.06) int -> r10 "field V02._value (fldOffset=0x0)" P-INDEP
+; V18 tmp14 [V18,T03] ( 4, 98.67) int -> r10 "field V02._value (fldOffset=0x0)" P-INDEP
;* V19 tmp15 [V19 ] ( 0, 0 ) byref -> zero-ref "field V06._reference (fldOffset=0x0)" P-INDEP ;* V20 tmp16 [V20 ] ( 0, 0 ) int -> zero-ref "field V06._length (fldOffset=0x8)" P-INDEP ;* V21 tmp17 [V21 ] ( 0, 0 ) byref -> zero-ref "field V07._reference (fldOffset=0x0)" P-INDEP @@ -36,7 +36,7 @@ ;* V24 tmp20 [V24 ] ( 0, 0 ) int -> zero-ref "field V08._length (fldOffset=0x8)" P-INDEP ;* V25 tmp21 [V25 ] ( 0, 0 ) byref -> zero-ref "field V09._reference (fldOffset=0x0)" P-INDEP ;* V26 tmp22 [V26 ] ( 0, 0 ) int -> zero-ref "field V09._length (fldOffset=0x8)" P-INDEP
-; V27 tmp23 [V27,T03] ( 2, 74.03) int -> r9 "field V12._value (fldOffset=0x0)" P-INDEP
+; V27 tmp23 [V27,T05] ( 3, 88.64) int -> r9 "field V12._value (fldOffset=0x0)" P-INDEP
;* V28 tmp24 [V28 ] ( 0, 0 ) byref -> zero-ref "field V15._reference (fldOffset=0x0)" P-INDEP ;* V29 tmp25 [V29 ] ( 0, 0 ) int -> zero-ref "field V15._length (fldOffset=0x8)" P-INDEP ;* V30 tmp26 [V30 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.Span`1[System.Collections.IntStruct]> @@ -56,7 +56,7 @@ G_M24360_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0002 {rcx}, byr xor edx, edx dec ecx test ecx, ecx
- jle SHORT G_M24360_IG08
+ jle SHORT G_M24360_IG12
;; size=14 bbWeight=1 PerfScore 5.75 G_M24360_IG03: ; bbWeight=10.05, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz lea r8d, [rdx+0x01] @@ -77,15 +77,18 @@ G_M24360_IG04: ; bbWeight=29.08, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, G_M24360_IG05: ; bbWeight=39.13, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz ; byrRegs -[r9] test edx, edx
- jl SHORT G_M24360_IG07
+ jl SHORT G_M24360_IG08
;; size=4 bbWeight=39.13 PerfScore 48.91 G_M24360_IG06: ; bbWeight=37.02, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz movsxd r9, edx mov r9d, dword ptr [rax+4*r9] cmp r10d, r9d
- jl SHORT G_M24360_IG04
+ jge SHORT G_M24360_IG10
;; size=12 bbWeight=37.02 PerfScore 129.56
-G_M24360_IG07: ; bbWeight=36.99, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
+G_M24360_IG07: ; bbWeight=22.38, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz + jmp SHORT G_M24360_IG04 + ;; size=2 bbWeight=22.38 PerfScore 44.77 +G_M24360_IG08: ; bbWeight=36.99, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz
inc edx movsxd rdx, edx mov dword ptr [rax+4*rdx], r10d @@ -93,12 +96,24 @@ G_M24360_IG07: ; bbWeight=36.99, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, cmp edx, ecx jl SHORT G_M24360_IG03 ;; size=16 bbWeight=36.99 PerfScore 110.98
-G_M24360_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
+G_M24360_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; byrRegs -[rax] + jmp SHORT G_M24360_IG12 + ;; size=2 bbWeight=1 PerfScore 2.00 +G_M24360_IG10: ; bbWeight=14.61, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz + ; byrRegs +[rax] + cmp r10d, r9d + jle SHORT G_M24360_IG08 + ;; size=5 bbWeight=14.61 PerfScore 18.26 +G_M24360_IG11: ; bbWeight=14.60, gcrefRegs=0000 {}, byrefRegs=0001 {rax}, byref, isz + jmp SHORT G_M24360_IG08 + ;; size=2 bbWeight=14.60 PerfScore 29.20 +G_M24360_IG12: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; byrRegs -[rax] ret ;; size=1 bbWeight=1 PerfScore 1.00
-; Total bytes of code 83, prolog size 0, PerfScore 482.07, instruction count 30, allocated bytes for code 83 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
+; Total bytes of code 94, prolog size 0, PerfScore 576.30, instruction count 35, allocated bytes for code 94 (MethodHash=6d68a0d7) for method System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
; ============================================================ Unwind Info:

+24 (+14.12%) : 101959.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)

@@ -5,22 +5,22 @@ ; optimized using Dynamic PGO ; rsp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 4
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 4
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 6, 3.72) long -> rcx single-def -; V01 arg1 [V01,T00] ( 7, 5 ) ref -> rdx class-hnd <System.Object> -; V02 loc0 [V02,T02] ( 4, 2.57) long -> rax
+; V00 arg0 [V00,T02] ( 6, 3.72) long -> rcx single-def +; V01 arg1 [V01,T01] ( 7, 5 ) ref -> rdx class-hnd <System.Object> +; V02 loc0 [V02,T03] ( 4, 2.57) long -> rax
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T08] ( 4, 0.75) int -> rsi "Inline return value spill temp"
+; V05 tmp1 [V05,T00] ( 4, 25.71) int -> r8 "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V07 tmp3 [V07,T07] ( 4, 1.13) byref -> r8 single-def "Inline stloc first use temp" -; V08 tmp4 [V08,T06] ( 4, 1.20) int -> r10 "Inline stloc first use temp" -; V09 tmp5 [V09,T03] ( 5, 1.52) int -> r9 "Inline stloc first use temp" -; V10 tmp6 [V10,T04] ( 5, 1.38) byref -> r11 "Inline stloc first use temp" -; V11 tmp7 [V11,T05] ( 5, 1.27) int -> rbx "Inline stloc first use temp"
+; V07 tmp3 [V07,T08] ( 4, 1.13) byref -> r8 single-def "Inline stloc first use temp" +; V08 tmp4 [V08,T07] ( 4, 1.20) int -> r10 "Inline stloc first use temp" +; V09 tmp5 [V09,T04] ( 5, 1.52) int -> r9 "Inline stloc first use temp" +; V10 tmp6 [V10,T05] ( 5, 1.38) byref -> r11 "Inline stloc first use temp" +; V11 tmp7 [V11,T06] ( 5, 1.27) int -> rbx "Inline stloc first use temp"
; V12 tmp8 [V12,T10] ( 2, 0.63) long -> rsi "Inline stloc first use temp" ; V13 tmp9 [V13,T09] ( 3, 0.64) long -> rsi "Inline stloc first use temp" ;* V14 tmp10 [V14 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" @@ -39,7 +39,7 @@ G_M60590_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr je SHORT G_M60590_IG03 mov rax, qword ptr [rdx] cmp rax, rcx
- jne SHORT G_M60590_IG05
+ jne SHORT G_M60590_IG08
;; size=13 bbWeight=1 PerfScore 4.50 G_M60590_IG03: ; bbWeight=0.75, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref mov rax, rdx @@ -50,8 +50,23 @@ G_M60590_IG04: ; bbWeight=0.75, epilog, nogc, extend pop rsi ret ;; size=3 bbWeight=0.75 PerfScore 1.50
-G_M60590_IG05: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
+G_M60590_IG05: ; bbWeight=25, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
+ mov r8d, 2 + ;; size=6 bbWeight=25 PerfScore 6.25 +G_M60590_IG06: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + cmp r8d, 1 + je SHORT G_M60590_IG03 + test r8d, r8d + je G_M60590_IG15 + ;; size=15 bbWeight=0.25 PerfScore 0.62 +G_M60590_IG07: ; bbWeight=0.25, epilog, nogc, extend + pop rbx + pop rsi + jmp <unknown method> + ; gcr arg pop 0 + ;; size=7 bbWeight=0.25 PerfScore 0.75 +G_M60590_IG08: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
mov r8, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov r8, gword ptr [r8] ; gcrRegs +[r8] @@ -66,7 +81,7 @@ G_M60590_IG05: ; bbWeight=0.25, gcVars=0000000000000000 {}, gcrefRegs=000 shrx r10, r10, r9 xor r9d, r9d ;; size=51 bbWeight=0.25 PerfScore 2.06
-G_M60590_IG06: ; bbWeight=0.32, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
+G_M60590_IG09: ; bbWeight=0.32, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
lea r11d, [r10+0x01] movsxd r11, r11d lea r11, [r11+2*r11] @@ -76,57 +91,46 @@ G_M60590_IG06: ; bbWeight=0.32, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8} mov rsi, qword ptr [r11+0x08] and ebx, -2 cmp rsi, rax
- jne SHORT G_M60590_IG11
+ jne SHORT G_M60590_IG12
;; size=30 bbWeight=0.32 PerfScore 2.30
-G_M60590_IG07: ; bbWeight=0.22, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
+G_M60590_IG10: ; bbWeight=0.22, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
mov rsi, rcx xor rsi, qword ptr [r11+0x10] cmp rsi, 1
- ja SHORT G_M60590_IG11
+ ja SHORT G_M60590_IG12
;; size=13 bbWeight=0.22 PerfScore 0.97
-G_M60590_IG08: ; bbWeight=0.21, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
+G_M60590_IG11: ; bbWeight=0.21, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
; byrRegs -[r8] cmp ebx, dword ptr [r11]
- jne SHORT G_M60590_IG13 - ;; size=5 bbWeight=0.21 PerfScore 0.86 -G_M60590_IG09: ; bbWeight=0.25, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r11] - cmp esi, 1 - je SHORT G_M60590_IG03 - test esi, esi - je SHORT G_M60590_IG14 - ;; size=9 bbWeight=0.25 PerfScore 0.62 -G_M60590_IG10: ; bbWeight=0.25, epilog, nogc, extend - pop rbx - pop rsi - jmp <unknown method> - ; gcr arg pop 0 - ;; size=7 bbWeight=0.25 PerfScore 0.75 -G_M60590_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, gcvars, byref, isz - ; byrRegs +[r8]
+ jne SHORT G_M60590_IG05 + jmp SHORT G_M60590_IG14 + ;; size=7 bbWeight=0.21 PerfScore 1.29 +G_M60590_IG12: ; bbWeight=0.10, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref + ; byrRegs -[r11] +[r8]
test ebx, ebx
- je SHORT G_M60590_IG13 - ;; size=4 bbWeight=0.10 PerfScore 0.13 -G_M60590_IG12: ; bbWeight=0.32, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
+ je G_M60590_IG05 + ;; size=8 bbWeight=0.10 PerfScore 0.13 +G_M60590_IG13: ; bbWeight=0.32, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
inc r9d add r10d, r9d and r10d, dword ptr [r8+0x04] cmp r9d, 8
- jl SHORT G_M60590_IG06 - ;; size=16 bbWeight=0.32 PerfScore 1.51 -G_M60590_IG13: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M60590_IG09 + jmp G_M60590_IG05 + ;; size=21 bbWeight=0.32 PerfScore 2.14 +G_M60590_IG14: ; bbWeight=0.21, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; byrRegs -[r8]
- mov esi, 2 - jmp SHORT G_M60590_IG09 - ;; size=7 bbWeight=0.04 PerfScore 0.08 -G_M60590_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r8d, esi + jmp G_M60590_IG06 + ;; size=8 bbWeight=0.21 PerfScore 0.48 +G_M60590_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] xor rdx, rdx ; gcrRegs +[rdx] jmp G_M60590_IG03 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 2, PerfScore 17.47, instruction count 54, allocated bytes for code 170 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 194, prolog size 2, PerfScore 25.18, instruction count 57, allocated bytes for code 194 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info:

benchmarks.run_tiered.windows.x64.checked.mch

-19 (-1.78%) : 65941.dasm - System.Collections.Generic.Dictionary2[System.ReadOnlyMemory1[ushort],System.Canon]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Canon,ubyte):ubyte:this (Tier1)

@@ -8,19 +8,19 @@ ; 0 inlinees with PGO data; 15 single block inlinees; 12 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T04] ( 23, 15.50) ref -> rbx this class-hnd single-def <System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.__Canon]>
+; V00 this [V00,T04] ( 23, 16 ) ref -> rbx this class-hnd single-def <System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.__Canon]>
; V01 arg1 [V01,T00] ( 13, 26 ) byref -> rsi ld-addr-op single-def
-; V02 arg2 [V02,T13] ( 4, 3 ) ref -> [rsp+0xC0] class-hnd single-def <System.__Canon> -; V03 arg3 [V03,T14] ( 4, 3 ) ubyte -> [rsp+0xC8] single-def
+; V02 arg2 [V02,T14] ( 4, 3 ) ref -> [rsp+0xC0] class-hnd single-def <System.__Canon> +; V03 arg3 [V03,T13] ( 4, 3.50) ubyte -> rbp single-def
; V04 loc0 [V04,T05] ( 12, 17.50) ref -> r15 class-hnd <<unknown class>> ; V05 loc1 [V05,T12] ( 5, 5.50) ref -> r13 class-hnd single-def <<unknown class>> ; V06 loc2 [V06,T09] ( 8, 12.50) int -> r12 ; V07 loc3 [V07,T02] ( 7, 25 ) int -> rdi
-; V08 loc4 [V08,T24] ( 5, 3.50) byref -> [rsp+0x30]
+; V08 loc4 [V08,T25] ( 5, 3.50) byref -> [rsp+0x30]
; V09 loc5 [V09,T01] ( 9, 26 ) int -> [rsp+0x64]
-; V10 loc6 [V10,T25] ( 6, 3 ) int -> r14
+; V10 loc6 [V10,T26] ( 6, 3 ) int -> rbp
; V11 loc7 [V11,T30] ( 5, 2.50) byref -> r15 single-def
-; V12 loc8 [V12,T38] ( 3, 1.50) int -> r14
+; V12 loc8 [V12,T38] ( 3, 1.50) int -> rbp
; V13 OutArgs [V13 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V14 tmp1 [V14 ] ( 0, 0 ) int -> zero-ref ; V15 tmp2 [V15,T32] ( 3, 2 ) int -> r12 @@ -31,10 +31,10 @@ ;* V20 tmp7 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V21 tmp8 [V21,T39] ( 3, 1.50) int -> r12 "Inline return value spill temp" ;* V22 tmp9 [V22 ] ( 0, 0 ) byref -> zero-ref "Inline return value spill temp"
-; V23 tmp10 [V23,T15] ( 4, 4 ) ref -> [rsp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
+; V23 tmp10 [V23,T16] ( 4, 4 ) ref -> [rsp+0x28] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
; V24 tmp11 [V24,T11] ( 3, 6 ) int -> rcx "Inlining Arg"
-; V25 tmp12 [V25,T19] ( 2, 4 ) long -> r10 "Inlining Arg" -; V26 tmp13 [V26,T16] ( 4, 4 ) int -> [rsp+0x60] spill-single-def "Inline stloc first use temp"
+; V25 tmp12 [V25,T20] ( 2, 4 ) long -> r10 "Inlining Arg" +; V26 tmp13 [V26,T17] ( 4, 4 ) int -> [rsp+0x60] spill-single-def "Inline stloc first use temp"
;* V27 tmp14 [V27 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V28 tmp15 [V28 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V29 tmp16 [V29 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -56,12 +56,12 @@ ;* V45 tmp32 [V45 ] ( 0, 0 ) ref -> zero-ref "field V01._object (fldOffset=0x0)" P-INDEP ;* V46 tmp33 [V46 ] ( 0, 0 ) int -> zero-ref "field V01._index (fldOffset=0x8)" P-INDEP ;* V47 tmp34 [V47 ] ( 0, 0 ) int -> zero-ref "field V01._length (fldOffset=0xc)" P-INDEP
-; V48 tmp35 [V48,T17] ( 2, 4 ) ref -> r10 "field V31._object (fldOffset=0x0)" P-INDEP -; V49 tmp36 [V49,T20] ( 2, 4 ) int -> r9 "field V31._index (fldOffset=0x8)" P-INDEP -; V50 tmp37 [V50,T21] ( 2, 4 ) int -> rdx "field V31._length (fldOffset=0xc)" P-INDEP -; V51 tmp38 [V51,T18] ( 2, 4 ) ref -> r11 "field V32._object (fldOffset=0x0)" P-INDEP -; V52 tmp39 [V52,T22] ( 2, 4 ) int -> rbp "field V32._index (fldOffset=0x8)" P-INDEP -; V53 tmp40 [V53,T23] ( 2, 4 ) int -> r14 "field V32._length (fldOffset=0xc)" P-INDEP
+; V48 tmp35 [V48,T18] ( 2, 4 ) ref -> r10 "field V31._object (fldOffset=0x0)" P-INDEP +; V49 tmp36 [V49,T21] ( 2, 4 ) int -> r9 "field V31._index (fldOffset=0x8)" P-INDEP +; V50 tmp37 [V50,T22] ( 2, 4 ) int -> rdx "field V31._length (fldOffset=0xc)" P-INDEP +; V51 tmp38 [V51,T19] ( 2, 4 ) ref -> r11 "field V32._object (fldOffset=0x0)" P-INDEP +; V52 tmp39 [V52,T23] ( 2, 4 ) int -> r14 "field V32._index (fldOffset=0x8)" P-INDEP +; V53 tmp40 [V53,T24] ( 2, 4 ) int -> rax "field V32._length (fldOffset=0xc)" P-INDEP
;* V54 tmp41 [V54 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlyMemory`1[ushort]> ; V55 tmp42 [V55,T34] ( 2, 2 ) int -> rcx "argument with side effect" ; V56 tmp43 [V56 ] ( 4, 10 ) struct (16) [rsp+0x50] do-not-enreg[XS] must-init addr-exposed "by-value struct argument" <System.ReadOnlyMemory`1[ushort]> @@ -77,7 +77,7 @@ ; V66 cse4 [V66,T42] ( 3, 1.50) int -> rcx "CSE - moderate" ; V67 cse5 [V67,T03] ( 10, 22.50) int -> [rsp+0x3C] hoist multi-def "CSE - aggressive" ; V68 cse6 [V68,T10] ( 13, 6.50) ref -> rdx multi-def "CSE - aggressive"
-; V69 cse7 [V69,T26] ( 6, 3 ) int -> rbx multi-def "CSE - moderate"
+; V69 cse7 [V69,T15] ( 6, 4 ) int -> rbx multi-def "CSE - moderate"
; ; Lcl frame size = 104 @@ -96,19 +96,19 @@ G_M54288_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, vmovdqu ymmword ptr [rsp+0x40], ymm4 mov gword ptr [rsp+0xC0], r8 ; GC ptr vars +{V02}
- mov dword ptr [rsp+0xC8], r9d
mov rbx, rcx ; gcrRegs +[rbx] mov rsi, rdx ; byrRegs +[rsi]
- ;; size=51 bbWeight=1 PerfScore 14.08 -G_M54288_IG02: ; bbWeight=1, gcVars=0000000000002000 {V02}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+ mov ebp, r9d + ;; size=46 bbWeight=1 PerfScore 13.33 +G_M54288_IG02: ; bbWeight=1, gcVars=0000000000004000 {V02}, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz
cmp gword ptr [rbx+0x08], 0
- mov rbp, gword ptr [rsp+0xC0] - ; gcrRegs +[rbp]
+ mov r14, gword ptr [rsp+0xC0] + ; gcrRegs +[r14]
jne SHORT G_M54288_IG04 ;; size=15 bbWeight=1 PerfScore 5.00
-G_M54288_IG03: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, gcvars, byref
+G_M54288_IG03: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, gcvars, byref
; GC ptr vars -{V02} mov rcx, rbx ; gcrRegs +[rcx] @@ -117,11 +117,11 @@ G_M54288_IG03: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=002 ; gcrRegs -[rcx] ; gcr arg pop 0 ;; size=11 bbWeight=0.50 PerfScore 1.75
-G_M54288_IG04: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG04: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
cmp gword ptr [rbx+0x08], 0 jne SHORT G_M54288_IG06 ;; size=7 bbWeight=1 PerfScore 4.00
-G_M54288_IG05: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, byref
+G_M54288_IG05: ; bbWeight=0.50, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref
mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] mov rcx, rdx @@ -130,13 +130,13 @@ G_M54288_IG05: ; bbWeight=0.50, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M54288_IG06: ; bbWeight=1, gcrefRegs=0028 {rbx rbp}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG06: ; bbWeight=1, gcrefRegs=4008 {rbx r14}, byrefRegs=0040 {rsi}, byref, isz
mov r15, gword ptr [rbx+0x10] ; gcrRegs +[r15] test r15, r15 jne SHORT G_M54288_IG08 ;; size=9 bbWeight=1 PerfScore 3.25
-G_M54288_IG07: ; bbWeight=0.50, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, byref
+G_M54288_IG07: ; bbWeight=0.50, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E @@ -145,13 +145,13 @@ G_M54288_IG07: ; bbWeight=0.50, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=26 bbWeight=0.50 PerfScore 1.75
-G_M54288_IG08: ; bbWeight=1, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG08: ; bbWeight=1, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref, isz
mov r13, gword ptr [rbx+0x18] ; gcrRegs +[r13] test r13, r13 je SHORT G_M54288_IG11 ;; size=9 bbWeight=1 PerfScore 3.25
-G_M54288_IG09: ; bbWeight=0.50, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref, nogc
+G_M54288_IG09: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, byref, nogc
vmovdqu xmm0, xmmword ptr [rsi] vmovdqu xmmword ptr [rsp+0x50], xmm0 ;; size=10 bbWeight=0.50 PerfScore 2.50 @@ -166,13 +166,13 @@ G_M54288_IG10: ; bbWeight=0.50, isz, extend mov r12d, eax jmp SHORT G_M54288_IG13 ;; size=26 bbWeight=0.50 PerfScore 3.12
-G_M54288_IG11: ; bbWeight=0.50, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG11: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, byref, isz
cmp gword ptr [rsi], 0 jne SHORT G_M54288_IG12 xor r12d, r12d jmp SHORT G_M54288_IG13 ;; size=11 bbWeight=0.50 PerfScore 3.12
-G_M54288_IG12: ; bbWeight=0.50, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref
+G_M54288_IG12: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, byref
mov rcx, gword ptr [rsi] ; gcrRegs +[rcx] call <unknown method> @@ -185,7 +185,7 @@ G_M54288_IG12: ; bbWeight=0.50, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRe ; gcr arg pop 0 mov r12d, eax ;; size=26 bbWeight=0.50 PerfScore 5.25
-G_M54288_IG13: ; bbWeight=1, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG13: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, byref, isz
xor edi, edi mov r8, gword ptr [rbx+0x08] ; gcrRegs +[r8] @@ -207,7 +207,7 @@ G_M54288_IG13: ; bbWeight=1, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs= cmp edx, r10d je SHORT G_M54288_IG15 ;; size=61 bbWeight=1 PerfScore 40.75
-G_M54288_IG14: ; bbWeight=0.50, gcVars=0000000000008000 {V23}, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, gcvars, byref
+G_M54288_IG14: ; bbWeight=0.50, gcVars=0000000000010000 {V23}, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref
; gcrRegs -[r8] mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] @@ -217,12 +217,12 @@ G_M54288_IG14: ; bbWeight=0.50, gcVars=0000000000008000 {V23}, gcrefRegs= ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.75
-G_M54288_IG15: ; bbWeight=1, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs=0040 {rsi}, byref
+G_M54288_IG15: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0040 {rsi}, byref
mov r10d, dword ptr [rsp+0x60] mov r8, gword ptr [rsp+0x28] ; gcrRegs +[r8] cmp r10d, dword ptr [r8+0x08]
- jae G_M54288_IG42
+ jae G_M54288_IG43
mov ecx, r10d lea rax, bword ptr [r8+4*rcx+0x10] ; byrRegs +[rax] @@ -234,13 +234,13 @@ G_M54288_IG15: ; bbWeight=1, gcrefRegs=A028 {rbx rbp r13 r15}, byrefRegs= test r13, r13 jne G_M54288_IG27 ;; size=48 bbWeight=1 PerfScore 11.75
-G_M54288_IG16: ; bbWeight=0.50, gcVars=0000000001000000 {V08}, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, gcvars, byref
+G_M54288_IG16: ; bbWeight=0.50, gcVars=0000000002000000 {V08}, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, gcvars, byref
; gcrRegs -[r13] ; byrRegs -[rax] ; GC ptr vars -{V23} mov r13d, dword ptr [r15+0x08] ;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M54288_IG17: ; bbWeight=4, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 {rsi}, byref, isz
+G_M54288_IG17: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0040 {rsi}, byref, isz
cmp r13d, r8d jbe G_M54288_IG34 mov ecx, r8d @@ -250,8 +250,8 @@ G_M54288_IG17: ; bbWeight=4, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0040 cmp dword ptr [rcx+0x08], r12d jne SHORT G_M54288_IG19 ;; size=27 bbWeight=4 PerfScore 28.00
-G_M54288_IG18: ; bbWeight=2, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0042 {rcx rsi}, byref, isz - mov gword ptr [rsp+0xC0], rbp
+G_M54288_IG18: ; bbWeight=2, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0042 {rcx rsi}, byref, isz + mov gword ptr [rsp+0xC0], r14
; GC ptr vars +{V02} mov rdx, rcx ; byrRegs +[rdx] @@ -262,67 +262,67 @@ G_M54288_IG18: ; bbWeight=2, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0042 ; byrRegs -[rdx] mov r11, gword ptr [rsi] ; gcrRegs +[r11]
- mov ebp, dword ptr [rsi+0x08] - ; gcrRegs -[rbp] - mov r14d, dword ptr [rsi+0x0C]
+ mov r14d, dword ptr [rsi+0x08] + ; gcrRegs -[r14] + mov eax, dword ptr [rsi+0x0C]
cmp r10, r11 jne SHORT G_M54288_IG21
- cmp r9d, ebp
+ cmp r9d, r14d
jne SHORT G_M54288_IG20
- cmp edx, r14d - mov rbp, gword ptr [rsp+0xC0] - ; gcrRegs +[rbp]
+ cmp edx, eax + mov r14, gword ptr [rsp+0xC0] + ; gcrRegs +[r14]
je SHORT G_M54288_IG22
- ;; size=55 bbWeight=2 PerfScore 36.00 -G_M54288_IG19: ; bbWeight=4, gcrefRegs=8028 {rbx rbp r15}, byrefRegs=0042 {rcx rsi}, byref, isz
+ ;; size=54 bbWeight=2 PerfScore 36.00 +G_M54288_IG19: ; bbWeight=4, gcrefRegs=C008 {rbx r14 r15}, byrefRegs=0042 {rcx rsi}, byref, isz
; gcrRegs -[r10-r11] ; GC ptr vars -{V02} mov r8d, dword ptr [rcx+0x0C] inc edi cmp r13d, edi
- jb G_M54288_IG43
+ jb G_M54288_IG44
jmp SHORT G_M54288_IG17 ...

-25 (-1.75%) : 45622.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)

@@ -22,7 +22,7 @@ ; V11 loc7 [V11,T09] ( 19, 42 ) ushort -> r13 ;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 loc9 [V13,T42] ( 3, 6 ) ubyte -> rax
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [rbp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [rbp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T17] ( 7, 14 ) ushort -> r12 ;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune> ; V17 loc13 [V17,T30] ( 4, 8 ) int -> r13 @@ -348,15 +348,17 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rbp+0x40], ecx
+ mov edi, r12d
jmp G_M13139_IG47
- ;; size=42 bbWeight=2 PerfScore 22.00
+ ;; size=45 bbWeight=2 PerfScore 22.50
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref ; byrRegs -[rax] lea rcx, [rbp+0x38] call [<unknown method>] ; gcr arg pop 0
+ mov edi, r12d
jmp G_M13139_IG47
- ;; size=15 bbWeight=2 PerfScore 11.00
+ ;; size=18 bbWeight=2 PerfScore 11.50
G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz cmp r13d, 127 jg SHORT G_M13139_IG22 @@ -381,9 +383,8 @@ G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr ;; size=13 bbWeight=2 PerfScore 7.50 G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref add edi, 2
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=11 bbWeight=2 PerfScore 5.00
+ ;; size=8 bbWeight=2 PerfScore 4.50
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref mov dword ptr [rsp+0x20], 1 movsxd rcx, edi @@ -397,9 +398,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr call [<unknown method>] ; gcr arg pop 0 lea edi, [rax+rdi-0x01]
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=51 bbWeight=2 PerfScore 21.00
+ ;; size=48 bbWeight=2 PerfScore 20.50
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz mov ecx, dword ptr [rbp+0x40] mov rax, bword ptr [rbp+0x48] @@ -411,17 +411,15 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rbp+0x40], ecx
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=37 bbWeight=2 PerfScore 18.00
+ ;; size=34 bbWeight=2 PerfScore 17.50
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref ; byrRegs -[rax] lea rcx, [rbp+0x38] call [<unknown method>] ; gcr arg pop 0
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=18 bbWeight=2 PerfScore 11.50
+ ;; size=15 bbWeight=2 PerfScore 11.00
G_M13139_IG25: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref cmp r13d, 127 jle G_M13139_IG45 @@ -629,18 +627,15 @@ G_M13139_IG42: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, by cmp r12d, r13d jl G_M13139_IG37 ;; size=107 bbWeight=16 PerfScore 268.00
-G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M13139_IG43: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
; byrRegs -[rcx] cmp byte ptr [rbp+0x30], 0
- je SHORT G_M13139_IG44
+ je SHORT G_M13139_IG47 + ;; size=6 bbWeight=4 PerfScore 12.00 +G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
inc edi
- mov r12d, edi
jmp SHORT G_M13139_IG47
- ;; size=13 bbWeight=2 PerfScore 11.00 -G_M13139_IG44: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz - mov r12d, edi - jmp SHORT G_M13139_IG47 - ;; size=5 bbWeight=1 PerfScore 2.25
+ ;; size=4 bbWeight=2 PerfScore 4.50
G_M13139_IG45: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz mov ecx, dword ptr [rbp+0x40] mov rax, bword ptr [rbp+0x48] @@ -652,22 +647,19 @@ G_M13139_IG45: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rbp+0x40], ecx
- mov r12d, edi
jmp SHORT G_M13139_IG47
- ;; size=34 bbWeight=2 PerfScore 18.00
+ ;; size=31 bbWeight=2 PerfScore 17.50
G_M13139_IG46: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref ; byrRegs -[rax] lea rcx, [rbp+0x38] call [<unknown method>] ; gcr arg pop 0
- mov r12d, edi - ;; size=13 bbWeight=2 PerfScore 7.50
+ ;; size=10 bbWeight=2 PerfScore 7.00
G_M13139_IG47: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
- inc r12d - cmp r12d, esi - mov edi, r12d
+ inc edi + cmp edi, esi
jl G_M13139_IG07
- ;; size=15 bbWeight=4 PerfScore 7.00
+ ;; size=10 bbWeight=4 PerfScore 6.00
G_M13139_IG48: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r15] lea rcx, [rbp+0x38] @@ -714,7 +706,7 @@ G_M13139_IG53: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1428, prolog size 65, PerfScore 1090.08, instruction count 385, allocated bytes for code 1428 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
+; Total bytes of code 1403, prolog size 65, PerfScore 1090.33, instruction count 377, allocated bytes for code 1403 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
; ============================================================ Unwind Info:

-25 (-1.75%) : 21491.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)

@@ -22,7 +22,7 @@ ; V11 loc7 [V11,T09] ( 19, 42 ) ushort -> r13 ;* V12 loc8 [V12 ] ( 0, 0 ) int -> zero-ref ; V13 loc9 [V13,T42] ( 3, 6 ) ubyte -> rax
-; V14 loc10 [V14 ] ( 5, 10 ) ubyte -> [rbp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
+; V14 loc10 [V14 ] ( 5, 12 ) ubyte -> [rbp+0x30] do-not-enreg[X] addr-exposed ld-addr-op
; V15 loc11 [V15,T17] ( 7, 14 ) ushort -> r12 ;* V16 loc12 [V16 ] ( 0, 0 ) struct ( 8) zero-ref ld-addr-op <System.Text.Rune> ; V17 loc13 [V17,T30] ( 4, 8 ) int -> r13 @@ -349,15 +349,17 @@ G_M13139_IG17: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rbp+0x40], ecx
+ mov edi, r12d
jmp G_M13139_IG47
- ;; size=42 bbWeight=2 PerfScore 22.00
+ ;; size=45 bbWeight=2 PerfScore 22.50
G_M13139_IG18: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref ; byrRegs -[rax] lea rcx, [rbp+0x38] call [<unknown method>] ; gcr arg pop 0
+ mov edi, r12d
jmp G_M13139_IG47
- ;; size=15 bbWeight=2 PerfScore 11.00
+ ;; size=18 bbWeight=2 PerfScore 11.50
G_M13139_IG19: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz cmp r13d, 127 jg SHORT G_M13139_IG22 @@ -382,9 +384,8 @@ G_M13139_IG20: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr ;; size=13 bbWeight=2 PerfScore 7.50 G_M13139_IG21: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref add edi, 2
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=11 bbWeight=2 PerfScore 5.00
+ ;; size=8 bbWeight=2 PerfScore 4.50
G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref mov dword ptr [rsp+0x20], 1 movsxd rcx, edi @@ -398,9 +399,8 @@ G_M13139_IG22: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr call [<unknown method>] ; gcr arg pop 0 lea edi, [rax+rdi-0x01]
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=51 bbWeight=2 PerfScore 21.00
+ ;; size=48 bbWeight=2 PerfScore 20.50
G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz mov ecx, dword ptr [rbp+0x40] mov rax, bword ptr [rbp+0x48] @@ -412,17 +412,15 @@ G_M13139_IG23: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rbp+0x40], ecx
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=37 bbWeight=2 PerfScore 18.00
+ ;; size=34 bbWeight=2 PerfScore 17.50
G_M13139_IG24: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref ; byrRegs -[rax] lea rcx, [rbp+0x38] call [<unknown method>] ; gcr arg pop 0
- mov r12d, edi
jmp G_M13139_IG47
- ;; size=18 bbWeight=2 PerfScore 11.50
+ ;; size=15 bbWeight=2 PerfScore 11.00
G_M13139_IG25: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref cmp r13d, 127 jle G_M13139_IG45 @@ -630,18 +628,15 @@ G_M13139_IG42: ; bbWeight=16, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, by cmp r12d, r13d jl G_M13139_IG37 ;; size=107 bbWeight=16 PerfScore 268.00
-G_M13139_IG43: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
+G_M13139_IG43: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
; byrRegs -[rcx] cmp byte ptr [rbp+0x30], 0
- je SHORT G_M13139_IG44
+ je SHORT G_M13139_IG47 + ;; size=6 bbWeight=4 PerfScore 12.00 +G_M13139_IG44: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz
inc edi
- mov r12d, edi
jmp SHORT G_M13139_IG47
- ;; size=13 bbWeight=2 PerfScore 11.00 -G_M13139_IG44: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz - mov r12d, edi - jmp SHORT G_M13139_IG47 - ;; size=5 bbWeight=1 PerfScore 2.25
+ ;; size=4 bbWeight=2 PerfScore 4.50
G_M13139_IG45: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref, isz mov ecx, dword ptr [rbp+0x40] mov rax, bword ptr [rbp+0x48] @@ -653,22 +648,19 @@ G_M13139_IG45: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byr mov word ptr [rax+2*r8], dx inc ecx mov dword ptr [rbp+0x40], ecx
- mov r12d, edi
jmp SHORT G_M13139_IG47
- ;; size=34 bbWeight=2 PerfScore 18.00
+ ;; size=31 bbWeight=2 PerfScore 17.50
G_M13139_IG46: ; bbWeight=2, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref ; byrRegs -[rax] lea rcx, [rbp+0x38] call [<unknown method>] ; gcr arg pop 0
- mov r12d, edi - ;; size=13 bbWeight=2 PerfScore 7.50
+ ;; size=10 bbWeight=2 PerfScore 7.00
G_M13139_IG47: ; bbWeight=4, gcrefRegs=0000 {}, byrefRegs=8000 {r15}, byref
- inc r12d - cmp r12d, esi - mov edi, r12d
+ inc edi + cmp edi, esi
jl G_M13139_IG07
- ;; size=15 bbWeight=4 PerfScore 7.00
+ ;; size=10 bbWeight=4 PerfScore 6.00
G_M13139_IG48: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz ; byrRegs -[r15] lea rcx, [rbp+0x38] @@ -715,7 +707,7 @@ G_M13139_IG53: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 1428, prolog size 65, PerfScore 1092.08, instruction count 386, allocated bytes for code 1428 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
+; Total bytes of code 1403, prolog size 65, PerfScore 1092.33, instruction count 378, allocated bytes for code 1403 (MethodHash=c581ccac) for method System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
; ============================================================ Unwind Info:

+23 (+0.75%) : 48350.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)

@@ -8,25 +8,25 @@ ; 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
+; V01 arg1 [V01,T18] ( 32, 86.26) int -> rdx single-def +; V02 arg2 [V02,T51] ( 7, 6.54) ref -> [rsp+0x80] class-hnd single-def <int[]> +; V03 arg3 [V03,T47] ( 7, 11 ) 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
+; V06 loc2 [V06,T64] ( 24, 98.00) double -> mm1
; V07 loc3 [V07,T04] (105,379.26) int -> r11
-; V08 loc4 [V08,T01] (116,444.00) int -> rsi
+; V08 loc4 [V08,T01] (116,448.54) int -> rsi
; V09 loc5 [V09,T00] ( 85,623.32) int -> r13
-; V10 loc6 [V10,T34] ( 24, 25.68) int -> r10
+; V10 loc6 [V10,T33] ( 24, 29.72) 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[]> ; 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[]> ; 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"
+; V17 tmp5 [V17,T69] ( 4, 16 ) 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"
+;* V19 tmp7 [V19,T46] ( 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" @@ -40,15 +40,15 @@ ; 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"
+; V33 tmp21 [V33,T36] ( 6, 24 ) ref -> registers "arr expr" +; V34 tmp22 [V34,T43] ( 5, 16.08) ref -> registers "arr expr" +; V35 tmp23 [V35,T44] ( 5, 16.08) ref -> registers "arr expr" +; V36 tmp24 [V36,T45] ( 5, 16.08) ref -> rax "arr expr" +; V37 tmp25 [V37,T37] ( 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,T17] ( 9, 96.00) ref -> rax "arr expr"
-; V41 cse0 [V41,T38] ( 5, 17.00) ref -> r12 hoist multi-def "CSE - moderate"
+; V41 cse0 [V41,T41] ( 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" @@ -57,32 +57,32 @@ ; 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"
+; V50 cse9 [V50,T40] ( 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"
+; V52 cse11 [V52,T34] ( 6, 18.82) ref -> rax hoist multi-def "CSE - moderate"
; V53 cse12 [V53,T28] ( 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"
+; V55 cse14 [V55,T48] ( 4, 11.88) ref -> r11 "CSE - moderate" +; V56 cse15 [V56,T42] ( 4, 16.84) ref -> r15 hoist multi-def "CSE - moderate" +; V57 cse16 [V57,T38] ( 5, 19.80) 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"
+; V62 cse21 [V62,T39] ( 5, 19.80) int -> r11 "CSE - moderate" +; V63 cse22 [V63,T55] ( 4, 4.29) int -> [rsp+0x24] hoist multi-def "CSE - moderate" +; V64 cse23 [V64,T49] ( 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"
+; V66 cse25 [V66,T58] ( 4, 1.11) int -> [rsp+0x20] spill-single-def "CSE - moderate" +; V67 cse26 [V67,T07] ( 34,253.48) 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"
+; V71 cse30 [V71,T50] ( 6, 9.92) 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 @@ -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] @@ -179,14 +179,14 @@ G_M50743_IG14: ; bbWeight=3.96, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 { vxorps xmm1, xmm1, xmm1 vucomisd xmm0, xmm1 jp SHORT G_M50743_IG15
- je G_M50743_IG110
+ je G_M50743_IG111
;; size=16 bbWeight=3.96 PerfScore 17.16 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, 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 PerfScore 2.00
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, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
; gcrRegs -[rax] xor esi, esi test edx, edx
- jle G_M50743_IG108 - ;; size=10 bbWeight=0.50 PerfScore 0.75
+ jle G_M50743_IG109 + ;; size=10 bbWeight=1 PerfScore 1.50
G_M50743_IG24: ; bbWeight=0.25, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref test rcx, rcx
- je G_M50743_IG81
+ je G_M50743_IG82
test r8, r8
- je G_M50743_IG81
+ je G_M50743_IG82
mov ebx, dword ptr [rcx+0x08] cmp ebx, edx
- jl G_M50743_IG81
+ jl G_M50743_IG82 + mov gword ptr [rsp+0x80], r8 + ; GC ptr vars +{V02}
cmp dword ptr [r8+0x08], edx
- jl G_M50743_IG81
+ jl G_M50743_IG33
lea edi, [rdx-0x01]
- mov dword ptr [rsp+0x34], edi - ;; size=46 bbWeight=0.25 PerfScore 2.81 -G_M50743_IG25: ; bbWeight=3.96, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+ mov dword ptr [rsp+0x24], edi + ;; size=54 bbWeight=0.25 PerfScore 3.06 +G_M50743_IG25: ; bbWeight=3.96, gcVars=00000000000000000008000000000000 {V02}, gcrefRegs=0002 {rcx}, byrefRegs=0200 {r9}, gcvars, byref + ; gcrRegs -[r8]
test esi, esi
- je G_M50743_IG41
+ je G_M50743_IG42
;; size=8 bbWeight=3.96 PerfScore 4.95
-G_M50743_IG26: ; bbWeight=1.98, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+G_M50743_IG26: ; bbWeight=1.98, gcrefRegs=0002 {rcx}, byrefRegs=0200 {r9}, byref
xor r11d, r11d test esi, esi
- jle G_M50743_IG41
+ jle G_M50743_IG42
;; size=11 bbWeight=1.98 PerfScore 2.97
-G_M50743_IG27: ; bbWeight=0.99, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+G_M50743_IG27: ; bbWeight=0.99, gcrefRegs=0002 {rcx}, byrefRegs=0200 {r9}, byref
cmp ebx, esi
- jl G_M50743_IG36
+ jl G_M50743_IG37
mov ebp, esi ;; size=10 bbWeight=0.99 PerfScore 1.49
-G_M50743_IG28: ; bbWeight=15.68, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 {r9}, byref
+G_M50743_IG28: ; bbWeight=15.68, gcrefRegs=0002 {rcx}, byrefRegs=0200 {r9}, byref
mov eax, r11d mov r14, gword ptr [rcx+8*rax+0x10] ; gcrRegs +[r14] @@ -289,26 +292,26 @@ G_M50743_IG28: ; bbWeight=15.68, gcrefRegs=0102 {rcx r8}, byrefRegs=0200 ; gcrRegs +[rax] mov r15d, dword ptr [rax+0x08] cmp esi, r15d
- jae G_M50743_IG112
...

+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:

+23 (+3.45%) : 16095.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)

@@ -9,8 +9,8 @@ ; 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 -> [rsp+0x1D0] single-def tier0-frame -; V01 arg0 [V01,T15] ( 5, 5.04) byref -> rdx ld-addr-op single-def
+; V00 RetBuf [V00,T15] ( 6, 6 ) byref -> [rsp+0x1D0] single-def tier0-frame +; V01 arg0 [V01,T17] ( 5, 5.04) byref -> rdx ld-addr-op single-def
;* 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 -> [rsp+0x178] tier0-frame @@ -18,15 +18,15 @@ ; V06 loc3 [V06,T25] ( 3, 1.02) struct (16) [rsp+0x160] do-not-enreg[SF] ld-addr-op tier0-frame <System.Span`1[int]> ; V07 loc4 [V07,T26] ( 3, 1.02) struct (16) [rsp+0x150] do-not-enreg[SF] ld-addr-op tier0-frame <System.Span`1[int]> ; V08 loc5 [V08,T06] ( 5, 33 ) ref -> rsi class-hnd exact <int[]>
-; V09 loc6 [V09,T20] ( 4, 4 ) ref -> [rsp+0x140] class-hnd exact tier0-frame <System.Collections.Frozen.FrozenHashTable+Bucket[]>
+; V09 loc6 [V09,T19] ( 4, 6 ) ref -> [rsp+0x140] class-hnd exact tier0-frame <System.Collections.Frozen.FrozenHashTable+Bucket[]>
; V10 loc7 [V10,T01] ( 12, 82 ) int -> [rsp+0x13C] tier0-frame ;* V11 loc8 [V11 ] ( 0, 0 ) int -> zero-ref ;* V12 loc9 [V12 ] ( 0, 0 ) int -> zero-ref ;* V13 loc10 [V13 ] ( 0, 0 ) int -> zero-ref ;* V14 loc11 [V14 ] ( 0, 0 ) byref -> zero-ref
-; V15 loc12 [V15,T07] ( 15, 23.52) int -> [rsp+0x124] tier0-frame -; V16 loc13 [V16,T12] ( 10, 14 ) int -> registers -; V17 loc14 [V17,T05] ( 8, 36 ) int -> r13
+; V15 loc12 [V15,T07] ( 15, 25.54) int -> [rsp+0x124] tier0-frame +; V16 loc13 [V16,T13] ( 10, 16 ) int -> registers +; V17 loc14 [V17,T05] ( 8, 38 ) int -> r13
; V18 loc15 [V18,T00] ( 13, 82.16) int -> r15 ; V19 loc16 [V19,T03] ( 6, 48 ) byref -> registers ; V20 OutArgs [V20 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -48,8 +48,8 @@ ;* 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,T17] ( 6, 6 ) int -> rax "field V23.StartIndex (fldOffset=0x0)" P-INDEP -; V40 tmp20 [V40,T21] ( 4, 4 ) int -> r15 "field V23.EndIndex (fldOffset=0x4)" P-INDEP
+; V39 tmp19 [V39,T14] ( 6, 12 ) int -> rax "field V23.StartIndex (fldOffset=0x0)" P-INDEP +; V40 tmp20 [V40,T16] ( 4, 8 ) int -> r15 "field V23.EndIndex (fldOffset=0x4)" P-INDEP
; V41 tmp21 [V41,T22] ( 2, 2 ) ref -> rdx single-def "field V24._buckets (fldOffset=0x0)" P-INDEP ; V42 tmp22 [V42,T23] ( 2, 2 ) ref -> rsi single-def "field V24.<HashCodes>k__BackingField (fldOffset=0x8)" P-INDEP ; V43 tmp23 [V43,T24] ( 2, 2 ) long -> rdi "field V24._fastModMultiplier (fldOffset=0x10)" P-INDEP @@ -61,16 +61,16 @@ ;* V49 tmp29 [V49 ] ( 0, 0 ) int -> zero-ref "field V31._length (fldOffset=0x8)" P-INDEP ;* V50 tmp30 [V50 ] ( 0, 0 ) byref -> zero-ref "field V33._reference (fldOffset=0x0)" P-INDEP ;* V51 tmp31 [V51 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP
-; V52 tmp32 [V52,T08] ( 3, 16.01) byref -> rcx 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 -> [rsp+0x28] spill-single-def "V06.[000..008)" -; V55 tmp35 [V55,T19] ( 3, 4.01) int -> [rsp+0x34] spill-single-def "V06.[008..012)" -; V56 tmp36 [V56,T09] ( 3, 16.01) byref -> r9 single-def "V07.[000..008)" -; V57 tmp37 [V57,T11] ( 3, 16.01) int -> r11 "V07.[008..012)"
+; V52 tmp32 [V52,T09] ( 3, 16.01) byref -> rcx single-def "V01.[000..008)" +; V53 tmp33 [V53,T11] ( 3, 16.01) int -> rdx "V01.[008..012)" +; V54 tmp34 [V54,T20] ( 3, 4.01) byref -> [rsp+0x28] spill-single-def "V06.[000..008)" +; V55 tmp35 [V55,T21] ( 3, 4.01) int -> [rsp+0x34] spill-single-def "V06.[008..012)" +; V56 tmp36 [V56,T10] ( 3, 16.01) byref -> r9 single-def "V07.[000..008)" +; V57 tmp37 [V57,T12] ( 3, 16.01) int -> r11 "V07.[008..012)"
;* V58 tmp38 [V58 ] ( 0, 0 ) struct (16) zero-ref do-not-enreg[XSF] addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[int]>
-; V59 tmp39 [V59,T13] ( 6, 12 ) byref -> r13 "BlockOp address local" -; V60 cse0 [V60,T16] ( 5, 6.02) int -> rbp "CSE - moderate" -; V61 cse1 [V61,T04] ( 3, 47.52) long -> rdi "CSE - aggressive"
+; V59 tmp39 [V59,T08] ( 6, 24 ) byref -> r13 "BlockOp address local" +; V60 cse0 [V60,T18] ( 5, 6.04) int -> rbp "CSE - moderate" +; V61 cse1 [V61,T04] ( 3, 47.52) long -> r8 "CSE - aggressive"
; ; Lcl frame size = 56 @@ -88,8 +88,8 @@ G_M19183_IG01: ; bbWeight=0.01, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov rdi, gword ptr [rsp+0x140] ; gcrRegs +[rdi] ;; size=68 bbWeight=0.01 PerfScore 0.11
-G_M19183_IG02: ; bbWeight=0.01, gcVars=0000000008004000 {V00 V05}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0004 {rdx}, gcvars, byref - ; GC ptr vars +{V00 V05}
+G_M19183_IG02: ; bbWeight=0.01, gcVars=0000000008008000 {V00 V05}, gcrefRegs=00C0 {rsi rdi}, byrefRegs=0004 {rdx}, gcvars, byref + ; GC ptr vars +{V00 V05 V15}
mov rcx, bword ptr [rdx] ; byrRegs +[rcx] mov edx, dword ptr [rdx+0x08] @@ -114,9 +114,9 @@ G_M19183_IG02: ; bbWeight=0.01, gcVars=0000000008004000 {V00 V05}, gcrefR cmp ebp, r14d jle G_M19183_IG15 ;; size=92 bbWeight=0.01 PerfScore 0.17
-G_M19183_IG03: ; bbWeight=0.50, gcVars=0000000000140000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=030A {rcx rbx r8 r9}, gcvars, byref
+G_M19183_IG03: ; bbWeight=0.50, gcVars=0000000000180000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=030A {rcx rbx r8 r9}, gcvars, byref
; gcrRegs -[rdi]
- ; GC ptr vars -{V00 V05}
+ ; GC ptr vars -{V00 V05 V15}
test r14d, r14d jl G_M19183_IG10 ;; size=9 bbWeight=0.50 PerfScore 0.62 @@ -139,29 +139,29 @@ G_M19183_IG05: ; bbWeight=1.98, gcrefRegs=0041 {rax rsi}, byrefRegs=020A mov bword ptr [rsp+0x1D0], rbx ; GC ptr vars +{V00} ;; size=30 bbWeight=1.98 PerfScore 6.93
-G_M19183_IG06: ; bbWeight=15.84, gcVars=0000000008144000 {V00 V05 V09 V54}, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, gcvars, byref, isz
+G_M19183_IG06: ; bbWeight=15.84, gcVars=0000000008188000 {V00 V05 V09 V54}, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, gcvars, byref, isz
; byrRegs -[rbx] cmp r15d, edx jae G_M19183_IG17
- mov edi, r15d - lea r8, bword ptr [rcx+4*rdi] - ; byrRegs +[r8] - mov r10d, dword ptr [r8]
+ mov r8d, r15d + lea r10, bword ptr [rcx+4*r8] + ; byrRegs +[r10] + mov ebx, dword ptr [r10]
cmp r12d, dword ptr [rsi+0x08] jae G_M19183_IG17
- mov ebx, r12d - mov dword ptr [rsi+4*rbx+0x10], r10d - mov dword ptr [r8], r12d
+ mov edi, r12d + mov dword ptr [rsi+4*rdi+0x10], ebx + mov dword ptr [r10], r12d
inc r12d inc r13d cmp r15d, r11d jae G_M19183_IG17
- mov r15d, dword ptr [r9+4*rdi]
+ mov r15d, dword ptr [r9+4*r8]
test r15d, r15d jge SHORT G_M19183_IG06
- ;; size=64 bbWeight=15.84 PerfScore 241.56 -G_M19183_IG07: ; bbWeight=1.98, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, byref - ; byrRegs -[r8]
+ ;; size=63 bbWeight=15.84 PerfScore 241.56 +G_M19183_IG07: ; bbWeight=3.96, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, byref + ; byrRegs -[r10]
mov rbx, bword ptr [rsp+0x1D0] ; byrRegs +[rbx] lea r15d, [rax+r13-0x01] @@ -173,10 +173,11 @@ G_M19183_IG07: ; bbWeight=1.98, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx mov dword ptr [r13], eax mov dword ptr [r13+0x04], r15d mov dword ptr [rsp+0x13C], r12d
+ mov gword ptr [rsp+0x140], rdi
mov rax, gword ptr [rsp+0x170] ; gcrRegs +[rax]
- ;; size=53 bbWeight=1.98 PerfScore 16.34 -G_M19183_IG08: ; bbWeight=3.96, gcVars=0000000000140000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=020A {rcx rbx r9}, gcvars, byref
+ ;; size=61 bbWeight=3.96 PerfScore 36.63 +G_M19183_IG08: ; bbWeight=3.96, gcVars=0000000000180000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=020A {rcx rbx r9}, gcvars, byref
; gcrRegs -[rdi] ; byrRegs -[r13] ; GC ptr vars -{V00 V05} @@ -187,14 +188,14 @@ G_M19183_IG08: ; bbWeight=3.96, gcVars=0000000000140000 {V09 V54}, gcrefR mov r10d, dword ptr [rsp+0x34] jg G_M19183_IG04 ;; size=22 bbWeight=3.96 PerfScore 13.86
-G_M19183_IG09: ; bbWeight=1, gcVars=0000000000100000 {V09}, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M19183_IG09: ; bbWeight=1, gcVars=0000000000080000 {V09}, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx r8-r9] ; GC ptr vars -{V54} jmp G_M19183_IG15 ;; size=5 bbWeight=1 PerfScore 2.00
-G_M19183_IG10: ; bbWeight=0.04, gcVars=0000000000140000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=030A {rcx rbx r8 r9}, gcvars, byref
+G_M19183_IG10: ; bbWeight=0.04, gcVars=0000000000180000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=030A {rcx rbx r8 r9}, gcvars, byref
; byrRegs +[rcx r8-r9]
- ; GC ptr vars +{V18 V54}
+ ; GC ptr vars +{V54}
cmp r14d, r10d jae G_M19183_IG17 mov r15d, r14d @@ -211,31 +212,35 @@ G_M19183_IG11: ; bbWeight=0.02, gcrefRegs=0041 {rax rsi}, byrefRegs=020A mov r12d, dword ptr [rsp+0x13C] mov eax, r12d ; gcrRegs -[rax]
- ;; size=22 bbWeight=0.02 PerfScore 0.05 -G_M19183_IG12: ; bbWeight=0.16, gcVars=0000000008140000 {V05 V09 V54}, gcrefRegs=0040 {rsi}, byrefRegs=020A {rcx rbx r9}, gcvars, byref, isz - ; GC ptr vars -{V18}
+ mov bword ptr [rsp+0x1D0], rbx + ; GC ptr vars +{V00} + ;; size=30 bbWeight=0.02 PerfScore 0.07 +G_M19183_IG12: ; bbWeight=0.16, gcVars=0000000008188000 {V00 V05 V09 V54}, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, gcvars, byref, isz + ; byrRegs -[rbx]
cmp r15d, edx jae G_M19183_IG17
- mov edi, r15d - lea rdi, bword ptr [rcx+4*rdi] - ; byrRegs +[rdi] - mov r8d, dword ptr [rdi]
+ mov r8d, r15d + lea r8, bword ptr [rcx+4*r8] + ; byrRegs +[r8] + mov r10d, dword ptr [r8]
cmp r12d, dword ptr [rsi+0x08] jae G_M19183_IG17
- mov r10d, r12d - mov dword ptr [rsi+4*r10+0x10], r8d - mov dword ptr [rdi], r12d
+ mov ebx, r12d + mov dword ptr [rsi+4*rbx+0x10], r10d + mov dword ptr [r8], r12d
inc r12d inc r13d cmp r15d, r11d jae G_M19183_IG17 mov r8d, r15d
+ ; byrRegs -[r8]
mov r15d, dword ptr [r9+4*r8] test r15d, r15d jge SHORT G_M19183_IG12 ;; size=67 bbWeight=0.16 PerfScore 2.48
-G_M19183_IG13: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=020A {rcx rbx r9}, byref - ; byrRegs -[rdi]
+G_M19183_IG13: ; bbWeight=0.04, gcrefRegs=0040 {rsi}, byrefRegs=0202 {rcx r9}, byref + mov rbx, bword ptr [rsp+0x1D0] + ; byrRegs +[rbx]
lea r15d, [rax+r13-0x01] cmp r14d, ebp jae G_M19183_IG17 @@ -250,11 +255,11 @@ G_M19183_IG13: ; bbWeight=0.02, gcrefRegs=0040 {rsi}, byrefRegs=020A {rcx mov gword ptr [rsp+0x140], rdi mov rax, gword ptr [rsp+0x170] ; gcrRegs +[rax]
- ;; size=62 bbWeight=0.02 PerfScore 0.19 -G_M19183_IG14: ; bbWeight=0.04, gcVars=0000000000140000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=020A {rcx rbx r9}, gcvars, byref
+ ;; size=70 bbWeight=0.04 PerfScore 0.42 +G_M19183_IG14: ; bbWeight=0.04, gcVars=0000000000180000 {V09 V54}, gcrefRegs=0041 {rax rsi}, byrefRegs=020A {rcx rbx r9}, gcvars, byref
; gcrRegs -[rdi] ; byrRegs -[r13]
- ; GC ptr vars -{V05}
+ ; GC ptr vars -{V00 V05}
inc r14d cmp ebp, r14d mov r8, bword ptr [rsp+0x28] @@ -262,7 +267,7 @@ G_M19183_IG14: ; bbWeight=0.04, gcVars=0000000000140000 {V09 V54}, gcrefR mov r10d, dword ptr [rsp+0x34] jg G_M19183_IG10 ;; size=22 bbWeight=0.04 PerfScore 0.14
-G_M19183_IG15: ; bbWeight=1, gcVars=0000000000100000 {V09}, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, gcvars, byref
+G_M19183_IG15: ; bbWeight=1, gcVars=0000000000080000 {V09}, gcrefRegs=0041 {rax rsi}, byrefRegs=0008 {rbx}, gcvars, byref
; byrRegs -[rcx r8-r9] ; GC ptr vars -{V54} mov rcx, 0xD1FFAB1E ; const ptr @@ -316,7 +321,7 @@ G_M19183_IG17: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 666, prolog size 68, PerfScore 320.97, instruction count 141, allocated bytes for code 666 (MethodHash=58b7b510) for method System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
+; Total bytes of code 689, prolog size 68, PerfScore 341.51, instruction count 144, allocated bytes for code 689 (MethodHash=58b7b510) for method System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
; ============================================================ Unwind Info:

coreclr_tests.run.windows.x64.checked.mch

-37 (-5.71%) : 444619.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)

@@ -9,23 +9,23 @@ ; 0 inlinees with PGO data; 46 single block inlinees; 2 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 16, 3.83) byref -> rsi single-def -; V01 arg1 [V01,T02] ( 7, 3.16) short -> rdi single-def -; V02 arg2 [V02,T00] ( 19, 8.33) int -> rbx
+; V00 arg0 [V00,T03] ( 16, 3.83) byref -> rsi single-def +; V01 arg1 [V01,T04] ( 7, 3.16) short -> rdi single-def +; V02 arg2 [V02,T02] ( 19, 24.83) int -> rbx
;* V03 loc0 [V03 ] ( 0, 0 ) ubyte -> zero-ref
-; V04 loc1 [V04,T05] ( 14, 2.17) long -> rcx -; V05 loc2 [V05,T09] ( 6, 2.67) simd64 -> mm1 <System.Runtime.Intrinsics.Vector512`1[short]> -; V06 loc3 [V06,T10] ( 5, 2.00) simd64 -> mm0 <System.Runtime.Intrinsics.Vector512`1[short]> -; V07 loc4 [V07,T03] ( 7, 4.00) byref -> rdx -; V08 loc5 [V08,T06] ( 4, 2.00) byref -> rax single-def
+; V04 loc1 [V04,T01] ( 14, 85.33) long -> rax +; V05 loc2 [V05,T10] ( 6, 2.67) simd64 -> mm1 <System.Runtime.Intrinsics.Vector512`1[short]> +; V06 loc3 [V06,T11] ( 5, 2.00) simd64 -> mm0 <System.Runtime.Intrinsics.Vector512`1[short]> +; V07 loc4 [V07,T05] ( 7, 4.00) byref -> rdx +; V08 loc5 [V08,T07] ( 4, 2.00) byref -> rax single-def
; V09 loc6 [V09,T14] ( 8, 0 ) simd32 -> mm0 <System.Runtime.Intrinsics.Vector256`1[short]> ; V10 loc7 [V10,T17] ( 3, 0 ) simd32 -> mm2 <System.Runtime.Intrinsics.Vector256`1[short]> ; V11 loc8 [V11,T15] ( 7, 0 ) byref -> rax ; V12 loc9 [V12,T16] ( 4, 0 ) byref -> rcx single-def
-; V13 loc10 [V13,T11] ( 8, 1.00) simd16 -> mm2 <System.Runtime.Intrinsics.Vector128`1[short]> -; V14 loc11 [V14,T12] ( 3, 0.50) simd16 -> mm1 <System.Runtime.Intrinsics.Vector128`1[short]> -; V15 loc12 [V15,T07] ( 7, 1.00) byref -> rax -; V16 loc13 [V16,T08] ( 4, 0.50) byref -> rcx single-def
+; V13 loc10 [V13,T12] ( 8, 1.00) simd16 -> mm2 <System.Runtime.Intrinsics.Vector128`1[short]> +; V14 loc11 [V14,T13] ( 3, 0.50) simd16 -> mm1 <System.Runtime.Intrinsics.Vector128`1[short]> +; V15 loc12 [V15,T08] ( 7, 1.00) byref -> rax +; V16 loc13 [V16,T09] ( 4, 0.50) byref -> rcx single-def
; V17 OutArgs [V17 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V18 tmp1 [V18 ] ( 0, 0 ) simd64 -> zero-ref "spilled call-like call argument" ;* V19 tmp2 [V19 ] ( 0, 0 ) simd64 -> zero-ref "spilled call-like call argument" @@ -73,8 +73,8 @@ ;* V61 tmp44 [V61 ] ( 0, 0 ) simd16 -> zero-ref "Inlining Arg" <System.Runtime.Intrinsics.Vector128`1[short]> ;* V62 tmp45 [V62 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V63 tmp46 [V63 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp"
-; V64 tmp47 [V64,T13] ( 11, 0 ) int -> rax "Single return block return value" -; V65 cse0 [V65,T04] ( 13, 2.99) int -> rdx hoist multi-def "CSE - aggressive"
+; V64 tmp47 [V64,T00] ( 11,133.33) int -> rax "Single return block return value" +; V65 cse0 [V65,T06] ( 13, 2.99) int -> rdx hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 32 @@ -100,13 +100,13 @@ G_M46731_IG02: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byr ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=30 bbWeight=1 PerfScore 4.75
-G_M46731_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M46731_IG03: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
cmp ebx, 8
- jl G_M46731_IG16 - ;; size=9 bbWeight=1 PerfScore 1.25
+ jl SHORT G_M46731_IG09 + ;; size=5 bbWeight=1 PerfScore 1.25
G_M46731_IG04: ; bbWeight=0.83, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref cmp ebx, 32
- jl G_M46731_IG14
+ jl G_M46731_IG21
;; size=9 bbWeight=0.83 PerfScore 1.04 G_M46731_IG05: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref movsx rdx, di @@ -126,8 +126,9 @@ G_M46731_IG06: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0045 {rax rd add rdx, 64 cmp rdx, rax jbe SHORT G_M46731_IG06
- mov ecx, ebx - test cl, 31
+ mov edx, ebx + ; byrRegs -[rdx] + test dl, 31
je SHORT G_M46731_IG07 vmovups zmm1, zmmword ptr [rax] vpcmpeqw k1, zmm1, zmm0 @@ -135,7 +136,7 @@ G_M46731_IG06: ; bbWeight=0.67, gcrefRegs=0000 {}, byrefRegs=0045 {rax rd jne G_M46731_IG19 ;; size=62 bbWeight=0.67 PerfScore 10.67 G_M46731_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
- ; byrRegs -[rax rdx rsi]
+ ; byrRegs -[rax rsi]
mov eax, -1 ;; size=5 bbWeight=1 PerfScore 0.25 G_M46731_IG08: ; bbWeight=1, epilog, nogc, extend @@ -146,93 +147,65 @@ G_M46731_IG08: ; bbWeight=1, epilog, nogc, extend pop rdi ret ;; size=11 bbWeight=1 PerfScore 3.75
-G_M46731_IG09: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
+G_M46731_IG09: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, gcvars, byref, isz
; byrRegs +[rsi]
+ xor eax, eax
cmp ebx, 4
- jl SHORT G_M46731_IG10 - add ebx, -4 - movsx rax, word ptr [rsi+2*rcx] - movsx rdx, di - cmp eax, edx - je G_M46731_IG17 - movsx rax, word ptr [rsi+2*rcx+0x02] - cmp eax, edx - je G_M46731_IG28 - movsx rax, word ptr [rsi+2*rcx+0x04] - cmp eax, edx - je G_M46731_IG27 - movsx rax, word ptr [rsi+2*rcx+0x06] - cmp eax, edx - je G_M46731_IG26 - add rcx, 4 - ;; size=71 bbWeight=0.17 PerfScore 3.83
+ jl SHORT G_M46731_IG11 + ;; size=7 bbWeight=16.67 PerfScore 25.00
G_M46731_IG10: ; bbWeight=0.17, 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_M46731_IG16 + movsx rcx, word ptr [rsi+2*rax+0x02] + cmp ecx, edx + je SHORT G_M46731_IG18 + movsx rcx, word ptr [rsi+2*rax+0x04] + cmp ecx, edx + je SHORT G_M46731_IG17 + movsx rcx, word ptr [rsi+2*rax+0x06] + cmp ecx, edx + je SHORT G_M46731_IG15 + add rax, 4 + ;; size=50 bbWeight=0.17 PerfScore 3.62 +G_M46731_IG11: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
test ebx, ebx jle SHORT G_M46731_IG07 ;; size=4 bbWeight=0.17 PerfScore 0.21
-G_M46731_IG11: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M46731_IG12: ; bbWeight=0.16, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
movsx rdx, di ;; size=4 bbWeight=0.16 PerfScore 0.04
-G_M46731_IG12: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
+G_M46731_IG13: ; bbWeight=0.33, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref, isz
dec ebx
- movsx rax, word ptr [rsi+2*rcx] - cmp eax, edx - je SHORT G_M46731_IG17 - inc rcx
+ movsx rcx, word ptr [rsi+2*rax] + cmp ecx, edx + je SHORT G_M46731_IG16 + inc rax
test ebx, ebx
- jg SHORT G_M46731_IG12
+ jg SHORT G_M46731_IG13
;; size=18 bbWeight=0.33 PerfScore 2.33
-G_M46731_IG13: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M46731_IG14: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
; byrRegs -[rsi] jmp SHORT G_M46731_IG07 ;; size=2 bbWeight=0.17 PerfScore 0.33
-G_M46731_IG14: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref - ; byrRegs +[rsi] - cmp ebx, 16 - jge G_M46731_IG21 - movsx rdx, di - vpbroadcastw xmm1, edx - mov rax, rsi - ; byrRegs +[rax] - lea edx, [rbx-0x08] - movsxd rcx, edx - lea rcx, bword ptr [rax+2*rcx] - ; byrRegs +[rcx] - ;; size=32 bbWeight=0.17 PerfScore 0.67 -G_M46731_IG15: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0043 {rax rcx rsi}, byref, isz - vpcmpeqw xmm2, xmm1, xmmword ptr [rax] - vptest xmm2, xmm2 - jne G_M46731_IG25 - add rax, 16 - cmp rax, rcx - jbe SHORT G_M46731_IG15 - mov eax, ebx - ; byrRegs -[rax] - test al, 7 - je G_M46731_IG07 - vpcmpeqw xmm2, xmm1, xmmword ptr [rcx] - vptest xmm2, xmm2 - jne G_M46731_IG24 - jmp G_M46731_IG07 - ;; size=54 bbWeight=0.17 PerfScore 3.17 -G_M46731_IG16: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref - ; byrRegs -[rcx] - xor ecx, ecx - jmp G_M46731_IG09 - ;; size=7 bbWeight=0.17 PerfScore 0.37 -G_M46731_IG17: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - ; byrRegs -[rsi] - mov eax, ecx - ;; size=2 bbWeight=0 PerfScore 0.00 -G_M46731_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - vzeroupper - add rsp, 32 - pop rbx - pop rsi - pop rdi - ret - ;; size=11 bbWeight=0 PerfScore 0.00 -G_M46731_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0041 {rax rsi}, gcvars, byref, isz
+G_M46731_IG15: ; bbWeight=16.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add eax, 3 + jmp G_M46731_IG25 + ;; size=8 bbWeight=16.67 PerfScore 37.50 +G_M46731_IG16: ; bbWeight=16.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + jmp G_M46731_IG25 + ;; size=5 bbWeight=16.67 PerfScore 33.33 +G_M46731_IG17: ; bbWeight=16.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + add eax, 2 + jmp G_M46731_IG25 + ;; size=8 bbWeight=16.67 PerfScore 37.50 +G_M46731_IG18: ; bbWeight=16.67, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + inc eax + jmp G_M46731_IG25 + ;; size=7 bbWeight=16.67 PerfScore 37.50 +G_M46731_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0041 {rax rsi}, byref
; byrRegs +[rax rsi] sub rax, rsi ; byrRegs -[rax] @@ -241,9 +214,9 @@ G_M46731_IG19: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 { kmovd ecx, k1 tzcnt rcx, rcx add eax, ecx
- jmp SHORT G_M46731_IG18 - ;; size=25 bbWeight=0 PerfScore 0.00 -G_M46731_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0044 {rdx rsi}, byref, isz
+ jmp G_M46731_IG25 + ;; size=28 bbWeight=0 PerfScore 0.00 +G_M46731_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0044 {rdx rsi}, byref
; byrRegs +[rdx] mov rax, rdx ; byrRegs +[rax] @@ -254,10 +227,67 @@ G_M46731_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0044 {rdx rsi}, kmovd ecx, k1 tzcnt rcx, rcx add eax, ecx
- jmp SHORT G_M46731_IG18 - ;; size=28 bbWeight=0 PerfScore 0.00 -G_M46731_IG21: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+ jmp G_M46731_IG25 + ;; size=31 bbWeight=0 PerfScore 0.00 +G_M46731_IG21: ; bbWeight=0.17, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; byrRegs -[rdx]
+ cmp ebx, 16
...

-13 (-5.63%) : 422907.dasm - Benchstone.BenchI.CSieve:Bench():ubyte (Tier1-OSR)

@@ -10,13 +10,13 @@ ; Final local variable assignments ; ; V00 loc0 [V00,T02] ( 9,183.68) ref -> rcx class-hnd exact <<unknown class>>
-; V01 loc1 [V01,T05] ( 4, 0.09) int -> r8
+; V01 loc1 [V01,T05] ( 4, 2.05) int -> r8
; V02 loc2 [V02,T06] ( 3, 0.03) int -> r10 ; V03 loc3 [V03,T01] ( 10,334.46) int -> rdx
-; V04 loc4 [V04,T04] ( 8,100.52) int -> rdx
+; V04 loc4 [V04,T03] ( 8,104.58) int -> rdx
; V05 loc5 [V05,T00] ( 7,499.85) int -> rax ; V06 OutArgs [V06 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V07 cse0 [V07,T03] ( 8,101.11) int -> r9 hoist multi-def "CSE - aggressive"
+; V07 cse0 [V07,T04] ( 8,101.11) int -> r9 hoist multi-def "CSE - aggressive"
; ; Lcl frame size = 40 @@ -29,109 +29,104 @@ G_M58499_IG01: ; bbWeight=0.05, gcrefRegs=0000 {}, byrefRegs=0000 {}, byr mov edx, dword ptr [rsp+0x60] mov eax, dword ptr [rsp+0x5C] ;; size=27 bbWeight=0.05 PerfScore 0.52
-G_M58499_IG02: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M58499_IG02: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp eax, 0x1FFE
- jg G_M58499_IG18 - ;; size=11 bbWeight=0.05 PerfScore 0.06
+ jg SHORT G_M58499_IG05 + ;; size=7 bbWeight=0.05 PerfScore 0.06
G_M58499_IG03: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref mov r9d, dword ptr [rcx+0x08] ;; size=4 bbWeight=0.05 PerfScore 0.10 G_M58499_IG04: ; bbWeight=99.95, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz cmp eax, r9d
- jae G_M58499_IG19
+ jae G_M58499_IG18
mov r11d, eax mov byte ptr [rcx+r11+0x10], 0 add eax, edx cmp eax, 0x1FFE jle SHORT G_M58499_IG04 ;; size=27 bbWeight=99.95 PerfScore 399.80
-G_M58499_IG05: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref - jmp G_M58499_IG18 - ;; size=5 bbWeight=0.04 PerfScore 0.08 -G_M58499_IG06: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M58499_IG05: ; bbWeight=1.02, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref + inc r8d + ;; size=3 bbWeight=1.02 PerfScore 0.25 +G_M58499_IG06: ; bbWeight=0.10, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + inc edx + cmp edx, 0x1FFE + jle SHORT G_M58499_IG15 + ;; size=10 bbWeight=0.10 PerfScore 0.15 +G_M58499_IG07: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M58499_IG17 + ;; size=2 bbWeight=0.01 PerfScore 0.02 +G_M58499_IG08: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
xor r8d, r8d xor edx, edx test rcx, rcx
- je SHORT G_M58499_IG10
+ je SHORT G_M58499_IG12
;; size=10 bbWeight=0.01 PerfScore 0.02
-G_M58499_IG07: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M58499_IG09: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov r9d, dword ptr [rcx+0x08] cmp r9d, 0x1FFE
- jle SHORT G_M58499_IG10
+ jle SHORT G_M58499_IG12
;; size=13 bbWeight=0.01 PerfScore 0.03
-G_M58499_IG08: ; bbWeight=82.57, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M58499_IG10: ; bbWeight=82.57, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov r9d, edx mov byte ptr [rcx+r9+0x10], 1 inc edx cmp edx, 0x1FFE
- jle SHORT G_M58499_IG08
+ jle SHORT G_M58499_IG10
;; size=19 bbWeight=82.57 PerfScore 227.06
-G_M58499_IG09: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M58499_IG12 - ;; size=2 bbWeight=0.01 PerfScore 0.02 -G_M58499_IG10: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M58499_IG11: ; bbWeight=4.07, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + jmp SHORT G_M58499_IG14 + ;; size=2 bbWeight=4.07 PerfScore 8.15 +G_M58499_IG12: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov r9d, dword ptr [rcx+0x08] ;; size=4 bbWeight=0.05 PerfScore 0.10
-G_M58499_IG11: ; bbWeight=0.83, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M58499_IG13: ; bbWeight=0.83, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
cmp edx, r9d
- jae SHORT G_M58499_IG19
+ jae SHORT G_M58499_IG18
mov eax, edx mov byte ptr [rcx+rax+0x10], 1 inc edx cmp edx, 0x1FFE
- jle SHORT G_M58499_IG11
+ jle SHORT G_M58499_IG13
;; size=22 bbWeight=0.83 PerfScore 3.34
-G_M58499_IG12: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+G_M58499_IG14: ; bbWeight=4.07, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
mov edx, 2
- jmp SHORT G_M58499_IG14 - ;; size=7 bbWeight=0.01 PerfScore 0.02 -G_M58499_IG13: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - inc r10d - cmp r10d, 1 - jg SHORT G_M58499_IG20 - jmp SHORT G_M58499_IG06 - ;; size=11 bbWeight=0.01 PerfScore 0.04 -G_M58499_IG14: ; bbWeight=0.10, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
+ ;; size=5 bbWeight=4.07 PerfScore 1.02 +G_M58499_IG15: ; bbWeight=0.10, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz
mov r9d, dword ptr [rcx+0x08] cmp edx, r9d
- jae SHORT G_M58499_IG19
+ jae SHORT G_M58499_IG18
mov eax, edx cmp byte ptr [rcx+rax+0x10], 0
- jne SHORT G_M58499_IG17
+ je SHORT G_M58499_IG06
;; size=18 bbWeight=0.10 PerfScore 0.76
-G_M58499_IG15: ; bbWeight=0.10, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - inc edx - cmp edx, 0x1FFE - jle SHORT G_M58499_IG14 - ;; size=10 bbWeight=0.10 PerfScore 0.15 -G_M58499_IG16: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M58499_IG13 - ;; size=2 bbWeight=0.01 PerfScore 0.02 -G_M58499_IG17: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
+G_M58499_IG16: ; bbWeight=0.05, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref
lea eax, [rdx+rdx] jmp G_M58499_IG02 ;; size=8 bbWeight=0.05 PerfScore 0.13
-G_M58499_IG18: ; bbWeight=0.04, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz - inc r8d - jmp SHORT G_M58499_IG15 - ;; size=5 bbWeight=0.04 PerfScore 0.09 -G_M58499_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58499_IG17: ; bbWeight=0.01, gcrefRegs=0002 {rcx}, byrefRegs=0000 {}, byref, isz + inc r10d + cmp r10d, 1 + jg SHORT G_M58499_IG19 + jmp SHORT G_M58499_IG08 + ;; size=11 bbWeight=0.01 PerfScore 0.04 +G_M58499_IG18: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] call CORINFO_HELP_RNGCHKFAIL ; gcr arg pop 0 ;; size=5 bbWeight=0 PerfScore 0.00
-G_M58499_IG20: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+G_M58499_IG19: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
xor eax, eax cmp r8d, 0x403 sete al ;; size=12 bbWeight=0 PerfScore 0.00
-G_M58499_IG21: ; bbWeight=0, epilog, nogc, extend
+G_M58499_IG20: ; bbWeight=0, epilog, nogc, extend
add rsp, 176 pop rbp ret ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 231, prolog size 27, PerfScore 632.36, instruction count 65, allocated bytes for code 231 (MethodHash=2d741b7c) for method Benchstone.BenchI.CSieve:Bench():ubyte (Tier1-OSR)
+; Total bytes of code 218, prolog size 27, PerfScore 641.56, instruction count 62, allocated bytes for code 218 (MethodHash=2d741b7c) for method Benchstone.BenchI.CSieve:Bench():ubyte (Tier1-OSR)
; ============================================================ Unwind Info:

-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)
+29 (+12.55%) : 369105.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
@@ -48,32 +48,32 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=30 bbWeight=1 PerfScore 8.00
-G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x18] test esi, esi
- jne SHORT G_M27413_IG09 - ;; size=7 bbWeight=1.50 PerfScore 4.88
+ jne G_M27413_IG11 + ;; size=11 bbWeight=1.50 PerfScore 4.88
G_M27413_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz test edi, -4
- je G_M27413_IG14
+ je SHORT G_M27413_IG10
mov eax, edi and eax, -3 cmp eax, 4
- je SHORT G_M27413_IG10
+ je G_M27413_IG12
;; size=22 bbWeight=1.00 PerfScore 3.00 G_M27413_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor ebp, ebp ;; size=2 bbWeight=1.00 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r14, bpl lea r15d, [rdi-0x04] mov eax, edi and eax, -4 cmp eax, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12 - ;; size=22 bbWeight=1.00 PerfScore 3.75
+ jne G_M27413_IG14 + ;; size=30 bbWeight=1.00 PerfScore 3.75
G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rcx, bword ptr [rbx+0x18] ; byrRegs +[rcx] @@ -83,7 +83,7 @@ G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, cmp eax, edi jne SHORT G_M27413_IG03 test r14d, r14d
- je SHORT G_M27413_IG13
+ je SHORT G_M27413_IG09
call <unknown method> ; byrRegs -[rcx] ; gcr arg pop 0 @@ -108,15 +108,34 @@ G_M27413_IG08: ; bbWeight=1.00, epilog, nogc, extend jmp <unknown method> ; gcr arg pop 0 ;; size=17 bbWeight=1.00 PerfScore 5.25
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG09: ; bbWeight=0.23, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + add rsp, 40 + pop rbx + pop rbp + pop rsi + pop rdi + pop r14 + pop r15 + ret + ;; size=13 bbWeight=0.23 PerfScore 0.97 +G_M27413_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx] + mov rcx, rbx + ; gcrRegs +[rcx] + call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] + ; gcrRegs -[rcx rbx] + ; gcr arg pop 0 + int3 + ;; size=10 bbWeight=0 PerfScore 0.00 +G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; gcrRegs +[rbx] test dil, 2
- jne SHORT G_M27413_IG13 - jmp SHORT G_M27413_IG04 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG09 + jmp G_M27413_IG04 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
cmp byte ptr [rbx+0x1C], 0
- je SHORT G_M27413_IG05
+ je G_M27413_IG05
mov rcx, rbx ; gcrRegs +[rcx] mov rax, qword ptr [rbx] @@ -127,39 +146,19 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor ebp, ebp test eax, eax sete bpl
- jmp SHORT G_M27413_IG06 - ;; size=29 bbWeight=0 PerfScore 0.00 -G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06 + ;; size=36 bbWeight=0 PerfScore 0.00 +G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r15d, 1 test esi, esi
- je SHORT G_M27413_IG07 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ je G_M27413_IG07 + ;; size=12 bbWeight=0 PerfScore 0.00 +G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r15d, 2
- jmp SHORT G_M27413_IG07 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 40 - pop rbx - pop rbp - pop rsi - pop rdi - pop r14 - pop r15 - ret - ;; size=13 bbWeight=0 PerfScore 0.00 -G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx] - mov rcx, rbx - ; gcrRegs +[rcx] - call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] - ; gcrRegs -[rcx rbx] - ; gcr arg pop 0 - int3 - ;; size=10 bbWeight=0 PerfScore 0.00
+ jmp G_M27413_IG07 + ;; size=9 bbWeight=0 PerfScore 0.00
-; Total bytes of code 231, prolog size 15, PerfScore 61.62, instruction count 85, allocated bytes for code 231 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 260, prolog size 15, PerfScore 62.59, instruction count 85, allocated bytes for code 260 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================ Unwind Info:

+32 (+15.38%) : 439628.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)

@@ -5,24 +5,24 @@ ; optimized using Dynamic PGO ; rsp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 3
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 3
; 1 inlinees with PGO data; 8 single block inlinees; 1 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 6, 4.00) long -> rcx single-def -; V01 arg1 [V01,T00] ( 6, 5.00) ref -> rdx class-hnd single-def <System.Object>
+; V00 arg0 [V00,T02] ( 6, 4.00) long -> rcx single-def +; V01 arg1 [V01,T01] ( 6, 5.00) ref -> rdx class-hnd single-def <System.Object>
;* V02 loc0 [V02 ] ( 0, 0 ) int -> zero-ref
-; V03 loc1 [V03,T11] ( 2, 0.67) ref -> rbx class-hnd single-def <System.Object> -; V04 loc2 [V04,T02] ( 4, 2.87) long -> rax
+; V03 loc1 [V03,T11] ( 2, 0.67) ref -> rdi class-hnd single-def <System.Object> +; V04 loc2 [V04,T03] ( 4, 2.87) long -> rax
; V05 OutArgs [V05 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V06 tmp1 [V06,T09] ( 4, 1.00) int -> rsi "Inline return value spill temp"
+; V06 tmp1 [V06,T00] ( 4, 34.33) int -> rbx "Inline return value spill temp"
;* V07 tmp2 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V08 tmp3 [V08,T07] ( 4, 1.74) byref -> r8 single-def "Inline stloc first use temp" -; V09 tmp4 [V09,T06] ( 4, 1.95) int -> r10 "Inline stloc first use temp" -; V10 tmp5 [V10,T03] ( 5, 2.48) int -> r9 "Inline stloc first use temp" -; V11 tmp6 [V11,T04] ( 5, 2.27) byref -> r11 "Inline stloc first use temp" -; V12 tmp7 [V12,T05] ( 5, 2.15) int -> rbx "Inline stloc first use temp" -; V13 tmp8 [V13,T08] ( 2, 1.07) long -> rsi "Inline stloc first use temp"
+; V08 tmp3 [V08,T08] ( 4, 1.74) byref -> r8 single-def "Inline stloc first use temp" +; V09 tmp4 [V09,T07] ( 4, 1.95) int -> r10 "Inline stloc first use temp" +; V10 tmp5 [V10,T04] ( 5, 2.48) int -> r9 "Inline stloc first use temp" +; V11 tmp6 [V11,T05] ( 5, 2.27) byref -> r11 "Inline stloc first use temp" +; V12 tmp7 [V12,T06] ( 5, 2.15) int -> rbx "Inline stloc first use temp" +; V13 tmp8 [V13,T09] ( 2, 1.07) long -> rsi "Inline stloc first use temp"
; V14 tmp9 [V14,T10] ( 3, 0.99) long -> rsi "Inline stloc first use temp" ;* V15 tmp10 [V15 ] ( 0, 0 ) int -> zero-ref "Inline stloc first use temp" ;* V16 tmp11 [V16 ] ( 0, 0 ) long -> zero-ref "Inline stloc first use temp" @@ -30,33 +30,51 @@ ;* V18 tmp13 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ; V19 tmp14 [V19,T12] ( 2, 0.67) ref -> r8 single-def "Field obj" ;
-; Lcl frame size = 40
+; Lcl frame size = 32
G_M33041_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG
+ push rdi
push rsi push rbx
- sub rsp, 40 - ;; size=6 bbWeight=1 PerfScore 2.25
+ sub rsp, 32 + ;; size=7 bbWeight=1 PerfScore 3.25
G_M33041_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx] test rdx, rdx je SHORT G_M33041_IG03 mov rax, qword ptr [rdx] cmp rax, rcx
- jne SHORT G_M33041_IG05
+ jne SHORT G_M33041_IG07
;; size=13 bbWeight=1 PerfScore 4.50 G_M33041_IG03: ; bbWeight=0.67, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref mov rax, rdx ; gcrRegs +[rax] ;; size=3 bbWeight=0.67 PerfScore 0.17 G_M33041_IG04: ; bbWeight=0.67, epilog, nogc, extend
- add rsp, 40
+ add rsp, 32
pop rbx pop rsi
+ pop rdi
ret
- ;; size=7 bbWeight=0.67 PerfScore 1.50 -G_M33041_IG05: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=8 bbWeight=0.67 PerfScore 1.83 +G_M33041_IG05: ; bbWeight=33.33, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
+ mov ebx, 2 + ;; size=5 bbWeight=33.33 PerfScore 8.33 +G_M33041_IG06: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + cmp ebx, 1 + je SHORT G_M33041_IG03 + call <unknown method> + ; gcrRegs -[rdx] +[rax] + ; gcr arg pop 0 + mov rdi, rax + ; gcrRegs +[rdi] + test ebx, ebx + jne G_M33041_IG15 + jmp G_M33041_IG14 + ;; size=26 bbWeight=0.33 PerfScore 1.92 +G_M33041_IG07: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref + ; gcrRegs -[rax rdi] +[rdx]
mov r8, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov r8, gword ptr [r8] ; gcrRegs +[r8] @@ -71,7 +89,7 @@ G_M33041_IG05: ; bbWeight=0.33, gcVars=0000000000000000 {}, gcrefRegs=000 shrx r10, r10, r9 xor r9d, r9d ;; size=51 bbWeight=0.33 PerfScore 2.75
-G_M33041_IG06: ; bbWeight=0.54, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
+G_M33041_IG08: ; bbWeight=0.54, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
lea r11d, [r10+0x01] movsxd r11, r11d lea r11, [r11+2*r11] @@ -81,68 +99,61 @@ G_M33041_IG06: ; bbWeight=0.54, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8} mov rsi, qword ptr [r11+0x08] and ebx, -2 cmp rsi, rax
- jne SHORT G_M33041_IG12
+ jne SHORT G_M33041_IG11
;; size=30 bbWeight=0.54 PerfScore 3.89
-G_M33041_IG07: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
+G_M33041_IG09: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
mov rsi, rcx xor rsi, qword ptr [r11+0x10] cmp rsi, 1
- ja SHORT G_M33041_IG12
+ ja SHORT G_M33041_IG11
;; size=13 bbWeight=0.33 PerfScore 1.49
-G_M33041_IG08: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
+G_M33041_IG10: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
; byrRegs -[r8] cmp ebx, dword ptr [r11]
- jne SHORT G_M33041_IG14 - ;; size=5 bbWeight=0.33 PerfScore 1.32 -G_M33041_IG09: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r11] - cmp esi, 1 - je SHORT G_M33041_IG03 - call <unknown method> - ; gcrRegs -[rdx] +[rax] - ; gcr arg pop 0 - mov rbx, rax - ; gcrRegs +[rbx] - test esi, esi - jne SHORT G_M33041_IG10
+ jne G_M33041_IG05 + jmp SHORT G_M33041_IG13 + ;; size=11 bbWeight=0.33 PerfScore 1.98 +G_M33041_IG11: ; bbWeight=0.21, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref + ; byrRegs -[r11] +[r8] + test ebx, ebx + je G_M33041_IG05 + ;; size=8 bbWeight=0.21 PerfScore 0.26 +G_M33041_IG12: ; bbWeight=0.54, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz + inc r9d + add r10d, r9d + and r10d, dword ptr [r8+0x04] + cmp r9d, 8 + jl SHORT G_M33041_IG08 + jmp G_M33041_IG05 + ;; size=21 bbWeight=0.54 PerfScore 3.63 +G_M33041_IG13: ; bbWeight=0.33, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref + ; byrRegs -[r8] + mov ebx, esi + jmp G_M33041_IG06 + ;; size=7 bbWeight=0.33 PerfScore 0.74 +G_M33041_IG14: ; bbWeight=0.33, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdx] +[rdi]
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E ; gcrRegs +[rdx] call [<unknown method>]
- ; gcrRegs -[rax rcx rdx]
+ ; gcrRegs -[rcx rdx]
; gcr arg pop 0
- ;; size=43 bbWeight=0.33 PerfScore 2.42 -G_M33041_IG10: ; bbWeight=0.33, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rax, rbx
+ ;; size=26 bbWeight=0.33 PerfScore 1.17 +G_M33041_IG15: ; bbWeight=0.33, gcrefRegs=0080 {rdi}, byrefRegs=0000 {}, byref + mov rax, rdi
; gcrRegs +[rax] ;; size=3 bbWeight=0.33 PerfScore 0.08
-G_M33041_IG11: ; bbWeight=0.33, epilog, nogc, extend - add rsp, 40
+G_M33041_IG16: ; bbWeight=0.33, epilog, nogc, extend + add rsp, 32
pop rbx pop rsi
+ pop rdi
ret
- ;; size=7 bbWeight=0.33 PerfScore 0.75 -G_M33041_IG12: ; bbWeight=0.21, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, gcvars, byref, isz - ; gcrRegs -[rax rbx] +[rdx] - ; byrRegs +[r8] - test ebx, ebx - je SHORT G_M33041_IG14 - ;; size=4 bbWeight=0.21 PerfScore 0.26 -G_M33041_IG13: ; bbWeight=0.54, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz - inc r9d - add r10d, r9d - and r10d, dword ptr [r8+0x04] - cmp r9d, 8 - jl SHORT G_M33041_IG06 - ;; size=16 bbWeight=0.54 PerfScore 2.55 -G_M33041_IG14: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r8] - mov esi, 2 - jmp SHORT G_M33041_IG09 - ;; size=7 bbWeight=0.00 PerfScore 0.01
+ ;; size=8 bbWeight=0.33 PerfScore 0.92
-; Total bytes of code 208, prolog size 6, PerfScore 23.93, instruction count 61, allocated bytes for code 208 (MethodHash=84fd7eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 240, prolog size 7, PerfScore 36.91, instruction count 68, allocated bytes for code 240 (MethodHash=84fd7eee) for method System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -150,11 +161,12 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x06 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x07 + CountOfUnwindCodes: 4
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x06 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6)
+ CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) + CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

+28 (+16.47%) : 490049.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)

@@ -5,23 +5,23 @@ ; optimized using Dynamic PGO ; rsp based frame ; fully interruptible
-; with Dynamic PGO: edge weights are valid, and fgCalledCount is 6
+; with Dynamic PGO: edge weights are invalid, and fgCalledCount is 6
; 1 inlinees with PGO data; 7 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 arg0 [V00,T01] ( 6, 2.67) long -> rcx single-def -; V01 arg1 [V01,T00] ( 7, 4.17) ref -> rdx class-hnd <System.Object> -; V02 loc0 [V02,T07] ( 4, 0.77) long -> rax
+; V00 arg0 [V00,T02] ( 6, 2.67) long -> rcx single-def +; V01 arg1 [V01,T01] ( 7, 4.17) ref -> rdx class-hnd <System.Object> +; V02 loc0 [V02,T08] ( 4, 0.77) long -> rax
;* V03 loc1 [V03 ] ( 0, 0 ) int -> zero-ref ;# V04 OutArgs [V04 ] ( 1, 1 ) struct ( 0) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V05 tmp1 [V05,T09] ( 4, 0.50) int -> rsi "Inline return value spill temp"
+; V05 tmp1 [V05,T00] ( 4, 17.17) int -> r8 "Inline return value spill temp"
;* V06 tmp2 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <int[]>
-; V07 tmp3 [V07,T06] ( 4, 0.87) byref -> r8 single-def "Inline stloc first use temp" -; V08 tmp4 [V08,T05] ( 4, 0.97) int -> r10 "Inline stloc first use temp" -; V09 tmp5 [V09,T02] ( 5, 1.24) int -> r9 "Inline stloc first use temp" -; V10 tmp6 [V10,T03] ( 5, 1.14) byref -> r11 "Inline stloc first use temp" -; V11 tmp7 [V11,T04] ( 5, 1.07) int -> rbx "Inline stloc first use temp" -; V12 tmp8 [V12,T08] ( 2, 0.54) long -> rsi "Inline stloc first use temp"
+; V07 tmp3 [V07,T07] ( 4, 0.87) byref -> r8 single-def "Inline stloc first use temp" +; V08 tmp4 [V08,T06] ( 4, 0.97) int -> r10 "Inline stloc first use temp" +; V09 tmp5 [V09,T03] ( 5, 1.24) int -> r9 "Inline stloc first use temp" +; V10 tmp6 [V10,T04] ( 5, 1.14) byref -> r11 "Inline stloc first use temp" +; V11 tmp7 [V11,T05] ( 5, 1.07) int -> rbx "Inline stloc first use temp" +; V12 tmp8 [V12,T09] ( 2, 0.54) long -> rsi "Inline stloc first use temp"
; V13 tmp9 [V13,T10] ( 3, 0.50) long -> rsi "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" @@ -36,7 +36,7 @@ G_M60590_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, G_M60590_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx] test rdx, rdx
- jne SHORT G_M60590_IG05
+ jne SHORT G_M60590_IG08
;; size=5 bbWeight=1 PerfScore 1.25 G_M60590_IG03: ; bbWeight=0.83, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref mov rax, rdx @@ -47,8 +47,23 @@ G_M60590_IG04: ; bbWeight=0.83, epilog, nogc, extend pop rsi ret ;; size=3 bbWeight=0.83 PerfScore 1.67
-G_M60590_IG05: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M60590_IG05: ; bbWeight=16.67, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax]
+ mov r8d, 2 + ;; size=6 bbWeight=16.67 PerfScore 4.17 +G_M60590_IG06: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + cmp r8d, 1 + je SHORT G_M60590_IG03 + test r8d, r8d + je G_M60590_IG15 + ;; size=15 bbWeight=0.17 PerfScore 0.42 +G_M60590_IG07: ; bbWeight=0.17, epilog, nogc, extend + pop rbx + pop rsi + jmp <unknown method> + ; gcr arg pop 0 + ;; size=7 bbWeight=0.17 PerfScore 0.50 +G_M60590_IG08: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
mov rax, qword ptr [rdx] cmp rax, rcx je SHORT G_M60590_IG03 @@ -66,7 +81,7 @@ G_M60590_IG05: ; bbWeight=0.17, gcVars=0000000000000000 {}, gcrefRegs=000 shrx r10, r10, r9 xor r9d, r9d ;; size=59 bbWeight=0.17 PerfScore 1.92
-G_M60590_IG06: ; bbWeight=0.27, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
+G_M60590_IG09: ; bbWeight=0.27, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
lea r11d, [r10+0x01] movsxd r11, r11d lea r11, [r11+2*r11] @@ -76,57 +91,46 @@ G_M60590_IG06: ; bbWeight=0.27, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8} mov rsi, qword ptr [r11+0x08] and ebx, -2 cmp rsi, rax
- jne SHORT G_M60590_IG11
+ jne SHORT G_M60590_IG12
;; size=30 bbWeight=0.27 PerfScore 1.94
-G_M60590_IG07: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
+G_M60590_IG10: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0900 {r8 r11}, byref, isz
mov rsi, rcx xor rsi, qword ptr [r11+0x10] cmp rsi, 1
- ja SHORT G_M60590_IG11
+ ja SHORT G_M60590_IG12
;; size=13 bbWeight=0.17 PerfScore 0.74
-G_M60590_IG08: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
+G_M60590_IG11: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0800 {r11}, byref, isz
; byrRegs -[r8] cmp ebx, dword ptr [r11]
- jne SHORT G_M60590_IG13 - ;; size=5 bbWeight=0.17 PerfScore 0.66 -G_M60590_IG09: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[r11] - cmp esi, 1 - je SHORT G_M60590_IG03 - test esi, esi - je SHORT G_M60590_IG14 - ;; size=9 bbWeight=0.17 PerfScore 0.42 -G_M60590_IG10: ; bbWeight=0.17, epilog, nogc, extend - pop rbx - pop rsi - jmp <unknown method> - ; gcr arg pop 0 - ;; size=7 bbWeight=0.17 PerfScore 0.50 -G_M60590_IG11: ; bbWeight=0.10, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, gcvars, byref, isz - ; byrRegs +[r8]
+ jne G_M60590_IG05 + jmp SHORT G_M60590_IG14 + ;; size=11 bbWeight=0.17 PerfScore 0.99 +G_M60590_IG12: ; bbWeight=0.10, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref + ; byrRegs -[r11] +[r8]
test ebx, ebx
- je SHORT G_M60590_IG13 - ;; size=4 bbWeight=0.10 PerfScore 0.13 -G_M60590_IG12: ; bbWeight=0.27, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
+ je G_M60590_IG05 + ;; size=8 bbWeight=0.10 PerfScore 0.13 +G_M60590_IG13: ; bbWeight=0.27, gcrefRegs=0004 {rdx}, byrefRegs=0100 {r8}, byref, isz
inc r9d add r10d, r9d and r10d, dword ptr [r8+0x04] cmp r9d, 8
- jl SHORT G_M60590_IG06 - ;; size=16 bbWeight=0.27 PerfScore 1.28 -G_M60590_IG13: ; bbWeight=0.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
+ jl SHORT G_M60590_IG09 + jmp G_M60590_IG05 + ;; size=21 bbWeight=0.27 PerfScore 1.81 +G_M60590_IG14: ; bbWeight=0.17, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref
; byrRegs -[r8]
- mov esi, 2 - jmp SHORT G_M60590_IG09 - ;; size=7 bbWeight=0.00 PerfScore 0.00 -G_M60590_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ mov r8d, esi + jmp G_M60590_IG06 + ;; size=8 bbWeight=0.17 PerfScore 0.37 +G_M60590_IG15: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] xor rdx, rdx ; gcrRegs +[rdx] jmp G_M60590_IG03 ;; size=7 bbWeight=0 PerfScore 0.00
-; Total bytes of code 170, prolog size 2, PerfScore 12.72, instruction count 54, allocated bytes for code 170 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 198, prolog size 2, PerfScore 18.12, instruction count 57, allocated bytes for code 198 (MethodHash=9f861351) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info:

libraries.crossgen2.windows.x64.checked.mch

-29 (-4.28%) : 152745.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)

@@ -8,17 +8,17 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 4, 7 ) ref -> rbx this class-hnd single-def <System.Data.ProviderBase.DbMetaDataFactory>
+; V00 this [V00,T10] ( 4, 7 ) ref -> rbx this class-hnd single-def <System.Data.ProviderBase.DbMetaDataFactory>
; V01 arg1 [V01,T11] ( 6, 5 ) ref -> rsi class-hnd single-def <System.String> ; V02 arg2 [V02,T14] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String[]> ; V03 loc0 [V03,T13] ( 5, 5 ) ref -> r14 class-hnd single-def <System.Data.DataTable>
-; V04 loc1 [V04,T09] ( 6, 8 ) ref -> r15 class-hnd exact single-def <System.Data.DataTable>
+; V04 loc1 [V04,T08] ( 6, 10 ) ref -> r15 class-hnd exact single-def <System.Data.DataTable>
; V05 loc2 [V05,T04] ( 3, 33 ) ref -> rdi class-hnd single-def <<unknown class>> ; V06 loc3 [V06,T03] ( 5, 36 ) ref -> rsi class-hnd single-def <<unknown class>>
-; V07 loc4 [V07,T06] ( 4, 22 ) ref -> r12 class-hnd <<unknown class>> -; V08 loc5 [V08,T07] ( 6, 10 ) ref -> [rbp-0x48] class-hnd EH-live single-def <<unknown class>> -; V09 loc6 [V09,T05] ( 3, 24 ) ref -> r13 class-hnd <<unknown class>> -; V10 loc7 [V10,T00] ( 7, 98 ) int -> [rbp-0x3C]
+; V07 loc4 [V07,T05] ( 4, 26 ) ref -> r13 class-hnd <<unknown class>> +; V08 loc5 [V08,T09] ( 6, 10 ) ref -> [rbp-0x40] class-hnd EH-live spill-single-def <<unknown class>> +; V09 loc6 [V09,T06] ( 3, 24 ) ref -> r14 class-hnd <<unknown class>> +; V10 loc7 [V10,T00] ( 7, 98 ) int -> r12
; V11 loc8 [V11,T19] ( 6, 2.50) ref -> rax class-hnd <<unknown class>> ; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ; V13 tmp1 [V13,T12] ( 3, 6 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Data.DataTable> @@ -28,11 +28,11 @@ ; V17 tmp5 [V17,T17] ( 2, 4 ) ref -> rdx single-def "argument with side effect" ; V18 tmp6 [V18,T18] ( 2, 4 ) ref -> rcx single-def "argument with side effect" ; V19 tmp7 [V19,T01] ( 2, 64 ) ref -> r8 "argument with side effect"
-; V20 tmp8 [V20,T02] ( 2, 64 ) ref -> [rbp-0x50] spill-single-def "argument with side effect" -; V21 tmp9 [V21,T10] ( 2, 8 ) ref -> rcx "argument with side effect" -; V22 PSPSym [V22,T20] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V20 tmp8 [V20,T02] ( 2, 64 ) ref -> [rbp-0x48] spill-single-def "argument with side effect" +; V21 tmp9 [V21,T07] ( 2, 16 ) ref -> rcx "argument with side effect" +; V22 PSPSym [V22,T20] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M46192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -43,16 +43,16 @@ G_M46192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rdi push rsi push rbx
- sub rsp, 72 - lea rbp, [rsp+0x80] - mov qword ptr [rbp-0x60], rsp
+ sub rsp, 56 + lea rbp, [rsp+0x70] + mov qword ptr [rbp-0x50], rsp
mov rbx, rcx ; gcrRegs +[rbx] mov rsi, rdx ; gcrRegs +[rsi] mov rdi, r8 ; gcrRegs +[rdi]
- ;; size=37 bbWeight=1 PerfScore 10.50
+ ;; size=34 bbWeight=1 PerfScore 10.50
G_M46192_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] @@ -144,24 +144,21 @@ G_M46192_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 call [r11]<unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14] - mov gword ptr [rbp-0x48], r14
+ mov gword ptr [rbp-0x40], rax
; GC ptr vars +{V08}
- ;; size=191 bbWeight=1 PerfScore 59.00 -G_M46192_IG03: ; bbWeight=1, gcVars=0000000000000080 {V08}, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax] - mov rcx, r14
+ ;; size=188 bbWeight=1 PerfScore 58.75 +G_M46192_IG03: ; bbWeight=1, gcVars=0000000000000200 {V08}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref + mov rcx, rax
; gcrRegs +[rcx] lea r11, [(reloc)] call [r11]<unknown method>
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0 test eax, eax je G_M46192_IG11 ;; size=21 bbWeight=1 PerfScore 5.00
-G_M46192_IG04: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref - mov rcx, r14
+G_M46192_IG04: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref + mov rcx, gword ptr [rbp-0x40]
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address call [r11]<unknown method> @@ -172,58 +169,54 @@ G_M46192_IG04: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefR call [CORINFO_HELP_READYTORUN_CHKCAST] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r13, rax - ; gcrRegs +[r13]
+ mov r14, rax + ; gcrRegs +[r14]
mov rcx, rbx ; gcrRegs +[rcx]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 test eax, eax je G_M46192_IG08
- ;; size=45 bbWeight=4 PerfScore 48.00 -G_M46192_IG05: ; bbWeight=2, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=4 PerfScore 51.00 +G_M46192_IG05: ; bbWeight=2, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, r15 ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address call [r11]<unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov r12, rax - ; gcrRegs +[r12] - xor eax, eax - ; gcrRegs -[rax] - mov dword ptr [rbp-0x3C], eax
+ mov r13, rax + ; gcrRegs +[r13] + xor r12d, r12d
mov rcx, rsi ; gcrRegs +[rcx] lea r11, [(reloc)] cmp dword ptr [rcx], ecx call [r11]<unknown method>
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0 test eax, eax jle SHORT G_M46192_IG07
- ;; size=40 bbWeight=2 PerfScore 26.50 -G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=38 bbWeight=2 PerfScore 24.50 +G_M46192_IG06: ; bbWeight=16, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi ; gcrRegs +[rcx]
- mov edx, dword ptr [rbp-0x3C]
+ mov edx, r12d
lea r11, [(reloc)] ; function address call [r11]<unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x50], rax
+ mov gword ptr [rbp-0x48], rax
; GC ptr vars +{V20}
- mov r10d, dword ptr [rbp-0x3C] - cmp r10d, dword ptr [rdi+0x08]
+ cmp r12d, dword ptr [rdi+0x08]
jae G_M46192_IG10
- mov dword ptr [rbp-0x3C], r10d - mov edx, r10d
+ mov edx, r12d
mov rdx, gword ptr [rdi+8*rdx+0x10] ; gcrRegs +[rdx]
- mov rcx, r13
+ mov rcx, r14
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address mov r8d, 512 @@ -233,9 +226,9 @@ G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15 ; gcr arg pop 0 mov r8, rax ; gcrRegs +[r8]
- mov rdx, gword ptr [rbp-0x50]
+ mov rdx, gword ptr [rbp-0x48]
; gcrRegs +[rdx]
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address cmp dword ptr [rcx], ecx @@ -243,22 +236,18 @@ G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15 call [r11]<unknown method> ; gcrRegs -[rax rcx rdx r8] ; gcr arg pop 0
- mov r10d, dword ptr [rbp-0x3C] - inc r10d - mov dword ptr [rbp-0x3C], r10d
+ inc r12d
mov rcx, rsi ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address call [r11]<unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- mov ecx, dword ptr [rbp-0x3C] - cmp eax, ecx - mov dword ptr [rbp-0x3C], ecx
+ cmp eax, r12d
jg SHORT G_M46192_IG06
- ;; size=123 bbWeight=16 PerfScore 612.00 -G_M46192_IG07: ; bbWeight=2, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13]
+ ;; size=102 bbWeight=16 PerfScore 504.00 +G_M46192_IG07: ; bbWeight=4, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14]
mov rcx, r15 ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address @@ -267,23 +256,23 @@ G_M46192_IG07: ; bbWeight=2, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, by ; gcr arg pop 0 mov rcx, rax ; gcrRegs +[rcx]
- mov rdx, r12
+ mov rdx, r13
; gcrRegs +[rdx] lea r11, [(reloc)] ; function address cmp dword ptr [rcx], ecx call [r11]<unknown method> ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address cmp dword ptr [rcx], ecx call [r11]<unknown method>
- ; gcrRegs -[rcx r12]
+ ; gcrRegs -[rcx r13]
; gcr arg pop 0
- ;; size=46 bbWeight=2 PerfScore 35.00 -G_M46192_IG08: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref - mov rcx, r14
+ ;; size=46 bbWeight=4 PerfScore 70.00 +G_M46192_IG08: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref + mov rcx, gword ptr [rbp-0x40]
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address call [r11]<unknown method> @@ -291,28 +280,28 @@ G_M46192_IG08: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefR ; gcr arg pop 0 test eax, eax jne G_M46192_IG04
- ;; size=21 bbWeight=4 PerfScore 20.00 -G_M46192_IG09: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=22 bbWeight=4 PerfScore 23.00 +G_M46192_IG09: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rbx rsi rdi] jmp SHORT G_M46192_IG11 ;; size=2 bbWeight=1 PerfScore 2.00 G_M46192_IG10: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ...

-29 (-4.28%) : 234053.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)

@@ -8,31 +8,31 @@ ; No matching PGO data ; Final local variable assignments ;
-; V00 this [V00,T08] ( 4, 7 ) ref -> rbx this class-hnd single-def <System.Data.ProviderBase.DbMetaDataFactory> -; V01 arg1 [V01,T11] ( 6, 5 ) ref -> rsi class-hnd single-def <System.String>
+; V00 this [V00,T10] ( 4, 7 ) ref -> rbx this class-hnd single-def <System.Data.ProviderBase.DbMetaDataFactory> +; V01 arg1 [V01,T12] ( 6, 5 ) ref -> rsi class-hnd single-def <System.String>
; V02 arg2 [V02,T14] ( 3, 3 ) ref -> rdi class-hnd single-def <System.String[]>
-; V03 loc0 [V03,T12] ( 5, 7 ) ref -> r15 class-hnd exact single-def <System.Data.DataTable>
+; V03 loc0 [V03,T09] ( 5, 9 ) ref -> r15 class-hnd exact single-def <System.Data.DataTable>
; V04 loc1 [V04,T04] ( 3, 33 ) ref -> rdi class-hnd single-def <<unknown class>> ; V05 loc2 [V05,T03] ( 5, 36 ) ref -> rsi class-hnd single-def <<unknown class>>
-; V06 loc3 [V06,T06] ( 4, 22 ) ref -> r12 class-hnd <<unknown class>>
+; V06 loc3 [V06,T05] ( 4, 26 ) ref -> r13 class-hnd <<unknown class>>
; V07 loc4 [V07,T13] ( 5, 5 ) ref -> r14 class-hnd single-def <System.Data.DataTable>
-; V08 loc5 [V08,T07] ( 6, 10 ) ref -> [rbp-0x48] class-hnd EH-live single-def <<unknown class>> -; V09 loc6 [V09,T05] ( 3, 24 ) ref -> r13 class-hnd <<unknown class>> -; V10 loc7 [V10,T00] ( 7, 98 ) int -> [rbp-0x3C]
+; V08 loc5 [V08,T08] ( 6, 10 ) ref -> [rbp-0x40] class-hnd EH-live spill-single-def <<unknown class>> +; V09 loc6 [V09,T06] ( 3, 24 ) ref -> r14 class-hnd <<unknown class>> +; V10 loc7 [V10,T00] ( 7, 98 ) int -> r12
; V11 loc8 [V11,T19] ( 6, 2.50) ref -> rax class-hnd <<unknown class>> ; V12 OutArgs [V12 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V13 tmp1 [V13,T09] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Data.DataTable>
+; V13 tmp1 [V13,T11] ( 4, 8 ) ref -> r15 class-hnd exact single-def "NewObj constructor temp" <System.Data.DataTable>
;* V14 tmp2 [V14 ] ( 0, 0 ) ref -> zero-ref class-hnd "non-inline candidate call" <<unknown class>> ; V15 tmp3 [V15,T15] ( 2, 4 ) ref -> rcx single-def "argument with side effect" ; V16 tmp4 [V16,T16] ( 2, 4 ) ref -> rdx single-def "argument with side effect" ; V17 tmp5 [V17,T17] ( 2, 4 ) ref -> rdx single-def "argument with side effect" ; V18 tmp6 [V18,T18] ( 2, 4 ) ref -> rcx single-def "argument with side effect" ; V19 tmp7 [V19,T01] ( 2, 64 ) ref -> r8 "argument with side effect"
-; V20 tmp8 [V20,T02] ( 2, 64 ) ref -> [rbp-0x50] spill-single-def "argument with side effect" -; V21 tmp9 [V21,T10] ( 2, 8 ) ref -> rcx "argument with side effect" -; V22 PSPSym [V22,T20] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
+; V20 tmp8 [V20,T02] ( 2, 64 ) ref -> [rbp-0x48] spill-single-def "argument with side effect" +; V21 tmp9 [V21,T07] ( 2, 16 ) ref -> rcx "argument with side effect" +; V22 PSPSym [V22,T20] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
;
-; Lcl frame size = 72
+; Lcl frame size = 56
G_M46192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -43,16 +43,16 @@ G_M46192_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rdi push rsi push rbx
- sub rsp, 72 - lea rbp, [rsp+0x80] - mov qword ptr [rbp-0x60], rsp
+ sub rsp, 56 + lea rbp, [rsp+0x70] + mov qword ptr [rbp-0x50], rsp
mov rbx, rcx ; gcrRegs +[rbx] mov rsi, rdx ; gcrRegs +[rsi] mov rdi, r8 ; gcrRegs +[rdi]
- ;; size=37 bbWeight=1 PerfScore 10.50
+ ;; size=34 bbWeight=1 PerfScore 10.50
G_M46192_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] @@ -144,24 +144,21 @@ G_M46192_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 call [r11]<unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r14, rax - ; gcrRegs +[r14] - mov gword ptr [rbp-0x48], r14
+ mov gword ptr [rbp-0x40], rax
; GC ptr vars +{V08}
- ;; size=191 bbWeight=1 PerfScore 59.00 -G_M46192_IG03: ; bbWeight=1, gcVars=0000000000000080 {V08}, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs -[rax] - mov rcx, r14
+ ;; size=188 bbWeight=1 PerfScore 58.75 +G_M46192_IG03: ; bbWeight=1, gcVars=0000000000000100 {V08}, gcrefRegs=80C9 {rax rbx rsi rdi r15}, byrefRegs=0000 {}, gcvars, byref + mov rcx, rax
; gcrRegs +[rcx] lea r11, [(reloc)] call [r11]<unknown method>
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0 test eax, eax je G_M46192_IG11 ;; size=21 bbWeight=1 PerfScore 5.00
-G_M46192_IG04: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref - mov rcx, r14
+G_M46192_IG04: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref + mov rcx, gword ptr [rbp-0x40]
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address call [r11]<unknown method> @@ -172,58 +169,54 @@ G_M46192_IG04: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefR call [CORINFO_HELP_READYTORUN_CHKCAST] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r13, rax - ; gcrRegs +[r13]
+ mov r14, rax + ; gcrRegs +[r14]
mov rcx, rbx ; gcrRegs +[rcx]
- mov rdx, r13
+ mov rdx, r14
; gcrRegs +[rdx] call [<unknown method>] ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0 test eax, eax je G_M46192_IG08
- ;; size=45 bbWeight=4 PerfScore 48.00 -G_M46192_IG05: ; bbWeight=2, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=46 bbWeight=4 PerfScore 51.00 +G_M46192_IG05: ; bbWeight=2, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, r15 ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address call [r11]<unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov r12, rax - ; gcrRegs +[r12] - xor eax, eax - ; gcrRegs -[rax] - mov dword ptr [rbp-0x3C], eax
+ mov r13, rax + ; gcrRegs +[r13] + xor r12d, r12d
mov rcx, rsi ; gcrRegs +[rcx] lea r11, [(reloc)] cmp dword ptr [rcx], ecx call [r11]<unknown method>
- ; gcrRegs -[rcx]
+ ; gcrRegs -[rax rcx]
; gcr arg pop 0 test eax, eax jle SHORT G_M46192_IG07
- ;; size=40 bbWeight=2 PerfScore 26.50 -G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=38 bbWeight=2 PerfScore 24.50 +G_M46192_IG06: ; bbWeight=16, gcrefRegs=E0C8 {rbx rsi rdi r13 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rcx, rsi ; gcrRegs +[rcx]
- mov edx, dword ptr [rbp-0x3C]
+ mov edx, r12d
lea r11, [(reloc)] ; function address call [r11]<unknown method> ; gcrRegs -[rcx] +[rax] ; gcr arg pop 0
- mov gword ptr [rbp-0x50], rax
+ mov gword ptr [rbp-0x48], rax
; GC ptr vars +{V20}
- mov r10d, dword ptr [rbp-0x3C] - cmp r10d, dword ptr [rdi+0x08]
+ cmp r12d, dword ptr [rdi+0x08]
jae G_M46192_IG10
- mov dword ptr [rbp-0x3C], r10d - mov edx, r10d
+ mov edx, r12d
mov rdx, gword ptr [rdi+8*rdx+0x10] ; gcrRegs +[rdx]
- mov rcx, r13
+ mov rcx, r14
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address mov r8d, 512 @@ -233,9 +226,9 @@ G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15 ; gcr arg pop 0 mov r8, rax ; gcrRegs +[r8]
- mov rdx, gword ptr [rbp-0x50]
+ mov rdx, gword ptr [rbp-0x48]
; gcrRegs +[rdx]
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address cmp dword ptr [rcx], ecx @@ -243,22 +236,18 @@ G_M46192_IG06: ; bbWeight=16, gcrefRegs=F0C8 {rbx rsi rdi r12 r13 r14 r15 call [r11]<unknown method> ; gcrRegs -[rax rcx rdx r8] ; gcr arg pop 0
- mov r10d, dword ptr [rbp-0x3C] - inc r10d - mov dword ptr [rbp-0x3C], r10d
+ inc r12d
mov rcx, rsi ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address call [r11]<unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- mov ecx, dword ptr [rbp-0x3C] - cmp eax, ecx - mov dword ptr [rbp-0x3C], ecx
+ cmp eax, r12d
jg SHORT G_M46192_IG06
- ;; size=123 bbWeight=16 PerfScore 612.00 -G_M46192_IG07: ; bbWeight=2, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[r13]
+ ;; size=102 bbWeight=16 PerfScore 504.00 +G_M46192_IG07: ; bbWeight=4, gcrefRegs=A0C8 {rbx rsi rdi r13 r15}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14]
mov rcx, r15 ; gcrRegs +[rcx] lea r11, [(reloc)] ; function address @@ -267,23 +256,23 @@ G_M46192_IG07: ; bbWeight=2, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, by ; gcr arg pop 0 mov rcx, rax ; gcrRegs +[rcx]
- mov rdx, r12
+ mov rdx, r13
; gcrRegs +[rdx] lea r11, [(reloc)] ; function address cmp dword ptr [rcx], ecx call [r11]<unknown method> ; gcrRegs -[rax rcx rdx] ; gcr arg pop 0
- mov rcx, r12
+ mov rcx, r13
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address cmp dword ptr [rcx], ecx call [r11]<unknown method>
- ; gcrRegs -[rcx r12]
+ ; gcrRegs -[rcx r13]
; gcr arg pop 0
- ;; size=46 bbWeight=2 PerfScore 35.00 -G_M46192_IG08: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefRegs=0000 {}, byref - mov rcx, r14
+ ;; size=46 bbWeight=4 PerfScore 70.00 +G_M46192_IG08: ; bbWeight=4, gcrefRegs=80C8 {rbx rsi rdi r15}, byrefRegs=0000 {}, byref + mov rcx, gword ptr [rbp-0x40]
; gcrRegs +[rcx] lea r11, [(reloc)] ; function address call [r11]<unknown method> @@ -291,28 +280,28 @@ G_M46192_IG08: ; bbWeight=4, gcrefRegs=C0C8 {rbx rsi rdi r14 r15}, byrefR ; gcr arg pop 0 test eax, eax jne G_M46192_IG04
- ;; size=21 bbWeight=4 PerfScore 20.00 -G_M46192_IG09: ; bbWeight=1, gcrefRegs=C000 {r14 r15}, byrefRegs=0000 {}, byref, isz
+ ;; size=22 bbWeight=4 PerfScore 23.00 +G_M46192_IG09: ; bbWeight=1, gcrefRegs=8000 {r15}, byrefRegs=0000 {}, byref, isz
...

-12 (-3.70%) : 28654.dasm - System.Collections.Concurrent.ConcurrentQueue1[System.__Canon]:GetCount(System.Collections.Concurrent.ConcurrentQueueSegment1[System.Canon],int,System.Collections.Concurrent.ConcurrentQueueSegment`1[System.Canon],int):long (FullOpts)

@@ -12,9 +12,9 @@ ;* V00 TypeCtx [V00 ] ( 0, 0 ) long -> zero-ref single-def ; V01 arg0 [V01,T04] ( 10, 8.50) ref -> rsi class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]> ; V02 arg1 [V02,T05] ( 8, 5.50) int -> rdi
-; V03 arg2 [V03,T02] ( 9, 11 ) ref -> rbx class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]> -; V04 arg3 [V04,T11] ( 2, 1 ) int -> [rsp+0x70] single-def -; V05 loc0 [V05,T03] ( 7, 11.50) long -> rbp
+; V03 arg2 [V03,T02] ( 9, 11.50) ref -> rbx class-hnd single-def <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]> +; V04 arg3 [V04,T11] ( 2, 1.50) int -> rbp single-def +; V05 loc0 [V05,T03] ( 7, 12.50) long -> r14
; V06 loc1 [V06,T06] ( 7, 4.50) int -> rcx ; V07 loc2 [V07,T00] ( 9, 29 ) ref -> rsi class-hnd <System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon]> ; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" @@ -47,7 +47,8 @@ G_M52582_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, mov edi, r8d mov rbx, r9 ; gcrRegs +[rbx]
- ;; size=19 bbWeight=1 PerfScore 6.00
+ mov ebp, dword ptr [rsp+0x70] + ;; size=23 bbWeight=1 PerfScore 7.00
G_M52582_IG02: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz cmp byte ptr [rsi+0x1C], 0 jne SHORT G_M52582_IG04 @@ -105,19 +106,17 @@ G_M52582_IG09: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 3.62 G_M52582_IG10: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz
- xor ebp, ebp
+ xor r14d, r14d
cmp rsi, rbx je SHORT G_M52582_IG12
- ;; size=7 bbWeight=1 PerfScore 1.50
+ ;; size=8 bbWeight=1 PerfScore 1.50
G_M52582_IG11: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov ecx, dword ptr [rsi+0xA0] jmp SHORT G_M52582_IG13 ;; size=8 bbWeight=0.50 PerfScore 2.00 G_M52582_IG12: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- mov r14d, dword ptr [rsp+0x70] - mov ecx, r14d - mov dword ptr [rsp+0x70], r14d - ;; size=13 bbWeight=0.50 PerfScore 1.12
+ mov ecx, ebp + ;; size=2 bbWeight=0.50 PerfScore 0.12
G_M52582_IG13: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz mov rdx, gword ptr [rsi+0x08] ; gcrRegs +[rdx] @@ -144,7 +143,7 @@ G_M52582_IG15: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 sub edx, edi ;; size=4 bbWeight=0.50 PerfScore 0.25 G_M52582_IG16: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
- movsxd rbp, edx
+ movsxd r14, edx
;; size=3 bbWeight=0.50 PerfScore 0.12 G_M52582_IG17: ; bbWeight=1, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref, isz cmp rsi, rbx @@ -192,27 +191,26 @@ G_M52582_IG23: ; bbWeight=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, add ecx, ecx sub eax, ecx cdqe
- add rbp, rax
+ add r14, rax
mov rsi, gword ptr [rsi+0x10] cmp rsi, rbx jne SHORT G_M52582_IG19 ;; size=31 bbWeight=4 PerfScore 41.00
-G_M52582_IG24: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M52582_IG24: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
; gcrRegs -[rsi] mov rax, gword ptr [rbx+0x08] ; gcrRegs +[rax] mov eax, dword ptr [rax+0x08] ; gcrRegs -[rax] add eax, eax
- mov r14d, dword ptr [rsp+0x70] - sub r14d, eax - movsxd rax, r14d - add rax, rbp - mov rbp, rax - ;; size=26 bbWeight=0.50 PerfScore 3.12
+ sub ebp, eax + movsxd rax, ebp + add rax, r14 + mov r14, rax + ;; size=20 bbWeight=1 PerfScore 5.25
G_M52582_IG25: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; gcrRegs -[rbx]
- mov rax, rbp
+ mov rax, r14
;; size=3 bbWeight=1 PerfScore 0.25 G_M52582_IG26: ; bbWeight=1, epilog, nogc, extend add rsp, 32 @@ -224,7 +222,7 @@ G_M52582_IG26: ; bbWeight=1, epilog, nogc, extend ret ;; size=11 bbWeight=1 PerfScore 3.75
-; Total bytes of code 324, prolog size 19, PerfScore 163.38, instruction count 102, allocated bytes for code 324 (MethodHash=f6243299) for method System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:GetCount(System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int,System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int):long (FullOpts)
+; Total bytes of code 312, prolog size 23, PerfScore 165.50, instruction count 100, allocated bytes for code 312 (MethodHash=f6243299) for method System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:GetCount(System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int,System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int):long (FullOpts)
; ============================================================ Unwind Info:

+39 (+4.50%) : 29532.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,ulong,ubyte):int:this (FullOpts)

@@ -14,7 +14,7 @@ ; V02 arg2 [V02,T10] ( 4, 8 ) byref -> r8 ld-addr-op single-def ; V03 arg3 [V03,T15] ( 5, 3.50) int -> [rbp+0x28] single-def ; V04 arg4 [V04,T25] ( 4, 2 ) long -> rdi single-def
-; V05 arg5 [V05,T28] ( 2, 1 ) ubyte -> [rbp+0x38] single-def
+; V05 arg5 [V05,T28] ( 2, 1.50) ubyte -> [rbp+0x38] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc1 [V07 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def ;* V08 loc2 [V08 ] ( 0, 0 ) long -> zero-ref @@ -26,7 +26,7 @@ ; V14 loc8 [V14,T17] ( 3, 5 ) int -> rdx ; V15 loc9 [V15,T08] ( 7, 17.50) int -> rax ; V16 loc10 [V16,T02] ( 5, 84 ) int -> r8
-; V17 loc11 [V17,T03] ( 8, 75 ) int -> r9
+; V17 loc11 [V17,T03] ( 8, 75.50) int -> r9
; V18 loc12 [V18,T00] ( 8,176 ) ushort -> r10 ; V19 loc13 [V19,T01] ( 6,112 ) ushort -> r11 ;* V20 loc14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> @@ -45,11 +45,11 @@ ;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V34 tmp13 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V35 tmp14 [V35,T13] ( 5, 6 ) int -> rax "Single return block return value"
-; V36 PInvokeFrame [V36 ] ( 5, 3 ) struct (88) [rbp-0xE8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" -; V37 tmp16 [V37,T22] ( 4, 3.50) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V38 tmp17 [V38,T11] ( 9, 8.50) int -> r12 "field V01._length (fldOffset=0x8)" P-INDEP -; V39 tmp18 [V39,T19] ( 4, 4 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V40 tmp19 [V40,T07] ( 11, 26 ) int -> r15 "field V02._length (fldOffset=0x8)" P-INDEP
+; V36 PInvokeFrame [V36 ] ( 5, 3 ) struct (88) [rbp-0xF0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" +; V37 tmp16 [V37,T22] ( 4, 3.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V38 tmp17 [V38,T11] ( 9, 9 ) int -> [rbp-0x5C] spill-single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V39 tmp18 [V39,T19] ( 4, 4 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V40 tmp19 [V40,T07] ( 11, 26 ) int -> r13 "field V02._length (fldOffset=0x8)" P-INDEP
;* V41 tmp20 [V41 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V42 tmp21 [V42 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ;* V43 tmp22 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP @@ -66,15 +66,15 @@ ;* V54 tmp33 [V54 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]> ; V55 tmp34 [V55,T20] ( 2, 4 ) long -> rax "Cast away GC" ; V56 tmp35 [V56,T21] ( 2, 4 ) long -> rcx "Cast away GC"
-; V57 tmp36 [V57 ] ( 6, 9 ) struct (16) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> -; V58 cse0 [V58,T24] ( 3, 2.50) byref -> [rbp-0x70] spill-single-def "CSE - moderate"
+; V57 tmp36 [V57 ] ( 6, 9 ) struct (16) [rbp-0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> +; V58 cse0 [V58,T24] ( 3, 2.50) byref -> [rbp-0x78] spill-single-def "CSE - moderate"
; V59 cse1 [V59,T18] ( 9, 4.50) ref -> rdx multi-def "CSE - moderate"
-; TEMP_01 int -> [rbp-0x74] -; TEMP_04 long -> [rbp-0x7C] -; TEMP_03 long -> [rbp-0x84] -; TEMP_02 long -> [rbp-0x8C]
+; TEMP_01 int -> [rbp-0x7C] +; TEMP_04 long -> [rbp-0x84] +; TEMP_03 long -> [rbp-0x8C] +; TEMP_02 long -> [rbp-0x94]
;
-; Lcl frame size = 232
+; Lcl frame size = 248
G_M55808_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -85,34 +85,36 @@ G_M55808_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rdi push rsi push rbx
- sub rsp, 232 - lea rbp, [rsp+0x120] - xor eax, eax - mov qword ptr [rbp-0x68], rax
+ sub rsp, 248 + lea rbp, [rsp+0x130]
xorps xmm4, xmm4
+ movaps xmmword ptr [rbp-0x70], xmm4
movaps xmmword ptr [rbp-0x60], xmm4 movaps xmmword ptr [rbp-0x50], xmm4
+ xor eax, eax
mov qword ptr [rbp-0x40], rax mov rbx, rcx ; gcrRegs +[rbx] mov esi, r9d mov rdi, qword ptr [rbp+0x30]
- ;; size=58 bbWeight=1 PerfScore 16.83
+ mov r14d, dword ptr [rbp+0x38] + ;; size=62 bbWeight=1 PerfScore 18.83
G_M55808_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0104 {rdx r8}, byref, isz ; byrRegs +[rdx r8]
- mov r14, bword ptr [r8] - ; byrRegs +[r14] - mov r15d, dword ptr [r8+0x08] - mov r13, bword ptr [rdx] - ; byrRegs +[r13] - mov r12d, dword ptr [rdx+0x08]
+ mov r15, bword ptr [r8] + ; byrRegs +[r15] + mov r13d, dword ptr [r8+0x08] + mov r12, bword ptr [rdx] + ; byrRegs +[r12] + mov eax, dword ptr [rdx+0x08] + mov dword ptr [rbp-0x5C], eax
call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE] ; byrRegs -[rdx r8] +[rax] ; gcr arg pop 0 cmp byte ptr [rax+0x0B49], 0 je SHORT G_M55808_IG04
- ;; size=29 bbWeight=1 PerfScore 15.00 -G_M55808_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=31 bbWeight=1 PerfScore 16.00 +G_M55808_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
; byrRegs -[rax] mov rcx, qword ptr [(reloc)] ; const ptr mov rdx, gword ptr [rcx] @@ -123,11 +125,11 @@ G_M55808_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 3.62
-G_M55808_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz - test r15d, r15d
+G_M55808_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz + test r13d, r13d
jne SHORT G_M55808_IG06 ;; size=5 bbWeight=1 PerfScore 1.25
-G_M55808_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M55808_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
mov rcx, qword ptr [(reloc)] ; const ptr mov rdx, gword ptr [rcx] ; gcrRegs +[rdx] @@ -137,13 +139,13 @@ G_M55808_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 3.62
-G_M55808_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M55808_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
mov gword ptr [rbp+0x10], rbx ; GC ptr vars +{V00} cmp byte ptr [rbx+0x2C], 0 je SHORT G_M55808_IG09 ;; size=10 bbWeight=1 PerfScore 5.00
-G_M55808_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M55808_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
; gcrRegs -[rbx] mov dword ptr [rbp+0x28], esi xor ecx, ecx @@ -152,10 +154,10 @@ G_M55808_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs= test cl, cl jne SHORT G_M55808_IG10 ;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M55808_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M55808_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov esi, dword ptr [rbp+0x28] ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M55808_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M55808_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov rcx, qword ptr [(reloc)] ; const ptr mov rdx, gword ptr [rcx] ; gcrRegs +[rdx] @@ -166,259 +168,272 @@ G_M55808_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1 ; gcr arg pop 0 mov dword ptr [rbp+0x28], esi ;; size=22 bbWeight=0.50 PerfScore 4.12
-G_M55808_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz - mov bword ptr [rbp-0x40], r13 - mov rax, r13 - mov bword ptr [rbp-0x48], r14 - mov rcx, r14
+G_M55808_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref, isz + mov bword ptr [rbp-0x40], r12 + mov rax, r12 + mov bword ptr [rbp-0x48], r15 + mov rcx, r15
mov qword ptr [rbp-0x50], rax mov qword ptr [rbp-0x58], rcx call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] ; byrRegs +[rax] ; gcr arg pop 0
- mov bword ptr [rbp-0x70], rax
+ mov bword ptr [rbp-0x78], rax
; GC ptr vars +{V58} mov rcx, gword ptr [rax+0x398] ; gcrRegs +[rcx] test rcx, rcx
- je G_M55808_IG40 - mov bword ptr [rbp-0x68], r14 - mov dword ptr [rbp-0x60], r15d - lea rdx, [rbp-0x68]
+ je G_M55808_IG43 + mov bword ptr [rbp-0x70], r15 + mov dword ptr [rbp-0x68], r13d + lea rdx, [rbp-0x70]
lea r11, [(reloc)] ; function address call [r11]<unknown method> ; gcrRegs -[rcx]
- ; byrRegs -[rax r14]
+ ; byrRegs -[rax r15]
; gcr arg pop 0 test eax, eax
- jne SHORT G_M55808_IG13
+ jne SHORT G_M55808_IG14
;; size=74 bbWeight=1 PerfScore 19.00
-G_M55808_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz - cmp r15d, r12d - jle SHORT G_M55808_IG14 - mov r14, bword ptr [rbp-0x70] - ; byrRegs +[r14] - mov rcx, gword ptr [r14+0x398]
+G_M55808_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz + mov r15d, dword ptr [rbp-0x5C] + cmp r13d, r15d + jle SHORT G_M55808_IG15 + mov rdx, bword ptr [rbp-0x78] + ; byrRegs +[rdx] + mov rcx, gword ptr [rdx+0x398]
; gcrRegs +[rcx] test rcx, rcx
- je G_M55808_IG40 - mov bword ptr [rbp-0x68], r13 - mov dword ptr [rbp-0x60], r12d - lea rdx, [rbp-0x68]
+ je G_M55808_IG43 + mov bword ptr [rbp-0x70], r12 + mov dword ptr [rbp-0x68], r15d + lea rdx, [rbp-0x70] + ; byrRegs -[rdx]
lea r11, [(reloc)] ; function address ; GC ptr vars -{V58} call [r11]<unknown method> ; gcrRegs -[rcx]
- ; byrRegs -[r13-r14]
+ ; byrRegs -[r12]
; gcr arg pop 0 test eax, eax
- mov r13, qword ptr [rbp-0x50] - mov r14, qword ptr [rbp-0x58] - jne G_M55808_IG33 - ;; size=63 bbWeight=0.50 PerfScore 7.38
+ mov dword ptr [rbp+0x38], r14d + mov r12, qword ptr [rbp-0x50] + jne SHORT G_M55808_IG13 + ;; size=63 bbWeight=0.50 PerfScore 7.88
G_M55808_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V00} mov eax, -1
- jmp G_M55808_IG39
+ jmp G_M55808_IG42
;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M55808_IG13: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M55808_IG13: ; bbWeight=0.25, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V12}
- mov r13, qword ptr [rbp-0x50]
mov r14, qword ptr [rbp-0x58]
- jmp G_M55808_IG33 - ;; size=13 bbWeight=0.50 PerfScore 2.00 -G_M55808_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp byte ptr [rbp+0x38], 0
...

+39 (+4.80%) : 29533.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,ulong,ubyte):int:this (FullOpts)

@@ -14,7 +14,7 @@ ; V02 arg2 [V02,T10] ( 4, 8 ) byref -> r8 ld-addr-op single-def ; V03 arg3 [V03,T15] ( 5, 3.50) int -> [rbp+0x28] single-def ; V04 arg4 [V04,T25] ( 4, 2 ) long -> rdi single-def
-; V05 arg5 [V05,T28] ( 2, 1 ) ubyte -> [rbp+0x38] single-def
+; V05 arg5 [V05,T28] ( 2, 1.50) ubyte -> [rbp+0x38] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc1 [V07 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def ;* V08 loc2 [V08 ] ( 0, 0 ) long -> zero-ref @@ -26,7 +26,7 @@ ; V14 loc8 [V14,T17] ( 3, 5 ) int -> rdx ; V15 loc9 [V15,T08] ( 7, 17.50) int -> rax ; V16 loc10 [V16,T01] ( 5, 84 ) int -> r8
-; V17 loc11 [V17,T02] ( 8, 75 ) int -> r9
+; V17 loc11 [V17,T02] ( 8, 75.50) int -> r9
; V18 loc12 [V18,T00] ( 4,128 ) ushort -> r10 ; V19 loc13 [V19,T04] ( 2, 64 ) ushort -> r11 ;* V20 loc14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> @@ -45,11 +45,11 @@ ;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ;* V34 tmp13 [V34 ] ( 0, 0 ) long -> zero-ref "Inlining Arg" ; V35 tmp14 [V35,T13] ( 5, 6 ) int -> rax "Single return block return value"
-; V36 PInvokeFrame [V36 ] ( 5, 3 ) struct (88) [rbp-0xE8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" -; V37 tmp16 [V37,T22] ( 4, 3.50) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V38 tmp17 [V38,T11] ( 9, 8.50) int -> r12 "field V01._length (fldOffset=0x8)" P-INDEP -; V39 tmp18 [V39,T19] ( 4, 4 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V40 tmp19 [V40,T07] ( 11, 26 ) int -> r15 "field V02._length (fldOffset=0x8)" P-INDEP
+; V36 PInvokeFrame [V36 ] ( 5, 3 ) struct (88) [rbp-0xF0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" +; V37 tmp16 [V37,T22] ( 4, 3.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V38 tmp17 [V38,T11] ( 9, 9 ) int -> [rbp-0x5C] spill-single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V39 tmp18 [V39,T19] ( 4, 4 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V40 tmp19 [V40,T07] ( 11, 26 ) int -> r13 "field V02._length (fldOffset=0x8)" P-INDEP
;* V41 tmp20 [V41 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V42 tmp21 [V42 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ;* V43 tmp22 [V43 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP @@ -66,15 +66,15 @@ ;* V54 tmp33 [V54 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]> ; V55 tmp34 [V55,T20] ( 2, 4 ) long -> rax "Cast away GC" ; V56 tmp35 [V56,T21] ( 2, 4 ) long -> rcx "Cast away GC"
-; V57 tmp36 [V57 ] ( 6, 9 ) struct (16) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> -; V58 cse0 [V58,T24] ( 3, 2.50) byref -> [rbp-0x70] spill-single-def "CSE - moderate"
+; V57 tmp36 [V57 ] ( 6, 9 ) struct (16) [rbp-0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> +; V58 cse0 [V58,T24] ( 3, 2.50) byref -> [rbp-0x78] spill-single-def "CSE - moderate"
; V59 cse1 [V59,T18] ( 9, 4.50) ref -> rdx multi-def "CSE - moderate"
-; TEMP_01 int -> [rbp-0x74] -; TEMP_04 long -> [rbp-0x7C] -; TEMP_03 long -> [rbp-0x84] -; TEMP_02 long -> [rbp-0x8C]
+; TEMP_01 int -> [rbp-0x7C] +; TEMP_04 long -> [rbp-0x84] +; TEMP_03 long -> [rbp-0x8C] +; TEMP_02 long -> [rbp-0x94]
;
-; Lcl frame size = 232
+; Lcl frame size = 248
G_M39468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -85,34 +85,36 @@ G_M39468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rdi push rsi push rbx
- sub rsp, 232 - lea rbp, [rsp+0x120] - xor eax, eax - mov qword ptr [rbp-0x68], rax
+ sub rsp, 248 + lea rbp, [rsp+0x130]
xorps xmm4, xmm4
+ movaps xmmword ptr [rbp-0x70], xmm4
movaps xmmword ptr [rbp-0x60], xmm4 movaps xmmword ptr [rbp-0x50], xmm4
+ xor eax, eax
mov qword ptr [rbp-0x40], rax mov rbx, rcx ; gcrRegs +[rbx] mov esi, r9d mov rdi, qword ptr [rbp+0x30]
- ;; size=58 bbWeight=1 PerfScore 16.83
+ mov r14d, dword ptr [rbp+0x38] + ;; size=62 bbWeight=1 PerfScore 18.83
G_M39468_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0104 {rdx r8}, byref, isz ; byrRegs +[rdx r8]
- mov r14, bword ptr [r8] - ; byrRegs +[r14] - mov r15d, dword ptr [r8+0x08] - mov r13, bword ptr [rdx] - ; byrRegs +[r13] - mov r12d, dword ptr [rdx+0x08]
+ mov r15, bword ptr [r8] + ; byrRegs +[r15] + mov r13d, dword ptr [r8+0x08] + mov r12, bword ptr [rdx] + ; byrRegs +[r12] + mov eax, dword ptr [rdx+0x08] + mov dword ptr [rbp-0x5C], eax
call [CORINFO_HELP_READYTORUN_NONGCSTATIC_BASE] ; byrRegs -[rdx r8] +[rax] ; gcr arg pop 0 cmp byte ptr [rax+0x0B49], 0 je SHORT G_M39468_IG04
- ;; size=29 bbWeight=1 PerfScore 15.00 -G_M39468_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=31 bbWeight=1 PerfScore 16.00 +G_M39468_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
; byrRegs -[rax] mov rcx, qword ptr [(reloc)] ; const ptr mov rdx, gword ptr [rcx] @@ -123,11 +125,11 @@ G_M39468_IG03: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 3.62
-G_M39468_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz - test r15d, r15d
+G_M39468_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz + test r13d, r13d
jne SHORT G_M39468_IG06 ;; size=5 bbWeight=1 PerfScore 1.25
-G_M39468_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
mov rcx, qword ptr [(reloc)] ; const ptr mov rdx, gword ptr [rcx] ; gcrRegs +[rdx] @@ -137,13 +139,13 @@ G_M39468_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 3.62
-G_M39468_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M39468_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
mov gword ptr [rbp+0x10], rbx ; GC ptr vars +{V00} cmp byte ptr [rbx+0x2C], 0 je SHORT G_M39468_IG09 ;; size=10 bbWeight=1 PerfScore 5.00
-G_M39468_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M39468_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
; gcrRegs -[rbx] mov dword ptr [rbp+0x28], esi xor ecx, ecx @@ -152,10 +154,10 @@ G_M39468_IG07: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs= test cl, cl jne SHORT G_M39468_IG10 ;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M39468_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG08: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov esi, dword ptr [rbp+0x28] ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M39468_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov rcx, qword ptr [(reloc)] ; const ptr mov rdx, gword ptr [rcx] ; gcrRegs +[rdx] @@ -166,237 +168,250 @@ G_M39468_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1 ; gcr arg pop 0 mov dword ptr [rbp+0x28], esi ;; size=22 bbWeight=0.50 PerfScore 4.12
-G_M39468_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref, isz - mov bword ptr [rbp-0x40], r13 - mov rax, r13 - mov bword ptr [rbp-0x48], r14 - mov rcx, r14
+G_M39468_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref, isz + mov bword ptr [rbp-0x40], r12 + mov rax, r12 + mov bword ptr [rbp-0x48], r15 + mov rcx, r15
mov qword ptr [rbp-0x50], rax mov qword ptr [rbp-0x58], rcx call [CORINFO_HELP_READYTORUN_GCSTATIC_BASE] ; byrRegs +[rax] ; gcr arg pop 0
- mov bword ptr [rbp-0x70], rax
+ mov bword ptr [rbp-0x78], rax
; GC ptr vars +{V58} mov rcx, gword ptr [rax+0x398] ; gcrRegs +[rcx] test rcx, rcx
- je G_M39468_IG35 - mov bword ptr [rbp-0x68], r14 - mov dword ptr [rbp-0x60], r15d - lea rdx, [rbp-0x68]
+ je G_M39468_IG38 + mov bword ptr [rbp-0x70], r15 + mov dword ptr [rbp-0x68], r13d + lea rdx, [rbp-0x70]
lea r11, [(reloc)] ; function address call [r11]<unknown method> ; gcrRegs -[rcx]
- ; byrRegs -[rax r14]
+ ; byrRegs -[rax r15]
; gcr arg pop 0 test eax, eax
- jne SHORT G_M39468_IG13
+ jne SHORT G_M39468_IG14
;; size=74 bbWeight=1 PerfScore 19.00
-G_M39468_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz - cmp r15d, r12d - jle SHORT G_M39468_IG14 - mov r14, bword ptr [rbp-0x70] - ; byrRegs +[r14] - mov rcx, gword ptr [r14+0x398]
+G_M39468_IG11: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz + mov r15d, dword ptr [rbp-0x5C] + cmp r13d, r15d + jle SHORT G_M39468_IG15 + mov rdx, bword ptr [rbp-0x78] + ; byrRegs +[rdx] + mov rcx, gword ptr [rdx+0x398]
; gcrRegs +[rcx] test rcx, rcx
- je G_M39468_IG35 - mov bword ptr [rbp-0x68], r13 - mov dword ptr [rbp-0x60], r12d - lea rdx, [rbp-0x68]
+ je G_M39468_IG38 + mov bword ptr [rbp-0x70], r12 + mov dword ptr [rbp-0x68], r15d + lea rdx, [rbp-0x70] + ; byrRegs -[rdx]
lea r11, [(reloc)] ; function address ; GC ptr vars -{V58} call [r11]<unknown method> ; gcrRegs -[rcx]
- ; byrRegs -[r13-r14]
+ ; byrRegs -[r12]
; gcr arg pop 0 test eax, eax
- mov r13, qword ptr [rbp-0x50] - mov r14, qword ptr [rbp-0x58] - jne G_M39468_IG28 - ;; size=63 bbWeight=0.50 PerfScore 7.38
+ mov dword ptr [rbp+0x38], r14d + mov r12, qword ptr [rbp-0x50] + jne SHORT G_M39468_IG13 + ;; size=63 bbWeight=0.50 PerfScore 7.88
G_M39468_IG12: ; bbWeight=0.50, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref ; GC ptr vars -{V00} mov eax, -1
- jmp G_M39468_IG34
+ jmp G_M39468_IG37
;; size=10 bbWeight=0.50 PerfScore 1.12
-G_M39468_IG13: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
+G_M39468_IG13: ; bbWeight=0.25, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars +{V00 V12}
- mov r13, qword ptr [rbp-0x50]
mov r14, qword ptr [rbp-0x58]
- jmp G_M39468_IG28 - ;; size=13 bbWeight=0.50 PerfScore 2.00 -G_M39468_IG14: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - cmp byte ptr [rbp+0x38], 0
...

+38 (+5.07%) : 261442.dasm - System.Linq.Parallel.GroupJoinQueryOperator4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:WrapPartitionedStreamHelper[int,System.__Canon](System.Linq.Parallel.PartitionedStream2[System.Linq.Parallel.Pair2[System.__Canon,System.__Canon],int],System.Linq.Parallel.PartitionedStream2[System.Canon,System.Canon],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon],int,System.Threading.CancellationToken):this (FullOpts)

@@ -9,43 +9,43 @@ ; 0 inlinees with PGO data; 8 single block inlinees; 0 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 11, 14 ) ref -> rbx this class-hnd single-def <System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]> -; V01 TypeCtx [V01,T13] ( 12, 7 ) long -> rdi single-def -; V02 arg1 [V02,T16] ( 4, 3 ) ref -> r15 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int]> -; V03 arg2 [V03,T15] ( 5, 3.50) ref -> r14 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon]> -; V04 arg3 [V04,T31] ( 2, 1 ) ref -> [rbp+0x30] class-hnd single-def <System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon]> -; V05 arg4 [V05,T12] ( 8, 11 ) int -> rsi single-def
+; V00 this [V00,T06] ( 11, 15 ) ref -> rbx this class-hnd single-def <System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]> +; V01 TypeCtx [V01,T13] ( 12, 8.50) long -> rdi single-def +; V02 arg1 [V02,T16] ( 4, 4 ) ref -> r15 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int]> +; V03 arg2 [V03,T15] ( 5, 4 ) ref -> r14 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon]> +; V04 arg3 [V04,T27] ( 2, 2 ) ref -> r12 class-hnd single-def <System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon]> +; V05 arg4 [V05,T12] ( 8, 12 ) int -> rsi single-def
;* V06 arg5 [V06 ] ( 0, 0 ) struct ( 8) zero-ref single-def <System.Threading.CancellationToken>
-; V07 loc0 [V07,T14] ( 3, 8.50) ref -> r12 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],System.__Canon]> -; V08 loc1 [V08,T17] ( 3, 5 ) ref -> [rbp-0x60] class-hnd exact spill-single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[System.__Canon],System.Linq.Parallel.Pair`2[ubyte,System.__Canon],System.__Canon][]>
+; V07 loc0 [V07,T14] ( 3, 8.50) ref -> [rbp-0x68] class-hnd spill-single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],System.__Canon]> +; V08 loc1 [V08,T17] ( 3, 5.50) ref -> [rbp-0x70] class-hnd exact spill-single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[System.__Canon],System.Linq.Parallel.Pair`2[ubyte,System.__Canon],System.__Canon][]>
; V09 loc2 [V09,T02] ( 7, 24.50) int -> [rbp-0x44] ; V10 loc3 [V10,T19] ( 2, 4.50) ref -> r14 class-hnd single-def <System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int]>
-; V11 loc4 [V11,T18] ( 3, 5 ) ref -> r12 class-hnd exact single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[System.__Canon],int,System.__Canon][]>
+; V11 loc4 [V11,T18] ( 3, 5.50) ref -> [rbp-0x78] class-hnd exact spill-single-def <System.Linq.Parallel.HashLookupBuilder`3[System.Collections.Generic.IEnumerable`1[System.__Canon],int,System.__Canon][]>
; V12 loc5 [V12,T03] ( 7, 24.50) int -> [rbp-0x48] ; V13 OutArgs [V13 ] ( 1, 1 ) struct (64) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V14 tmp1 [V14,T01] ( 5, 40 ) ref -> [rbp-0x68] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.GroupJoinHashLookupBuilder`3[System.__Canon,int,System.__Canon]> -; V15 tmp2 [V15,T07] ( 2, 16 ) ref -> [rbp-0x70] class-hnd spill-single-def "impAppendStmt" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],System.__Canon]> -; V16 tmp3 [V16,T08] ( 2, 16 ) ref -> [rbp-0x78] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]> -; V17 tmp4 [V17,T00] ( 6, 48 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.OrderedGroupJoinHashLookupBuilder`3[System.__Canon,System.__Canon,System.__Canon]>
+; V14 tmp1 [V14,T01] ( 5, 40 ) ref -> [rbp-0x80] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.GroupJoinHashLookupBuilder`3[System.__Canon,int,System.__Canon]> +; V15 tmp2 [V15,T07] ( 2, 16 ) ref -> [rbp-0x88] class-hnd spill-single-def "impAppendStmt" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],System.__Canon]> +; V16 tmp3 [V16,T08] ( 2, 16 ) ref -> [rbp-0x90] class-hnd spill-single-def "impAppendStmt" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]> +; V17 tmp4 [V17,T00] ( 6, 48 ) ref -> [rbp-0x98] class-hnd exact spill-single-def "NewObj constructor temp" <System.Linq.Parallel.OrderedGroupJoinHashLookupBuilder`3[System.__Canon,System.__Canon,System.__Canon]>
;* V18 tmp5 [V18 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Linq.Parallel.QueryOperator`1[System.__Canon]>
-; V19 tmp6 [V19,T09] ( 2, 16 ) ref -> [rbp-0x88] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IComparer`1[System.__Canon]> -; V20 tmp7 [V20,T10] ( 2, 16 ) ref -> [rbp-0x90] class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int]> -; V21 tmp8 [V21,T11] ( 2, 16 ) ref -> [rbp-0x98] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]> -; V22 tmp9 [V22,T22] ( 4, 2 ) ref -> r13 single-def "field V06._source (fldOffset=0x0)" P-INDEP -; V23 tmp10 [V23,T24] ( 2, 2 ) long -> rcx "argument with side effect" -; V24 tmp11 [V24,T25] ( 2, 2 ) long -> rcx "argument with side effect"
+; V19 tmp6 [V19,T09] ( 2, 16 ) ref -> [rbp-0xA0] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IComparer`1[System.__Canon]> +; V20 tmp7 [V20,T10] ( 2, 16 ) ref -> [rbp-0xA8] class-hnd spill-single-def "Inlining Arg" <System.Linq.Parallel.QueryOperatorEnumerator`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int]> +; V21 tmp8 [V21,T11] ( 2, 16 ) ref -> [rbp-0xB0] class-hnd spill-single-def "Inlining Arg" <System.Collections.Generic.IEqualityComparer`1[System.__Canon]> +; V22 tmp9 [V22,T26] ( 4, 3 ) ref -> r13 single-def "field V06._source (fldOffset=0x0)" P-INDEP +; V23 tmp10 [V23,T28] ( 2, 2 ) long -> rcx "argument with side effect" +; V24 tmp11 [V24,T29] ( 2, 2 ) long -> rcx "argument with side effect"
; V25 tmp12 [V25,T04] ( 3, 24 ) ref -> rcx "arr expr"
-; V26 tmp13 [V26,T26] ( 2, 2 ) long -> rdx "argument with side effect" -; V27 tmp14 [V27,T27] ( 2, 2 ) long -> rcx "argument with side effect" -; V28 tmp15 [V28,T28] ( 2, 2 ) long -> rcx "argument with side effect"
+; V26 tmp13 [V26,T23] ( 2, 4 ) long -> rdx "argument with side effect" +; V27 tmp14 [V27,T30] ( 2, 2 ) long -> rcx "argument with side effect" +; V28 tmp15 [V28,T31] ( 2, 2 ) long -> rcx "argument with side effect"
; V29 tmp16 [V29,T05] ( 3, 24 ) ref -> rcx "arr expr"
-; V30 tmp17 [V30,T29] ( 2, 2 ) long -> rcx "argument with side effect" -; V31 tmp18 [V31,T30] ( 2, 2 ) long -> r12 "argument with side effect" -; V32 tmp19 [V32,T23] ( 2, 2 ) ref -> rax single-def "argument with side effect" -; V33 cse0 [V33,T20] ( 2, 4.25) long -> [rbp-0x50] spill-single-def hoist "CSE - moderate" -; V34 cse1 [V34,T21] ( 2, 4.25) long -> [rbp-0x58] spill-single-def hoist "CSE - moderate"
+; V30 tmp17 [V30,T24] ( 2, 4 ) long -> rcx "argument with side effect" +; V31 tmp18 [V31,T25] ( 2, 4 ) long -> [rbp-0x50] spill-single-def "argument with side effect" +; V32 tmp19 [V32,T22] ( 2, 4 ) ref -> rax single-def "argument with side effect" +; V33 cse0 [V33,T20] ( 2, 4.25) long -> [rbp-0x58] spill-single-def hoist "CSE - moderate" +; V34 cse1 [V34,T21] ( 2, 4.25) long -> [rbp-0x60] spill-single-def hoist "CSE - moderate"
;
-; Lcl frame size = 168
+; Lcl frame size = 184
G_M28277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -56,8 +56,8 @@ G_M28277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rdi push rsi push rbx
- sub rsp, 168 - lea rbp, [rsp+0xE0]
+ sub rsp, 184 + lea rbp, [rsp+0xF0]
mov qword ptr [rbp-0x40], rdx mov rbx, rcx ; gcrRegs +[rbx] @@ -66,17 +66,19 @@ G_M28277_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, ; gcrRegs +[r15] mov r14, r9 ; gcrRegs +[r14]
+ mov r12, gword ptr [rbp+0x30] + ; gcrRegs +[r12]
mov esi, dword ptr [rbp+0x38] mov r13, gword ptr [rbp+0x40] ; gcrRegs +[r13]
- ;; size=50 bbWeight=1 PerfScore 12.75 -G_M28277_IG02: ; bbWeight=1, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+ ;; size=54 bbWeight=1 PerfScore 13.75 +G_M28277_IG02: ; bbWeight=1, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
mov rcx, gword ptr [rbx+0x48] ; gcrRegs +[rcx] cmp byte ptr [rcx+0x38], 0 je G_M28277_IG09 ;; size=14 bbWeight=1 PerfScore 6.00
-G_M28277_IG03: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref
+G_M28277_IG03: ; bbWeight=0.50, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] mov rcx, rdi call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] @@ -92,8 +94,8 @@ G_M28277_IG03: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe ; gcrRegs +[rdx] call [System.Linq.Parallel.ExchangeUtilities:HashRepartitionOrdered[System.__Canon,System.__Canon,System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon],System.Func`2[System.__Canon,System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Collections.Generic.IEqualityComparer`1[System.__Canon],System.Threading.CancellationToken):System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],System.__Canon]] ; gcrRegs -[rdx r8-r9] +[rax]
- mov r12, rax - ; gcrRegs +[r12]
+ mov gword ptr [rbp-0x68], rax + ; GC ptr vars +{V07}
mov rcx, rdi call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE] ; gcrRegs -[rax] @@ -101,83 +103,87 @@ G_M28277_IG03: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRe movsxd rdx, esi call [CORINFO_HELP_NEWARR_1_DIRECT] ; gcrRegs +[rax]
- mov gword ptr [rbp-0x60], rax
+ mov gword ptr [rbp-0x70], rax
; GC ptr vars +{V08} xor edx, edx mov dword ptr [rbp-0x44], edx test esi, esi jle G_M28277_IG06
- ;; size=83 bbWeight=0.50 PerfScore 11.75 -G_M28277_IG04: ; bbWeight=0.25, gcVars=0000000000020000 {V08}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=84 bbWeight=0.50 PerfScore 12.12 +G_M28277_IG04: ; bbWeight=0.25, gcVars=0000000000024000 {V07 V08}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax] mov rcx, rdi call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- mov qword ptr [rbp-0x50], rax
+ mov qword ptr [rbp-0x58], rax
;; size=13 bbWeight=0.25 PerfScore 1.06 G_M28277_IG05: ; bbWeight=4, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, byref, isz
- mov rcx, gword ptr [r12+0x08]
+ mov rdx, gword ptr [rbp-0x68] + ; gcrRegs +[rdx] + mov rcx, gword ptr [rdx+0x08]
; gcrRegs +[rcx]
- mov edx, dword ptr [rbp-0x44] - cmp edx, dword ptr [rcx+0x08]
+ mov r8d, dword ptr [rbp-0x44] + cmp r8d, dword ptr [rcx+0x08]
jae G_M28277_IG15
- mov dword ptr [rbp-0x44], edx - mov r8d, edx - mov r8, gword ptr [rcx+8*r8+0x10] - ; gcrRegs +[r8] - mov gword ptr [rbp-0x70], r8 - ; GC ptr vars +{V15} - mov r10, gword ptr [rbx+0x70]
+ mov dword ptr [rbp-0x44], r8d + mov r10d, r8d + mov r10, gword ptr [rcx+8*r10+0x10]
; gcrRegs +[r10]
- mov gword ptr [rbp-0x78], r10
+ mov gword ptr [rbp-0x88], r10 + ; GC ptr vars +{V15} + mov r9, gword ptr [rbx+0x70] + ; gcrRegs +[r9] + mov gword ptr [rbp-0x90], r9
; GC ptr vars +{V16} mov rcx, rax ; gcrRegs -[rcx] call [CORINFO_HELP_NEWFAST]
- ; gcrRegs -[r8 r10] +[rax] - mov gword ptr [rbp-0x80], rax
+ ; gcrRegs -[rdx r9-r10] +[rax] + mov gword ptr [rbp-0x98], rax
; GC ptr vars +{V17}
- mov rdx, gword ptr [r12+0x10]
+ mov rdx, gword ptr [rbp-0x68]
; gcrRegs +[rdx]
- mov gword ptr [rbp-0x88], rdx
+ mov r8, gword ptr [rdx+0x10] + ; gcrRegs +[r8] + mov gword ptr [rbp-0xA0], r8
; GC ptr vars +{V19} mov rcx, rax ; gcrRegs +[rcx] call [<unknown method>]
- ; gcrRegs -[rax rcx rdx] - mov rax, gword ptr [rbp-0x80]
+ ; gcrRegs -[rax rcx rdx r8] + mov rax, gword ptr [rbp-0x98]
; gcrRegs +[rax] lea rcx, bword ptr [rax+0x08] ; byrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x70]
+ mov rdx, gword ptr [rbp-0x88]
; gcrRegs +[rdx]
- ; GC ptr vars -{V15}
+ ; GC ptr vars -{V07 V15}
call [CORINFO_HELP_ASSIGN_REF] ; gcrRegs -[rax rdx] ; byrRegs -[rcx]
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x98]
; gcrRegs +[rax] lea rcx, bword ptr [rax+0x10] ; byrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x78]
+ mov rdx, gword ptr [rbp-0x90]
; gcrRegs +[rdx]
- ; GC ptr vars -{V08 V16}
+ ; GC ptr vars -{V08 V16} +{V07}
call [CORINFO_HELP_ASSIGN_REF] ; gcrRegs -[rax rdx] ; byrRegs -[rcx]
- mov rax, gword ptr [rbp-0x80]
+ mov rax, gword ptr [rbp-0x98]
; gcrRegs +[rax] lea rcx, bword ptr [rax+0x18] ; byrRegs +[rcx]
- mov rdx, gword ptr [rbp-0x88]
+ mov rdx, gword ptr [rbp-0xA0]
; gcrRegs +[rdx] ; GC ptr vars -{V19} +{V08} call [CORINFO_HELP_ASSIGN_REF] ; gcrRegs -[rax rdx] ; byrRegs -[rcx] movsxd rdx, dword ptr [rbp-0x44]
- mov rcx, gword ptr [rbp-0x60]
+ mov rcx, gword ptr [rbp-0x70]
; gcrRegs +[rcx]
- mov r8, gword ptr [rbp-0x80]
+ mov r8, gword ptr [rbp-0x98]
; gcrRegs +[r8] ; GC ptr vars -{V17} call [CORINFO_HELP_ARRADDR_ST] @@ -187,12 +193,12 @@ G_M28277_IG05: ; bbWeight=4, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefR cmp eax, esi mov dword ptr [rbp-0x44], eax jl SHORT G_M28277_IG08
- ;; size=161 bbWeight=4 PerfScore 211.00 -G_M28277_IG06: ; bbWeight=0.50, gcrefRegs=E008 {rbx r13 r14 r15}, byrefRegs=0000 {}, byref - ; gcrRegs -[r12]
+ ;; size=197 bbWeight=4 PerfScore 219.00 +G_M28277_IG06: ; bbWeight=1, gcVars=0000000000020000 {V08}, gcrefRegs=F008 {rbx r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref + ; GC ptr vars -{V07}
mov rcx, rdi call [CORINFO_HELP_READYTORUN_GENERIC_HANDLE]
- mov r12, rax
+ mov qword ptr [rbp-0x50], rax
mov rcx, rdi ...

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, 19 ) 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=1, 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
+ ;; size=5 bbWeight=1 PerfScore 0.25 +G_M34838_IG07: ; bbWeight=1, 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
+ ;; size=1 bbWeight=1 PerfScore 1.00 +G_M34838_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ret + ;; size=1 bbWeight=1 PerfScore 1.00
-; 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 31.24, 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, 19 ) 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=1, 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
+ ;; size=5 bbWeight=1 PerfScore 0.25 +G_M34838_IG07: ; bbWeight=1, 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
+ ;; size=1 bbWeight=1 PerfScore 1.00 +G_M34838_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ret + ;; size=1 bbWeight=1 PerfScore 1.00
-; 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 31.24, 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, 18 ) 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=1, 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
+ ;; size=5 bbWeight=1 PerfScore 0.25 +G_M35228_IG07: ; bbWeight=1, 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
+ ;; size=1 bbWeight=1 PerfScore 1.00 +G_M35228_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ret + ;; size=1 bbWeight=1 PerfScore 1.00
-; 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.99, instruction count 19, allocated bytes for code 49 (MethodHash=19fa7663) for method System.SpanHelpers:IndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
; ============================================================ Unwind Info:

+32 (+6.04%) : 169068.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)

@@ -8,10 +8,10 @@ ; 5 inlinees with PGO data; 8 single block inlinees; 4 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T06] ( 11, 18 ) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriverCache> -; V01 arg1 [V01,T09] ( 8, 13.03) ref -> rsi class-hnd single-def <System.String> -; V02 arg2 [V02,T15] ( 7, 5.50) ref -> rdi class-hnd <Microsoft.CodeAnalysis.GeneratorDriver> -; V03 loc0 [V03,T23] ( 4, 1.50) ref -> [rbp-0x40] class-hnd EH-live spill-single-def <System.Object>
+; V00 this [V00,T06] ( 11, 19.50) ref -> rbx this class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriverCache> +; V01 arg1 [V01,T09] ( 8, 13.53) ref -> rsi class-hnd single-def <System.String> +; V02 arg2 [V02,T12] ( 7, 6.50) ref -> rdi class-hnd <Microsoft.CodeAnalysis.GeneratorDriver> +; V03 loc0 [V03,T26] ( 4, 1.50) ref -> [rbp-0x40] class-hnd EH-live spill-single-def <System.Object>
; V04 loc1 [V04 ] ( 5, 4 ) ubyte -> [rbp-0x38] do-not-enreg[X] must-init addr-exposed ld-addr-op ; V05 loc2 [V05,T00] ( 17, 44 ) int -> r14 ;* V06 loc3 [V06 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <Microsoft.CodeAnalysis.GeneratorDriver> @@ -19,34 +19,34 @@ ; V08 tmp1 [V08,T08] ( 2, 16 ) ref -> rdx class-hnd exact "Strict ordering of exceptions for Array store" <<unknown class>> ;* V09 tmp2 [V09 ] ( 0, 0 ) struct (16) zero-ref "Strict ordering of exceptions for Array store" <System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.GeneratorDriver]> ;* V10 tmp3 [V10 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ValueTuple`2[System.String,Microsoft.CodeAnalysis.GeneratorDriver]>
-; V11 tmp4 [V11,T19] ( 3, 3 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <<unknown class>> -; V12 tmp5 [V12,T18] ( 2, 4 ) ubyte -> rcx "Inlining Arg"
+; V11 tmp4 [V11,T16] ( 3, 6 ) ref -> r14 class-hnd exact single-def "impAppendStmt" <<unknown class>> +; V12 tmp5 [V12,T21] ( 2, 4 ) ubyte -> rcx "Inlining Arg"
; V13 tmp6 [V13,T01] ( 7, 33.09) ref -> r15 class-hnd "Inlining Arg" <System.__Canon>
-; V14 tmp7 [V14,T16] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" -; V15 tmp8 [V15,T12] ( 2, 8 ) byref -> rcx "impAppendStmt"
+; V14 tmp7 [V14,T19] ( 2, 4 ) ubyte -> rax "Inline return value spill temp" +; V15 tmp8 [V15,T13] ( 2, 8 ) byref -> rcx "impAppendStmt"
;* V16 tmp9 [V16 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V17 tmp10 [V17 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V18 tmp11 [V18 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V19 tmp12 [V19 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V20 tmp13 [V20 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V21 tmp14 [V21,T26] ( 2, 1 ) int -> r14 "Inline return value spill temp" -; V22 tmp15 [V22,T27] ( 2, 1 ) int -> rax "Inline return value spill temp" -; V23 tmp16 [V23,T22] ( 3, 3 ) int -> rcx "Inlining Arg" -; V24 tmp17 [V24,T13] ( 2, 8 ) ref -> r8 "field V09.Item1 (fldOffset=0x0)" P-INDEP -; V25 tmp18 [V25,T14] ( 2, 8 ) ref -> r13 "field V09.Item2 (fldOffset=0x8)" P-INDEP -; V26 tmp19 [V26,T24] ( 2, 1 ) ref -> rdx single-def "field V10.Item1 (fldOffset=0x0)" P-INDEP -; V27 tmp20 [V27,T25] ( 2, 1 ) ref -> rsi single-def "field V10.Item2 (fldOffset=0x8)" P-INDEP
+; V21 tmp14 [V21,T27] ( 2, 1 ) int -> r14 "Inline return value spill temp" +; V22 tmp15 [V22,T25] ( 2, 2 ) int -> rax "Inline return value spill temp" +; V23 tmp16 [V23,T18] ( 3, 6 ) int -> rcx "Inlining Arg" +; V24 tmp17 [V24,T14] ( 2, 8 ) ref -> r8 "field V09.Item1 (fldOffset=0x0)" P-INDEP +; V25 tmp18 [V25,T15] ( 2, 8 ) ref -> r13 "field V09.Item2 (fldOffset=0x8)" P-INDEP +; V26 tmp19 [V26,T23] ( 2, 2 ) ref -> rdx single-def "field V10.Item1 (fldOffset=0x0)" P-INDEP +; V27 tmp20 [V27,T24] ( 2, 2 ) ref -> rsi single-def "field V10.Item2 (fldOffset=0x8)" P-INDEP
; V28 tmp21 [V28,T02] ( 3, 24 ) ref -> r8 "arr expr"
-; V29 tmp22 [V29,T20] ( 3, 3 ) ref -> rcx "arr expr"
+; V29 tmp22 [V29,T22] ( 3, 3 ) ref -> rcx "arr expr"
; V30 tmp23 [V30,T03] ( 3, 24 ) ref -> rcx "arr expr" ; V31 tmp24 [V31,T04] ( 3, 24 ) byref -> rcx "BlockOp address local" ; V32 tmp25 [V32,T05] ( 3, 24 ) byref -> r14 "BlockOp address local"
-; V33 tmp26 [V33,T21] ( 3, 3 ) byref -> r14 single-def "BlockOp address local"
+; V33 tmp26 [V33,T17] ( 3, 6 ) byref -> r14 single-def "BlockOp address local"
; V34 PSPSym [V34,T28] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym" ; V35 cse0 [V35,T10] ( 3, 12 ) ref -> rcx "CSE - aggressive" ; V36 cse1 [V36,T07] ( 4, 16 ) int -> r15 "CSE - aggressive" ; V37 cse2 [V37,T11] ( 3, 12 ) int -> rax "CSE - aggressive"
-; V38 cse3 [V38,T17] ( 6, 4.79) ref -> rdx multi-def "CSE - moderate"
+; V38 cse3 [V38,T20] ( 6, 4.79) ref -> rdx multi-def "CSE - moderate"
; ; Lcl frame size = 64 @@ -76,9 +76,9 @@ G_M51982_IG02: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 mov gword ptr [rbp-0x40], rcx ; GC ptr vars +{V03} ;; 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
+G_M51982_IG03: ; bbWeight=1, gcVars=0000000004000000 {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_IG19
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,74 @@ 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_IG14 + ;; 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_IG18
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_IG22 + ;; 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_IG22 + ;; 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_IG22 + ;; 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_IG21 + ;; 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_IG20 + ;; size=5 bbWeight=1.10 PerfScore 2.19 +G_M51982_IG12: ; bbWeight=1, 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_IG14 + ;; size=5 bbWeight=1 PerfScore 1.25 +G_M51982_IG13: ; bbWeight=0.50, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi]
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] cmp r14d, dword ptr [rcx+0x08]
- jae SHORT G_M51982_IG13
+ jae G_M51982_IG18
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
+ ; gcrRegs +[rdi] + ;; size=26 bbWeight=0.50 PerfScore 4.38 +G_M51982_IG14: ; bbWeight=1, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx] test rdi, rdi
- je G_M51982_IG23
+ je G_M51982_IG24
;; size=9 bbWeight=1 PerfScore 1.25
-G_M51982_IG20: ; bbWeight=0.50, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG15: ; 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_IG17
;; size=18 bbWeight=0.50 PerfScore 1.00
-G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
+G_M51982_IG16: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 {}, byref, isz
mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] mov rdx, rcx @@ -208,7 +171,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_IG18
mov r8d, r15d shl r8, 4 lea rcx, bword ptr [rcx+r8+0x10] @@ -219,7 +182,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_IG18
mov ecx, r14d ; byrRegs -[rcx] shl rcx, 4 @@ -240,16 +203,16 @@ G_M51982_IG21: ; bbWeight=4, gcrefRegs=00C8 {rbx rsi rdi}, byrefRegs=0000 ...

+23 (+6.34%) : 316645.dasm - System.Linq.OrderedEnumerable`1[double]:TryGetFirst(byref):double:this (FullOpts)

@@ -8,17 +8,17 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 5 ) ref -> rbx this class-hnd single-def <System.Linq.OrderedEnumerable`1[double]>
-; V01 arg1 [V01,T03] ( 4, 3 ) byref -> rsi single-def
+; V01 arg1 [V01,T03] ( 4, 3.50) byref -> rsi single-def
; V02 loc0 [V02,T02] ( 4, 6 ) ref -> rdi class-hnd single-def <<unknown class>>
-; V03 loc1 [V03,T00] ( 9, 11 ) ref -> [rbp-0x48] class-hnd EH-live single-def <<unknown class>> -; V04 loc2 [V04,T07] ( 4, 3.50) double -> [rbp-0x38] -; V05 loc3 [V05,T08] ( 3, 2 ) double -> [rbp-0x40] ld-addr-op -; V06 loc4 [V06,T06] ( 3, 10 ) double -> mm6
+; V03 loc1 [V03,T00] ( 9, 11 ) ref -> [rbp-0x50] class-hnd EH-live single-def <<unknown class>> +; V04 loc2 [V04,T07] ( 4, 4 ) double -> mm6 +; V05 loc3 [V05,T08] ( 3, 2.50) double -> [rbp-0x48] ld-addr-op +; V06 loc4 [V06,T06] ( 3, 10 ) double -> mm7
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 PSPSym [V08,T05] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
+; V08 PSPSym [V08,T05] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
; V09 cse0 [V09,T04] ( 3, 5 ) long -> r14 "CSE - aggressive" ;
-; Lcl frame size = 80
+; Lcl frame size = 96
G_M21335_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp @@ -26,16 +26,17 @@ G_M21335_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rdi push rsi push rbx
- sub rsp, 80
+ sub rsp, 96
vzeroupper
- vmovaps xmmword ptr [rsp+0x40], xmm6 - lea rbp, [rsp+0x70] - mov qword ptr [rbp-0x50], rsp
+ vmovaps xmmword ptr [rsp+0x50], xmm6 + vmovaps xmmword ptr [rsp+0x40], xmm7 + lea rbp, [rsp+0x80] + mov qword ptr [rbp-0x60], rsp
mov rbx, rcx ; gcrRegs +[rbx] mov rsi, rdx ; byrRegs +[rsi]
- ;; size=34 bbWeight=1 PerfScore 10.25
+ ;; size=43 bbWeight=1 PerfScore 12.25
G_M21335_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref mov rcx, rbx ; gcrRegs +[rcx] @@ -56,7 +57,7 @@ G_M21335_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- mov gword ptr [rbp-0x48], rbx
+ mov gword ptr [rbp-0x50], rbx
; GC ptr vars +{V03} ;; size=42 bbWeight=1 PerfScore 14.25 G_M21335_IG03: ; bbWeight=1, gcVars=0000000000000001 {V03}, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, gcvars, byref, isz @@ -74,7 +75,7 @@ G_M21335_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi ; gcrRegs -[rdi] mov byte ptr [rsi], 0 vxorps xmm0, xmm0, xmm0
- vmovsd qword ptr [rbp-0x40], xmm0
+ vmovsd qword ptr [rbp-0x48], xmm0
jmp G_M21335_IG10 ;; size=17 bbWeight=0.50 PerfScore 2.17 G_M21335_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz @@ -85,10 +86,10 @@ G_M21335_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 call [r11]<unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
+ vmovaps xmm6, xmm0
mov rcx, rdi ; gcrRegs +[rcx]
- vmovsd qword ptr [rbp-0x38], xmm0 - vmovaps xmm1, xmm0
+ vmovaps xmm1, xmm6
mov rax, qword ptr [rdi] mov r14, qword ptr [rax+0x48] call [r14+0x28]<unknown method> @@ -102,7 +103,7 @@ G_M21335_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 ; gcr arg pop 0 test eax, eax je SHORT G_M21335_IG09
- ;; size=59 bbWeight=0.50 PerfScore 8.38
+ ;; size=58 bbWeight=0.50 PerfScore 8.00
G_M21335_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz mov rcx, rbx ; gcrRegs +[rcx] @@ -110,10 +111,10 @@ G_M21335_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rs call [r11]<unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- vmovaps xmm6, xmm0
+ vmovaps xmm7, xmm0
mov rcx, rdi ; gcrRegs +[rcx]
- vmovaps xmm1, xmm6
+ vmovaps xmm1, xmm7
mov r8d, 1 call [r14+0x20]<unknown method> ; gcrRegs -[rcx] @@ -122,8 +123,8 @@ G_M21335_IG06: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rs jge SHORT G_M21335_IG08 ;; size=41 bbWeight=4 PerfScore 35.00 G_M21335_IG07: ; bbWeight=2, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref
- vmovsd qword ptr [rbp-0x38], xmm6 - ;; size=5 bbWeight=2 PerfScore 2.00
+ vmovaps xmm6, xmm7 + ;; size=4 bbWeight=2 PerfScore 0.50
G_M21335_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rsi}, byref, isz mov rcx, rbx ; gcrRegs +[rcx] @@ -134,12 +135,11 @@ G_M21335_IG08: ; bbWeight=4, gcrefRegs=0088 {rbx rdi}, byrefRegs=0040 {rs test eax, eax jne SHORT G_M21335_IG06 ;; size=20 bbWeight=4 PerfScore 19.00
-G_M21335_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
+G_M21335_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rdi] mov byte ptr [rsi], 1
- vmovsd xmm0, qword ptr [rbp-0x38] - vmovsd qword ptr [rbp-0x40], xmm0 - ;; size=13 bbWeight=0.50 PerfScore 2.50
+ vmovsd qword ptr [rbp-0x48], xmm6 + ;; size=8 bbWeight=1 PerfScore 2.00
G_M21335_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref ; byrRegs -[rsi] mov rcx, rbx @@ -149,36 +149,38 @@ G_M21335_IG10: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr call [r11]<unknown method> ; gcrRegs -[rcx rbx] ; gcr arg pop 0
- vmovsd xmm0, qword ptr [rbp-0x40]
+ vmovsd xmm0, qword ptr [rbp-0x48]
;; size=21 bbWeight=1 PerfScore 6.50 G_M21335_IG11: ; bbWeight=1, epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0x40] - add rsp, 80
+ vmovaps xmm6, xmmword ptr [rsp+0x50] + vmovaps xmm7, xmmword ptr [rsp+0x40] + add rsp, 96
pop rbx pop rsi pop rdi pop r14 pop rbp ret
- ;; size=17 bbWeight=1 PerfScore 7.75
+ ;; size=23 bbWeight=1 PerfScore 11.75
G_M21335_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc push rbp push r14 push rdi push rsi push rbx
- sub rsp, 64
+ sub rsp, 80
vzeroupper
- vmovaps xmmword ptr [rsp+0x30], xmm6
+ vmovaps xmmword ptr [rsp+0x40], xmm6 + vmovaps xmmword ptr [rsp+0x30], xmm7
mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x70] - ;; size=32 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x80] + ;; size=41 bbWeight=0 PerfScore 0.00
G_M21335_IG13: ; bbWeight=0, gcVars=0000000000000001 {V03}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V00 V03}
- cmp gword ptr [rbp-0x48], 0
+ cmp gword ptr [rbp-0x50], 0
je SHORT G_M21335_IG14
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> ; GC ptr vars -{V00 V03} @@ -190,17 +192,18 @@ G_M21335_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref nop ;; size=1 bbWeight=0 PerfScore 0.00 G_M21335_IG15: ; bbWeight=0, funclet epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0x30] - add rsp, 64
+ vmovaps xmm6, xmmword ptr [rsp+0x40] + vmovaps xmm7, xmmword ptr [rsp+0x30] + add rsp, 80
pop rbx pop rsi pop rdi pop r14 pop rbp ret
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=23 bbWeight=0 PerfScore 0.00
-; Total bytes of code 363, prolog size 34, PerfScore 112.54, instruction count 102, allocated bytes for code 363 (MethodHash=547baca8) for method System.Linq.OrderedEnumerable`1[double]:TryGetFirst(byref):double:this (FullOpts)
+; Total bytes of code 386, prolog size 43, PerfScore 116.17, instruction count 105, allocated bytes for code 386 (MethodHash=547baca8) for method System.Linq.OrderedEnumerable`1[double]:TryGetFirst(byref):double:this (FullOpts)
; ============================================================ Unwind Info: @@ -208,14 +211,16 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x13 - CountOfUnwindCodes: 8
+ SizeOfProlog : 0x19 + CountOfUnwindCodes: 10
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x13 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x19 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
Scaled Small Offset: 4 * 16 = 64 = 0x00040
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 9 * 8 + 8 = 80 = 0x50
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6) + Scaled Small Offset: 5 * 16 = 80 = 0x00050 + CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 11 * 8 + 8 = 96 = 0x60
CodeOffset: 0x06 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x05 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) @@ -226,14 +231,16 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x13 - CountOfUnwindCodes: 8
+ SizeOfProlog : 0x19 + CountOfUnwindCodes: 10
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x13 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x19 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
Scaled Small Offset: 3 * 16 = 48 = 0x00030
- CodeOffset: 0x0A UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 7 * 8 + 8 = 64 = 0x40
+ CodeOffset: 0x13 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6) + Scaled Small Offset: 4 * 16 = 64 = 0x00040 + 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: rsi (6) CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

+23 (+6.53%) : 316646.dasm - System.Linq.OrderedEnumerable`1[double]:TryGetLast(byref):double:this (FullOpts)

@@ -8,33 +8,34 @@ ; Final local variable assignments ; ; V00 this [V00,T01] ( 5, 4 ) ref -> rbx this class-hnd single-def <System.Linq.OrderedEnumerable`1[double]>
-; V01 arg1 [V01,T03] ( 4, 3 ) byref -> rsi single-def -; V02 loc0 [V02,T00] ( 9, 11 ) ref -> [rbp-0x48] class-hnd EH-live spill-single-def <<unknown class>> -; V03 loc1 [V03,T02] ( 4, 5.50) ref -> rbx class-hnd single-def <<unknown class>> -; V04 loc2 [V04,T07] ( 4, 3.50) double -> [rbp-0x38] -; V05 loc3 [V05,T08] ( 3, 2 ) double -> [rbp-0x40] ld-addr-op -; V06 loc4 [V06,T06] ( 3, 10 ) double -> mm6
+; V01 arg1 [V01,T02] ( 4, 3.50) byref -> rsi single-def +; V02 loc0 [V02,T00] ( 9, 11 ) ref -> [rbp-0x50] class-hnd EH-live spill-single-def <<unknown class>> +; V03 loc1 [V03,T03] ( 4, 5.50) ref -> rbx class-hnd single-def <<unknown class>> +; V04 loc2 [V04,T07] ( 4, 4 ) double -> mm6 +; V05 loc3 [V05,T08] ( 3, 2.50) double -> [rbp-0x48] ld-addr-op +; V06 loc4 [V06,T06] ( 3, 10 ) double -> mm7
; V07 OutArgs [V07 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V08 PSPSym [V08,T05] ( 1, 1 ) long -> [rbp-0x50] do-not-enreg[V] "PSPSym"
+; V08 PSPSym [V08,T05] ( 1, 1 ) long -> [rbp-0x60] do-not-enreg[V] "PSPSym"
; V09 cse0 [V09,T04] ( 3, 5 ) long -> rdi "CSE - aggressive" ;
-; Lcl frame size = 88
+; Lcl frame size = 104
G_M65223_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push rdi push rsi push rbx
- sub rsp, 88
+ sub rsp, 104
vzeroupper
- vmovaps xmmword ptr [rsp+0x40], xmm6 - lea rbp, [rsp+0x70] - mov qword ptr [rbp-0x50], rsp
+ vmovaps xmmword ptr [rsp+0x50], xmm6 + vmovaps xmmword ptr [rsp+0x40], xmm7 + lea rbp, [rsp+0x80] + mov qword ptr [rbp-0x60], rsp
mov rbx, rcx ; gcrRegs +[rbx] mov rsi, rdx ; byrRegs +[rsi]
- ;; size=32 bbWeight=1 PerfScore 9.25
+ ;; size=41 bbWeight=1 PerfScore 11.25
G_M65223_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref mov rcx, gword ptr [rbx+0x08] ; gcrRegs +[rcx] @@ -44,7 +45,7 @@ G_M65223_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, ; gcr arg pop 0 mov rcx, rax ; gcrRegs +[rcx]
- mov gword ptr [rbp-0x48], rcx
+ mov gword ptr [rbp-0x50], rcx
; GC ptr vars +{V02} ;; size=24 bbWeight=1 PerfScore 6.50 G_M65223_IG03: ; bbWeight=1, gcVars=0000000000000001 {V02}, gcrefRegs=000A {rcx rbx}, byrefRegs=0040 {rsi}, gcvars, byref, isz @@ -60,7 +61,7 @@ G_M65223_IG04: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, ; gcrRegs -[rbx] mov byte ptr [rsi], 0 vxorps xmm0, xmm0, xmm0
- vmovsd qword ptr [rbp-0x40], xmm0
+ vmovsd qword ptr [rbp-0x48], xmm0
jmp G_M65223_IG10 ;; size=17 bbWeight=0.50 PerfScore 2.17 G_M65223_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz @@ -76,22 +77,22 @@ G_M65223_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi ; gcr arg pop 0 mov rbx, rax ; gcrRegs +[rbx]
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rax rcx] ; gcr arg pop 0
+ vmovaps xmm6, xmm0
mov rcx, rbx ; gcrRegs +[rcx]
- vmovsd qword ptr [rbp-0x38], xmm0 - vmovaps xmm1, xmm0
+ vmovaps xmm1, xmm6
mov rax, qword ptr [rbx] mov rdi, qword ptr [rax+0x48] call [rdi+0x28]<unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; function address call [r11]<unknown method> @@ -99,18 +100,18 @@ G_M65223_IG05: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi ; gcr arg pop 0 test eax, eax je SHORT G_M65223_IG09
- ;; size=78 bbWeight=0.50 PerfScore 13.00
+ ;; size=77 bbWeight=0.50 PerfScore 12.62
G_M65223_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- vmovaps xmm6, xmm0
+ vmovaps xmm7, xmm0
mov rcx, rbx ; gcrRegs +[rcx]
- vmovaps xmm1, xmm6
+ vmovaps xmm1, xmm7
xor r8d, r8d call [rdi+0x20]<unknown method> ; gcrRegs -[rcx] @@ -119,10 +120,10 @@ G_M65223_IG06: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, jl SHORT G_M65223_IG08 ;; size=38 bbWeight=4 PerfScore 38.00 G_M65223_IG07: ; bbWeight=2, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref
- vmovsd qword ptr [rbp-0x38], xmm6 - ;; size=5 bbWeight=2 PerfScore 2.00
+ vmovaps xmm6, xmm7 + ;; size=4 bbWeight=2 PerfScore 0.50
G_M65223_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, byref, isz
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> call [r11]<unknown method> @@ -131,49 +132,50 @@ G_M65223_IG08: ; bbWeight=4, gcrefRegs=0008 {rbx}, byrefRegs=0040 {rsi}, test eax, eax jne SHORT G_M65223_IG06 ;; size=21 bbWeight=4 PerfScore 22.00
-G_M65223_IG09: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
+G_M65223_IG09: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0040 {rsi}, byref
; gcrRegs -[rbx] mov byte ptr [rsi], 1
- vmovsd xmm0, qword ptr [rbp-0x38] - vmovsd qword ptr [rbp-0x40], xmm0 - ;; size=13 bbWeight=0.50 PerfScore 2.50
+ vmovsd qword ptr [rbp-0x48], xmm6 + ;; size=8 bbWeight=1 PerfScore 2.00
G_M65223_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref ; byrRegs -[rsi]
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> ; GC ptr vars -{V02} call [r11]<unknown method> ; gcrRegs -[rcx] ; gcr arg pop 0
- vmovsd xmm0, qword ptr [rbp-0x40]
+ vmovsd xmm0, qword ptr [rbp-0x48]
;; size=22 bbWeight=1 PerfScore 7.25 G_M65223_IG11: ; bbWeight=1, epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0x40] - add rsp, 88
+ vmovaps xmm6, xmmword ptr [rsp+0x50] + vmovaps xmm7, xmmword ptr [rsp+0x40] + add rsp, 104
pop rbx pop rsi pop rdi pop rbp ret
- ;; size=15 bbWeight=1 PerfScore 7.25
+ ;; size=21 bbWeight=1 PerfScore 11.25
G_M65223_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, funclet prolog, nogc push rbp push rdi push rsi push rbx
- sub rsp, 72
+ sub rsp, 88
vzeroupper
- vmovaps xmmword ptr [rsp+0x30], xmm6
+ vmovaps xmmword ptr [rsp+0x40], xmm6 + vmovaps xmmword ptr [rsp+0x30], xmm7
mov rbp, qword ptr [rcx+0x20] mov qword ptr [rsp+0x20], rbp
- lea rbp, [rbp+0x70] - ;; size=30 bbWeight=0 PerfScore 0.00
+ lea rbp, [rbp+0x80] + ;; size=39 bbWeight=0 PerfScore 0.00
G_M65223_IG13: ; bbWeight=0, gcVars=0000000000000001 {V02}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz ; GC ptr vars +{V00 V02}
- cmp gword ptr [rbp-0x48], 0
+ cmp gword ptr [rbp-0x50], 0
je SHORT G_M65223_IG14
- mov rcx, gword ptr [rbp-0x48]
+ mov rcx, gword ptr [rbp-0x50]
; gcrRegs +[rcx] mov r11, 0xD1FFAB1E ; code for <unknown method> ; GC ptr vars -{V00 V02} @@ -185,16 +187,17 @@ G_M65223_IG14: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref nop ;; size=1 bbWeight=0 PerfScore 0.00 G_M65223_IG15: ; bbWeight=0, funclet epilog, nogc, extend
- vmovaps xmm6, xmmword ptr [rsp+0x30] - add rsp, 72
+ vmovaps xmm6, xmmword ptr [rsp+0x40] + vmovaps xmm7, xmmword ptr [rsp+0x30] + add rsp, 88
pop rbx pop rsi pop rdi pop rbp ret
- ;; size=15 bbWeight=0 PerfScore 0.00
+ ;; size=21 bbWeight=0 PerfScore 0.00
-; Total bytes of code 352, prolog size 32, PerfScore 114.42, instruction count 97, allocated bytes for code 352 (MethodHash=11120138) for method System.Linq.OrderedEnumerable`1[double]:TryGetLast(byref):double:this (FullOpts)
+; Total bytes of code 375, prolog size 41, PerfScore 118.04, instruction count 100, allocated bytes for code 375 (MethodHash=11120138) for method System.Linq.OrderedEnumerable`1[double]:TryGetLast(byref):double:this (FullOpts)
; ============================================================ Unwind Info: @@ -202,14 +205,16 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x11 - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x17 + CountOfUnwindCodes: 9
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x11 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6)
+ CodeOffset: 0x17 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM7 (7)
Scaled Small Offset: 4 * 16 = 64 = 0x00040
- CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 10 * 8 + 8 = 88 = 0x58
+ CodeOffset: 0x11 UnwindOp: UWOP_SAVE_XMM128 (8) OpInfo: XMM6 (6) + Scaled Small Offset: 5 * 16 = 80 = 0x00050 + CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 12 * 8 + 8 = 104 = 0x68
CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7) @@ -219,14 +224,16 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x11 - CountOfUnwindCodes: 7
+ SizeOfProlog : 0x17 + CountOfUnwindCodes: 9
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes : ...

libraries_tests.run.windows.x64.Release.mch

-6 (-5.31%) : 87045.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,93 +11,86 @@ ; ; V00 arg0 [V00,T00] ( 8, 5.17) long -> rcx single-def ; V01 arg1 [V01,T01] ( 7, 5.03) ref -> rdx class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3.05) long -> rbx -; V03 loc1 [V03,T03] ( 10, 3.37) long -> rax -; V04 loc2 [V04,T02] ( 10, 4.37) long -> r8
+; V02 loc0 [V02,T04] ( 4, 3.05) long -> rax +; V03 loc1 [V03,T03] ( 10, 3.37) long -> r8 +; V04 loc2 [V04,T02] ( 10, 4.37) 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
+G_M24157_IG01: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, nogc <-- Prolog IG + ;; 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_IG06 - mov rbx, qword ptr [rdx] - movzx rax, word ptr [rbx+0x0E] - test rax, rax
+ je SHORT G_M24157_IG13 + mov rax, qword ptr [rdx] + movzx r8, word ptr [rax+0x0E] + test r8, r8
je SHORT G_M24157_IG11
- mov r8, qword ptr [rbx+0x40] - cmp rax, 4 - jl SHORT G_M24157_IG13 - ;; size=27 bbWeight=1 PerfScore 9.75
+ mov r10, qword ptr [rax+0x40] + cmp r8, 4 + jl SHORT G_M24157_IG09 + ;; size=28 bbWeight=1 PerfScore 9.75
G_M24157_IG03: ; bbWeight=1.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8], rcx - je SHORT G_M24157_IG06
+ cmp qword ptr [r10], rcx + je SHORT G_M24157_IG13
;; size=5 bbWeight=1.02 PerfScore 4.10 G_M24157_IG04: ; bbWeight=1.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8+0x08], rcx - je SHORT G_M24157_IG06
+ cmp qword ptr [r10+0x08], rcx + je SHORT G_M24157_IG13
;; size=6 bbWeight=1.02 PerfScore 4.08 G_M24157_IG05: ; bbWeight=1.00, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [r8+0x10], rcx - jne SHORT G_M24157_IG08
+ cmp qword ptr [r10+0x10], rcx + je SHORT G_M24157_IG13
;; size=6 bbWeight=1.00 PerfScore 3.99
-G_M24157_IG06: ; bbWeight=0.98, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref - mov rax, rdx - ; gcrRegs +[rax] - ;; size=3 bbWeight=0.98 PerfScore 0.25 -G_M24157_IG07: ; bbWeight=0.98, epilog, nogc, extend - pop rbx - ret - ;; size=2 bbWeight=0.98 PerfScore 1.48 -G_M24157_IG08: ; bbWeight=0.07, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz - ; gcrRegs -[rax] - cmp qword ptr [r8+0x18], rcx - je SHORT G_M24157_IG06
+G_M24157_IG06: ; bbWeight=0.07, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + cmp qword ptr [r10+0x18], rcx + je SHORT G_M24157_IG13
;; size=6 bbWeight=0.07 PerfScore 0.28
-G_M24157_IG09: ; bbWeight=0.07, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - add r8, 32 - add rax, -4 - cmp rax, 4
+G_M24157_IG07: ; bbWeight=0.07, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + add r10, 32 + add r8, -4 + cmp r8, 4
jge SHORT G_M24157_IG03 ;; size=14 bbWeight=0.07 PerfScore 0.12
-G_M24157_IG10: ; bbWeight=0.05, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - test rax, rax - jne SHORT G_M24157_IG13
+G_M24157_IG08: ; bbWeight=0.05, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + test r8, r8 + je SHORT G_M24157_IG11
;; size=5 bbWeight=0.05 PerfScore 0.06
+G_M24157_IG09: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + cmp qword ptr [r10], rcx + je SHORT G_M24157_IG13 + ;; size=5 bbWeight=0.04 PerfScore 0.15 +G_M24157_IG10: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + add r10, 8 + dec r8 + test r8, r8 + jg SHORT G_M24157_IG09 + ;; size=12 bbWeight=0.04 PerfScore 0.07
G_M24157_IG11: ; bbWeight=0.05, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- test dword ptr [rbx], 0xD1FFAB1E - jne SHORT G_M24157_IG16
+ test dword ptr [rax], 0xD1FFAB1E + jne SHORT G_M24157_IG15
;; size=8 bbWeight=0.05 PerfScore 0.18
-G_M24157_IG12: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz
+G_M24157_IG12: ; bbWeight=0.03, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx] xor rdx, rdx ; gcrRegs +[rdx]
- jmp SHORT G_M24157_IG06 - ;; size=4 bbWeight=0.03 PerfScore 0.07 -G_M24157_IG13: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - cmp qword ptr [r8], rcx - je SHORT G_M24157_IG06 - ;; size=5 bbWeight=0.04 PerfScore 0.15 -G_M24157_IG14: ; bbWeight=0.04, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - add r8, 8 - dec rax - test rax, rax - jg SHORT G_M24157_IG13 - ;; size=12 bbWeight=0.04 PerfScore 0.07 -G_M24157_IG15: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - jmp SHORT G_M24157_IG11 - ;; size=2 bbWeight=0.02 PerfScore 0.04 -G_M24157_IG16: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc - pop rbx
+ ;; size=2 bbWeight=0.03 PerfScore 0.01 +G_M24157_IG13: ; bbWeight=0.98, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref + mov rax, rdx + ; gcrRegs +[rax] + ;; size=3 bbWeight=0.98 PerfScore 0.25 +G_M24157_IG14: ; bbWeight=0.98, epilog, nogc, extend + ret + ;; size=1 bbWeight=0.98 PerfScore 0.98 +G_M24157_IG15: ; bbWeight=0.02, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rax]
tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=7 bbWeight=0.02 PerfScore 0.04
+ ;; size=6 bbWeight=0.02 PerfScore 0.03
-; Total bytes of code 113, prolog size 1, PerfScore 25.65, 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 24.05, 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: @@ -105,9 +98,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)
-18 (-4.21%) : 62325.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
@@ -70,30 +70,30 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref mov r14d, dword ptr [rbx+0x18] test esi, esi
- jne G_M27413_IG20
+ jne G_M27413_IG16
;; size=12 bbWeight=1.50 PerfScore 4.88
-G_M27413_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M27413_IG04: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
mov r15d, r14d and r15d, -4
- je G_M27413_IG22
+ je G_M27413_IG23
mov ecx, r14d and ecx, -3 cmp ecx, 4
- je G_M27413_IG18 - ;; size=28 bbWeight=1.00 PerfScore 3.25
+ je SHORT G_M27413_IG14 + ;; size=24 bbWeight=1.00 PerfScore 3.25
G_M27413_IG05: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor eax, eax ;; size=2 bbWeight=1.00 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M27413_IG06: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
movzx rcx, al lea edx, [r14-0x04] cmp r15d, 4
- je G_M27413_IG17 - ;; size=17 bbWeight=1.00 PerfScore 2.00 -G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+ je SHORT G_M27413_IG13 + ;; size=13 bbWeight=1.00 PerfScore 2.00 +G_M27413_IG07: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
test esi, esi
- jne G_M27413_IG16 - ;; size=8 bbWeight=1.00 PerfScore 1.25
+ jne SHORT G_M27413_IG12 + ;; size=4 bbWeight=1.00 PerfScore 1.25
G_M27413_IG08: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea r8, bword ptr [rbx+0x18] ; byrRegs +[r8] @@ -103,118 +103,13 @@ G_M27413_IG08: ; bbWeight=1.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, cmp eax, r14d jne SHORT G_M27413_IG03 ;; size=17 bbWeight=1.00 PerfScore 20.02
-G_M27413_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
+G_M27413_IG09: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
; byrRegs -[r8] test ecx, ecx
- je G_M27413_IG24 - ;; size=8 bbWeight=1 PerfScore 1.25 -G_M27413_IG10: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - call <unknown method> - ; gcr arg pop 0 - mov r13d, eax - mov rcx, 0xD1FFAB1E ; Internal.Win32.SafeHandles.SafeRegistryHandle - cmp qword ptr [rbx], rcx - jne G_M27413_IG23 - mov rcx, qword ptr [rbx+0x10] - mov rax, 0xD1FFAB1E ; function address - mov qword ptr [rbp-0x68], rax - lea rax, G_M27413_IG13 - mov qword ptr [rbp-0x50], rax - lea rax, bword ptr [rbp-0x78] - ; byrRegs +[rax] - mov qword ptr [rdi+0x10], rax - mov byte ptr [rdi+0x0C], 0 - ;; size=68 bbWeight=0.00 PerfScore 0.01 -G_M27413_IG11: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref
+ jne SHORT G_M27413_IG17 + ;; size=4 bbWeight=1 PerfScore 1.25 +G_M27413_IG10: ; bbWeight=0.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
; gcrRegs -[rbx]
- ; byrRegs -[rax] - mov rax, 0xD1FFAB1E ; function address - ;; size=10 bbWeight=0.00 PerfScore 0.00 -G_M27413_IG12: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - call rax ; <unknown method> - ; gcr arg pop 0 - ;; size=2 bbWeight=0.00 PerfScore 0.00 -G_M27413_IG13: ; bbWeight=0.00, isz, extend - mov byte ptr [rdi+0x0C], 1 - cmp dword ptr [(reloc)], 0 - je SHORT G_M27413_IG14 - call [CORINFO_HELP_STOP_FOR_GC] - ; gcr arg pop 0 - ;; size=19 bbWeight=0.00 PerfScore 0.01 -G_M27413_IG14: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref - mov rcx, bword ptr [rbp-0x70] - ; byrRegs +[rcx] - mov qword ptr [rdi+0x10], rcx - ;; size=8 bbWeight=0.00 PerfScore 0.00 -G_M27413_IG15: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; byrRegs -[rcx] - mov ecx, r13d - call <unknown method> - ; gcr arg pop 0 - jmp SHORT G_M27413_IG24 - ;; size=10 bbWeight=1 PerfScore 3.25 -G_M27413_IG16: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs +[rbx] - or edx, 2 - jmp G_M27413_IG08 - ;; size=8 bbWeight=0.00 PerfScore 0.00 -G_M27413_IG17: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - or edx, 1 - jmp G_M27413_IG07 - ;; size=8 bbWeight=0.00 PerfScore 0.00 -G_M27413_IG18: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - cmp byte ptr [rbx+0x1C], 0 - je G_M27413_IG05 - mov rcx, 0xD1FFAB1E ; Internal.Win32.SafeHandles.SafeRegistryHandle - cmp qword ptr [rbx], rcx - jne SHORT G_M27413_IG21 - mov rcx, rbx - ; gcrRegs +[rcx] - call [Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid:get_IsInvalid():ubyte:this] - ; gcrRegs -[rcx] - ; gcr arg pop 0 - ;; size=34 bbWeight=0.00 PerfScore 0.02 -G_M27413_IG19: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - test eax, eax - sete al - movzx rax, al - jmp G_M27413_IG06 - ;; size=13 bbWeight=0.00 PerfScore 0.01 -G_M27413_IG20: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - test r14b, 2 - jne SHORT G_M27413_IG24 - jmp G_M27413_IG04 - ;; size=11 bbWeight=0.00 PerfScore 0.01 -G_M27413_IG21: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - mov rcx, rbx - ; gcrRegs +[rcx] - mov rax, qword ptr [rbx] - mov rax, qword ptr [rax+0x48] - call [rax+0x20]<unknown method> - ; gcrRegs -[rcx] - ; gcr arg pop 0 - jmp SHORT G_M27413_IG19 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M27413_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - mov rcx, rbx - ; gcrRegs +[rcx] - call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] - ; gcrRegs -[rcx rbx] - ; gcr arg pop 0 - int3 - ;; size=10 bbWeight=0 PerfScore 0.00 -G_M27413_IG23: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz - ; gcrRegs +[rbx] - mov rcx, rbx - ; gcrRegs +[rcx] - mov rax, qword ptr [rbx] - mov rax, qword ptr [rax+0x48] - call [rax+0x38]<unknown method> - ; gcrRegs -[rcx rbx] - ; gcr arg pop 0 - jmp SHORT G_M27413_IG15 - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M27413_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
add rsp, 104 pop rbx pop rsi @@ -225,9 +120,117 @@ G_M27413_IG24: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, pop r15 pop rbp ret
- ;; size=17 bbWeight=0 PerfScore 0.00
+ ;; size=17 bbWeight=0.09 PerfScore 0.46 +G_M27413_IG11: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref, isz + mov ecx, r13d + call <unknown method> + ; gcr arg pop 0 + jmp SHORT G_M27413_IG10 + ;; size=10 bbWeight=1 PerfScore 3.25 +G_M27413_IG12: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + ; gcrRegs +[rbx] + or edx, 2 + jmp SHORT G_M27413_IG08 + ;; size=5 bbWeight=0.00 PerfScore 0.00 +G_M27413_IG13: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + or edx, 1 + jmp SHORT G_M27413_IG07 + ;; size=5 bbWeight=0.00 PerfScore 0.00 +G_M27413_IG14: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + cmp byte ptr [rbx+0x1C], 0 + je SHORT G_M27413_IG05 + mov rcx, 0xD1FFAB1E ; Internal.Win32.SafeHandles.SafeRegistryHandle + cmp qword ptr [rbx], rcx + jne G_M27413_IG22 + mov rcx, rbx + ; gcrRegs +[rcx] + call [Microsoft.Win32.SafeHandles.SafeHandleZeroOrMinusOneIsInvalid:get_IsInvalid():ubyte:this] + ; gcrRegs -[rcx] + ; gcr arg pop 0 + ;; size=34 bbWeight=0.00 PerfScore 0.02 +G_M27413_IG15: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + test eax, eax + sete al + movzx rax, al + jmp SHORT G_M27413_IG06 + ;; size=10 bbWeight=0.00 PerfScore 0.01 +G_M27413_IG16: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + test r14b, 2 + jne SHORT G_M27413_IG10 + jmp G_M27413_IG04 + ;; size=11 bbWeight=0.00 PerfScore 0.01 +G_M27413_IG17: ; bbWeight=0.00, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz + call <unknown method> + ; gcr arg pop 0 + mov r13d, eax + mov rcx, 0xD1FFAB1E ; Internal.Win32.SafeHandles.SafeRegistryHandle + cmp qword ptr [rbx], rcx + jne SHORT G_M27413_IG24 + mov rcx, qword ptr [rbx+0x10] + mov rax, 0xD1FFAB1E ; function address + mov qword ptr [rbp-0x68], rax + lea rax, G_M27413_IG20 + mov qword ptr [rbp-0x50], rax + lea rax, bword ptr [rbp-0x78] + ; byrRegs +[rax] + mov qword ptr [rdi+0x10], rax + mov byte ptr [rdi+0x0C], 0 + ;; size=64 bbWeight=0.00 PerfScore 0.01 +G_M27413_IG18: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + ; gcrRegs -[rbx] + ; byrRegs -[rax] + mov rax, 0xD1FFAB1E ; function address + ;; size=10 bbWeight=0.00 PerfScore 0.00 +G_M27413_IG19: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + call rax ; <unknown method> + ; gcr arg pop 0 + ;; size=2 bbWeight=0.00 PerfScore 0.00 +G_M27413_IG20: ; bbWeight=0.00, isz, extend + mov byte ptr [rdi+0x0C], 1 + cmp dword ptr [(reloc)], 0 + je SHORT G_M27413_IG21 + call [CORINFO_HELP_STOP_FOR_GC] + ; gcr arg pop 0 + ;; size=19 bbWeight=0.00 PerfScore 0.01 +G_M27413_IG21: ; bbWeight=0.00, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref + mov rcx, bword ptr [rbp-0x70] + ; byrRegs +[rcx] + mov qword ptr [rdi+0x10], rcx + jmp G_M27413_IG11 + ;; size=13 bbWeight=0.00 PerfScore 0.00 +G_M27413_IG22: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref + ; gcrRegs +[rbx]
...

-5 (-4.20%) : 49449.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)

@@ -11,37 +11,35 @@ ; ; V00 arg0 [V00,T00] ( 8, 5.03) long -> rcx single-def ; V01 arg1 [V01,T01] ( 7, 5 ) ref -> rdx class-hnd <System.Object>
-; V02 loc0 [V02,T04] ( 4, 3 ) long -> rbx -; V03 loc1 [V03,T03] ( 10, 3 ) long -> rsi -; V04 loc2 [V04,T02] ( 10, 4.03) long -> rdi
+; V02 loc0 [V02,T03] ( 4, 3.06) long -> rbx +; V03 loc1 [V03,T04] ( 10, 3 ) long -> r8 +; V04 loc2 [V04,T02] ( 10, 4.03) 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 rdi - push rsi
push rbx
- ;; size=3 bbWeight=1 PerfScore 3.00
+ ;; size=1 bbWeight=1 PerfScore 1.00
G_M24157_IG02: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz ; gcrRegs +[rdx] test rdx, rdx je SHORT G_M24157_IG04 mov rbx, qword ptr [rdx]
- movzx rsi, word ptr [rbx+0x0E] - test rsi, rsi - je SHORT G_M24157_IG08 - mov rdi, qword ptr [rbx+0x40] - cmp rsi, 4 - jl SHORT G_M24157_IG06 - ;; size=27 bbWeight=1 PerfScore 9.75
+ movzx r8, word ptr [rbx+0x0E] + test r8, r8 + je SHORT G_M24157_IG06 + mov r10, qword ptr [rbx+0x40] + cmp r8, 4 + jl SHORT G_M24157_IG09 + ;; size=28 bbWeight=1 PerfScore 9.75
G_M24157_IG03: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
- cmp qword ptr [rdi], rcx
+ cmp qword ptr [r10], rcx
je SHORT G_M24157_IG04
- cmp qword ptr [rdi+0x08], rcx
+ cmp qword ptr [r10+0x08], rcx
je SHORT G_M24157_IG04
- cmp qword ptr [rdi+0x10], rcx - jne SHORT G_M24157_IG10
+ cmp qword ptr [r10+0x10], rcx + jne SHORT G_M24157_IG08
;; size=17 bbWeight=1 PerfScore 12.00 G_M24157_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref mov rax, rdx @@ -49,47 +47,47 @@ G_M24157_IG04: ; bbWeight=1, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byr ;; size=3 bbWeight=1 PerfScore 0.25 G_M24157_IG05: ; bbWeight=1, epilog, nogc, extend pop rbx
- pop rsi - pop rdi
ret
- ;; size=4 bbWeight=1 PerfScore 2.50 -G_M24157_IG06: ; bbWeight=0.03, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
+ ;; size=2 bbWeight=1 PerfScore 1.50 +G_M24157_IG06: ; bbWeight=0.06, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs -[rax]
- cmp qword ptr [rdi], rcx - je SHORT G_M24157_IG04 - ;; size=5 bbWeight=0.03 PerfScore 0.11 -G_M24157_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz - add rdi, 8 - dec rsi - test rsi, rsi - jg SHORT G_M24157_IG06 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M24157_IG08: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz
test dword ptr [rbx], 0xD1FFAB1E
- jne SHORT G_M24157_IG09 - xor rdx, rdx - jmp SHORT G_M24157_IG04 - ;; size=12 bbWeight=0 PerfScore 0.00 -G_M24157_IG09: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
+ je SHORT G_M24157_IG11 + ;; size=8 bbWeight=0.06 PerfScore 0.23 +G_M24157_IG07: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, epilog, nogc
pop rbx
- pop rsi - pop rdi
tail.jmp [<unknown method>] ; gcr arg pop 0
- ;; size=9 bbWeight=0 PerfScore 0.00 -G_M24157_IG10: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz - cmp qword ptr [rdi+0x18], rcx
+ ;; size=7 bbWeight=0 PerfScore 0.00 +G_M24157_IG08: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, gcvars, byref, isz + cmp qword ptr [r10+0x18], rcx
je SHORT G_M24157_IG04
- add rdi, 32 - add rsi, -4 - cmp rsi, 4
+ add r10, 32 + add r8, -4 + cmp r8, 4
jge SHORT G_M24157_IG03
- test rsi, rsi - je SHORT G_M24157_IG08
+ test r8, r8 + je SHORT G_M24157_IG06 + ;; size=25 bbWeight=0 PerfScore 0.00 +G_M24157_IG09: ; bbWeight=0.03, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + cmp qword ptr [r10], rcx + je SHORT G_M24157_IG04 + ;; size=5 bbWeight=0.03 PerfScore 0.11 +G_M24157_IG10: ; bbWeight=0, gcrefRegs=0004 {rdx}, byrefRegs=0000 {}, byref, isz + add r10, 8 + dec r8 + test r8, r8 + jg SHORT G_M24157_IG09
jmp SHORT G_M24157_IG06
- ;; size=27 bbWeight=0 PerfScore 0.00
+ ;; size=14 bbWeight=0 PerfScore 0.00 +G_M24157_IG11: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[rdx] + xor rdx, rdx + ; gcrRegs +[rdx] + jmp SHORT G_M24157_IG04 + ;; size=4 bbWeight=0 PerfScore 0.00
-; Total bytes of code 119, prolog size 3, PerfScore 27.61, instruction count 46, allocated bytes for code 119 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
+; Total bytes of code 114, prolog size 1, PerfScore 24.84, instruction count 40, allocated bytes for code 114 (MethodHash=fe85a1a2) for method System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
; ============================================================ Unwind Info: @@ -97,11 +95,9 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x03 - CountOfUnwindCodes: 3
+ SizeOfProlog : 0x01 + CountOfUnwindCodes: 1
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) - CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) - CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)
+ CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)

+21 (+9.01%) : 27539.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

@@ -50,31 +50,31 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=30 bbWeight=1 PerfScore 8.00
-G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x18] test esi, esi
- jne SHORT G_M27413_IG09 - ;; size=7 bbWeight=1.50 PerfScore 4.88
+ jne G_M27413_IG11 + ;; size=11 bbWeight=1.50 PerfScore 4.88
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ebp, edi and ebp, -4
- je G_M27413_IG14
+ je G_M27413_IG15
mov eax, edi and eax, -3 cmp eax, 4
- je SHORT G_M27413_IG10
+ je SHORT G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25 G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor r14d, r14d ;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b lea r13d, [rdi-0x04] cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12 - ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14 + ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rcx, bword ptr [rbx+0x18] ; byrRegs +[rcx] @@ -84,9 +84,24 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp eax, edi jne SHORT G_M27413_IG03 test r15d, r15d
- je SHORT G_M27413_IG13 - call <unknown method>
+ jne SHORT G_M27413_IG09 + ;; size=20 bbWeight=1 PerfScore 21.25 +G_M27413_IG08: ; bbWeight=1.14, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbx]
; byrRegs -[rcx]
+ add rsp, 32 + pop rbx + pop rbp + pop rsi + pop rdi + pop r13 + pop r14 + pop r15 + ret + ;; size=15 bbWeight=1.14 PerfScore 5.40 +G_M27413_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx] + call <unknown method>
; gcr arg pop 0 mov edi, eax mov rcx, rbx @@ -97,8 +112,8 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx rbx] ; gcr arg pop 0 mov ecx, edi
- ;; size=42 bbWeight=1 PerfScore 30.00 -G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=22 bbWeight=1 PerfScore 8.75 +G_M27413_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -110,13 +125,13 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend jmp <unknown method> ; gcr arg pop 0 ;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx] test dil, 2
- jne SHORT G_M27413_IG13 - jmp SHORT G_M27413_IG04 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG08 + jmp G_M27413_IG04 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x1C], 0 je SHORT G_M27413_IG05 mov rcx, rbx @@ -129,31 +144,18 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r14d, r14d test eax, eax sete r14b
- jmp SHORT G_M27413_IG06 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06 + ;; size=33 bbWeight=0 PerfScore 0.00 +G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
or r13d, 1 test esi, esi je SHORT G_M27413_IG07 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 32 - pop rbx - pop rbp - pop rsi - pop rdi - pop r13 - pop r14 - pop r15 - ret - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jmp G_M27413_IG07 + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M27413_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] @@ -162,7 +164,7 @@ G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 { int3 ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 233, prolog size 17, PerfScore 62.88, instruction count 87, allocated bytes for code 233 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 254, prolog size 17, PerfScore 68.27, instruction count 87, allocated bytes for code 254 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================ Unwind Info:

+21 (+9.01%) : 115391.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

@@ -50,31 +50,31 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=30 bbWeight=1 PerfScore 8.00
-G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x18] test esi, esi
- jne SHORT G_M27413_IG09 - ;; size=7 bbWeight=1.50 PerfScore 4.88
+ jne G_M27413_IG11 + ;; size=11 bbWeight=1.50 PerfScore 4.88
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ebp, edi and ebp, -4
- je G_M27413_IG14
+ je G_M27413_IG15
mov eax, edi and eax, -3 cmp eax, 4
- je SHORT G_M27413_IG10
+ je SHORT G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25 G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor r14d, r14d ;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b lea r13d, [rdi-0x04] cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12 - ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14 + ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rcx, bword ptr [rbx+0x18] ; byrRegs +[rcx] @@ -84,9 +84,24 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp eax, edi jne SHORT G_M27413_IG03 test r15d, r15d
- je SHORT G_M27413_IG13 - call <unknown method>
+ jne SHORT G_M27413_IG09 + ;; size=20 bbWeight=1 PerfScore 21.25 +G_M27413_IG08: ; bbWeight=3.70, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbx]
; byrRegs -[rcx]
+ add rsp, 32 + pop rbx + pop rbp + pop rsi + pop rdi + pop r13 + pop r14 + pop r15 + ret + ;; size=15 bbWeight=3.70 PerfScore 17.59 +G_M27413_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx] + call <unknown method>
; gcr arg pop 0 mov edi, eax mov rcx, rbx @@ -97,8 +112,8 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx rbx] ; gcr arg pop 0 mov ecx, edi
- ;; size=42 bbWeight=1 PerfScore 30.00 -G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=22 bbWeight=1 PerfScore 8.75 +G_M27413_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -110,13 +125,13 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend jmp <unknown method> ; gcr arg pop 0 ;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx] test dil, 2
- jne SHORT G_M27413_IG13 - jmp SHORT G_M27413_IG04 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG08 + jmp G_M27413_IG04 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x1C], 0 je SHORT G_M27413_IG05 mov rcx, rbx @@ -129,31 +144,18 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r14d, r14d test eax, eax sete r14b
- jmp SHORT G_M27413_IG06 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06 + ;; size=33 bbWeight=0 PerfScore 0.00 +G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
or r13d, 1 test esi, esi je SHORT G_M27413_IG07 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 32 - pop rbx - pop rbp - pop rsi - pop rdi - pop r13 - pop r14 - pop r15 - ret - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jmp G_M27413_IG07 + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M27413_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] @@ -162,7 +164,7 @@ G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 { int3 ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 233, prolog size 17, PerfScore 62.88, instruction count 87, allocated bytes for code 233 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 254, prolog size 17, PerfScore 80.47, instruction count 87, allocated bytes for code 254 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
; ============================================================ Unwind Info:

+21 (+9.01%) : 117356.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

@@ -50,31 +50,31 @@ G_M27413_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=30 bbWeight=1 PerfScore 8.00
-G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG03: ; bbWeight=1.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov edi, dword ptr [rbx+0x18] test esi, esi
- jne SHORT G_M27413_IG09 - ;; size=7 bbWeight=1.50 PerfScore 4.88
+ jne G_M27413_IG11 + ;; size=11 bbWeight=1.50 PerfScore 4.88
G_M27413_IG04: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz mov ebp, edi and ebp, -4
- je G_M27413_IG14
+ je G_M27413_IG15
mov eax, edi and eax, -3 cmp eax, 4
- je SHORT G_M27413_IG10
+ je SHORT G_M27413_IG12
;; size=21 bbWeight=1 PerfScore 3.25 G_M27413_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref xor r14d, r14d ;; size=3 bbWeight=1 PerfScore 0.25
-G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG06: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
movzx r15, r14b lea r13d, [rdi-0x04] cmp ebp, 4
- je SHORT G_M27413_IG11
+ je G_M27413_IG13
test esi, esi
- jne SHORT G_M27413_IG12 - ;; size=17 bbWeight=1 PerfScore 3.25
+ jne G_M27413_IG14 + ;; size=25 bbWeight=1 PerfScore 3.25
G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz lea rcx, bword ptr [rbx+0x18] ; byrRegs +[rcx] @@ -84,9 +84,24 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr cmp eax, edi jne SHORT G_M27413_IG03 test r15d, r15d
- je SHORT G_M27413_IG13 - call <unknown method>
+ jne SHORT G_M27413_IG09 + ;; size=20 bbWeight=1 PerfScore 21.25 +G_M27413_IG08: ; bbWeight=9.09, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc + ; gcrRegs -[rbx]
; byrRegs -[rcx]
+ add rsp, 32 + pop rbx + pop rbp + pop rsi + pop rdi + pop r13 + pop r14 + pop r15 + ret + ;; size=15 bbWeight=9.09 PerfScore 43.18 +G_M27413_IG09: ; bbWeight=1, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref + ; gcrRegs +[rbx] + call <unknown method>
; gcr arg pop 0 mov edi, eax mov rcx, rbx @@ -97,8 +112,8 @@ G_M27413_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr ; gcrRegs -[rcx rbx] ; gcr arg pop 0 mov ecx, edi
- ;; size=42 bbWeight=1 PerfScore 30.00 -G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend
+ ;; size=22 bbWeight=1 PerfScore 8.75 +G_M27413_IG10: ; bbWeight=1, epilog, nogc, extend
add rsp, 32 pop rbx pop rbp @@ -110,13 +125,13 @@ G_M27413_IG08: ; bbWeight=1, epilog, nogc, extend jmp <unknown method> ; gcr arg pop 0 ;; size=19 bbWeight=1 PerfScore 5.75
-G_M27413_IG09: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M27413_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref, isz
; gcrRegs +[rbx] test dil, 2
- jne SHORT G_M27413_IG13 - jmp SHORT G_M27413_IG04 - ;; size=8 bbWeight=0 PerfScore 0.00 -G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jne SHORT G_M27413_IG08 + jmp G_M27413_IG04 + ;; size=11 bbWeight=0 PerfScore 0.00 +G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
cmp byte ptr [rbx+0x1C], 0 je SHORT G_M27413_IG05 mov rcx, rbx @@ -129,31 +144,18 @@ G_M27413_IG10: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byr xor r14d, r14d test eax, eax sete r14b
- jmp SHORT G_M27413_IG06 - ;; size=30 bbWeight=0 PerfScore 0.00 -G_M27413_IG11: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+ jmp G_M27413_IG06 + ;; size=33 bbWeight=0 PerfScore 0.00 +G_M27413_IG13: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
or r13d, 1 test esi, esi je SHORT G_M27413_IG07 ;; size=8 bbWeight=0 PerfScore 0.00
-G_M27413_IG12: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
+G_M27413_IG14: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
or r13d, 2
- jmp SHORT G_M27413_IG07 - ;; size=6 bbWeight=0 PerfScore 0.00 -G_M27413_IG13: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc - ; gcrRegs -[rbx] - add rsp, 32 - pop rbx - pop rbp - pop rsi - pop rdi - pop r13 - pop r14 - pop r15 - ret - ;; size=15 bbWeight=0 PerfScore 0.00 -G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, gcvars, byref - ; gcrRegs +[rbx]
+ jmp G_M27413_IG07 + ;; size=9 bbWeight=0 PerfScore 0.00 +G_M27413_IG15: ; bbWeight=0, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov rcx, rbx ; gcrRegs +[rcx] call [System.ThrowHelper:ThrowObjectDisposedException(System.Object)] @@ -162,7 +164,7 @@ G_M27413_IG14: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0008 { int3 ;; size=10 bbWeight=0 PerfScore 0.00
-; Total bytes of code 233, prolog size 17, PerfScore 62.88, instruction count 87, allocated bytes for code 233 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
+; Total bytes of code 254, prolog size 17, PerfScore 106.06, instruction count 87, allocated bytes for code 254 (MethodHash=372f94ea) for method System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):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,31 +8,31 @@ ; 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,T13] ( 16, 10 ) int -> rbp single-def +; V04 loc2 [V04,T12] ( 21, 13 ) 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,T87] ( 0, 0 ) int -> zero-ref +; V12 loc10 [V12,T14] ( 5, 13.50) 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" ;* V18 tmp1 [V18 ] ( 0, 0 ) struct (16) zero-ref "impAppendStmt" <System.ReadOnlySpan`1[ushort]>
-;* V19 tmp2 [V19,T87] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+;* V19 tmp2 [V19,T88] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
;* 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"
+;* V21 tmp4 [V21,T89] ( 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,T57] ( 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,T64] ( 3, 3 ) int -> r12 "Inlining Arg" +; V34 tmp17 [V34,T72] ( 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,T68] ( 4, 2 ) int -> r8 single-def "Inline stloc first use temp" +; V41 tmp24 [V41,T58] ( 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,T65] ( 3, 3 ) int -> r12 "Inlining Arg" +; V44 tmp27 [V44,T73] ( 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,T54] ( 2, 4 ) int -> r12 "Inlining Arg" +; V54 tmp37 [V54,T59] ( 3, 3 ) 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,T66] ( 3, 3 ) int -> r12 "Inlining Arg" +; V59 tmp42 [V59,T74] ( 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,T69] ( 4, 2 ) int -> r8 "Inline stloc first use temp" +; V66 tmp49 [V66,T60] ( 3, 3 ) ref -> rcx class-hnd "impAppendStmt" <<unknown class>> +;* V67 tmp50 [V67,T56] ( 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,T55] ( 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,T90] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <<unknown class>> +; V77 tmp60 [V77,T70] ( 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,T71] ( 4, 2 ) int -> rcx single-def "Inline stloc first use temp" +; V87 tmp70 [V87,T61] ( 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, 11 ) int -> rdi single-def "field V02._length (fldOffset=0x8)" P-INDEP +; V97 tmp80 [V97,T42] ( 5, 6.50) byref -> r15 "field V05._reference (fldOffset=0x0)" P-INDEP +; V98 tmp81 [V98,T28] ( 6, 10.50) 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,T62] ( 3, 3 ) ref -> r10 "arr expr" +; V126 tmp109 [V126,T67] ( 3, 3 ) int -> rdx "index expr" +;* V127 tmp110 [V127,T84] ( 0, 0 ) ref -> zero-ref "arr expr" +; V128 tmp111 [V128,T63] ( 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,T15] ( 2, 8 ) ref -> rcx "CSE - moderate" +; V138 cse7 [V138,T16] ( 2, 8 ) ref -> rcx "CSE - moderate" +; V139 cse8 [V139,T17] ( 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 @@ -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 ; gcrRegs +[rdx]
+ mov rcx, rdx + ; gcrRegs +[rcx]
mov rax, 0xD1FFAB1E ; code for <unknown method> call [rax]<unknown method> ; gcrRegs -[rcx rdx] ...

-34 (-2.84%) : 41333.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)

@@ -8,52 +8,52 @@ ; 8 inlinees with PGO data; 29 single block inlinees; 12 inlinees without PGO data ; Final local variable assignments ;
-; V00 this [V00,T07] ( 10, 9 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter> -; V01 arg1 [V01,T26] ( 3, 2.50) ref -> rsi class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
+; V00 this [V00,T07] ( 10, 10 ) ref -> [rbp+0x10] this class-hnd EH-live single-def <System.ComponentModel.EnumConverter> +; V01 arg1 [V01,T26] ( 3, 2.50) ref -> rdi class-hnd single-def <System.ComponentModel.ITypeDescriptorContext>
; V02 arg2 [V02,T06] ( 7, 10.50) ref -> rbx class-hnd single-def <System.Globalization.CultureInfo> ; V03 arg3 [V03,T19] ( 8, 5 ) ref -> [rbp+0x28] class-hnd EH-live single-def <System.Object>
-; V04 loc0 [V04,T29] ( 7, 4.25) ref -> rdi class-hnd exact <System.String> -; V05 loc1 [V05,T27] ( 2, 4.50) ubyte -> rsi -; V06 loc2 [V06,T09] ( 4, 9 ) long -> r14
+; V04 loc0 [V04,T29] ( 7, 4.25) ref -> r14 class-hnd exact <System.String> +; V05 loc1 [V05,T27] ( 2, 4.50) ubyte -> rdi +; V06 loc2 [V06,T08] ( 4, 9.50) long -> r15
;* V07 loc3 [V07 ] ( 0, 0 ) ref -> zero-ref class-hnd exact <System.String[]>
-; V08 loc4 [V08,T23] ( 3, 5 ) ref -> rdi class-hnd exact single-def <System.String[]> -; V09 loc5 [V09,T00] ( 5, 16.50) int -> r15
+; V08 loc4 [V08,T23] ( 3, 5 ) ref -> r14 class-hnd exact single-def <System.String[]> +; V09 loc5 [V09,T00] ( 5, 16.50) int -> r13
; V10 loc6 [V10,T02] ( 4, 16 ) ref -> rdx class-hnd exact <System.String>
-; V11 loc7 [V11,T41] ( 3, 1.50) ref -> rax class-hnd <System.Object>
+; V11 loc7 [V11,T34] ( 3, 2 ) ref -> rax class-hnd <System.Object>
;* V12 loc8 [V12 ] ( 0, 0 ) ref -> zero-ref class-hnd single-def <<unknown class>>
-; V13 loc9 [V13,T28] ( 2, 4.50) ubyte -> rsi -; V14 loc10 [V14,T10] ( 4, 9 ) long -> rdi -; V15 loc11 [V15,T24] ( 3, 5 ) ref -> r14 class-hnd single-def <<unknown class>> -; V16 loc12 [V16,T01] ( 5, 16.50) int -> r15
+; V13 loc9 [V13,T28] ( 2, 4.50) ubyte -> rdi +; V14 loc10 [V14,T09] ( 4, 9.50) long -> r14 +; V15 loc11 [V15,T24] ( 3, 5 ) ref -> r15 class-hnd single-def <<unknown class>> +; V16 loc12 [V16,T01] ( 5, 16.50) int -> r13
; V17 loc13 [V17,T11] ( 3, 8 ) ref -> rcx class-hnd <System.Enum> ; V18 OutArgs [V18 ] ( 1, 1 ) struct (40) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace" ;* V19 tmp1 [V19 ] ( 0, 0 ) ref -> zero-ref class-hnd "spilling QMark2" <System.String>
-; V20 tmp2 [V20,T37] ( 2, 2 ) long -> rdx "fgMakeTemp is creating a new local variable"
+; V20 tmp2 [V20,T38] ( 2, 2 ) long -> rdx "fgMakeTemp is creating a new local variable"
; V21 tmp3 [V21,T22] ( 5, 5 ) ref -> rcx class-hnd "spilling QMark2" <<unknown class>> ; V22 tmp4 [V22,T61] ( 2, 0 ) ref -> rbx class-hnd single-def "impSpillSpecialSideEff" <<unknown class>> ; V23 tmp5 [V23,T62] ( 2, 0 ) ref -> rsi class-hnd exact single-def "bubbling QMark2" <System.String> ;* V24 tmp6 [V24,T66] ( 0, 0 ) long -> zero-ref "fgMakeTemp is creating a new local variable"
-; V25 tmp7 [V25,T63] ( 2, 0 ) ref -> r14 class-hnd single-def "spilling QMark2" <System.String>
+; V25 tmp7 [V25,T63] ( 2, 0 ) ref -> r15 class-hnd single-def "spilling QMark2" <System.String>
; V26 tmp8 [V26,T59] ( 3, 0 ) ref -> rdi class-hnd exact single-def "NewObj constructor temp" <<unknown class>> ; V27 tmp9 [V27,T51] ( 2, 1.00) ubyte -> rax "Inline return value spill temp"
-; V28 tmp10 [V28,T32] ( 2, 2.00) byref -> r8 single-def "Inlining Arg"
+; V28 tmp10 [V28,T35] ( 2, 2.00) byref -> rcx single-def "Inlining Arg"
;* V29 tmp11 [V29,T54] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
-; V30 tmp12 [V30,T38] ( 2, 2.00) int -> rdx "Inlining Arg"
+; V30 tmp12 [V30,T39] ( 2, 2.00) int -> r8 "Inlining Arg"
;* V31 tmp13 [V31 ] ( 0, 0 ) short -> zero-ref ld-addr-op "Inlining Arg"
-; V32 tmp14 [V32,T21] ( 8, 5.65) ref -> rsi class-hnd single-def "Inlining Arg" <System.Type> -; V33 tmp15 [V33,T45] ( 3, 1 ) ref -> r14 "guarded devirt return temp"
+; V32 tmp14 [V32,T21] ( 8, 5.65) ref -> rdi class-hnd single-def "Inlining Arg" <System.Type> +; V33 tmp15 [V33,T45] ( 3, 1 ) ref -> r15 "guarded devirt return temp"
;* V34 tmp16 [V34 ] ( 0, 0 ) ref -> zero-ref class-hnd exact single-def "guarded devirt this exact temp" <System.RuntimeType> ;* V35 tmp17 [V35 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inline return value spill temp" <System.RuntimeType> ;* V36 tmp18 [V36 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "impAppendStmt" <<unknown class>>
-; V37 tmp19 [V37,T56] ( 3, 0.97) ref -> r14 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
+; V37 tmp19 [V37,T56] ( 3, 0.97) ref -> r15 class-hnd exact single-def "Inline stloc first use temp" <System.RuntimeType>
;* V38 tmp20 [V38 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V39 tmp21 [V39 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V40 tmp22 [V40 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V41 tmp23 [V41 ] ( 2, 2 ) ushort -> [rbp-0x34] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
+; V41 tmp23 [V41 ] ( 2, 2 ) ushort -> [rbp-0x3C] do-not-enreg[X] addr-exposed ld-addr-op "Inlining Arg"
;* V42 tmp24 [V42 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ; V43 tmp25 [V43,T12] ( 3, 8 ) ref -> rcx class-hnd "Inline return value spill temp" <System.Object>
-; V44 tmp26 [V44,T03] ( 2, 16 ) ref -> r8 class-hnd "Inlining Arg" <System.Type> -; V45 tmp27 [V45 ] ( 4, 13.04) ref -> [rbp-0x40] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
+; V44 tmp26 [V44,T03] ( 2, 16 ) ref -> rcx class-hnd "Inlining Arg" <System.Type> +; V45 tmp27 [V45 ] ( 4, 13.04) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
;* V46 tmp28 [V46 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V47 tmp29 [V47 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V48 tmp30 [V48,T31] ( 2, 2.08) int -> rcx @@ -61,7 +61,7 @@ ;* V50 tmp32 [V50 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V51 tmp33 [V51 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]> ; V52 tmp34 [V52,T05] ( 2, 16 ) int -> rdx "Inlining Arg"
-; V53 tmp35 [V53,T04] ( 2, 16 ) byref -> r9 "Inlining Arg"
+; V53 tmp35 [V53,T04] ( 2, 16 ) byref -> r8 "Inlining Arg"
;* V54 tmp36 [V54 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V55 tmp37 [V55 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V56 tmp38 [V56 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -69,19 +69,19 @@ ; V58 tmp40 [V58,T13] ( 3, 8 ) long -> rax "Inline return value spill temp" ;* V59 tmp41 [V59 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inlining Arg" <System.Type> ; V60 tmp42 [V60,T47] ( 2, 1 ) ref -> rax class-hnd single-def "Inline return value spill temp" <System.Object>
-; V61 tmp43 [V61,T33] ( 2, 2 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Type> -; V62 tmp44 [V62 ] ( 4, 1.76) ref -> [rbp-0x48] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
+; V61 tmp43 [V61,T36] ( 2, 2 ) ref -> rbx class-hnd single-def "Inlining Arg" <System.Type> +; V62 tmp44 [V62 ] ( 4, 1.76) ref -> [rbp-0x50] do-not-enreg[X] must-init addr-exposed ld-addr-op class-hnd "Inline ldloca(s) first use temp" <System.Object>
;* V63 tmp45 [V63 ] ( 0, 0 ) struct (16) zero-ref "spilled call-like call argument" <System.ReadOnlySpan`1[ushort]> ;* V64 tmp46 [V64 ] ( 0, 0 ) ubyte -> zero-ref "Inline stloc first use temp" ; V65 tmp47 [V65,T44] ( 2, 0.52) int -> rcx ;* V66 tmp48 [V66 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <System.ReadOnlySpan`1[ushort]> ;* V67 tmp49 [V67 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ushort]> ;* V68 tmp50 [V68 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inline ldloca(s) first use temp" <System.ReadOnlySpan`1[ushort]>
-; V69 tmp51 [V69,T39] ( 2, 2 ) int -> rsi "Inlining Arg" -; V70 tmp52 [V70,T34] ( 2, 2 ) byref -> rdi single-def "Inlining Arg"
+; V69 tmp51 [V69,T40] ( 2, 2 ) int -> rdi "Inlining Arg" +; V70 tmp52 [V70,T37] ( 2, 2 ) byref -> r14 single-def "Inlining Arg"
;* V71 tmp53 [V71 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" ;* V72 tmp54 [V72 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg"
-; V73 tmp55 [V73,T30] ( 6, 4.35) ref -> rax class-hnd single-def "Inlining Arg" <System.Type>
+; V73 tmp55 [V73,T30] ( 6, 4.35) ref -> rcx class-hnd single-def "Inlining Arg" <System.Type>
; V74 tmp56 [V74,T46] ( 3, 1 ) ref -> rax "guarded devirt return temp" ;* V75 tmp57 [V75 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "guarded devirt this exact temp" <System.RuntimeType> ; V76 tmp58 [V76,T14] ( 3, 8 ) long -> rax "Inline return value spill temp" @@ -90,110 +90,103 @@ ;* V79 tmp61 [V79,T58] ( 0, 0 ) int -> zero-ref "field V42._length (fldOffset=0x8)" P-INDEP ;* V80 tmp62 [V80 ] ( 0, 0 ) byref -> zero-ref "field V46._reference (fldOffset=0x0)" P-INDEP ;* V81 tmp63 [V81 ] ( 0, 0 ) int -> zero-ref "field V46._length (fldOffset=0x8)" P-INDEP
-; V82 tmp64 [V82,T15] ( 2, 8 ) byref -> r9 "field V49._reference (fldOffset=0x0)" P-INDEP
+; V82 tmp64 [V82,T15] ( 2, 8 ) byref -> r8 "field V49._reference (fldOffset=0x0)" P-INDEP
; V83 tmp65 [V83,T17] ( 2, 8 ) int -> rdx "field V49._length (fldOffset=0x8)" P-INDEP
-; V84 tmp66 [V84,T16] ( 2, 8 ) byref -> r9 "field V50._reference (fldOffset=0x0)" P-INDEP
+; V84 tmp66 [V84,T16] ( 2, 8 ) byref -> r8 "field V50._reference (fldOffset=0x0)" P-INDEP
; V85 tmp67 [V85,T18] ( 2, 8 ) int -> rdx "field V50._length (fldOffset=0x8)" P-INDEP ;* V86 tmp68 [V86 ] ( 0, 0 ) byref -> zero-ref "field V51._reference (fldOffset=0x0)" P-INDEP ;* V87 tmp69 [V87 ] ( 0, 0 ) int -> zero-ref "field V51._length (fldOffset=0x8)" P-INDEP ;* V88 tmp70 [V88 ] ( 0, 0 ) byref -> zero-ref "field V63._reference (fldOffset=0x0)" P-INDEP ;* V89 tmp71 [V89 ] ( 0, 0 ) int -> zero-ref "field V63._length (fldOffset=0x8)" P-INDEP
-; V90 tmp72 [V90,T49] ( 2, 1 ) byref -> rdi single-def "field V66._reference (fldOffset=0x0)" P-INDEP -; V91 tmp73 [V91,T52] ( 2, 1 ) int -> rsi "field V66._length (fldOffset=0x8)" P-INDEP -; V92 tmp74 [V92,T50] ( 2, 1 ) byref -> rdi single-def "field V67._reference (fldOffset=0x0)" P-INDEP -; V93 tmp75 [V93,T53] ( 2, 1 ) int -> rsi "field V67._length (fldOffset=0x8)" P-INDEP
+; V90 tmp72 [V90,T49] ( 2, 1 ) byref -> r14 single-def "field V66._reference (fldOffset=0x0)" P-INDEP +; V91 tmp73 [V91,T52] ( 2, 1 ) int -> rdi "field V66._length (fldOffset=0x8)" P-INDEP +; V92 tmp74 [V92,T50] ( 2, 1 ) byref -> r14 single-def "field V67._reference (fldOffset=0x0)" P-INDEP +; V93 tmp75 [V93,T53] ( 2, 1 ) int -> rdi "field V67._length (fldOffset=0x8)" P-INDEP
;* V94 tmp76 [V94 ] ( 0, 0 ) byref -> zero-ref "field V68._reference (fldOffset=0x0)" P-INDEP ;* V95 tmp77 [V95 ] ( 0, 0 ) int -> zero-ref "field V68._length (fldOffset=0x8)" P-INDEP
-; V96 tmp78 [V96,T35] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V96 tmp78 [V96,T32] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
; V97 tmp79 [V97,T42] ( 2, 1.30) ref -> rcx single-def "arr expr"
-; V98 tmp80 [V98,T43] ( 2, 1.30) ref -> r14 single-def "arr expr" -; V99 tmp81 [V99,T40] ( 3, 1.95) int -> rax "index expr" -; V100 tmp82 [V100 ] ( 9, 30 ) struct (16) [rbp-0x58] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> -; V101 tmp83 [V101,T36] ( 2, 2 ) ref -> rcx single-def "argument with side effect"
+; V98 tmp80 [V98,T43] ( 2, 1.30) ref -> r15 single-def "arr expr" +; V99 tmp81 [V99,T41] ( 3, 1.95) int -> rax "index expr" +; V100 tmp82 [V100 ] ( 9, 30 ) struct (16) [rbp-0x60] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> +; V101 tmp83 [V101,T33] ( 2, 4 ) ref -> rcx single-def "argument with side effect"
; V102 tmp84 [V102,T60] ( 3, 0 ) ref -> rax single-def "argument with side effect" ; V103 tmp85 [V103,T64] ( 2, 0 ) ref -> r8 single-def "argument with side effect" ; V104 tmp86 [V104,T65] ( 2, 0 ) ref -> rdx single-def "argument with side effect" ; V105 PSPSym [V105,T55] ( 1, 1 ) long -> [rbp-0x68] do-not-enreg[V] "PSPSym"
-; V106 cse0 [V106,T57] ( 3, 0.97) ref -> r14 "CSE - conservative" -; V107 cse1 [V107,T08] ( 12, 9.45) ref -> rdx multi-def "CSE - aggressive"
+; V106 cse0 [V106,T57] ( 3, 0.97) ref -> r15 "CSE - conservative" +; V107 cse1 [V107,T10] ( 12, 9.45) ref -> rdx multi-def "CSE - aggressive"
; V108 cse2 [V108,T20] ( 6, 6.50) int -> registers multi-def "CSE - moderate"
-; V109 cse3 [V109,T25] ( 3, 5 ) int -> r13 "CSE - moderate"
+; V109 cse3 [V109,T25] ( 3, 5 ) int -> r12 "CSE - moderate"
;
-; Lcl frame size = 96
+; Lcl frame size = 88
G_M63242_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rbp push r15 push r14 push r13
+ push r12
push rdi push rsi push rbx
- sub rsp, 96
+ sub rsp, 88
lea rbp, [rsp+0x90]
- xor eax, eax - mov qword ptr [rbp-0x58], rax
vxorps xmm4, xmm4, xmm4
- vmovdqa xmmword ptr [rbp-0x50], xmm4 - mov qword ptr [rbp-0x40], rax
+ vmovdqu ymmword ptr [rbp-0x60], ymm4
mov qword ptr [rbp-0x68], rsp mov gword ptr [rbp+0x10], rcx ; GC ptr vars +{V00} mov gword ptr [rbp+0x28], r9 ; GC ptr vars +{V03}
- mov rsi, rdx
+ mov rsi, rcx
; gcrRegs +[rsi]
+ mov rdi, rdx + ; gcrRegs +[rdi]
mov rbx, r8 ; gcrRegs +[rbx]
- ;; size=59 bbWeight=1 PerfScore 15.83 -G_M63242_IG02: ; bbWeight=1, gcVars=00000000000000000000000000080080 {V00 V03}, gcrefRegs=0248 {rbx rsi r9}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=54 bbWeight=1 PerfScore 14.83 +G_M63242_IG02: ; bbWeight=1, gcVars=00000000000000000000000000080080 {V00 V03}, gcrefRegs=02C8 {rbx rsi rdi r9}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs +[r9]
- mov rdi, r9 - ; gcrRegs +[rdi] - test rdi, rdi
+ mov r14, r9 + ; gcrRegs +[r14] + test r14, r14
mov r9, gword ptr [rbp+0x28] je G_M63242_IG27 ;; size=16 bbWeight=1 PerfScore 2.50
-G_M63242_IG03: ; bbWeight=0.25, gcrefRegs=02C8 {rbx rsi rdi r9}, byrefRegs=0000 {}, byref, isz - mov r8, 0xD1FFAB1E ; System.String - cmp qword ptr [rdi], r8
+G_M63242_IG03: ; bbWeight=0.25, gcrefRegs=42C8 {rbx rsi rdi r9 r14}, byrefRegs=0000 {}, byref, isz + mov rcx, 0xD1FFAB1E ; System.String + cmp qword ptr [r14], rcx
je SHORT G_M63242_IG05 ;; size=15 bbWeight=0.25 PerfScore 1.06
-G_M63242_IG04: ; bbWeight=0.12, gcrefRegs=0248 {rbx rsi r9}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi]
+G_M63242_IG04: ; bbWeight=0.12, gcrefRegs=02C8 {rbx rsi rdi r9}, byrefRegs=0000 {}, byref + ; gcrRegs -[r14]
jmp G_M63242_IG27 ;; size=5 bbWeight=0.12 PerfScore 0.25
-G_M63242_IG05: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref - ; gcrRegs -[rsi r9] +[rdi] - lea r8, bword ptr [rdi+0x0C] - ; byrRegs +[r8] - mov esi, dword ptr [rdi+0x08] - mov edx, esi - mov rcx, r8
+G_M63242_IG05: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref + ; gcrRegs -[rdi r9] +[r14] + lea rcx, bword ptr [r14+0x0C]
; byrRegs +[rcx]
- mov r8d, edx - ; byrRegs -[r8]
+ mov edi, dword ptr [r14+0x08] + mov r8d, edi
mov edx, 44 call [<unknown method>] ; byrRegs -[rcx] ; gcr arg pop 0 test eax, eax je G_M63242_IG19
- ;; size=34 bbWeight=0.50 PerfScore 3.88 -G_M63242_IG06: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref - mov rcx, gword ptr [rbp+0x10] - ; gcrRegs +[rcx] - mov rsi, gword ptr [rcx+0x08] - ; gcrRegs +[rsi] - test rsi, rsi
+ ;; size=30 bbWeight=0.50 PerfScore 3.63 +G_M63242_IG06: ; bbWeight=0.50, gcrefRegs=4048 {rbx rsi r14}, byrefRegs=0000 {}, byref + mov rdi, gword ptr [rsi+0x08] + ; gcrRegs +[rdi] + test rdi, rdi
...

-5 (-2.84%) : 72007.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)

@@ -10,111 +10,111 @@ ; V00 this [V00,T10] ( 7, 5.50) ref -> rbx this class-hnd single-def <Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList> ; V01 arg1 [V01,T07] ( 3, 6 ) ref -> rdx class-hnd single-def <System.Type> ; V02 arg2 [V02,T11] ( 3, 4 ) ref -> r8 class-hnd single-def <System.Type>
-; V03 arg3 [V03,T13] ( 4, 3 ) byref -> r9 single-def -; V04 arg4 [V04,T16] ( 2, 1 ) byref -> [rsp+0x60] single-def -; V05 loc0 [V05,T15] ( 3, 2 ) ubyte -> rax
+; V03 arg3 [V03,T13] ( 4, 3.50) byref -> r9 single-def +; V04 arg4 [V04,T16] ( 2, 1.50) byref -> rcx single-def +; V05 loc0 [V05,T15] ( 3, 2.50) ubyte -> rax
; V06 loc1 [V06,T03] ( 6, 14 ) int -> rsi
-; V07 loc2 [V07,T04] ( 4, 13 ) int -> rcx
+; V07 loc2 [V07,T04] ( 4, 13 ) int -> rax
; V08 OutArgs [V08 ] ( 1, 1 ) struct (32) [rsp+0x00] do-not-enreg[XS] addr-exposed "OutgoingArgSpace"
-; V09 tmp1 [V09,T00] ( 3, 24 ) ref -> r11 "arr expr" -; V10 tmp2 [V10,T08] ( 2, 8 ) ref -> r11 "arr expr" -; V11 tmp3 [V11,T01] ( 2, 16 ) ref -> r11 "arr expr"
+; V09 tmp1 [V09,T00] ( 3, 24 ) ref -> rdi "arr expr" +; V10 tmp2 [V10,T08] ( 2, 8 ) ref -> rdi "arr expr" +; V11 tmp3 [V11,T01] ( 2, 16 ) ref -> rdi "arr expr"
;* V12 tmp4 [V12,T17] ( 0, 0 ) ref -> zero-ref "arr expr" ; V13 tmp5 [V13,T14] ( 3, 3 ) ref -> rdx "arr expr"
-; V14 cse0 [V14,T05] ( 5, 12.50) byref -> r11 multi-def "CSE - aggressive" -; V15 cse1 [V15,T02] ( 5, 14.50) long -> rdi "CSE - aggressive" -; V16 cse2 [V16,T06] ( 4, 10.50) ref -> r10 hoist "CSE - aggressive" -; V17 cse3 [V17,T12] ( 3, 6 ) int -> rax "CSE - aggressive" -; V18 cse4 [V18,T09] ( 2, 8 ) int -> rdi "CSE - aggressive"
+; V14 cse0 [V14,T05] ( 5, 12.50) byref -> rdi multi-def "CSE - aggressive" +; V15 cse1 [V15,T02] ( 5, 14.50) long -> rbp "CSE - aggressive" +; V16 cse2 [V16,T06] ( 4, 10.50) ref -> r11 hoist "CSE - aggressive" +; V17 cse3 [V17,T12] ( 3, 6 ) int -> r10 "CSE - aggressive" +; V18 cse4 [V18,T09] ( 2, 8 ) int -> rbp "CSE - aggressive"
;
-; Lcl frame size = 32
+; Lcl frame size = 40
G_M36050_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, nogc <-- Prolog IG push rdi push rsi
+ push rbp
push rbx
- sub rsp, 32
+ sub rsp, 40
mov rbx, rcx ; gcrRegs +[rbx]
- ;; size=10 bbWeight=1 PerfScore 3.50 -G_M36050_IG02: ; bbWeight=1, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0200 {r9}, byref, isz
+ mov rcx, bword ptr [rsp+0x70] + ; byrRegs +[rcx] + ;; size=16 bbWeight=1 PerfScore 5.50 +G_M36050_IG02: ; bbWeight=1, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0202 {rcx r9}, byref, isz
; gcrRegs +[rdx r8] ; byrRegs +[r9] mov esi, dword ptr [rbx+0x14]
- xor ecx, ecx - mov eax, dword ptr [rbx+0x1C] - test eax, eax
+ xor eax, eax + mov r10d, dword ptr [rbx+0x1C] + test r10d, r10d
jle SHORT G_M36050_IG07
- ;; size=12 bbWeight=1 PerfScore 5.50 -G_M36050_IG03: ; bbWeight=0.50, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0200 {r9}, byref - mov r10, gword ptr [rbx+0x08] - ; gcrRegs +[r10]
+ ;; size=14 bbWeight=1 PerfScore 5.50 +G_M36050_IG03: ; bbWeight=0.50, gcrefRegs=010C {rdx rbx r8}, byrefRegs=0202 {rcx r9}, byref + mov r11, gword ptr [rbx+0x08] + ; gcrRegs +[r11]
;; size=4 bbWeight=0.50 PerfScore 1.00
-G_M36050_IG04: ; bbWeight=4, gcrefRegs=050C {rdx rbx r8 r10}, byrefRegs=0200 {r9}, byref, isz - mov r11, r10 - ; gcrRegs +[r11] - mov edi, dword ptr [r11+0x08] - cmp esi, edi - jae G_M36050_IG12 - mov edi, esi - lea rdi, [rdi+4*rdi] - cmp gword ptr [r11+8*rdi+0x10], rdx
+G_M36050_IG04: ; bbWeight=4, gcrefRegs=090C {rdx rbx r8 r11}, byrefRegs=0202 {rcx r9}, byref, isz + mov rdi, r11 + ; gcrRegs +[rdi] + mov ebp, dword ptr [rdi+0x08] + cmp esi, ebp + jae SHORT G_M36050_IG12 + mov ebp, esi + lea rbp, [rbp+4*rbp] + cmp gword ptr [rdi+8*rbp+0x10], rdx
jne SHORT G_M36050_IG06
- ;; size=28 bbWeight=4 PerfScore 33.00 -G_M36050_IG05: ; bbWeight=2, gcrefRegs=050C {rdx rbx r8 r10}, byrefRegs=0200 {r9}, byref, isz - ; gcrRegs -[r11] - mov r11, r10 - ; gcrRegs +[r11] - lea r11, bword ptr [r11+8*rdi+0x10] - ; gcrRegs -[r11] - ; byrRegs +[r11] - cmp gword ptr [r11+0x08], r8
+ ;; size=24 bbWeight=4 PerfScore 39.00 +G_M36050_IG05: ; bbWeight=2, gcrefRegs=090C {rdx rbx r8 r11}, byrefRegs=0202 {rcx r9}, byref, isz + ; gcrRegs -[rdi] + mov rdi, r11 + ; gcrRegs +[rdi] + lea rdi, bword ptr [rdi+8*rbp+0x10] + ; gcrRegs -[rdi] + ; byrRegs +[rdi] + cmp gword ptr [rdi+0x08], r8
je SHORT G_M36050_IG09 ;; size=14 bbWeight=2 PerfScore 10.50
-G_M36050_IG06: ; bbWeight=4, gcrefRegs=050C {rdx rbx r8 r10}, byrefRegs=0200 {r9}, byref, isz - ; byrRegs -[r11] - mov r11, r10 - ; gcrRegs +[r11] - lea r11, bword ptr [r11+8*rdi+0x10] - ; gcrRegs -[r11] - ; byrRegs +[r11] - mov esi, dword ptr [r11+0x18] - add ecx, 1
+G_M36050_IG06: ; bbWeight=4, gcrefRegs=090C {rdx rbx r8 r11}, byrefRegs=0202 {rcx r9}, byref, isz + ; byrRegs -[rdi] + mov rdi, r11 + ; gcrRegs +[rdi] + lea rdi, bword ptr [rdi+8*rbp+0x10] + ; gcrRegs -[rdi] + ; byrRegs +[rdi] + mov esi, dword ptr [rdi+0x18] + add eax, 1
jo SHORT G_M36050_IG11
- cmp ecx, eax
+ cmp eax, r10d
jl SHORT G_M36050_IG04 ;; size=21 bbWeight=4 PerfScore 23.00
-G_M36050_IG07: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0200 {r9}, byref - ; gcrRegs -[rdx rbx r8 r10] - ; byrRegs -[r11]
+G_M36050_IG07: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0202 {rcx r9}, byref + ; gcrRegs -[rdx rbx r8 r11] + ; byrRegs -[rdi]
mov byte ptr [r9], 0
- xor r11, r11 - ; gcrRegs +[r11] - mov rcx, bword ptr [rsp+0x60] - ; byrRegs +[rcx] - mov gword ptr [rcx], r11 - ;; size=15 bbWeight=0.50 PerfScore 1.62 -G_M36050_IG08: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz - ; gcrRegs -[r11] - ; byrRegs -[rcx r9]
+ xor r9, r9 + ; gcrRegs +[r9] + ; byrRegs -[r9] + mov gword ptr [rcx], r9 + ;; size=10 bbWeight=1 PerfScore 2.25 +G_M36050_IG08: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, isz + ; gcrRegs -[r9] + ; byrRegs -[rcx]
xor eax, eax jmp SHORT G_M36050_IG10
- ;; size=4 bbWeight=0.50 PerfScore 1.12 -G_M36050_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0A00 {r9 r11}, byref, isz
+ ;; size=4 bbWeight=1 PerfScore 2.25 +G_M36050_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0282 {rcx rdi r9}, byref, isz
; gcrRegs +[rbx]
- ; byrRegs +[r9 r11] - movsx rdx, byte ptr [r11+0x20]
+ ; byrRegs +[rcx rdi r9] + movsx rdx, byte ptr [rdi+0x20]
mov byte ptr [r9], dl mov rdx, gword ptr [rbx+0x08] ; gcrRegs +[rdx] cmp esi, dword ptr [rdx+0x08] jae SHORT G_M36050_IG12
- mov rdx, gword ptr [rdx+8*rdi+0x20] - mov rcx, bword ptr [rsp+0x60] - ; byrRegs +[rcx]
+ mov rdx, gword ptr [rdx+8*rbp+0x20]
call CORINFO_HELP_CHECKED_ASSIGN_REF ; gcrRegs -[rdx]
- ; byrRegs -[rcx r9 r11]
+ ; byrRegs -[rcx rdi r9]
mov rcx, rbx ; gcrRegs +[rcx] mov edx, esi @@ -122,14 +122,15 @@ G_M36050_IG09: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0A00 {r9 ; gcrRegs -[rcx rbx] ; gcr arg pop 0 mov eax, 1
- ;; size=48 bbWeight=0.50 PerfScore 9.38
+ ;; size=43 bbWeight=0.50 PerfScore 8.88
G_M36050_IG10: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, epilog, nogc
- add rsp, 32
+ add rsp, 40
pop rbx
+ pop rbp
pop rsi pop rdi ret
- ;; size=8 bbWeight=1 PerfScore 2.75
+ ;; size=9 bbWeight=1 PerfScore 3.25
G_M36050_IG11: ; bbWeight=0, gcVars=0000000000000000 {}, gcrefRegs=0000 {}, byrefRegs=0000 {}, gcvars, byref call CORINFO_HELP_OVERFLOW ; gcr arg pop 0 @@ -141,7 +142,7 @@ G_M36050_IG12: ; bbWeight=0, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref int3 ;; size=6 bbWeight=0 PerfScore 0.00
-; Total bytes of code 176, prolog size 10, PerfScore 91.38, instruction count 57, allocated bytes for code 176 (MethodHash=1809732d) for method Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
+; Total bytes of code 171, prolog size 16, PerfScore 101.12, instruction count 58, allocated bytes for code 171 (MethodHash=1809732d) for method Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
; ============================================================ Unwind Info: @@ -149,12 +150,13 @@ Unwind Info: >> End offset : 0xd1ffab1e (not in unwind data) Version : 1 Flags : 0x00
- SizeOfProlog : 0x07 - CountOfUnwindCodes: 4
+ SizeOfProlog : 0x08 + CountOfUnwindCodes: 5
FrameRegister : none (0) FrameOffset : N/A (no FrameRegister) (Value=0) UnwindCodes :
- CodeOffset: 0x07 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 3 * 8 + 8 = 32 = 0x20 - CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3)
+ CodeOffset: 0x08 UnwindOp: UWOP_ALLOC_SMALL (2) OpInfo: 4 * 8 + 8 = 40 = 0x28 + CodeOffset: 0x04 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbx (3) + CodeOffset: 0x03 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rbp (5)
CodeOffset: 0x02 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rsi (6) CodeOffset: 0x01 UnwindOp: UWOP_PUSH_NONVOL (0) OpInfo: rdi (7)

+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, 12 ) 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=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
+ mov ebp, 1 + ;; size=5 bbWeight=4 PerfScore 1.00 +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.79, 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, 12 ) 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=4, gcrefRegs=0048 {rbx rsi}, byrefRegs=0000 {}, byref
; gcrRegs -[rcx]
+ mov ebp, 1 + ;; size=5 bbWeight=4 PerfScore 1.00 +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.79, 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

-28 (-2.88%) : 9413.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption1[Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList1[System.Tuple2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple2FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv

@@ -24,7 +24,7 @@ ; V13 arg13 [V13,T42] ( 1, 1 ) ref -> [rbp+0x78] class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]]> ; V14 arg14 [V14,T43] ( 1, 1 ) ref -> [rbp+0x80] class-hnd single-def <FSharp.Compiler.NameResolution+AfterResolution> ; V15 arg15 [V15,T44] ( 1, 1 ) ref -> [rbp+0x88] class-hnd single-def <FSharp.Compiler.TypedTree+ValUseFlag>
-; V16 arg16 [V16,T12] ( 4, 3 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr]>
+; V16 arg16 [V16,T14] ( 4, 3 ) ref -> r15 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr]>
; V17 arg17 [V17,T46] ( 1, 1 ) int -> [rbp+0x98] single-def ; V18 arg18 [V18,T23] ( 2, 2 ) ref -> r12 class-hnd single-def <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]> ; V19 loc0 [V19,T20] ( 3, 2.50) ref -> [rbp-0x90] class-hnd spill-single-def <FSharp.Compiler.TcGlobals+TcGlobals> @@ -47,7 +47,7 @@ ;* V36 tmp6 [V36 ] ( 0, 0 ) struct (16) zero-ref "Inline return value spill temp" <FSharp.Compiler.Text.Range> ; V37 tmp7 [V37,T19] ( 2, 3 ) ref -> rdx class-hnd exact single-def "Inlining Arg" <<unknown class>> ; V38 tmp8 [V38,T03] ( 3, 8.50) ref -> [rbp-0xA8] class-hnd spill-single-def "Inline stloc first use temp" <<unknown class>>
-; V39 tmp9 [V39 ] ( 5, 9.50) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <FSharp.Compiler.Text.Range>
+; V39 tmp9 [V39 ] ( 5, 10.50) struct (16) [rbp-0x48] do-not-enreg[XS] must-init addr-exposed "Inline stloc first use temp" <FSharp.Compiler.Text.Range>
; V40 tmp10 [V40,T01] ( 4, 12.50) ref -> r10 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr]> ; V41 tmp11 [V41,T00] ( 5, 13 ) ref -> r13 class-hnd "Inline stloc first use temp" <Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr]> ;* V42 tmp12 [V42 ] ( 0, 0 ) ref -> zero-ref class-hnd "Inline stloc first use temp" <FSharp.Compiler.Syntax.SynExpr> @@ -65,10 +65,10 @@ ;* V54 tmp24 [V54 ] ( 0, 0 ) long -> zero-ref single-def "field V20.code2 (fldOffset=0x8)" P-INDEP ; V55 tmp25 [V55,T32] ( 2, 1 ) long -> [rbp-0x50] spill-single-def "field V34.code1 (fldOffset=0x0)" P-INDEP ; V56 tmp26 [V56,T33] ( 2, 1 ) long -> [rbp-0x58] spill-single-def "field V34.code2 (fldOffset=0x8)" P-INDEP
-; V57 tmp27 [V57,T13] ( 4, 3 ) long -> [rbp-0x60] "field V36.code1 (fldOffset=0x0)" P-INDEP -; V58 tmp28 [V58,T14] ( 4, 3 ) long -> registers "field V36.code2 (fldOffset=0x8)" P-INDEP -; V59 tmp29 [V59 ] ( 4, 9 ) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V39.code1 (fldOffset=0x0)" P-DEP -; V60 tmp30 [V60 ] ( 4, 9 ) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V39.code2 (fldOffset=0x8)" P-DEP
+; V57 tmp27 [V57,T12] ( 4, 3.50) long -> registers "field V36.code1 (fldOffset=0x0)" P-INDEP +; V58 tmp28 [V58,T13] ( 4, 3.50) long -> [rbp-0x60] "field V36.code2 (fldOffset=0x8)" P-INDEP +; V59 tmp29 [V59 ] ( 4, 9.50) long -> [rbp-0x48] do-not-enreg[X] addr-exposed "field V39.code1 (fldOffset=0x0)" P-DEP +; V60 tmp30 [V60 ] ( 4, 9.50) long -> [rbp-0x40] do-not-enreg[X] addr-exposed "field V39.code2 (fldOffset=0x8)" P-DEP
; V61 tmp31 [V61,T30] ( 2, 1 ) ref -> rcx single-def "V28.[000..008)" ; V62 tmp32 [V62,T34] ( 2, 1 ) long -> [rbp-0x68] spill-single-def "V28.[008..016)" ; V63 tmp33 [V63,T35] ( 2, 1 ) long -> [rbp-0x70] spill-single-def "V28.[016..024)" @@ -124,33 +124,31 @@ G_M29168_IG02: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, by mov gword ptr [rbp-0x90], r8 ; GC ptr vars +{V19} test byte ptr [(reloc)], 1 ; global ptr
- je G_M29168_IG16
+ je G_M29168_IG15
;; size=24 bbWeight=1 PerfScore 7.00
-G_M29168_IG03: ; bbWeight=0.50, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
+G_M29168_IG03: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref, isz
; gcrRegs -[r8]
- mov r8, gword ptr [rbp-0x90] - ; gcrRegs +[r8] - ;; size=7 bbWeight=0.50 PerfScore 0.50 -G_M29168_IG04: ; bbWeight=1, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
mov rdx, 0xD1FFAB1E ; data for <unknown class>:<unknown field> mov rdx, gword ptr [rdx] ; gcrRegs +[rdx] cmp gword ptr [r15+0x10], 0
- jne SHORT G_M29168_IG06
+ jne SHORT G_M29168_IG05
;; size=20 bbWeight=1 PerfScore 6.25
-G_M29168_IG05: ; bbWeight=0.50, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r15}, byrefRegs=2000 {r13}, byref
+G_M29168_IG04: ; bbWeight=0.50, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
; gcrRegs -[rdx] mov r10, qword ptr [r13] mov r13, qword ptr [r13+0x08] ; byrRegs -[r13]
- jmp G_M29168_IG09 - ;; size=13 bbWeight=0.50 PerfScore 3.00 -G_M29168_IG06: ; bbWeight=0.50, gcrefRegs=D1CC {rdx rbx rsi rdi r8 r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
+ mov qword ptr [rbp-0x60], r13 + mov r13, r10 + jmp SHORT G_M29168_IG08 + ;; size=17 bbWeight=0.50 PerfScore 3.62 +G_M29168_IG05: ; bbWeight=0.50, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, byref, isz
; gcrRegs +[rdx] ; byrRegs +[r13] mov rcx, 0xD1FFAB1E ; <unknown class> call [Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[FSharp.Compiler.Text.Range,System.__Canon,FSharp.Compiler.Text.Range]:Adapt(Microsoft.FSharp.Core.FSharpFunc`2[FSharp.Compiler.Text.Range,System.__Canon]):Microsoft.FSharp.Core.OptimizedClosures+FSharpFunc`3[FSharp.Compiler.Text.Range,System.__Canon,FSharp.Compiler.Text.Range]]
- ; gcrRegs -[rdx r8] +[rax]
+ ; gcrRegs -[rdx] +[rax]
mov gword ptr [rbp-0xA8], rax ; GC ptr vars +{V38} vmovups xmm0, xmmword ptr [r13] @@ -161,9 +159,9 @@ G_M29168_IG06: ; bbWeight=0.50, gcrefRegs=D1CC {rdx rbx rsi rdi r8 r12 r1 ; gcrRegs +[r13] ; byrRegs -[r13] test r13, r13
- je SHORT G_M29168_IG08
+ je SHORT G_M29168_IG07
;; size=46 bbWeight=0.50 PerfScore 6.38
-G_M29168_IG07: ; bbWeight=4, gcVars=0000000000100008 {V19 V38}, gcrefRegs=F4C9 {rax rbx rsi rdi r10 r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
+G_M29168_IG06: ; bbWeight=4, gcVars=0000000000100008 {V19 V38}, gcrefRegs=F4C9 {rax rbx rsi rdi r10 r12 r13 r14 r15}, byrefRegs=0000 {}, gcvars, byref, isz
vmovups xmm0, xmmword ptr [rbp-0x48] vmovups xmmword ptr [rbp-0x80], xmm0 lea r8, [rbp-0x80] @@ -183,36 +181,31 @@ G_M29168_IG07: ; bbWeight=4, gcVars=0000000000100008 {V19 V38}, gcrefRegs test r13, r13 mov rax, gword ptr [rbp-0xA8] ; gcrRegs +[rax]
- jne SHORT G_M29168_IG07
+ jne SHORT G_M29168_IG06
;; size=55 bbWeight=4 PerfScore 75.00
-G_M29168_IG08: ; bbWeight=0.50, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+G_M29168_IG07: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; gcrRegs -[rax r10 r13] ; GC ptr vars -{V38} mov r10, qword ptr [rbp-0x48]
- mov qword ptr [rbp-0x60], r10
+ mov r13, r10
mov rcx, qword ptr [rbp-0x40]
- mov rax, rcx - mov r13, rax - mov r8, gword ptr [rbp-0x90] - ; gcrRegs +[r8] - mov r10, qword ptr [rbp-0x60] - ;; size=29 bbWeight=0.50 PerfScore 2.75 -G_M29168_IG09: ; bbWeight=1, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+ mov qword ptr [rbp-0x60], rcx + ;; size=15 bbWeight=1 PerfScore 3.25 +G_M29168_IG08: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
cmp gword ptr [r12+0x10], 0
- jne SHORT G_M29168_IG11
+ jne SHORT G_M29168_IG10
;; size=8 bbWeight=1 PerfScore 4.00
-G_M29168_IG10: ; bbWeight=0.50, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r15}, byrefRegs=0000 {}, byref, isz
+G_M29168_IG09: ; bbWeight=0.50, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref, isz
mov rdx, rdi ; gcrRegs +[rdx]
- jmp SHORT G_M29168_IG12
+ jmp SHORT G_M29168_IG11
;; size=5 bbWeight=0.50 PerfScore 1.12
-G_M29168_IG11: ; bbWeight=0.50, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M29168_IG10: ; bbWeight=0.50, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rdx]
- mov qword ptr [rbp-0x60], r10 - mov rcx, r8
+ mov rcx, gword ptr [rbp-0x90]
; gcrRegs +[rcx] call [FSharp.Compiler.ConstraintSolver:NewInferenceType(FSharp.Compiler.TcGlobals+TcGlobals):FSharp.Compiler.TypedTree+TType]
- ; gcrRegs -[rcx r8] +[rax]
+ ; gcrRegs -[rcx] +[rax]
mov gword ptr [rbp-0xB0], rax ; GC ptr vars +{V43} mov rcx, 0xD1FFAB1E ; FSharp.Compiler.ConstraintSolver+OverallTy+MustEqual @@ -230,22 +223,21 @@ G_M29168_IG11: ; bbWeight=0.50, gcrefRegs=D1C8 {rbx rsi rdi r8 r12 r14 r1 ; byrRegs -[rcx] mov rdx, gword ptr [rbp-0xB8] ; gcrRegs +[rdx]
- mov r10, qword ptr [rbp-0x60] - ;; size=72 bbWeight=0.50 PerfScore 6.12 -G_M29168_IG12: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
+ ;; size=68 bbWeight=0.50 PerfScore 5.50 +G_M29168_IG11: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, gcvars, byref
; GC ptr vars -{V44}
- mov r11, gword ptr [rbp+0x38]
+ mov r10, gword ptr [rbp+0x38] + ; gcrRegs +[r10] + mov gword ptr [rsp+0x20], r10 + mov r11, gword ptr [rbp+0x40]
; gcrRegs +[r11]
- mov gword ptr [rsp+0x20], r11 - mov rcx, gword ptr [rbp+0x40] - ; gcrRegs +[rcx] - mov gword ptr [rsp+0x28], rcx - mov qword ptr [rbp-0x60], r10 - mov qword ptr [rbp-0x80], r10 - mov qword ptr [rbp-0x78], r13 - mov rax, bword ptr [rbp+0x50] - ; byrRegs +[rax] - mov bword ptr [rsp+0x38], rax
+ mov gword ptr [rsp+0x28], r11 + mov qword ptr [rbp-0x80], r13 + mov rax, qword ptr [rbp-0x60] + mov qword ptr [rbp-0x78], rax + mov rcx, bword ptr [rbp+0x50] + ; byrRegs +[rcx] + mov bword ptr [rsp+0x38], rcx
mov r9, gword ptr [rbp+0x58] ; gcrRegs +[r9] mov gword ptr [rsp+0x40], r9 @@ -254,9 +246,8 @@ G_M29168_IG12: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0C mov gword ptr [rsp+0x50], r14 mov r14, gword ptr [rbp+0x68] mov gword ptr [rsp+0x58], r14
- movzx r9, byte ptr [rbp+0x70] - ; gcrRegs -[r9] - mov dword ptr [rsp+0x60], r9d
+ movzx r8, byte ptr [rbp+0x70] + mov dword ptr [rsp+0x60], r8d
mov r14, gword ptr [rbp+0x78] mov gword ptr [rsp+0x68], r14 mov r14, gword ptr [rbp+0x80] @@ -274,12 +265,10 @@ G_M29168_IG12: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0C mov r8, rsi ; gcrRegs +[r8] mov r9, gword ptr [rbp+0x30]
- ; gcrRegs +[r9]
xor ecx, ecx
- ; gcrRegs -[rcx]
+ ; byrRegs -[rcx]
call [<unknown method>]
- ; gcrRegs -[rdx r8-r9 r11-r12 r14-r15] +[rax] - ; byrRegs -[rax]
+ ; gcrRegs -[rdx r8-r12 r14-r15] +[rax]
mov r14, gword ptr [rax+0x10] ; gcrRegs +[r14] mov rdx, gword ptr [rax+0x08] @@ -290,9 +279,9 @@ G_M29168_IG12: ; bbWeight=1, gcVars=0000000000100000 {V19}, gcrefRegs=D0C ; gcrRegs +[r12] mov rdx, gword ptr [rdx+0x10] cmp gword ptr [rdx+0x10], 0
- je G_M29168_IG14
+ je G_M29168_IG13
;; size=196 bbWeight=1 PerfScore 47.25
-G_M29168_IG13: ; bbWeight=0.50, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M29168_IG12: ; bbWeight=0.50, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov rcx, 0xD1FFAB1E ; <unknown method> call [Microsoft.FSharp.Collections.ListModule:Head[System.__Canon](Microsoft.FSharp.Collections.FSharpList`1[System.__Canon]):System.__Canon] @@ -344,7 +333,7 @@ G_M29168_IG13: ; bbWeight=0.50, gcrefRegs=D0CC {rdx rbx rsi rdi r12 r14 r call [<unknown method>] ; gcrRegs -[rax rcx rdx] ;; size=171 bbWeight=0.50 PerfScore 18.88
-G_M29168_IG14: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
+G_M29168_IG13: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=0000 {}, byref
mov rcx, 0xD1FFAB1E ; FSharp.Compiler.CheckExpressions+ApplicableExpr call CORINFO_HELP_NEWSFAST ; gcrRegs +[rax] @@ -369,8 +358,8 @@ G_M29168_IG14: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, by mov rax, gword ptr [rbp-0xC0] ; gcrRegs +[rax] mov byte ptr [rax+0x18], 1
- mov rcx, qword ptr [rbp-0x60] - mov qword ptr [rbp-0x80], rcx
+ mov qword ptr [rbp-0x80], r13 + mov r13, qword ptr [rbp-0x60]
mov qword ptr [rbp-0x78], r13 mov rcx, gword ptr [rbp-0x90] ; gcrRegs +[rcx] @@ -405,7 +394,7 @@ G_M29168_IG14: ; bbWeight=1, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, by mov rax, gword ptr [rbp-0x88] ; gcrRegs +[rax] ;; size=186 bbWeight=1 PerfScore 30.75
-G_M29168_IG15: ; bbWeight=1, epilog, nogc, extend
+G_M29168_IG14: ; bbWeight=1, epilog, nogc, extend
add rsp, 296 pop rbx pop rsi @@ -417,19 +406,17 @@ G_M29168_IG15: ; bbWeight=1, epilog, nogc, extend pop rbp ret ;; size=20 bbWeight=1 PerfScore 5.25
-G_M29168_IG16: ; bbWeight=0, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
+G_M29168_IG15: ; bbWeight=0, gcVars=0000000000100000 {V19}, gcrefRegs=D0C8 {rbx rsi rdi r12 r14 r15}, byrefRegs=2000 {r13}, gcvars, byref
; gcrRegs -[rax] +[rbx rsi rdi r12 r14-r15] ; byrRegs +[r13] ...

-30 (-1.77%) : 13174.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)

@@ -9,11 +9,11 @@ ; Final local variable assignments ; ; V00 this [V00,T14] ( 9, 19.50) ref -> rsi this class-hnd single-def <System.Text.UnicodeEncoding>
-; V01 arg1 [V01,T06] ( 22, 52 ) long -> rbx
+; V01 arg1 [V01,T06] ( 22, 56 ) long -> rbx
; V02 arg2 [V02,T29] ( 6, 5.50) int -> rdi single-def ; V03 arg3 [V03,T35] ( 4, 3 ) ref -> rbp class-hnd single-def <System.Text.DecoderNLS> ; V04 loc0 [V04,T12] ( 18, 31.50) ref -> r14 class-hnd exact single-def <<unknown class>>
-; V05 loc1 [V05,T23] ( 6, 12 ) long -> rbp
+; V05 loc1 [V05,T23] ( 6, 14 ) long -> rbp
; V06 loc2 [V06,T22] ( 7, 15 ) long -> r15 ; V07 loc3 [V07,T17] ( 11, 19 ) int -> [rsp+0x34] ; V08 loc4 [V08,T02] ( 24, 78 ) ushort -> r12 @@ -21,7 +21,7 @@ ; V10 loc6 [V10,T00] ( 34,105 ) ref -> [rsp+0x28] class-hnd <System.Text.DecoderFallbackBuffer> ; V11 loc7 [V11,T15] ( 9, 20 ) ushort -> r13 ; V12 loc8 [V12,T16] ( 3, 20 ) long -> rdx
-; V13 loc9 [V13,T03] ( 7, 70 ) long -> rbx
+; V13 loc9 [V13,T03] ( 7, 72 ) long -> rbx
; V14 loc10 [V14,T09] ( 5, 40 ) long -> r10 ; V15 loc11 [V15,T31] ( 3, 6 ) ref -> rdi class-hnd <<unknown class>> ; V16 loc12 [V16,T32] ( 3, 6 ) ref -> rdi class-hnd <<unknown class>> @@ -47,7 +47,7 @@ ; V36 tmp17 [V36,T38] ( 3, 3 ) ref -> rax class-hnd exact single-def "dup spill" <<unknown class>> ; V37 tmp18 [V37,T43] ( 3, 1.50) ref -> rax ; V38 tmp19 [V38,T36] ( 4, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <<unknown class>>
-; V39 tmp20 [V39,T44] ( 3, 1.50) ref -> r13
+; V39 tmp20 [V39,T44] ( 3, 1.50) ref -> rbp
; V40 tmp21 [V40,T37] ( 4, 4 ) ref -> rdi class-hnd exact single-def "dup spill" <<unknown class>> ; V41 tmp22 [V41,T46] ( 2, 1 ) int -> rcx ;* V42 tmp23 [V42 ] ( 0, 0 ) ubyte -> zero-ref "Inlining Arg" @@ -121,7 +121,7 @@ G_M55046_IG06: ; bbWeight=1, gcrefRegs=0060 {rbp rsi}, byrefRegs=0000 {}, G_M55046_IG07: ; bbWeight=0.25, gcrefRegs=4060 {rbp rsi r14}, byrefRegs=0000 {}, byref mov rcx, 0xD1FFAB1E ; <unknown class> cmp qword ptr [r14], rcx
- jne G_M55046_IG72
+ jne G_M55046_IG68
;; size=19 bbWeight=0.25 PerfScore 1.06 G_M55046_IG08: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz ; gcrRegs -[rbp] @@ -175,7 +175,7 @@ G_M55046_IG10: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 test eax, eax sete cl test cl, cl
- jne G_M55046_IG26
+ jne G_M55046_IG23
mov rcx, 0xD1FFAB1E ; gcrRegs +[rcx] mov rdx, 0xD1FFAB1E @@ -187,7 +187,7 @@ G_M55046_IG10: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 ;; size=78 bbWeight=0.50 PerfScore 11.38 G_M55046_IG11: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref cmp r15, rbp
- jae G_M55046_IG25
+ jae G_M55046_IG49
;; size=9 bbWeight=1 PerfScore 1.25 G_M55046_IG12: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref movzx rdi, byte ptr [rsi+0x26] @@ -241,24 +241,24 @@ G_M55046_IG17: ; bbWeight=16, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {} cmp rbx, rdx jb G_M55046_IG14 ;; size=13 bbWeight=16 PerfScore 24.00
-G_M55046_IG18: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG18: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
cmp rbx, rbp
- jae SHORT G_M55046_IG24 - ;; size=5 bbWeight=2 PerfScore 2.50
+ jae G_M55046_IG49 + ;; size=9 bbWeight=4 PerfScore 5.00
G_M55046_IG19: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz test r13d, r13d jge SHORT G_M55046_IG21 ;; size=5 bbWeight=4 PerfScore 5.00
-G_M55046_IG20: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG20: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
mov rdx, rbx lea rbx, [rdx+0x01] movzx r13, byte ptr [rdx] cmp rbx, rbp
- jae SHORT G_M55046_IG23 - ;; size=16 bbWeight=2 PerfScore 8.00
+ jae G_M55046_IG49 + ;; size=20 bbWeight=2 PerfScore 8.00
G_M55046_IG21: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz test edi, edi
- je SHORT G_M55046_IG27
+ je SHORT G_M55046_IG24
;; size=4 bbWeight=4 PerfScore 5.00 G_M55046_IG22: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz mov rdx, rbx @@ -267,25 +267,13 @@ G_M55046_IG22: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, movzx rdx, byte ptr [rdx] or edx, r13d movzx r13, dx
- jmp SHORT G_M55046_IG28
+ jmp SHORT G_M55046_IG25
;; size=23 bbWeight=2 PerfScore 11.50
-G_M55046_IG23: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref - mov dword ptr [rsp+0x34], r13d - jmp G_M55046_IG52 - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M55046_IG24: ; bbWeight=1, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref - mov dword ptr [rsp+0x34], r13d - jmp G_M55046_IG52 - ;; size=10 bbWeight=1 PerfScore 3.00 -G_M55046_IG25: ; bbWeight=0.50, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref - mov dword ptr [rsp+0x34], r13d - jmp G_M55046_IG52 - ;; size=10 bbWeight=0.50 PerfScore 1.50 -G_M55046_IG26: ; bbWeight=0.25, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG23: ; bbWeight=0.25, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
mov ecx, dword ptr [rsp+0x30] jmp G_M55046_IG11 ;; size=9 bbWeight=0.25 PerfScore 0.75
-G_M55046_IG27: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG24: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
mov rdx, rbx lea rbx, [rdx+0x01] movzx rdx, byte ptr [rdx] @@ -293,22 +281,22 @@ G_M55046_IG27: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, or edx, r13d movzx r13, dx ;; size=20 bbWeight=2 PerfScore 7.50
-G_M55046_IG28: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG25: ; bbWeight=4, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
mov dword ptr [rsp+0x34], -1 mov edx, r13d sub edx, 0xD800 cmp edx, 0x7FF
- ja G_M55046_IG43
+ ja G_M55046_IG40
;; size=29 bbWeight=4 PerfScore 11.00
-G_M55046_IG29: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG26: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
cmp r13d, 0xDBFF
- jg G_M55046_IG36
+ jg G_M55046_IG33
test r12d, r12d
- jle G_M55046_IG35
+ jle G_M55046_IG32
dec ecx mov dword ptr [rsp+0x30], ecx test edi, edi
- je SHORT G_M55046_IG30
+ je SHORT G_M55046_IG27
mov rcx, 0xD1FFAB1E ; <unknown class> mov edx, 2 call CORINFO_HELP_NEWARR_1_VC @@ -320,9 +308,9 @@ G_M55046_IG29: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, sar ecx, 8 mov byte ptr [rdi+0x10], cl mov byte ptr [rdi+0x11], r12b
- jmp SHORT G_M55046_IG31
+ jmp SHORT G_M55046_IG28
;; size=70 bbWeight=2 PerfScore 23.00
-G_M55046_IG30: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG27: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdi] mov rcx, 0xD1FFAB1E ; <unknown class> mov edx, 2 @@ -335,14 +323,14 @@ G_M55046_IG30: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, sar r12d, 8 mov byte ptr [rdi+0x11], r12b ;; size=35 bbWeight=2 PerfScore 8.50
-G_M55046_IG31: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG28: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov r12, gword ptr [rsp+0x28] ; gcrRegs +[r12] test r12, r12
- jne SHORT G_M55046_IG34
+ jne SHORT G_M55046_IG31
test r14, r14
- je SHORT G_M55046_IG32
+ je SHORT G_M55046_IG29
mov rcx, r14 ; gcrRegs +[rcx] ; GC ptr vars -{V10} @@ -351,9 +339,9 @@ G_M55046_IG31: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 ; gcr arg pop 0 mov r12, rax ; gcrRegs +[r12]
- jmp SHORT G_M55046_IG33
+ jmp SHORT G_M55046_IG30
;; size=29 bbWeight=2 PerfScore 18.00
-G_M55046_IG32: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG29: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax r12] mov rcx, gword ptr [rsi+0x18] ; gcrRegs +[rcx] @@ -365,13 +353,13 @@ G_M55046_IG32: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 mov r12, rax ; gcrRegs +[r12] ;; size=17 bbWeight=2 PerfScore 18.50
-G_M55046_IG33: ; bbWeight=2, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref
+G_M55046_IG30: ; bbWeight=2, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax] mov qword ptr [r12+0x18], r15 xor ecx, ecx mov qword ptr [r12+0x20], rcx ;; size=12 bbWeight=2 PerfScore 4.50
-G_M55046_IG34: ; bbWeight=2, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref
+G_M55046_IG31: ; bbWeight=2, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs=0000 {}, byref
mov rcx, r12 ; gcrRegs +[rcx] mov rdx, rdi @@ -389,17 +377,17 @@ G_M55046_IG34: ; bbWeight=2, gcrefRegs=50C0 {rsi rdi r12 r14}, byrefRegs= mov edi, ecx mov ecx, edi ;; size=35 bbWeight=2 PerfScore 23.00
-G_M55046_IG35: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG32: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
mov r12d, r13d
- jmp G_M55046_IG51
+ jmp G_M55046_IG48
;; size=8 bbWeight=2 PerfScore 4.50
-G_M55046_IG36: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG33: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref, isz
test r12d, r12d
- jne G_M55046_IG42
+ jne G_M55046_IG39
dec ecx mov dword ptr [rsp+0x30], ecx test edi, edi
- je SHORT G_M55046_IG37
+ je SHORT G_M55046_IG34
mov rcx, 0xD1FFAB1E ; <unknown class> mov edx, 2 call CORINFO_HELP_NEWARR_1_VC @@ -411,9 +399,9 @@ G_M55046_IG36: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, sar ecx, 8 mov byte ptr [rdi+0x10], cl mov byte ptr [rdi+0x11], r13b
- jmp SHORT G_M55046_IG38
+ jmp SHORT G_M55046_IG35
;; size=57 bbWeight=2 PerfScore 20.50
-G_M55046_IG37: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
+G_M55046_IG34: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, byref
; gcrRegs -[rax rdi] mov rcx, 0xD1FFAB1E ; <unknown class> mov edx, 2 @@ -427,14 +415,14 @@ G_M55046_IG37: ; bbWeight=2, gcrefRegs=4040 {rsi r14}, byrefRegs=0000 {}, sar ecx, 8 mov byte ptr [rdi+0x11], cl ;; size=36 bbWeight=2 PerfScore 9.00
-G_M55046_IG38: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
+G_M55046_IG35: ; bbWeight=2, gcrefRegs=40C0 {rsi rdi r14}, byrefRegs=0000 {}, byref, isz
; gcrRegs -[rax] mov r13, gword ptr [rsp+0x28] ...

-44 (-1.62%) : 5323.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)

@@ -9,31 +9,31 @@ ; Final local variable assignments ; ; V00 this [V00,T00] ( 70, 40 ) ref -> [rbp+0x10] this class-hnd single-def <System.Threading.PortableThreadPool+HillClimbing>
-; V01 arg1 [V01,T07] ( 10, 6.50) int -> rsi single-def -; V02 arg2 [V02,T54] ( 9, 7 ) double -> mm6 -; V03 arg3 [V03,T08] ( 8, 6.50) int -> rdi -; V04 loc0 [V04,T82] ( 4, 2 ) double -> mm7
+; V01 arg1 [V01,T08] ( 10, 6.50) int -> rsi single-def +; V02 arg2 [V02,T56] ( 9, 7 ) double -> mm6 +; V03 arg3 [V03,T09] ( 8, 6.50) int -> rdi +; V04 loc0 [V04,T83] ( 4, 2 ) double -> mm7
; V05 loc1 [V05,T32] ( 4, 2 ) int -> rdx ;* V06 loc2 [V06 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex> ;* V07 loc3 [V07 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex>
-; V08 loc4 [V08,T58] ( 8, 4 ) double -> mm10
+; V08 loc4 [V08,T60] ( 8, 4 ) double -> mm10
; V09 loc5 [V09 ] ( 8, 4 ) struct (16) [rbp-0xE0] do-not-enreg[XS] addr-exposed ld-addr-op <System.Threading.PortableThreadPool+HillClimbing+Complex> ; V10 loc6 [V10,T81] ( 5, 2.50) double -> mm11 ; V11 loc7 [V11,T33] ( 4, 2 ) int -> [rbp-0xE4]
-; V12 loc8 [V12,T09] ( 10, 8.25) int -> [rbp-0xE8] spill-single-def
+; V12 loc8 [V12,T07] ( 10, 8.75) int -> [rbp-0xE8] spill-single-def
; V13 loc9 [V13,T57] ( 11, 5.50) double -> mm12 ; V14 loc10 [V14,T112] ( 2, 1 ) double -> mm13 ; V15 loc11 [V15,T31] ( 4, 2 ) ref -> rcx class-hnd exact single-def <System.Threading.PortableThreadPool>
-; V16 loc12 [V16,T37] ( 3, 1.50) int -> r15 -; V17 loc13 [V17,T34] ( 4, 2 ) int -> r13 -; V18 loc14 [V18,T28] ( 5, 2.50) int -> [rbp-0xEC] spill-single-def
+; V16 loc12 [V16,T37] ( 3, 1.50) int -> rdi +; V17 loc13 [V17,T34] ( 4, 2 ) int -> r15 +; V18 loc14 [V18,T28] ( 5, 2.50) int -> r13
; V19 loc15 [V19,T38] ( 3, 1.50) int -> rdx ; V20 loc16 [V20,T39] ( 3, 1.50) int -> rax
-; V21 loc17 [V21,T55] ( 4, 9 ) double -> mm0 -; V22 loc18 [V22,T56] ( 4, 9 ) double -> mm1 -; V23 loc19 [V23,T59] ( 8, 4 ) double -> mm13 -; V24 loc20 [V24,T83] ( 4, 2 ) double -> mm14 -; V25 loc21 [V25,T03] ( 5, 16.50) int -> [rbp-0xF0]
+; V21 loc17 [V21,T54] ( 4, 9.50) double -> mm0 +; V22 loc18 [V22,T55] ( 4, 9.50) double -> mm1 +; V23 loc19 [V23,T58] ( 8, 5 ) double -> mm13 +; V24 loc20 [V24,T82] ( 4, 2.50) double -> mm14 +; V25 loc21 [V25,T03] ( 5, 16.50) int -> [rbp-0xEC]
; V26 loc22 [V26,T113] ( 2, 1 ) double -> mm10 ; V27 loc23 [V27,T94] ( 3, 1.50) double -> mm8 ; V28 loc24 [V28,T95] ( 3, 1.50) double -> mm2 @@ -94,7 +94,7 @@ ;* V83 tmp53 [V83 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V84 tmp54 [V84 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V85 tmp55 [V85 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "Inlining Arg" <System.Threading.PortableThreadPool+HillClimbing+Complex>
-; V86 tmp56 [V86,T60] ( 3, 3 ) double -> mm0 "impAppendStmt"
+; V86 tmp56 [V86,T61] ( 3, 3 ) double -> mm0 "impAppendStmt"
;* V87 tmp57 [V87 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.Threading.PortableThreadPool+HillClimbing+Complex> ; V88 tmp58 [V88,T79] ( 3, 3 ) double -> mm1 "Inlining Arg" ;* V89 tmp59 [V89 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" @@ -115,11 +115,11 @@ ;* V104 tmp74 [V104 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V105 tmp75 [V105 ] ( 0, 0 ) double -> zero-ref "impAppendStmt" ;* V106 tmp76 [V106 ] ( 0, 0 ) double -> zero-ref "impAppendStmt"
-; V107 tmp77 [V107,T40] ( 3, 1.50) int -> r15 "Inline return value spill temp"
+; V107 tmp77 [V107,T40] ( 3, 1.50) int -> rdi "Inline return value spill temp"
; V108 tmp78 [V108,T25] ( 3, 3 ) int -> rax "Inlining Arg"
-; V109 tmp79 [V109,T35] ( 4, 2 ) int -> r15 "Inline return value spill temp" -; V110 tmp80 [V110,T41] ( 3, 1.50) int -> r13 "Inline return value spill temp" -; V111 tmp81 [V111,T29] ( 5, 2.50) int -> r13 "Inline return value spill temp"
+; V109 tmp79 [V109,T35] ( 4, 2 ) int -> rdi "Inline return value spill temp" +; V110 tmp80 [V110,T41] ( 3, 1.50) int -> r15 "Inline return value spill temp" +; V111 tmp81 [V111,T29] ( 5, 2.50) int -> r15 "Inline return value spill temp"
;* V112 tmp82 [V112 ] ( 0, 0 ) ref -> zero-ref class-hnd exact "Inlining Arg" <System.Diagnostics.Tracing.NativeRuntimeEventSource> ; V113 tmp83 [V113,T92] ( 2, 2 ) double -> mm13 "Inlining Arg" ; V114 tmp84 [V114,T93] ( 2, 2 ) double -> mm14 "Inlining Arg" @@ -196,7 +196,7 @@ ; V185 cse5 [V185,T42] ( 3, 1.50) int -> rdx "CSE - conservative" ; V186 cse6 [V186,T43] ( 3, 1.50) int -> rdx "CSE - conservative" ; V187 cse7 [V187,T16] ( 2, 4.25) long -> r8 hoist "CSE - moderate"
-; V188 cse8 [V188,T61] ( 7, 3.50) double -> mm12 "CSE - moderate"
+; V188 cse8 [V188,T59] ( 7, 5 ) double -> mm12 "CSE - moderate"
; V189 cse9 [V189,T36] ( 4, 1.75) long -> r8 "CSE - conservative" ; V190 cse10 [V190,T12] ( 4, 5.50) long -> rcx "CSE - aggressive" ; V191 cse11 [V191,T27] ( 5, 2.50) ref -> [rbp-0x170] spill-single-def "CSE - conservative" @@ -448,7 +448,7 @@ G_M16266_IG14: ; bbWeight=0.25, gcVars=00000000000000000000000008000000 { G_M16266_IG15: ; bbWeight=4, gcrefRegs=8208 {rbx r9 r15}, byrefRegs=0000 {}, byref mov rdi, r9 ; gcrRegs +[rdi]
- mov dword ptr [rbp-0xF0], eax
+ mov dword ptr [rbp-0xEC], eax
movsxd r12, eax lea rax, [r8+r12] cqo @@ -465,7 +465,7 @@ G_M16266_IG15: ; bbWeight=4, gcrefRegs=8208 {rbx r9 r15}, byrefRegs=0000 cmp rdx, rdi jae G_M16266_IG44 vaddsd xmm1, xmm1, qword ptr [rax+8*rdx+0x10]
- mov edi, dword ptr [rbp-0xF0]
+ mov edi, dword ptr [rbp-0xEC]
inc edi mov r12d, dword ptr [rbp-0xE8] cmp edi, r12d @@ -473,7 +473,7 @@ G_M16266_IG15: ; bbWeight=4, gcrefRegs=8208 {rbx r9 r15}, byrefRegs=0000 ; gcrRegs -[rax] jl G_M16266_IG21 ;; size=89 bbWeight=4 PerfScore 359.00
-G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {}, byref, isz
+G_M16266_IG16: ; bbWeight=1, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {}, byref
; gcrRegs -[r15] vxorps xmm12, xmm12, xmm12 vcvtsi2sd xmm12, xmm12, r12d @@ -482,6 +482,8 @@ G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 { vxorps xmm0, xmm0, xmm0 vucomisd xmm13, xmm0 jbe G_M16266_IG20
+ ;; size=34 bbWeight=1 PerfScore 33.67 +G_M16266_IG17: ; bbWeight=0.50, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {}, byref, isz
vxorps xmm0, xmm0, xmm0 vucomisd xmm14, xmm0 jbe G_M16266_IG19 @@ -541,8 +543,6 @@ G_M16266_IG16: ; bbWeight=0.50, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 { vdivsd xmm0, xmm0, xmm13 vmovsd xmm1, qword ptr [rbp-0x138] vdivsd xmm1, xmm1, xmm13
- ;; size=273 bbWeight=0.50 PerfScore 111.29 -G_M16266_IG17: ; bbWeight=0.50, extend
vmulsd xmm0, xmm0, xmm0 vmulsd xmm1, xmm1, xmm1 vaddsd xmm0, xmm0, xmm1 @@ -551,7 +551,7 @@ G_M16266_IG17: ; bbWeight=0.50, extend vfixupimmsd xmm10, xmm0, xmmword ptr [reloc @RWD16], 0 vfixupimmsd xmm1, xmm10, xmmword ptr [reloc @RWD16], 0 vmovaps xmm10, xmm1
- ;; size=49 bbWeight=0.50 PerfScore 17.12
+ ;; size=288 bbWeight=0.50 PerfScore 111.58
G_M16266_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz vxorps xmm0, xmm0, xmm0 vcvtsi2sd xmm0, xmm0, dword ptr [rbx+0x98] @@ -580,20 +580,15 @@ G_M16266_IG18: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, jmp SHORT G_M16266_IG26 ;; size=99 bbWeight=0.50 PerfScore 29.58 G_M16266_IG19: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- mov rdi, gword ptr [rbp-0x170] - ; gcrRegs +[rdi]
mov r12d, dword ptr [rbp-0xE4] jmp G_M16266_IG31
- ;; size=19 bbWeight=0.25 PerfScore 1.00 -G_M16266_IG20: ; bbWeight=0.25, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref - ; gcrRegs -[rdi] - mov rdi, gword ptr [rbp-0x170] - ; gcrRegs +[rdi]
+ ;; size=12 bbWeight=0.25 PerfScore 0.75 +G_M16266_IG20: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
mov r12d, dword ptr [rbp-0xE4] jmp G_M16266_IG31
- ;; size=19 bbWeight=0.25 PerfScore 1.00
+ ;; size=12 bbWeight=0.50 PerfScore 1.50
G_M16266_IG21: ; bbWeight=2, gcrefRegs=8208 {rbx r9 r15}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi] +[r9 r15]
+ ; gcrRegs +[r9 r15]
jmp G_M16266_IG15 ;; size=5 bbWeight=2 PerfScore 4.00 G_M16266_IG22: ; bbWeight=0.25, gcrefRegs=0208 {rbx r9}, byrefRegs=0000 {}, byref @@ -670,17 +665,12 @@ G_M16266_IG29: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, vmovsd xmm3, qword ptr [rbp-0x168] vdivsd xmm0, xmm3, xmm2 vdivsd xmm11, xmm0, qword ptr [rbx+0x30]
- mov rdi, gword ptr [rbp-0x170] - ; gcrRegs +[rdi]
jmp SHORT G_M16266_IG31
- ;; size=75 bbWeight=0.50 PerfScore 26.79
+ ;; size=68 bbWeight=0.50 PerfScore 26.29
G_M16266_IG30: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref
- ; gcrRegs -[rdi]
vmovsd xmm11, qword ptr [reloc @RWD00]
- mov rdi, gword ptr [rbp-0x170] - ; gcrRegs +[rdi] - ;; size=15 bbWeight=0.50 PerfScore 2.00 -G_M16266_IG31: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 {}, byref, isz
+ ;; size=8 bbWeight=0.50 PerfScore 1.50 +G_M16266_IG31: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=0000 {}, byref, isz
vmovups xmm0, xmmword ptr [reloc @RWD32] vmaxsd xmm0, xmm0, qword ptr [rbp-0xD8] vmovups xmm1, xmmword ptr [reloc @RWD48] @@ -721,7 +711,7 @@ G_M16266_IG31: ; bbWeight=0.50, gcrefRegs=0088 {rbx rdi}, byrefRegs=0000 jle SHORT G_M16266_IG32 vxorps xmm12, xmm12, xmm12 ;; size=202 bbWeight=0.50 PerfScore 43.58
-G_M16266_IG32: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0000 {}, byref
+G_M16266_IG32: ; bbWeight=0.50, gcrefRegs=000A {rcx rbx}, byrefRegs=0000 {}, byref
vaddsd xmm0, xmm12, qword ptr [rbx+0x68] vmovsd qword ptr [rbx+0x68], xmm0 vmulsd xmm0, xmm0, qword ptr [rbx+0x78] @@ -729,22 +719,21 @@ G_M16266_IG32: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0 vmulsd xmm0, xmm0, qword ptr [rbx+0x48] vmulsd xmm0, xmm0, qword ptr [reloc @RWD96] vaddsd xmm0, xmm0, qword ptr [reloc @RWD104]
- vcvttsd2si r15d, xmm0
+ vcvttsd2si edi, xmm0
mov eax, dword ptr [rbx+0xA0]
- cmp r15d, eax - cmovg r15d, eax
+ cmp edi, eax + cmovg edi, eax
mov eax, 1
- test r15d, r15d - cmovle r15d, eax - movsx r13, word ptr [rcx+0x5E]
+ test edi, edi + cmovle edi, eax + movsx r15, word ptr [rcx+0x5E]
call [System.Threading.PortableThreadPool:get_MinThreadsGoal():short:this] ; gcrRegs -[rcx] ; gcr arg pop 0
- mov r10d, eax - mov dword ptr [rbp-0xEC], r10d
+ mov r13d, eax
vmovsd xmm0, qword ptr [rbx+0x68]
- mov eax, r13d - sub eax, r15d
+ mov eax, r15d + sub eax, edi
vxorps xmm1, xmm1, xmm1 vcvtsi2sd xmm1, xmm1, eax vrangesd xmm2, xmm1, xmm0, 4 @@ -753,7 +742,7 @@ G_M16266_IG32: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0 vmovsd qword ptr [rbx+0x68], xmm2 vmovsd xmm0, qword ptr [rbx+0x68] vxorps xmm1, xmm1, xmm1
- vcvtsi2sd xmm1, xmm1, r10d
+ vcvtsi2sd xmm1, xmm1, r13d
vrangesd xmm2, xmm1, xmm0, 5 vfixupimmsd xmm1, xmm0, xmmword ptr [reloc @RWD16], 0 vfixupimmsd xmm2, xmm1, xmmword ptr [reloc @RWD16], 0 @@ -774,24 +763,24 @@ G_M16266_IG32: ; bbWeight=0.50, gcrefRegs=008A {rcx rbx rdi}, byrefRegs=0 and rdx, -2 mov r9, rax sub r9, rdx
- movsxd rdx, r15d
+ movsxd rdx, edi
imul rdx, r9 vxorps xmm1, xmm1, xmm1 vcvtsi2sd xmm1, xmm1, rdx vaddsd xmm0, xmm0, xmm1 vcvttsd2si edx, xmm0
- cmp r13d, edx - cmovg r13d, edx - cmp r10d, r13d - cmovge r13d, r10d - movzx rdx, byte ptr [rdi+0x9D]
+ cmp r15d, edx + cmovg r15d, edx + cmp r13d, r15d + cmovge r15d, r13d
...

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

@@ -12,13 +12,13 @@ ; V01 loc0 [V01,T03] ( 8, 7 ) ref -> rsi class-hnd exact single-def <ushort[]> ; 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
+;* V04 loc3 [V04,T07] ( 0, 0 ) ubyte -> zero-ref +; 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" -;* V10 tmp4 [V10,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr" +;* V10 tmp4 [V10,T08] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V11 rat0 [V11,T05] ( 3, 3 ) long -> rsi "fgMakeTemp is creating a new local variable" ; ; Lcl frame size = 40 @@ -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, 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 PerfScore 2.00
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 63.08, 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)

@@ -11,13 +11,13 @@ ; V01 loc0 [V01,T03] ( 8, 7 ) ref -> rsi class-hnd exact single-def <ushort[]> ; 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
+;* V04 loc3 [V04,T07] ( 0, 0 ) ubyte -> zero-ref +; 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" -;* V10 tmp4 [V10,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr" +;* V10 tmp4 [V10,T08] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V11 rat0 [V11,T05] ( 3, 3 ) long -> rsi "fgMakeTemp is creating a new local variable" ; ; Lcl frame size = 40 @@ -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, 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 PerfScore 2.00
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 63.08, 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)

@@ -11,13 +11,13 @@ ; V01 loc0 [V01,T03] ( 8, 7 ) ref -> rsi class-hnd exact single-def <ushort[]> ; 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
+;* V04 loc3 [V04,T07] ( 0, 0 ) ubyte -> zero-ref +; 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" -;* V10 tmp4 [V10,T07] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
+; V09 tmp3 [V09,T04] ( 5, 3 ) ref -> rdx single-def "spilling varStr" +;* V10 tmp4 [V10,T08] ( 0, 0 ) int -> zero-ref "spilling unroll qmark"
; V11 rat0 [V11,T05] ( 3, 3 ) long -> rsi "fgMakeTemp is creating a new local variable" ; ; Lcl frame size = 40 @@ -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, 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 PerfScore 2.00
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 63.08, instruction count 94, allocated bytes for code 361 (MethodHash=22244440) for method System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
; ============================================================ Unwind Info:

+48 (+5.49%) : 17794.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,ulong,ubyte):int:this (FullOpts)

@@ -12,7 +12,7 @@ ; V02 arg2 [V02,T09] ( 4, 8 ) byref -> r8 ld-addr-op single-def ; V03 arg3 [V03,T15] ( 5, 3.50) int -> [rbp+0x28] single-def ; V04 arg4 [V04,T24] ( 4, 2 ) long -> rdi single-def
-; V05 arg5 [V05,T27] ( 2, 1 ) ubyte -> [rbp+0x38] single-def
+; V05 arg5 [V05,T27] ( 2, 1.50) ubyte -> [rbp+0x38] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc1 [V07 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def ;* V08 loc2 [V08 ] ( 0, 0 ) long -> zero-ref @@ -24,7 +24,7 @@ ; V14 loc8 [V14,T17] ( 3, 5 ) int -> rdx ; V15 loc9 [V15,T07] ( 7, 17.50) int -> rax ; V16 loc10 [V16,T01] ( 5, 84 ) int -> r8
-; V17 loc11 [V17,T02] ( 8, 75 ) int -> r9
+; V17 loc11 [V17,T02] ( 8, 75.50) int -> r9
; V18 loc12 [V18,T00] ( 4,128 ) ushort -> r10 ; V19 loc13 [V19,T03] ( 2, 64 ) ushort -> r11 ;* V20 loc14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> @@ -42,11 +42,11 @@ ;* V32 tmp11 [V32 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ; V34 tmp13 [V34,T13] ( 5, 6 ) int -> rax "Single return block return value"
-; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" -; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V37 tmp16 [V37,T10] ( 9, 8.50) int -> r12 "field V01._length (fldOffset=0x8)" P-INDEP -; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r15 "field V02._length (fldOffset=0x8)" P-INDEP
+; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" +; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V37 tmp16 [V37,T10] ( 9, 9 ) int -> [rbp-0x5C] spill-single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r13 "field V02._length (fldOffset=0x8)" P-INDEP
;* V40 tmp19 [V40 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V41 tmp20 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ;* V42 tmp21 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP @@ -61,15 +61,15 @@ ;* V51 tmp30 [V51 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP ;* V52 tmp31 [V52 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]> ;* V53 tmp32 [V53 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V54 tmp33 [V54,T20] ( 2, 4 ) long -> rax "Cast away GC" -; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r8 "Cast away GC" -; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> -; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x78] "CSE - moderate" -; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x70] spill-single-def "fgMakeTemp is creating a new local variable" -; TEMP_01 int -> [rbp-0x7C] -; TEMP_04 long -> [rbp-0x84] -; TEMP_03 long -> [rbp-0x8C] -; TEMP_02 long -> [rbp-0x94]
+; V54 tmp33 [V54,T20] ( 2, 4 ) long -> r8 "Cast away GC" +; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r10 "Cast away GC" +; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> +; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x80] "CSE - moderate" +; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x78] spill-single-def "fgMakeTemp is creating a new local variable" +; TEMP_01 int -> [rbp-0x84] +; TEMP_04 long -> [rbp-0x8C] +; TEMP_03 long -> [rbp-0x94] +; TEMP_02 long -> [rbp-0x9C]
; ; Lcl frame size = 200 @@ -84,35 +84,38 @@ G_M39468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 200 lea rbp, [rsp+0x100]
- xor eax, eax - mov qword ptr [rbp-0x68], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x60], ymm4
+ vmovdqu ymmword ptr [rbp-0x70], ymm4 + vmovdqa xmmword ptr [rbp-0x50], xmm4 + xor eax, eax
mov qword ptr [rbp-0x40], rax mov rbx, rcx ; gcrRegs +[rbx] mov esi, r9d mov rdi, qword ptr [rbp+0x30]
- ;; size=56 bbWeight=1 PerfScore 14.83
+ mov r14d, dword ptr [rbp+0x38] + ;; size=61 bbWeight=1 PerfScore 16.83
G_M39468_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0104 {rdx r8}, byref ; byrRegs +[rdx r8]
- mov r14, bword ptr [r8] - ; byrRegs +[r14] - mov r15d, dword ptr [r8+0x08] - mov r13, bword ptr [rdx] - ; byrRegs +[r13] - mov r12d, dword ptr [rdx+0x08] - lea rax, [(reloc)] - mov qword ptr [rbp-0x70], rax - cmp qword ptr [rax-0x08], 0 - jne G_M39468_IG37 - ;; size=36 bbWeight=1 PerfScore 13.50 -G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz - ; byrRegs -[rdx r8] - cmp byte ptr [rax], 0
+ mov r15, bword ptr [r8] + ; byrRegs +[r15] + mov r13d, dword ptr [r8+0x08] + mov r12, bword ptr [rdx] + ; byrRegs +[r12] + mov eax, dword ptr [rdx+0x08] + mov dword ptr [rbp-0x5C], eax + lea r8, [(reloc)] + ; byrRegs -[r8] + mov qword ptr [rbp-0x78], r8 + cmp qword ptr [r8-0x08], 0 + jne G_M39468_IG40 + ;; size=38 bbWeight=1 PerfScore 14.50 +G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz + ; byrRegs -[rdx] + cmp byte ptr [r8], 0
je SHORT G_M39468_IG05
- ;; size=5 bbWeight=1 PerfScore 4.00 -G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=6 bbWeight=1 PerfScore 4.00 +G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -121,11 +124,11 @@ G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz - test r15d, r15d
+G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz + test r13d, r13d
jne SHORT G_M39468_IG07 ;; size=5 bbWeight=1 PerfScore 1.25
-G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -134,13 +137,13 @@ G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
mov gword ptr [rbp+0x10], rbx ; GC ptr vars +{V00} cmp byte ptr [rbx+0x2C], 0 je SHORT G_M39468_IG10 ;; size=10 bbWeight=1 PerfScore 5.00
-G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
; gcrRegs -[rbx] mov dword ptr [rbp+0x28], esi xor ecx, ecx @@ -149,10 +152,10 @@ G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs= test cl, cl jne SHORT G_M39468_IG11 ;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov esi, dword ptr [rbp+0x28] ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -162,239 +165,252 @@ G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1 ; gcr arg pop 0 mov dword ptr [rbp+0x28], esi ;; size=22 bbWeight=0.50 PerfScore 1.50
-G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref - mov bword ptr [rbp-0x40], r13 - mov rax, r13 - mov bword ptr [rbp-0x48], r14 - mov r8, r14 - mov qword ptr [rbp-0x50], rax - mov qword ptr [rbp-0x58], r8
+G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref + mov bword ptr [rbp-0x40], r12 + mov r8, r12 + mov bword ptr [rbp-0x48], r15 + mov r10, r15 + mov qword ptr [rbp-0x50], r8 + mov qword ptr [rbp-0x58], r10
lea rdx, [(reloc)] cmp qword ptr [rdx-0x08], 0
- jne G_M39468_IG38 - mov r10, qword ptr [(reloc)] - mov bword ptr [rbp-0x78], r10
+ jne G_M39468_IG41 + mov r9, qword ptr [(reloc)] + mov bword ptr [rbp-0x80], r9
; GC ptr vars +{V57}
- mov rcx, gword ptr [r10+0x10]
+ mov rcx, gword ptr [r9+0x10]
; gcrRegs +[rcx] test rcx, rcx
- je G_M39468_IG39
+ je G_M39468_IG42
;; size=64 bbWeight=1 PerfScore 15.25
-G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz - mov bword ptr [rbp-0x68], r14 - mov dword ptr [rbp-0x60], r15d - lea rdx, [rbp-0x68] - mov r9, qword ptr [rcx] - call [r9+0x38]<unknown method>
+G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz + mov bword ptr [rbp-0x70], r15 + mov dword ptr [rbp-0x68], r13d + lea rdx, [rbp-0x70] + mov r11, qword ptr [rcx] + call [r11+0x38]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[r14]
+ ; byrRegs -[r15]
; gcr arg pop 0 test eax, eax
- jne SHORT G_M39468_IG15
+ jne SHORT G_M39468_IG16
;; size=23 bbWeight=1 PerfScore 8.75
-G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz - cmp r15d, r12d - jle SHORT G_M39468_IG16 - mov r14, bword ptr [rbp-0x78] - ; byrRegs +[r14] - mov rcx, gword ptr [r14+0x10]
+G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz + mov r15d, dword ptr [rbp-0x5C] + cmp r13d, r15d + jle SHORT G_M39468_IG17 + mov rax, bword ptr [rbp-0x80] + ; byrRegs +[rax] + mov rcx, gword ptr [rax+0x10]
; gcrRegs +[rcx] test rcx, rcx
- je G_M39468_IG39 - mov bword ptr [rbp-0x68], r13 - mov dword ptr [rbp-0x60], r12d - lea rdx, [rbp-0x68]
+ je G_M39468_IG42 + mov bword ptr [rbp-0x70], r12 + mov dword ptr [rbp-0x68], r15d + lea rdx, [rbp-0x70]
mov rax, qword ptr [rcx]
+ ; byrRegs -[rax]
; GC ptr vars -{V57} call [rax+0x38]<unknown method> ; gcrRegs -[rcx]
- ; byrRegs -[r13-r14]
+ ; byrRegs -[r12]
; gcr arg pop 0 test eax, eax
- mov r13, qword ptr [rbp-0x58]
...

+48 (+5.49%) : 20430.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,ulong,ubyte):int:this (FullOpts)

@@ -12,7 +12,7 @@ ; V02 arg2 [V02,T09] ( 4, 8 ) byref -> r8 ld-addr-op single-def ; V03 arg3 [V03,T15] ( 5, 3.50) int -> [rbp+0x28] single-def ; V04 arg4 [V04,T24] ( 4, 2 ) long -> rdi single-def
-; V05 arg5 [V05,T27] ( 2, 1 ) ubyte -> [rbp+0x38] single-def
+; V05 arg5 [V05,T27] ( 2, 1.50) ubyte -> [rbp+0x38] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc1 [V07 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def ;* V08 loc2 [V08 ] ( 0, 0 ) long -> zero-ref @@ -24,7 +24,7 @@ ; V14 loc8 [V14,T17] ( 3, 5 ) int -> rdx ; V15 loc9 [V15,T07] ( 7, 17.50) int -> rax ; V16 loc10 [V16,T01] ( 5, 84 ) int -> r8
-; V17 loc11 [V17,T02] ( 8, 75 ) int -> r9
+; V17 loc11 [V17,T02] ( 8, 75.50) int -> r9
; V18 loc12 [V18,T00] ( 4,128 ) ushort -> r10 ; V19 loc13 [V19,T03] ( 2, 64 ) ushort -> r11 ;* V20 loc14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> @@ -42,11 +42,11 @@ ;* V32 tmp11 [V32 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ; V34 tmp13 [V34,T13] ( 5, 6 ) int -> rax "Single return block return value"
-; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" -; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V37 tmp16 [V37,T10] ( 9, 8.50) int -> r12 "field V01._length (fldOffset=0x8)" P-INDEP -; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r15 "field V02._length (fldOffset=0x8)" P-INDEP
+; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" +; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V37 tmp16 [V37,T10] ( 9, 9 ) int -> [rbp-0x5C] spill-single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r13 "field V02._length (fldOffset=0x8)" P-INDEP
;* V40 tmp19 [V40 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V41 tmp20 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ;* V42 tmp21 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP @@ -61,15 +61,15 @@ ;* V51 tmp30 [V51 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP ;* V52 tmp31 [V52 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]> ;* V53 tmp32 [V53 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V54 tmp33 [V54,T20] ( 2, 4 ) long -> rax "Cast away GC" -; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r8 "Cast away GC" -; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> -; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x78] "CSE - moderate" -; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x70] spill-single-def "fgMakeTemp is creating a new local variable" -; TEMP_01 int -> [rbp-0x7C] -; TEMP_04 long -> [rbp-0x84] -; TEMP_03 long -> [rbp-0x8C] -; TEMP_02 long -> [rbp-0x94]
+; V54 tmp33 [V54,T20] ( 2, 4 ) long -> r8 "Cast away GC" +; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r10 "Cast away GC" +; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> +; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x80] "CSE - moderate" +; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x78] spill-single-def "fgMakeTemp is creating a new local variable" +; TEMP_01 int -> [rbp-0x84] +; TEMP_04 long -> [rbp-0x8C] +; TEMP_03 long -> [rbp-0x94] +; TEMP_02 long -> [rbp-0x9C]
; ; Lcl frame size = 200 @@ -84,35 +84,38 @@ G_M39468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 200 lea rbp, [rsp+0x100]
- xor eax, eax - mov qword ptr [rbp-0x68], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x60], ymm4
+ vmovdqu ymmword ptr [rbp-0x70], ymm4 + vmovdqa xmmword ptr [rbp-0x50], xmm4 + xor eax, eax
mov qword ptr [rbp-0x40], rax mov rbx, rcx ; gcrRegs +[rbx] mov esi, r9d mov rdi, qword ptr [rbp+0x30]
- ;; size=56 bbWeight=1 PerfScore 14.83
+ mov r14d, dword ptr [rbp+0x38] + ;; size=61 bbWeight=1 PerfScore 16.83
G_M39468_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0104 {rdx r8}, byref ; byrRegs +[rdx r8]
- mov r14, bword ptr [r8] - ; byrRegs +[r14] - mov r15d, dword ptr [r8+0x08] - mov r13, bword ptr [rdx] - ; byrRegs +[r13] - mov r12d, dword ptr [rdx+0x08] - lea rax, [(reloc)] - mov qword ptr [rbp-0x70], rax - cmp qword ptr [rax-0x08], 0 - jne G_M39468_IG37 - ;; size=36 bbWeight=1 PerfScore 13.50 -G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz - ; byrRegs -[rdx r8] - cmp byte ptr [rax], 0
+ mov r15, bword ptr [r8] + ; byrRegs +[r15] + mov r13d, dword ptr [r8+0x08] + mov r12, bword ptr [rdx] + ; byrRegs +[r12] + mov eax, dword ptr [rdx+0x08] + mov dword ptr [rbp-0x5C], eax + lea r8, [(reloc)] + ; byrRegs -[r8] + mov qword ptr [rbp-0x78], r8 + cmp qword ptr [r8-0x08], 0 + jne G_M39468_IG40 + ;; size=38 bbWeight=1 PerfScore 14.50 +G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz + ; byrRegs -[rdx] + cmp byte ptr [r8], 0
je SHORT G_M39468_IG05
- ;; size=5 bbWeight=1 PerfScore 4.00 -G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=6 bbWeight=1 PerfScore 4.00 +G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -121,11 +124,11 @@ G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz - test r15d, r15d
+G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz + test r13d, r13d
jne SHORT G_M39468_IG07 ;; size=5 bbWeight=1 PerfScore 1.25
-G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -134,13 +137,13 @@ G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
mov gword ptr [rbp+0x10], rbx ; GC ptr vars +{V00} cmp byte ptr [rbx+0x2C], 0 je SHORT G_M39468_IG10 ;; size=10 bbWeight=1 PerfScore 5.00
-G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
; gcrRegs -[rbx] mov dword ptr [rbp+0x28], esi xor ecx, ecx @@ -149,10 +152,10 @@ G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs= test cl, cl jne SHORT G_M39468_IG11 ;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov esi, dword ptr [rbp+0x28] ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -162,239 +165,252 @@ G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1 ; gcr arg pop 0 mov dword ptr [rbp+0x28], esi ;; size=22 bbWeight=0.50 PerfScore 1.50
-G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref - mov bword ptr [rbp-0x40], r13 - mov rax, r13 - mov bword ptr [rbp-0x48], r14 - mov r8, r14 - mov qword ptr [rbp-0x50], rax - mov qword ptr [rbp-0x58], r8
+G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref + mov bword ptr [rbp-0x40], r12 + mov r8, r12 + mov bword ptr [rbp-0x48], r15 + mov r10, r15 + mov qword ptr [rbp-0x50], r8 + mov qword ptr [rbp-0x58], r10
lea rdx, [(reloc)] cmp qword ptr [rdx-0x08], 0
- jne G_M39468_IG38 - mov r10, qword ptr [(reloc)] - mov bword ptr [rbp-0x78], r10
+ jne G_M39468_IG41 + mov r9, qword ptr [(reloc)] + mov bword ptr [rbp-0x80], r9
; GC ptr vars +{V57}
- mov rcx, gword ptr [r10+0x10]
+ mov rcx, gword ptr [r9+0x10]
; gcrRegs +[rcx] test rcx, rcx
- je G_M39468_IG39
+ je G_M39468_IG42
;; size=64 bbWeight=1 PerfScore 15.25
-G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz - mov bword ptr [rbp-0x68], r14 - mov dword ptr [rbp-0x60], r15d - lea rdx, [rbp-0x68] - mov r9, qword ptr [rcx] - call [r9+0x38]<unknown method>
+G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz + mov bword ptr [rbp-0x70], r15 + mov dword ptr [rbp-0x68], r13d + lea rdx, [rbp-0x70] + mov r11, qword ptr [rcx] + call [r11+0x38]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[r14]
+ ; byrRegs -[r15]
; gcr arg pop 0 test eax, eax
- jne SHORT G_M39468_IG15
+ jne SHORT G_M39468_IG16
;; size=23 bbWeight=1 PerfScore 8.75
-G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz - cmp r15d, r12d - jle SHORT G_M39468_IG16 - mov r14, bword ptr [rbp-0x78] - ; byrRegs +[r14] - mov rcx, gword ptr [r14+0x10]
+G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz + mov r15d, dword ptr [rbp-0x5C] + cmp r13d, r15d + jle SHORT G_M39468_IG17 + mov rax, bword ptr [rbp-0x80] + ; byrRegs +[rax] + mov rcx, gword ptr [rax+0x10]
; gcrRegs +[rcx] test rcx, rcx
- je G_M39468_IG39 - mov bword ptr [rbp-0x68], r13 - mov dword ptr [rbp-0x60], r12d - lea rdx, [rbp-0x68]
+ je G_M39468_IG42 + mov bword ptr [rbp-0x70], r12 + mov dword ptr [rbp-0x68], r15d + lea rdx, [rbp-0x70]
mov rax, qword ptr [rcx]
+ ; byrRegs -[rax]
; GC ptr vars -{V57} call [rax+0x38]<unknown method> ; gcrRegs -[rcx]
- ; byrRegs -[r13-r14]
+ ; byrRegs -[r12]
; gcr arg pop 0 test eax, eax
- mov r13, qword ptr [rbp-0x58]
...

+48 (+5.49%) : 23074.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan1[ushort],System.ReadOnlySpan1[ushort],int,ulong,ubyte):int:this (FullOpts)

@@ -12,7 +12,7 @@ ; V02 arg2 [V02,T09] ( 4, 8 ) byref -> r8 ld-addr-op single-def ; V03 arg3 [V03,T15] ( 5, 3.50) int -> [rbp+0x28] single-def ; V04 arg4 [V04,T24] ( 4, 2 ) long -> rdi single-def
-; V05 arg5 [V05,T27] ( 2, 1 ) ubyte -> [rbp+0x38] single-def
+; V05 arg5 [V05,T27] ( 2, 1.50) ubyte -> [rbp+0x38] single-def
;* V06 loc0 [V06 ] ( 0, 0 ) long -> zero-ref ; V07 loc1 [V07 ] ( 1, 1 ) byref -> [rbp-0x40] must-init pinned single-def ;* V08 loc2 [V08 ] ( 0, 0 ) long -> zero-ref @@ -24,7 +24,7 @@ ; V14 loc8 [V14,T17] ( 3, 5 ) int -> rdx ; V15 loc9 [V15,T07] ( 7, 17.50) int -> rax ; V16 loc10 [V16,T01] ( 5, 84 ) int -> r8
-; V17 loc11 [V17,T02] ( 8, 75 ) int -> r9
+; V17 loc11 [V17,T02] ( 8, 75.50) int -> r9
; V18 loc12 [V18,T00] ( 4,128 ) ushort -> r10 ; V19 loc13 [V19,T03] ( 2, 64 ) ushort -> r11 ;* V20 loc14 [V20 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op <System.ReadOnlySpan`1[ubyte]> @@ -42,11 +42,11 @@ ;* V32 tmp11 [V32 ] ( 0, 0 ) struct (16) zero-ref "Inlining Arg" <System.ReadOnlySpan`1[ushort]> ;* V33 tmp12 [V33 ] ( 0, 0 ) struct (16) zero-ref ld-addr-op "NewObj constructor temp" <System.ReadOnlySpan`1[ubyte]> ; V34 tmp13 [V34,T13] ( 5, 6 ) int -> rax "Single return block return value"
-; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC0] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" -; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r13 single-def "field V01._reference (fldOffset=0x0)" P-INDEP -; V37 tmp16 [V37,T10] ( 9, 8.50) int -> r12 "field V01._length (fldOffset=0x8)" P-INDEP -; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r14 single-def "field V02._reference (fldOffset=0x0)" P-INDEP -; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r15 "field V02._length (fldOffset=0x8)" P-INDEP
+; V35 PInvokeFrame [V35 ] ( 5, 3 ) struct (40) [rbp-0xC8] do-not-enreg[XS] addr-exposed "Pinvoke FrameVar" +; V36 tmp15 [V36,T22] ( 4, 3.50) byref -> r12 single-def "field V01._reference (fldOffset=0x0)" P-INDEP +; V37 tmp16 [V37,T10] ( 9, 9 ) int -> [rbp-0x5C] spill-single-def "field V01._length (fldOffset=0x8)" P-INDEP +; V38 tmp17 [V38,T19] ( 4, 4 ) byref -> r15 single-def "field V02._reference (fldOffset=0x0)" P-INDEP +; V39 tmp18 [V39,T06] ( 11, 26 ) int -> r13 "field V02._length (fldOffset=0x8)" P-INDEP
;* V40 tmp19 [V40 ] ( 0, 0 ) byref -> zero-ref "field V20._reference (fldOffset=0x0)" P-INDEP ;* V41 tmp20 [V41 ] ( 0, 0 ) int -> zero-ref "field V20._length (fldOffset=0x8)" P-INDEP ;* V42 tmp21 [V42 ] ( 0, 0 ) byref -> zero-ref single-def "field V27._reference (fldOffset=0x0)" P-INDEP @@ -61,15 +61,15 @@ ;* V51 tmp30 [V51 ] ( 0, 0 ) int -> zero-ref "field V33._length (fldOffset=0x8)" P-INDEP ;* V52 tmp31 [V52 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]> ;* V53 tmp32 [V53 ] ( 0, 0 ) struct (16) zero-ref "Promoted implicit byref" <System.ReadOnlySpan`1[ushort]>
-; V54 tmp33 [V54,T20] ( 2, 4 ) long -> rax "Cast away GC" -; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r8 "Cast away GC" -; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x68] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> -; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x78] "CSE - moderate" -; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x70] spill-single-def "fgMakeTemp is creating a new local variable" -; TEMP_01 int -> [rbp-0x7C] -; TEMP_04 long -> [rbp-0x84] -; TEMP_03 long -> [rbp-0x8C] -; TEMP_02 long -> [rbp-0x94]
+; V54 tmp33 [V54,T20] ( 2, 4 ) long -> r8 "Cast away GC" +; V55 tmp34 [V55,T21] ( 2, 4 ) long -> r10 "Cast away GC" +; V56 tmp35 [V56 ] ( 6, 9 ) struct (16) [rbp-0x70] do-not-enreg[XSF] must-init addr-exposed "by-value struct argument" <System.ReadOnlySpan`1[ushort]> +; V57 cse0 [V57,T23] ( 5, 2.50) byref -> [rbp-0x80] "CSE - moderate" +; V58 rat0 [V58,T14] ( 3, 6 ) long -> [rbp-0x78] spill-single-def "fgMakeTemp is creating a new local variable" +; TEMP_01 int -> [rbp-0x84] +; TEMP_04 long -> [rbp-0x8C] +; TEMP_03 long -> [rbp-0x94] +; TEMP_02 long -> [rbp-0x9C]
; ; Lcl frame size = 200 @@ -84,35 +84,38 @@ G_M39468_IG01: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=0000 {}, byref, push rbx sub rsp, 200 lea rbp, [rsp+0x100]
- xor eax, eax - mov qword ptr [rbp-0x68], rax
vxorps xmm4, xmm4, xmm4
- vmovdqu ymmword ptr [rbp-0x60], ymm4
+ vmovdqu ymmword ptr [rbp-0x70], ymm4 + vmovdqa xmmword ptr [rbp-0x50], xmm4 + xor eax, eax
mov qword ptr [rbp-0x40], rax mov rbx, rcx ; gcrRegs +[rbx] mov esi, r9d mov rdi, qword ptr [rbp+0x30]
- ;; size=56 bbWeight=1 PerfScore 14.83
+ mov r14d, dword ptr [rbp+0x38] + ;; size=61 bbWeight=1 PerfScore 16.83
G_M39468_IG02: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=0104 {rdx r8}, byref ; byrRegs +[rdx r8]
- mov r14, bword ptr [r8] - ; byrRegs +[r14] - mov r15d, dword ptr [r8+0x08] - mov r13, bword ptr [rdx] - ; byrRegs +[r13] - mov r12d, dword ptr [rdx+0x08] - lea rax, [(reloc)] - mov qword ptr [rbp-0x70], rax - cmp qword ptr [rax-0x08], 0 - jne G_M39468_IG37 - ;; size=36 bbWeight=1 PerfScore 13.50 -G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz - ; byrRegs -[rdx r8] - cmp byte ptr [rax], 0
+ mov r15, bword ptr [r8] + ; byrRegs +[r15] + mov r13d, dword ptr [r8+0x08] + mov r12, bword ptr [rdx] + ; byrRegs +[r12] + mov eax, dword ptr [rdx+0x08] + mov dword ptr [rbp-0x5C], eax + lea r8, [(reloc)] + ; byrRegs -[r8] + mov qword ptr [rbp-0x78], r8 + cmp qword ptr [r8-0x08], 0 + jne G_M39468_IG40 + ;; size=38 bbWeight=1 PerfScore 14.50 +G_M39468_IG03: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz + ; byrRegs -[rdx] + cmp byte ptr [r8], 0
je SHORT G_M39468_IG05
- ;; size=5 bbWeight=1 PerfScore 4.00 -G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+ ;; size=6 bbWeight=1 PerfScore 4.00 +G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -121,11 +124,11 @@ G_M39468_IG04: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz - test r15d, r15d
+G_M39468_IG05: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz + test r13d, r13d
jne SHORT G_M39468_IG07 ;; size=5 bbWeight=1 PerfScore 1.25
-G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -134,13 +137,13 @@ G_M39468_IG06: ; bbWeight=0.50, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 ; gcrRegs -[rcx rdx] ; gcr arg pop 0 ;; size=19 bbWeight=0.50 PerfScore 1.00
-G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=6000 {r13 r14}, byref, isz
+G_M39468_IG07: ; bbWeight=1, gcrefRegs=0008 {rbx}, byrefRegs=9000 {r12 r15}, byref, isz
mov gword ptr [rbp+0x10], rbx ; GC ptr vars +{V00} cmp byte ptr [rbx+0x2C], 0 je SHORT G_M39468_IG10 ;; size=10 bbWeight=1 PerfScore 5.00
-G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz
+G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz
; gcrRegs -[rbx] mov dword ptr [rbp+0x28], esi xor ecx, ecx @@ -149,10 +152,10 @@ G_M39468_IG08: ; bbWeight=0.50, gcVars=0000000000001000 {V00}, gcrefRegs= test cl, cl jne SHORT G_M39468_IG11 ;; size=16 bbWeight=0.50 PerfScore 1.88
-G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG09: ; bbWeight=0.25, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
mov esi, dword ptr [rbp+0x28] ;; size=3 bbWeight=0.25 PerfScore 0.25
-G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref
+G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref
lea rcx, gword ptr [(reloc)] ; gcrRegs +[rcx] lea rdx, gword ptr [(reloc)] @@ -162,239 +165,252 @@ G_M39468_IG10: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r1 ; gcr arg pop 0 mov dword ptr [rbp+0x28], esi ;; size=22 bbWeight=0.50 PerfScore 1.50
-G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=6000 {r13 r14}, byref - mov bword ptr [rbp-0x40], r13 - mov rax, r13 - mov bword ptr [rbp-0x48], r14 - mov r8, r14 - mov qword ptr [rbp-0x50], rax - mov qword ptr [rbp-0x58], r8
+G_M39468_IG11: ; bbWeight=1, gcrefRegs=0000 {}, byrefRegs=9000 {r12 r15}, byref + mov bword ptr [rbp-0x40], r12 + mov r8, r12 + mov bword ptr [rbp-0x48], r15 + mov r10, r15 + mov qword ptr [rbp-0x50], r8 + mov qword ptr [rbp-0x58], r10
lea rdx, [(reloc)] cmp qword ptr [rdx-0x08], 0
- jne G_M39468_IG38 - mov r10, qword ptr [(reloc)] - mov bword ptr [rbp-0x78], r10
+ jne G_M39468_IG41 + mov r9, qword ptr [(reloc)] + mov bword ptr [rbp-0x80], r9
; GC ptr vars +{V57}
- mov rcx, gword ptr [r10+0x10]
+ mov rcx, gword ptr [r9+0x10]
; gcrRegs +[rcx] test rcx, rcx
- je G_M39468_IG39
+ je G_M39468_IG42
;; size=64 bbWeight=1 PerfScore 15.25
-G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=6000 {r13 r14}, gcvars, byref, isz - mov bword ptr [rbp-0x68], r14 - mov dword ptr [rbp-0x60], r15d - lea rdx, [rbp-0x68] - mov r9, qword ptr [rcx] - call [r9+0x38]<unknown method>
+G_M39468_IG12: ; bbWeight=1, gcVars=0000000000801000 {V00 V57}, gcrefRegs=0002 {rcx}, byrefRegs=9000 {r12 r15}, gcvars, byref, isz + mov bword ptr [rbp-0x70], r15 + mov dword ptr [rbp-0x68], r13d + lea rdx, [rbp-0x70] + mov r11, qword ptr [rcx] + call [r11+0x38]<unknown method>
; gcrRegs -[rcx]
- ; byrRegs -[r14]
+ ; byrRegs -[r15]
; gcr arg pop 0 test eax, eax
- jne SHORT G_M39468_IG15
+ jne SHORT G_M39468_IG16
;; size=23 bbWeight=1 PerfScore 8.75
-G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=2000 {r13}, byref, isz - cmp r15d, r12d - jle SHORT G_M39468_IG16 - mov r14, bword ptr [rbp-0x78] - ; byrRegs +[r14] - mov rcx, gword ptr [r14+0x10]
+G_M39468_IG13: ; bbWeight=0.50, gcrefRegs=0000 {}, byrefRegs=1000 {r12}, byref, isz + mov r15d, dword ptr [rbp-0x5C] + cmp r13d, r15d + jle SHORT G_M39468_IG17 + mov rax, bword ptr [rbp-0x80] + ; byrRegs +[rax] + mov rcx, gword ptr [rax+0x10]
; gcrRegs +[rcx] test rcx, rcx
- je G_M39468_IG39 - mov bword ptr [rbp-0x68], r13 - mov dword ptr [rbp-0x60], r12d - lea rdx, [rbp-0x68]
+ je G_M39468_IG42 + mov bword ptr [rbp-0x70], r12 + mov dword ptr [rbp-0x68], r15d + lea rdx, [rbp-0x70]
mov rax, qword ptr [rcx]
+ ; byrRegs -[rax]
; GC ptr vars -{V57} call [rax+0x38]<unknown method> ; gcrRegs -[rcx]
- ; byrRegs -[r13-r14]
+ ; byrRegs -[r12]
; gcr arg pop 0 test eax, eax
- mov r13, qword ptr [rbp-0x58]
...

Details

Improvements/regressions per collection

Collection Contexts with diffs Improvements Regressions Same size Improvements (bytes) Regressions (bytes)
aspnet.run.windows.x64.checked.mch 3,332 1,572 1,366 394 -19,382 +20,571
benchmarks.run.windows.x64.checked.mch 362 65 55 242 -500 +973
benchmarks.run_pgo.windows.x64.checked.mch 6,847 2,583 3,815 449 -22,503 +50,468
benchmarks.run_tiered.windows.x64.checked.mch 117 41 17 59 -363 +490
coreclr_tests.run.windows.x64.checked.mch 3,905 307 298 3,300 -2,036 +2,793
libraries.crossgen2.windows.x64.checked.mch 591 62 87 442 -938 +1,146
libraries.pmi.windows.x64.checked.mch 1,148 213 213 722 -1,543 +2,607
libraries_tests.run.windows.x64.Release.mch 1,424 280 857 287 -2,015 +9,719
librariestestsnotieredcompilation.run.windows.x64.Release.mch 1,336 287 342 707 -3,433 +4,869
realworld.run.windows.x64.checked.mch 330 56 58 216 -1,282 +1,131
smoke_tests.nativeaot.windows.x64.checked.mch 318 36 33 249 -313 +906
19,710 5,502 7,141 7,067 -54,308 +95,673

Context information

Collection Diffed contexts MinOpts FullOpts Missed, base Missed, diff
aspnet.run.windows.x64.checked.mch 129,145 61,702 67,443 133 (0.10%) 145 (0.11%)
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,181 273,478 218,703 118 (0.02%) 120 (0.02%)
libraries.crossgen2.windows.x64.checked.mch 274,111 15 274,096 0 (0.00%) 0 (0.00%)
libraries.pmi.windows.x64.checked.mch 343,887 6 343,881 90 (0.03%) 90 (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,592 21,947 319,645 2,320 (0.67%) 2,320 (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,421 11 32,410 13 (0.04%) 13 (0.04%)
1,999,649 587,594 1,412,055 3,225 (0.16%) 3,239 (0.16%)

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: 46746711 (overridden on cmd)
Total bytes of diff: 46747900 (overridden on cmd)
Total bytes of delta: 1189 (0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         251 : 29871.dasm (4.76 % of base)
         238 : 21357.dasm (6.25 % of base)
         213 : 11014.dasm (5.47 % of base)
         184 : 77251.dasm (6.88 % of base)
         184 : 57536.dasm (6.88 % of base)
         149 : 10261.dasm (2.97 % of base)
         143 : 20216.dasm (5.36 % of base)
         143 : 13881.dasm (5.36 % of base)
         127 : 22025.dasm (2.08 % of base)
         127 : 24621.dasm (2.08 % of base)
         127 : 9228.dasm (2.08 % of base)
         127 : 10012.dasm (2.08 % of base)
         127 : 21364.dasm (2.08 % of base)
         127 : 23228.dasm (2.08 % of base)
         123 : 69400.dasm (3.01 % of base)
         117 : 34329.dasm (1.93 % of base)
         117 : 56313.dasm (1.93 % of base)
         117 : 29905.dasm (1.93 % of base)
         117 : 57478.dasm (1.93 % of base)
         117 : 77241.dasm (1.93 % of base)

Top file improvements (bytes):
        -373 : 80893.dasm (-5.92 % of base)
        -298 : 70616.dasm (-4.66 % of base)
        -271 : 80044.dasm (-4.38 % of base)
        -266 : 54277.dasm (-6.69 % of base)
        -260 : 51091.dasm (-6.45 % of base)
        -206 : 114544.dasm (-1.54 % of base)
        -152 : 30356.dasm (-4.40 % of base)
        -152 : 56319.dasm (-7.34 % of base)
        -152 : 29944.dasm (-7.34 % of base)
        -152 : 56325.dasm (-4.40 % of base)
        -152 : 57489.dasm (-7.34 % of base)
        -152 : 77248.dasm (-7.34 % of base)
        -138 : 57650.dasm (-4.01 % of base)
        -138 : 77259.dasm (-4.01 % of base)
        -131 : 117374.dasm (-4.84 % of base)
        -131 : 116448.dasm (-4.84 % of base)
        -128 : 20529.dasm (-10.38 % of base)
        -123 : 60236.dasm (-3.19 % of base)
        -123 : 116378.dasm (-4.53 % of base)
        -123 : 46766.dasm (-3.19 % of base)

88 total files with Code Size differences (47 improved, 41 regressed), 20 unchanged.

Top method regressions (bytes):
         251 (4.76 % of base) : 29871.dasm - System.Data.Common.DbConnectionOptions:GetKeyValuePair(System.String,int,System.Text.StringBuilder,ubyte,byref,byref):int (Tier1-OSR)
         238 (6.25 % of base) : 21357.dasm - System.Reflection.CustomAttribute:AddCustomAttributes(byref,System.Reflection.RuntimeModule,int,System.RuntimeType,ubyte,System.RuntimeType+ListBuilder`1[System.Object]) (Tier1-OSR)
         213 (5.47 % of base) : 11014.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (Tier1)
         184 (6.88 % of base) : 77251.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         184 (6.88 % of base) : 57536.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         149 (2.97 % of base) : 10261.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
         143 (5.36 % of base) : 20216.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         143 (5.36 % of base) : 13881.dasm - System.DefaultBinder:SelectMethod(int,System.Reflection.MethodBase[],System.Type[],System.Reflection.ParameterModifier[]):System.Reflection.MethodBase:this (Tier1-OSR)
         127 (2.08 % of base) : 22025.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         127 (2.08 % of base) : 24621.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         127 (2.08 % of base) : 9228.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         127 (2.08 % of base) : 10012.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         127 (2.08 % of base) : 21364.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         127 (2.08 % of base) : 23228.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         123 (3.01 % of base) : 69400.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1)
         117 (1.93 % of base) : 34329.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         117 (1.93 % of base) : 56313.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         117 (1.93 % of base) : 29905.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         117 (1.93 % of base) : 57478.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)
         117 (1.93 % of base) : 77241.dasm - Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory:CreateConstructorCallSite(Microsoft.Extensions.DependencyInjection.ServiceLookup.ResultCache,Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceIdentifier,System.Type,Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteChain):Microsoft.Extensions.DependencyInjection.ServiceLookup.ConstructorCallSite:this (Tier1-OSR)

Top method improvements (bytes):
        -373 (-5.92 % of base) : 80893.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
        -298 (-4.66 % of base) : 70616.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
        -271 (-4.38 % of base) : 80044.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)
        -206 (-1.54 % of base) : 114544.dasm - System.DefaultBinder:BindToMethod(int,System.Reflection.MethodBase[],byref,System.Reflection.ParameterModifier[],System.Globalization.CultureInfo,System.String[],byref):System.Reflection.MethodBase:this (Tier1)
        -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)
        -152 (-7.34 % of base) : 56319.dasm - System.Linq.Expressions.Expression:GetProperty(System.Reflection.MethodInfo,System.String,int):System.Reflection.PropertyInfo (Tier1-OSR)
        -152 (-7.34 % of base) : 29944.dasm - System.Linq.Expressions.Expression:GetProperty(System.Reflection.MethodInfo,System.String,int):System.Reflection.PropertyInfo (Tier1-OSR)
        -152 (-7.34 % of base) : 57489.dasm - System.Linq.Expressions.Expression:GetProperty(System.Reflection.MethodInfo,System.String,int):System.Reflection.PropertyInfo (Tier1-OSR)
        -152 (-7.34 % of base) : 77248.dasm - System.Linq.Expressions.Expression:GetProperty(System.Reflection.MethodInfo,System.String,int):System.Reflection.PropertyInfo (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)
        -131 (-4.84 % of base) : 117374.dasm - System.Uri:CheckAuthorityHelper(ulong,int,int,byref,byref,System.UriParser,byref):int:this (Tier1-OSR)
        -131 (-4.84 % of base) : 116448.dasm - System.Uri:CheckAuthorityHelper(ulong,int,int,byref,byref,System.UriParser,byref):int:this (Tier1-OSR)
        -128 (-10.38 % of base) : 20529.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (Tier1)
        -123 (-3.19 % of base) : 60236.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
        -123 (-3.19 % of base) : 46766.dasm - Npgsql.SqlQueryParser:ParseRawQuery(Npgsql.NpgsqlCommand,Npgsql.NpgsqlBatchCommand,ubyte,ubyte):this (Tier1)
        -123 (-4.53 % of base) : 116378.dasm - System.Uri:CheckAuthorityHelper(ulong,int,int,byref,byref,System.UriParser,byref):int:this (Tier1-OSR)

Top method regressions (percentages):
          29 (14.01 % of base) : 22911.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 25211.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 29392.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 50094.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 54512.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 70329.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 79380.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 79749.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 63854.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 64207.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 67833.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 80587.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 25475.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 28098.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (14.01 % of base) : 71168.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          76 (12.90 % of base) : 69200.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1-OSR)
          55 (10.30 % of base) : 118469.dasm - System.Collections.Generic.HashSet`1[System.__Canon]:Remove(System.__Canon):ubyte:this (Tier1)
           7 (10.14 % of base) : 80564.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) : 117448.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastClassSpecial(ulong,System.Object):System.Object (Tier1)

Top method improvements (percentages):
          -7 (-10.77 % of base) : 127877.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
         -39 (-10.63 % of base) : 12416.dasm - System.Net.Sockets.DynamicWinsockMethods:GetMethods(int,int,int):System.Net.Sockets.DynamicWinsockMethods (Tier1)
         -81 (-10.49 % of base) : 36042.dasm - System.Convert:TryDecodeFromUtf16(System.ReadOnlySpan`1[ushort],System.Span`1[ubyte],byref,byref):ubyte (Tier1-OSR)
          -7 (-10.45 % of base) : 118816.dasm - OrchardCore.DisplayManagement.ObjectPool`1[System.__Canon]:FreeSlow(System.__Canon):this (Tier1)
          -7 (-10.45 % of base) : 116843.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          -7 (-10.45 % of base) : 129217.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          -7 (-10.45 % of base) : 101923.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          -7 (-10.45 % of base) : 117797.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          -7 (-10.45 % of base) : 119370.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
          -7 (-10.45 % of base) : 85126.dasm - System.Reflection.Internal.ObjectPool`1[System.__Canon]:Free(System.__Canon):this (Tier1)
        -128 (-10.38 % of base) : 20529.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (Tier1)
          -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)
         -26 (-8.61 % of base) : 116000.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[long,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[long,System.__Canon],long,int,byref):ubyte (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) : 49187.dasm - System.Collections.Concurrent.ConcurrentStack`1[System.__Canon]:get_Count():int: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: 11727476 (overridden on cmd)
Total bytes of diff: 11727949 (overridden on cmd)
Total bytes of delta: 473 (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)
          83 : 17319.dasm (1.89 % of base)
          83 : 1988.dasm (1.89 % of base)
          82 : 3440.dasm (6.39 % of base)
          77 : 21752.dasm (1.89 % of base)
          77 : 32050.dasm (1.89 % of base)
          23 : 25524.dasm (0.75 % of base)
          21 : 34874.dasm (1.15 % of base)
          17 : 27501.dasm (0.61 % of base)
          16 : 15997.dasm (0.20 % of base)
          16 : 10171.dasm (0.20 % of base)
          15 : 27811.dasm (0.25 % of base)
          15 : 34882.dasm (0.91 % of base)
          14 : 23436.dasm (0.99 % of base)
          14 : 24007.dasm (0.99 % of base)
          12 : 35930.dasm (0.24 % of base)
          11 : 31537.dasm (2.93 % of base)
          11 : 23905.dasm (2.93 % of base)
          10 : 2990.dasm (3.21 % of base)

Top file improvements (bytes):
         -54 : 24463.dasm (-4.17 % of base)
         -44 : 14233.dasm (-1.62 % of base)
         -44 : 2588.dasm (-1.62 % of base)
         -30 : 28582.dasm (-0.99 % of base)
         -25 : 10551.dasm (-1.75 % of base)
         -21 : 24596.dasm (-2.44 % of base)
         -20 : 11255.dasm (-1.42 % of base)
         -20 : 18940.dasm (-1.42 % of base)
         -16 : 7478.dasm (-4.47 % of base)
         -14 : 12335.dasm (-0.95 % of base)
         -14 : 34897.dasm (-2.03 % of base)
         -14 : 581.dasm (-0.95 % of base)
         -13 : 27103.dasm (-1.23 % of base)
         -13 : 32063.dasm (-0.39 % of base)
         -13 : 29683.dasm (-0.39 % of base)
         -11 : 26568.dasm (-0.45 % of base)
         -10 : 31702.dasm (-0.84 % of base)
          -8 : 31670.dasm (-0.49 % of base)
          -8 : 4045.dasm (-0.49 % of base)
          -7 : 23773.dasm (-1.62 % of base)

51 total files with Code Size differences (24 improved, 27 regressed), 20 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)
          83 (1.89 % of base) : 17319.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          83 (1.89 % of base) : 1988.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          82 (6.39 % of base) : 3440.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
          77 (1.89 % of base) : 21752.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          77 (1.89 % of base) : 32050.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          23 (0.75 % of base) : 25524.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (FullOpts)
          21 (1.15 % of base) : 34874.dasm - MessagePack.Formatters.MicroBenchmarks_Serializers_ActiveOrUpcomingEventFormatter2:Deserialize(ubyte[],int,MessagePack.IFormatterResolver,byref):MicroBenchmarks.Serializers.ActiveOrUpcomingEvent:this (FullOpts)
          17 (0.61 % of base) : 27501.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          16 (0.20 % of base) : 15997.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)
          16 (0.20 % of base) : 10171.dasm - System.Xml.Serialization.XmlSerializationReaderILGen:WriteLiteralStructMethod(System.Xml.Serialization.StructMapping):this (FullOpts)
          15 (0.91 % of base) : 34882.dasm - MessagePack.Formatters.MicroBenchmarks_Serializers_CampaignSummaryViewModelFormatter3:Deserialize(ubyte[],int,MessagePack.IFormatterResolver,byref):MicroBenchmarks.Serializers.CampaignSummaryViewModel: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)
          14 (0.99 % of base) : 23436.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
          14 (0.99 % of base) : 24007.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (FullOpts)
          12 (0.24 % of base) : 35930.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte: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)
          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)
          10 (3.21 % of base) : 2990.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)

Top method improvements (bytes):
         -54 (-4.17 % of base) : 24463.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
         -44 (-1.62 % of base) : 14233.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -44 (-1.62 % of base) : 2588.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -30 (-0.99 % of base) : 28582.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
         -25 (-1.75 % of base) : 10551.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -21 (-2.44 % of base) : 24596.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
         -20 (-1.42 % of base) : 11255.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
         -20 (-1.42 % of base) : 18940.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
         -16 (-4.47 % of base) : 7478.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
         -14 (-2.03 % of base) : 34897.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (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)
         -13 (-1.23 % of base) : 27103.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (FullOpts)
         -13 (-0.39 % 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)
         -13 (-0.39 % 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)
         -11 (-0.45 % of base) : 26568.dasm - Microsoft.CodeAnalysis.CSharp.CSharpCompilation:AddSyntaxTrees(System.Collections.Generic.IEnumerable`1[Microsoft.CodeAnalysis.SyntaxTree]):Microsoft.CodeAnalysis.CSharp.CSharpCompilation:this (FullOpts)
         -10 (-0.84 % of base) : 31702.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -8 (-0.49 % of base) : 31670.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
          -8 (-0.49 % of base) : 4045.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (FullOpts)
          -7 (-1.62 % of base) : 23773.dasm - System.Tests.Perf_Int32:TryFormat(int):ubyte:this (FullOpts)

Top method regressions (percentages):
          82 (6.39 % of base) : 3440.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
          10 (3.21 % of base) : 2990.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          10 (3.21 % of base) : 12639.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (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)
          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)
         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)
           7 (1.92 % 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)
           7 (1.92 % 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)
          83 (1.89 % of base) : 17319.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          83 (1.89 % of base) : 1988.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          77 (1.89 % of base) : 21752.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          77 (1.89 % of base) : 32050.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
           9 (1.80 % of base) : 5177.dasm - System.__DTString:GetRegularToken(byref,byref,System.Globalization.DateTimeFormatInfo):this (FullOpts)
           8 (1.44 % of base) : 23527.dasm - System.Collections.BitArray:RightShift(int):System.Collections.BitArray:this (FullOpts)
           2 (1.20 % of base) : 36126.dasm - V8.Crypto.ListX`1[int]:set_Item(int,int):this (FullOpts)
           2 (1.18 % of base) : 36172.dasm - V8.Crypto.ListX`1[ubyte]:set_Item(int,ubyte):this (FullOpts)
          21 (1.15 % of base) : 34874.dasm - MessagePack.Formatters.MicroBenchmarks_Serializers_ActiveOrUpcomingEventFormatter2:Deserialize(ubyte[],int,MessagePack.IFormatterResolver,byref):MicroBenchmarks.Serializers.ActiveOrUpcomingEvent:this (FullOpts)
          14 (0.99 % of base) : 23436.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
          14 (0.99 % of base) : 24007.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (FullOpts)

Top method improvements (percentages):
         -16 (-4.47 % of base) : 7478.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
         -54 (-4.17 % of base) : 24463.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (FullOpts)
         -21 (-2.44 % of base) : 24596.dasm - System.Net.WebUtility:UrlDecodeInternal(System.String,System.Text.Encoding):System.String (FullOpts)
         -14 (-2.03 % of base) : 34897.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
         -25 (-1.75 % of base) : 10551.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -7 (-1.62 % of base) : 23773.dasm - System.Tests.Perf_Int32:TryFormat(int):ubyte:this (FullOpts)
         -44 (-1.62 % of base) : 14233.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -44 (-1.62 % of base) : 2588.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -20 (-1.42 % of base) : 11255.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
         -20 (-1.42 % of base) : 18940.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
         -13 (-1.23 % of base) : 27103.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (FullOpts)
          -4 (-1.20 % of base) : 30518.dasm - System.Tests.Perf_UInt32:TryFormat(uint):ubyte:this (FullOpts)
          -4 (-1.20 % of base) : 32607.dasm - System.Tests.Perf_UInt32:TryFormat(uint):ubyte:this (FullOpts)
         -30 (-0.99 % of base) : 28582.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]: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)
          -5 (-0.85 % of base) : 6400.dasm - System.Xml.XmlUTF8TextReader:ReadQualifiedName(System.Xml.PrefixHandle,System.Xml.StringHandle):this (FullOpts)
         -10 (-0.84 % of base) : 31702.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -4 (-0.60 % of base) : 21830.dasm - Jil.Serialize.InlineSerializer`1[System.__Canon]:WriteISO8601StyleDateTime():this (FullOpts)
          -8 (-0.49 % of base) : 31670.dasm - System.Globalization.TimeSpanFormat:TryFormatStandard[ushort](System.TimeSpan,int,System.ReadOnlySpan`1[ushort],System.Span`1[ushort],byref):ubyte (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: 34353258 (overridden on cmd)
Total bytes of diff: 34381223 (overridden on cmd)
Total bytes of delta: 27965 (0.08 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         198 : 64336.dasm (17.82 % of base)
         184 : 68141.dasm (16.28 % of base)
         182 : 70971.dasm (17.15 % of base)
         181 : 65842.dasm (17.08 % of base)
         133 : 7970.dasm (9.40 % of base)
         121 : 107773.dasm (2.92 % of base)
         115 : 97615.dasm (2.77 % of base)
         106 : 89036.dasm (2.25 % of base)
         106 : 89159.dasm (2.30 % of base)
         106 : 32005.dasm (2.25 % of base)
          96 : 84331.dasm (3.34 % of base)
          81 : 105724.dasm (14.14 % of base)
          81 : 106853.dasm (14.14 % of base)
          81 : 107901.dasm (14.14 % of base)
          81 : 107921.dasm (14.14 % of base)
          81 : 29722.dasm (14.14 % of base)
          81 : 106543.dasm (14.14 % of base)
          77 : 107700.dasm (2.58 % of base)
          73 : 96296.dasm (12.56 % of base)
          73 : 106891.dasm (12.56 % of base)

Top file improvements (bytes):
        -184 : 96365.dasm (-4.23 % of base)
         -92 : 92265.dasm (-2.62 % of base)
         -88 : 74767.dasm (-2.51 % of base)
         -67 : 72866.dasm (-1.09 % of base)
         -64 : 58202.dasm (-3.41 % of base)
         -57 : 58206.dasm (-3.14 % of base)
         -49 : 72962.dasm (-2.53 % of base)
         -46 : 49527.dasm (-2.53 % of base)
         -46 : 87622.dasm (-4.80 % of base)
         -43 : 93024.dasm (-2.50 % of base)
         -43 : 46883.dasm (-2.50 % of base)
         -40 : 97709.dasm (-13.51 % of base)
         -39 : 86334.dasm (-3.66 % of base)
         -39 : 93278.dasm (-6.28 % of base)
         -38 : 32126.dasm (-4.49 % of base)
         -38 : 52446.dasm (-2.01 % of base)
         -38 : 70102.dasm (-2.20 % of base)
         -38 : 88504.dasm (-2.20 % of base)
         -38 : 94739.dasm (-4.26 % of base)
         -37 : 19777.dasm (-5.71 % of base)

85 total files with Code Size differences (54 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
         198 (17.82 % of base) : 64336.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
         184 (16.28 % of base) : 68141.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
         182 (17.15 % of base) : 70971.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
         181 (17.08 % of base) : 65842.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
         133 (9.40 % of base) : 7970.dasm - System.RuntimeType:GetConstructorCandidates(System.String,int,int,System.Type[],ubyte):System.RuntimeType+ListBuilder`1[System.Reflection.ConstructorInfo]:this (Tier1)
         121 (2.92 % of base) : 107773.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
         115 (2.77 % of base) : 97615.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
         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)
         106 (2.25 % of base) : 32005.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          96 (3.34 % of base) : 84331.dasm - Benchstone.BenchI.Puzzle:DoIt():ubyte:this (Tier1)
          81 (14.14 % of base) : 105724.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          81 (14.14 % of base) : 106853.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          81 (14.14 % of base) : 107901.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          81 (14.14 % of base) : 107921.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          81 (14.14 % of base) : 29722.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          81 (14.14 % of base) : 106543.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          77 (2.58 % of base) : 107700.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf16(ulong,int,ulong,int,byref,byref):int (Tier1)
          73 (12.56 % of base) : 96296.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          73 (12.56 % of base) : 106891.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)

Top method improvements (bytes):
        -184 (-4.23 % of base) : 96365.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
         -92 (-2.62 % of base) : 92265.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
         -88 (-2.51 % of base) : 74767.dasm - System.Text.Unicode.Utf8Utility:TranscodeToUtf8(ulong,int,ulong,int,byref,byref):int (Tier1)
         -67 (-1.09 % of base) : 72866.dasm - LUDecomp:Run():double:this (Tier1)
         -64 (-3.41 % of base) : 58202.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
         -57 (-3.14 % of base) : 58206.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
         -49 (-2.53 % of base) : 72962.dasm - System.Collections.Immutable.ImmutableDictionary`2[System.__Canon,System.__Canon]:AddRange(System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.__Canon]],System.Collections.Immutable.ImmutableDictionary`2+MutationInput[System.__Canon,System.__Canon],int):System.Collections.Immutable.ImmutableDictionary`2+MutationResult[System.__Canon,System.__Canon] (Tier1-OSR)
         -46 (-4.80 % of base) : 87622.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
         -46 (-2.53 % of base) : 49527.dasm - System.RuntimeType:MakeGenericType(System.Type[]):System.Type:this (Tier1)
         -43 (-2.50 % of base) : 93024.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
         -43 (-2.50 % of base) : 46883.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
         -40 (-13.51 % of base) : 97709.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
         -39 (-6.28 % of base) : 93278.dasm - BenchmarksGame.Fasta_2:MakeRandomFasta(System.String,System.String,BenchmarksGame.Fasta_2+Frequency[],int,System.IO.Stream) (Tier1-OSR)
         -39 (-3.66 % of base) : 86334.dasm - System.Threading.LowLevelLifoSemaphore:Wait(int,ubyte):ubyte:this (Tier1)
         -38 (-4.26 % of base) : 94739.dasm - System.Buffers.SharedArrayPool`1[System.__Canon]:Rent(int):System.__Canon[]:this (Tier1)
         -38 (-4.49 % of base) : 32126.dasm - System.Buffers.SharedArrayPool`1[ubyte]:Rent(int):ubyte[]:this (Tier1)
         -38 (-2.01 % of base) : 52446.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1-OSR)
         -38 (-2.20 % of base) : 70102.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
         -38 (-2.20 % of base) : 88504.dasm - System.Threading.ThreadPoolWorkQueue:Dispatch():ubyte (Tier1-OSR)
         -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)

Top method regressions (percentages):
         198 (17.82 % of base) : 64336.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
         182 (17.15 % of base) : 70971.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
         181 (17.08 % of base) : 65842.dasm - Algorithms.VectorFloatRenderer:RenderSingleThreadedWithADT(float,float,float,float,float):this (Tier1-OSR)
         184 (16.28 % of base) : 68141.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1-OSR)
          81 (14.14 % of base) : 105724.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          81 (14.14 % of base) : 106853.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          81 (14.14 % of base) : 107901.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          81 (14.14 % of base) : 107921.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          81 (14.14 % of base) : 29722.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          81 (14.14 % of base) : 106543.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          24 (14.12 % of base) : 101959.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
          11 (13.25 % of base) : 91041.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
          11 (13.25 % of base) : 85527.dasm - System.Collections.Generic.GenericArraySortHelper`1[System.Collections.IntStruct]:InsertionSort(System.Span`1[System.Collections.IntStruct]) (Tier1)
          57 (12.58 % of base) : 63688.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          57 (12.58 % of base) : 64876.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          57 (12.58 % of base) : 71288.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          57 (12.58 % of base) : 84208.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          57 (12.58 % of base) : 65344.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          57 (12.58 % of base) : 87768.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)
          57 (12.58 % of base) : 93696.dasm - System.SpanHelpers:IndexOfNullByte(ulong):int (Tier1)

Top method improvements (percentages):
         -15 (-24.19 % of base) : 91602.dasm - Lowering.InstructionReplacement:TESTtoBT():int:this (Tier1-OSR)
         -40 (-13.51 % of base) : 97709.dasm - System.Numerics.BigIntegerCalculator:Add(System.ReadOnlySpan`1[uint],uint,System.Span`1[uint]) (Tier1)
         -10 (-8.26 % of base) : 98082.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -26 (-7.60 % of base) : 62519.dasm - AssignJagged:calc_minimum_costs(int[][]) (Tier1-OSR)
         -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)
         -39 (-6.28 % of base) : 93278.dasm - BenchmarksGame.Fasta_2:MakeRandomFasta(System.String,System.String,BenchmarksGame.Fasta_2+Frequency[],int,System.IO.Stream) (Tier1-OSR)
         -14 (-5.96 % of base) : 93913.dasm - BenchmarksGame.KNucleotide:KFrequency(int,int):this (Tier1-OSR)
         -27 (-5.84 % of base) : 100688.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -27 (-5.84 % of base) : 101436.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -27 (-5.84 % of base) : 90569.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -27 (-5.84 % of base) : 97882.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -27 (-5.84 % of base) : 105172.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -27 (-5.84 % of base) : 93581.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -27 (-5.84 % of base) : 91482.dasm - System.Text.Ascii:WidenAsciiToUtf16(ulong,ulong,ulong):ulong (Tier1)
         -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) : 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) : 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) : 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)


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: 19449443 (overridden on cmd)
Total bytes of diff: 19449570 (overridden on cmd)
Total bytes of delta: 127 (0.00 % of base)
    diff is a regression.
    relative diff is an improvement.

Detail diffs



Top file regressions (bytes):
         128 : 18791.dasm (2.81 % of base)
         128 : 72423.dasm (2.81 % of base)
         128 : 73266.dasm (2.90 % of base)
          23 : 16095.dasm (3.45 % of base)
          23 : 48350.dasm (0.75 % of base)
          13 : 48314.dasm (0.45 % of base)
          12 : 79553.dasm (0.24 % of base)
          10 : 74014.dasm (3.21 % of base)
           7 : 74366.dasm (0.60 % of base)
           3 : 81303.dasm (0.51 % of base)
           3 : 56839.dasm (0.36 % of base)
           3 : 67475.dasm (0.36 % of base)
           2 : 28598.dasm (0.63 % of base)
           2 : 2939.dasm (0.10 % of base)
           2 : 35043.dasm (0.10 % of base)
           2 : 79122.dasm (0.19 % of base)
           1 : 58992.dasm (0.14 % of base)

Top file improvements (bytes):
         -54 : 46318.dasm (-4.17 % of base)
         -44 : 36105.dasm (-1.62 % of base)
         -44 : 9897.dasm (-1.62 % of base)
         -25 : 45622.dasm (-1.75 % of base)
         -25 : 21491.dasm (-1.75 % of base)
         -19 : 65941.dasm (-1.78 % of base)
         -14 : 36717.dasm (-0.95 % of base)
         -14 : 18720.dasm (-0.95 % of base)
         -13 : 61708.dasm (-0.39 % of base)
         -13 : 68143.dasm (-0.38 % of base)
         -13 : 56318.dasm (-1.23 % of base)
         -13 : 65943.dasm (-1.23 % of base)
         -10 : 67783.dasm (-0.84 % of base)
          -5 : 12734.dasm (-1.04 % of base)
          -5 : 2868.dasm (-1.43 % of base)
          -5 : 34511.dasm (-1.43 % of base)
          -5 : 46324.dasm (-1.04 % of base)
          -5 : 78147.dasm (-0.18 % of base)
          -4 : 42413.dasm (-0.41 % of base)
          -4 : 10749.dasm (-0.41 % of base)

43 total files with Code Size differences (26 improved, 17 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.81 % of base) : 72423.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)
          23 (0.75 % of base) : 48350.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1)
          23 (3.45 % of base) : 16095.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
          13 (0.45 % of base) : 48314.dasm - LUDecomp:ludcmp(double[][],int,int[],byref):int (Tier1-OSR)
          12 (0.24 % of base) : 79553.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (Tier0-FullOpts)
          10 (3.21 % of base) : 74014.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (Tier1)
           7 (0.60 % of base) : 74366.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
           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)
           3 (0.51 % of base) : 81303.dasm - System.Buffers.Text.Base64:DecodeFromUtf8InPlace(System.Span`1[ubyte],byref,ubyte):int (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.10 % of base) : 2939.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)
           2 (0.10 % of base) : 35043.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)
           2 (0.63 % of base) : 28598.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:<ToList>g__AppendToList|25_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]],int) (Tier1)
           1 (0.14 % of base) : 58992.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1)

Top method improvements (bytes):
         -54 (-4.17 % of base) : 46318.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)
         -44 (-1.62 % of base) : 36105.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
         -44 (-1.62 % of base) : 9897.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
         -25 (-1.75 % of base) : 45622.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -25 (-1.75 % of base) : 21491.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -19 (-1.78 % of base) : 65941.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.__Canon]:TryInsert(System.ReadOnlyMemory`1[ushort],System.__Canon,ubyte):ubyte:this (Tier1)
         -14 (-0.95 % of base) : 36717.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
         -14 (-0.95 % of base) : 18720.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
         -13 (-1.23 % of base) : 56318.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (Tier1)
         -13 (-1.23 % of base) : 65943.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (Tier1)
         -13 (-0.39 % 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)
         -13 (-0.38 % 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)
         -10 (-0.84 % of base) : 67783.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -5 (-1.04 % of base) : 12734.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
          -5 (-1.04 % of base) : 46324.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
          -5 (-0.18 % of base) : 78147.dasm - System.IPv6AddressHelper:ParseCanonicalName(System.String,int,byref,byref):System.String (Tier0-FullOpts)
          -5 (-1.43 % of base) : 2868.dasm - System.UInt32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
          -5 (-1.43 % of base) : 34511.dasm - System.UInt32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
          -4 (-0.41 % of base) : 42413.dasm - System.IPv4AddressHelper:ParseCanonicalName(System.String,int,int,byref):System.String (Tier0-FullOpts)
          -4 (-0.41 % of base) : 10749.dasm - System.IPv4AddressHelper:ParseCanonicalName(System.String,int,int,byref):System.String (Tier0-FullOpts)

Top method regressions (percentages):
          23 (3.45 % of base) : 16095.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1-OSR)
          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)
           2 (0.63 % of base) : 28598.dasm - System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]:<ToList>g__AppendToList|25_0(System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong],System.Collections.Generic.List`1[System.Text.RegularExpressions.Symbolic.SymbolicRegexNode`1[ulong]],int) (Tier1)
           7 (0.60 % of base) : 74366.dasm - BenchmarksGame.FannkuchRedux_9:Run(int,int) (Tier0-FullOpts)
           3 (0.51 % of base) : 81303.dasm - System.Buffers.Text.Base64:DecodeFromUtf8InPlace(System.Span`1[ubyte],byref,ubyte):int (Tier1-OSR)
          13 (0.45 % 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)
          12 (0.24 % of base) : 79553.dasm - System.Xml.Schema.XsdDuration:TryFormat(System.Span`1[ushort],byref,int):ubyte:this (Tier0-FullOpts)
           2 (0.19 % of base) : 79122.dasm - System.Buffers.Tests.RentReturnArrayPoolTests`1+<>c__DisplayClass24_0+<<ProducerConsumer>b__0>d[ubyte]:MoveNext():this (Tier1)
           1 (0.14 % of base) : 58992.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (Tier1)
           2 (0.10 % of base) : 35043.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)
           2 (0.10 % of base) : 2939.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)

Top method improvements (percentages):
         -54 (-4.17 % of base) : 46318.dasm - Algorithms.VectorDoubleRenderer:RenderSingleThreadedNoADT(float,float,float,float,float):this (Tier1)
         -19 (-1.78 % of base) : 65941.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.__Canon]:TryInsert(System.ReadOnlyMemory`1[ushort],System.__Canon,ubyte):ubyte:this (Tier1)
         -25 (-1.75 % of base) : 45622.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -25 (-1.75 % of base) : 21491.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -44 (-1.62 % of base) : 36105.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
         -44 (-1.62 % of base) : 9897.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (Tier1)
          -5 (-1.43 % of base) : 2868.dasm - System.UInt32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
          -5 (-1.43 % of base) : 34511.dasm - System.UInt32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
         -13 (-1.23 % of base) : 56318.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (Tier1)
         -13 (-1.23 % of base) : 65943.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (Tier1)
          -5 (-1.04 % of base) : 12734.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
          -5 (-1.04 % of base) : 46324.dasm - System.Int32:TryFormat(System.Span`1[ushort],byref,System.ReadOnlySpan`1[ushort],System.IFormatProvider):ubyte:this (Tier1)
         -14 (-0.95 % of base) : 36717.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
         -14 (-0.95 % of base) : 18720.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (Tier1)
         -10 (-0.84 % of base) : 67783.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          -2 (-0.79 % of base) : 66331.dasm - System.Threading.ReaderWriterLockSlim:GetThreadRWCount(ubyte):System.Threading.ReaderWriterCount:this (Tier1)
          -1 (-0.46 % of base) : 35083.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier1)
          -1 (-0.46 % of base) : 3506.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.__Canon,System.__Canon]:TryGetValueInternal(System.Collections.Concurrent.ConcurrentDictionary`2+Tables[System.__Canon,System.__Canon],System.__Canon,int,byref):ubyte (Tier1)
          -2 (-0.43 % of base) : 81992.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this (Tier1)
          -2 (-0.43 % of base) : 20083.dasm - System.Runtime.CompilerServices.DefaultInterpolatedStringHandler:AppendFormatted[uint](uint):this (Tier1)


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: 296148172 (overridden on cmd)
Total bytes of diff: 296148929 (overridden on cmd)
Total bytes of delta: 757 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         147 : 166814.dasm (10.14 % of base)
         147 : 31016.dasm (10.14 % of base)
          53 : 447876.dasm (3.80 % of base)
          49 : 292031.dasm (1.53 % of base)
          49 : 312852.dasm (1.53 % of base)
          32 : 439628.dasm (15.38 % of base)
          32 : 427695.dasm (3.14 % of base)
          32 : 489628.dasm (3.14 % of base)
          31 : 318580.dasm (3.02 % of base)
          31 : 428497.dasm (2.40 % of base)
          30 : 441298.dasm (4.54 % of base)
          29 : 229184.dasm (2.60 % of base)
          29 : 418978.dasm (2.56 % of base)
          29 : 429264.dasm (2.82 % of base)
          29 : 430910.dasm (12.45 % of base)
          29 : 435638.dasm (12.45 % of base)
          29 : 482121.dasm (4.39 % of base)
          29 : 369105.dasm (12.55 % of base)
          29 : 417928.dasm (12.45 % of base)
          29 : 456257.dasm (12.45 % of base)

Top file improvements (bytes):
         -50 : 230781.dasm (-4.03 % of base)
         -50 : 433920.dasm (-4.03 % of base)
         -46 : 424742.dasm (-4.77 % of base)
         -42 : 455262.dasm (-3.27 % of base)
         -41 : 239781.dasm (-0.58 % of base)
         -37 : 444619.dasm (-5.71 % of base)
         -35 : 489455.dasm (-1.63 % of base)
         -35 : 489527.dasm (-1.65 % of base)
         -30 : 190125.dasm (-0.97 % of base)
         -30 : 240940.dasm (-0.97 % of base)
         -25 : 481494.dasm (-4.74 % of base)
         -23 : 189006.dasm (-0.44 % 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)
         -22 : 416509.dasm (-1.45 % of base)
         -20 : 433404.dasm (-0.77 % of base)
         -18 : 415954.dasm (-3.76 % of base)
         -18 : 416012.dasm (-3.76 % of base)

69 total files with Code Size differences (34 improved, 35 regressed), 20 unchanged.

Top method regressions (bytes):
         147 (10.14 % of base) : 166814.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
         147 (10.14 % of base) : 31016.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
          53 (3.80 % of base) : 447876.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
          49 (1.53 % of base) : 292031.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.RuntimeFunctionsTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
          49 (1.53 % of base) : 312852.dasm - ILCompiler.DependencyAnalysis.ReadyToRun.RuntimeFunctionsTableNode:GetData(ILCompiler.DependencyAnalysis.NodeFactory,ubyte):ILCompiler.DependencyAnalysis.ObjectNode+ObjectData:this (FullOpts)
          32 (3.14 % of base) : 427695.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
          32 (3.14 % of base) : 489628.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
          32 (15.38 % of base) : 439628.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
          31 (3.02 % of base) : 318580.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
          31 (2.40 % of base) : 428497.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
          30 (4.54 % of base) : 441298.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)
          29 (2.60 % of base) : 229184.dasm - JitTest_lcsvalbox_lcs_cs.LCS:findLCS(System.Object[,,,],ushort[][],int[]) (FullOpts)
          29 (2.56 % of base) : 418978.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          29 (2.82 % of base) : 429264.dasm - System.PackedSpanHelpers:IndexOfAny[System.SpanHelpers+DontNegate`1[short]](byref,short,short,int):int (Tier1)
          29 (12.45 % of base) : 430910.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (12.45 % of base) : 435638.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (12.55 % of base) : 369105.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (12.45 % of base) : 417928.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (12.45 % of base) : 456257.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (4.39 % of base) : 482121.dasm - System.RuntimeType:FilterApplyMethodBase(System.Reflection.MethodBase,int,int,int,System.Type[]):ubyte (Tier1)

Top method improvements (bytes):
         -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)
         -46 (-4.77 % of base) : 424742.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
         -42 (-3.27 % of base) : 455262.dasm - System.Text.Ascii:NarrowUtf16ToAscii(ulong,ulong,ulong):ulong (Tier1)
         -41 (-0.58 % of base) : 239781.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -37 (-5.71 % of base) : 444619.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
         -35 (-1.63 % of base) : 489455.dasm - System.Diagnostics.AsyncStreamReader+<ReadBufferAsync>d__16:MoveNext():this (Tier1)
         -35 (-1.65 % of base) : 489527.dasm - System.Diagnostics.AsyncStreamReader+<ReadBufferAsync>d__16:MoveNext():this (Tier1)
         -30 (-0.97 % of base) : 190125.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
         -30 (-0.97 % of base) : 240940.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
         -25 (-4.74 % of base) : 481494.dasm - TestSet:.ctor(int,int):this (Tier1-OSR)
         -23 (-0.44 % of base) : 189006.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:GetMergedGlobalAliasesAndUsings(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+MergedGlobalAliasesAndUsings:this (FullOpts)
         -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)
         -20 (-0.77 % of base) : 433404.dasm - System.Decimal+DecCalc:VarDecDiv(byref,byref) (Instrumented Tier1)
         -18 (-0.45 % of base) : 237853.dasm - DefaultNamespace.RanCollect:runTest(int,int,int,int):ubyte:this (FullOpts)
         -18 (-3.73 % of base) : 415945.dasm - SizeParamIndex.PInvoke.Helper:EqualArray[short](short[],int,short[],int):ubyte (Tier1-OSR)

Top method regressions (percentages):
          28 (16.47 % of base) : 490049.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
          32 (15.38 % of base) : 439628.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
          29 (12.55 % of base) : 369105.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (12.45 % of base) : 430910.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (12.45 % of base) : 435638.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (12.45 % of base) : 417928.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          29 (12.45 % of base) : 456257.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
         147 (10.14 % of base) : 166814.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
         147 (10.14 % of base) : 31016.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
          21 (9.01 % of base) : 422642.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 488180.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 489413.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 489482.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 418977.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 462974.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 468227.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 488115.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          10 (5.71 % of base) : 441942.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfAny(ulong,System.Object):System.Object (Tier1)
          11 (5.67 % of base) : 427899.dasm - System.Runtime.CompilerServices.CastHelpers:ChkCastAny(ulong,System.Object):System.Object (Tier1)
           9 (5.39 % of base) : 425090.dasm - BenchmarksGame.KNucleotide_9:loadThreeData(System.IO.Stream) (Tier1-OSR)

Top method improvements (percentages):
         -37 (-5.71 % of base) : 444619.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
         -13 (-5.63 % of base) : 422907.dasm - Benchstone.BenchI.CSieve:Bench():ubyte (Tier1-OSR)
          -6 (-5.31 % of base) : 416484.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -46 (-4.77 % of base) : 424742.dasm - BenchmarksGame.FannkuchRedux_2:fannkuch(int):int[]:this (Tier1-OSR)
         -25 (-4.74 % of base) : 481494.dasm - TestSet:.ctor(int,int):this (Tier1-OSR)
          -5 (-4.20 % of base) : 438998.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 439192.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 440227.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 482044.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 244792.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 440175.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 491869.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (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)
         -17 (-3.99 % of base) : 425713.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
         -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)
         -18 (-3.76 % of base) : 415954.dasm - SizeParamIndex.PInvoke.Helper:EqualArray[ushort](ushort[],int,ushort[],int):ubyte (Tier1-OSR)
         -18 (-3.76 % of base) : 416012.dasm - SizeParamIndex.ReversePInvoke.Helper:EqualArray[ushort](ushort[],int,ushort[],int):ubyte (Tier1-OSR)


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: 44929099 (overridden on cmd)
Total bytes of diff: 44929307 (overridden on cmd)
Total bytes of delta: 208 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         135 : 108526.dasm (2.23 % of base)
          75 : 98642.dasm (2.31 % of base)
          65 : 171789.dasm (2.71 % of base)
          52 : 66520.dasm (1.12 % of base)
          40 : 181858.dasm (0.73 % of base)
          39 : 29532.dasm (4.50 % of base)
          39 : 29533.dasm (4.80 % of base)
          38 : 261442.dasm (5.07 % of base)
          37 : 229503.dasm (0.40 % of base)
          29 : 115235.dasm (0.67 % of base)
          28 : 217450.dasm (1.26 % of base)
          28 : 30121.dasm (0.85 % of base)
          28 : 151874.dasm (2.74 % of base)
          28 : 93476.dasm (2.74 % of base)
          26 : 151884.dasm (4.09 % of base)
          26 : 93486.dasm (4.05 % of base)
          24 : 151264.dasm (2.64 % of base)
          24 : 92713.dasm (2.64 % of base)
          20 : 94849.dasm (1.80 % of base)
          19 : 39456.dasm (4.30 % of base)

Top file improvements (bytes):
        -278 : 1735.dasm (-0.43 % of base)
         -64 : 25623.dasm (-4.20 % of base)
         -41 : 93159.dasm (-0.78 % of base)
         -36 : 37384.dasm (-1.24 % of base)
         -34 : 174632.dasm (-1.62 % of base)
         -32 : 257975.dasm (-1.38 % of base)
         -32 : 38822.dasm (-1.19 % of base)
         -30 : 16315.dasm (-1.87 % of base)
         -29 : 152745.dasm (-4.28 % of base)
         -29 : 234053.dasm (-4.28 % of base)
         -28 : 129740.dasm (-1.71 % of base)
         -28 : 68014.dasm (-1.71 % of base)
         -25 : 243324.dasm (-1.35 % of base)
         -16 : 94601.dasm (-0.32 % of base)
         -16 : 245271.dasm (-0.65 % of base)
         -16 : 31375.dasm (-0.60 % of base)
         -15 : 94834.dasm (-0.54 % of base)
         -14 : 234546.dasm (-2.21 % of base)
         -14 : 60313.dasm (-0.29 % of base)
         -13 : 94852.dasm (-0.28 % of base)

55 total files with Code Size differences (27 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
         135 (2.23 % of base) : 108526.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
          75 (2.31 % of base) : 98642.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:CheckDeclarationNameAndTypeParameters(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):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)
          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)
          40 (0.73 % of base) : 181858.dasm - Internal.TypeSystem.MetadataFieldLayoutAlgorithm:ComputeAutoFieldLayout(Internal.TypeSystem.MetadataType,int):Internal.TypeSystem.ComputedInstanceFieldLayout:this (FullOpts)
          39 (4.80 % of base) : 29533.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          39 (4.50 % of base) : 29532.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          38 (5.07 % of base) : 261442.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:WrapPartitionedStreamHelper[int,System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int],System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon],int,System.Threading.CancellationToken):this (FullOpts)
          37 (0.40 % 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)
          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) : 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)
          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 (0.85 % of base) : 30121.dasm - System.Diagnostics.Tracing.EventProvider:WriteEvent(byref,long,ulong,ulong,System.Object[]):ubyte:this (FullOpts)
          28 (1.26 % of base) : 217450.dasm - System.Xml.Serialization.ReflectionXmlSerializationWriter:GenerateMembersElement(System.Object,System.Xml.Serialization.XmlMembersMapping):this (FullOpts)
          26 (4.09 % of base) : 151884.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddError[System.__Canon](System.__Canon,int,System.Object[]):System.__Canon:this (FullOpts)
          26 (4.05 % of base) : 93486.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddError[System.__Canon](System.__Canon,int,System.Object[]):System.__Canon:this (FullOpts)
          24 (2.64 % of base) : 151264.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
          24 (2.64 % of base) : 92713.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
          20 (1.80 % of base) : 94849.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindObjectCreationExpression(Microsoft.CodeAnalysis.VisualBasic.Syntax.TypeSyntax,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Syntax.ObjectCreationExpressionSyntax,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.BoundWithLValueExpressionPlaceholder):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)
          19 (4.30 % of base) : 39456.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)

Top method improvements (bytes):
        -278 (-0.43 % of base) : 1735.dasm - Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter:ConvExprToLinqInContext(Microsoft.FSharp.Linq.RuntimeHelpers.LeafExpressionConverter+ConvEnv,Microsoft.FSharp.Quotations.FSharpExpr):System.Linq.Expressions.Expression (FullOpts)
         -64 (-4.20 % of base) : 25623.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (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)
         -36 (-1.24 % of base) : 37384.dasm - System.Data.XSDSchema:HandleElementColumn(System.Xml.Schema.XmlSchemaElement,System.Data.DataTable,ubyte):this (FullOpts)
         -34 (-1.62 % of base) : 174632.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:PushChangesToNative(System.DirectoryServices.AccountManagement.Principal):System.Object: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)
         -30 (-1.87 % of base) : 16315.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -29 (-4.28 % of base) : 152745.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)
         -29 (-4.28 % of base) : 234053.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)
         -28 (-1.71 % of base) : 129740.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
         -28 (-1.71 % of base) : 68014.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
         -25 (-1.35 % of base) : 243324.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -16 (-0.32 % of base) : 94601.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:MakeVarianceConversionSuggestion(int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref,ubyte):ubyte: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)
         -16 (-0.60 % of base) : 31375.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -15 (-0.54 % 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)
         -14 (-0.29 % of base) : 60313.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -14 (-2.21 % of base) : 234546.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -13 (-0.28 % of base) : 94852.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindObjectCreationExpression(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Syntax.ArgumentListSyntax,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.SyntaxNode,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],System.Collections.Immutable.ImmutableArray`1[System.String],Microsoft.CodeAnalysis.VisualBasic.BoundObjectInitializerExpressionBase,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode):Microsoft.CodeAnalysis.VisualBasic.BoundExpression:this (FullOpts)

Top method regressions (percentages):
          38 (5.07 % of base) : 261442.dasm - System.Linq.Parallel.GroupJoinQueryOperator`4[System.__Canon,System.__Canon,System.__Canon,System.__Canon]:WrapPartitionedStreamHelper[int,System.__Canon](System.Linq.Parallel.PartitionedStream`2[System.Linq.Parallel.Pair`2[System.__Canon,System.__Canon],int],System.Linq.Parallel.PartitionedStream`2[System.__Canon,System.__Canon],System.Linq.Parallel.IPartitionedStreamRecipient`1[System.__Canon],int,System.Threading.CancellationToken):this (FullOpts)
          39 (4.80 % of base) : 29533.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          39 (4.50 % of base) : 29532.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          19 (4.30 % of base) : 39456.dasm - Microsoft.Diagnostics.Utilities.XmlUtilities:XmlEscape(System.Object,ubyte):System.String (FullOpts)
          26 (4.09 % of base) : 151884.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddError[System.__Canon](System.__Canon,int,System.Object[]):System.__Canon:this (FullOpts)
          26 (4.05 % of base) : 93486.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxParser:AddError[System.__Canon](System.__Canon,int,System.Object[]):System.__Canon:this (FullOpts)
          14 (4.05 % of base) : 272519.dasm - System.Text.Encodings.Web.TextEncoder:TryEncodeUnicodeScalarUtf8(uint,System.Span`1[ushort],System.Span`1[ubyte],byref):ubyte: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)
           7 (2.79 % 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)
          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)
          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)
          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)
          24 (2.64 % of base) : 151264.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
          24 (2.64 % of base) : 92713.dasm - Microsoft.CodeAnalysis.CSharp.OverloadResolutionResult`1[System.__Canon]:HadBadArguments(Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,Microsoft.CodeAnalysis.CSharp.Binder,System.String,Microsoft.CodeAnalysis.CSharp.AnalyzedArguments,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbol],Microsoft.CodeAnalysis.Location,uint,ubyte):ubyte:this (FullOpts)
          75 (2.31 % of base) : 98642.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:CheckDeclarationNameAndTypeParameters(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):this (FullOpts)
         135 (2.23 % of base) : 108526.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
           5 (2.05 % of base) : 121378.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:PeekAheadFor[System.__Canon](System.Func`3[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken,System.__Canon,ubyte],System.__Canon,byref):int:this (FullOpts)

Top method improvements (percentages):
         -29 (-4.28 % of base) : 152745.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)
         -29 (-4.28 % of base) : 234053.dasm - System.Data.ProviderBase.DbMetaDataFactory:CloneAndFilterCollection(System.String,System.String[]):System.Data.DataTable:this (FullOpts)
         -64 (-4.20 % of base) : 25623.dasm - System.Buffers.Text.Utf8Parser:TryParseNumber(System.ReadOnlySpan`1[ubyte],byref,byref,int,byref):ubyte (FullOpts)
         -12 (-3.70 % of base) : 28654.dasm - System.Collections.Concurrent.ConcurrentQueue`1[System.__Canon]:GetCount(System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int,System.Collections.Concurrent.ConcurrentQueueSegment`1[System.__Canon],int):long (FullOpts)
          -5 (-2.79 % of base) : 38952.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
          -8 (-2.26 % of base) : 25408.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
         -14 (-2.21 % of base) : 234546.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -30 (-1.87 % of base) : 16315.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
          -4 (-1.86 % of base) : 250780.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
         -28 (-1.71 % of base) : 129740.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
         -28 (-1.71 % of base) : 68014.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
         -34 (-1.62 % of base) : 174632.dasm - System.DirectoryServices.AccountManagement.ADStoreCtx:PushChangesToNative(System.DirectoryServices.AccountManagement.Principal):System.Object: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)
         -25 (-1.35 % of base) : 243324.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
          -8 (-1.29 % of base) : 251451.dasm - System.Collections.Frozen.FrozenHashTable:Create(System.Span`1[int],ubyte):System.Collections.Frozen.FrozenHashTable (FullOpts)
         -36 (-1.24 % of base) : 37384.dasm - System.Data.XSDSchema:HandleElementColumn(System.Xml.Schema.XmlSchemaElement,System.Data.DataTable,ubyte):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)
          -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)
         -10 (-0.79 % of base) : 202477.dasm - System.Speech.Recognition.RecognizedPhrase:RecursiveBuildSemanticProperties(System.Collections.Generic.IList`1[System.Speech.Recognition.RecognizedWordUnit],System.Collections.Generic.List`1[System.Speech.Recognition.RecognizedPhrase+ResultPropertiesRef],System.Speech.Recognition.RecognizedPhrase+RuleNode,int,byref):System.Speech.Recognition.SemanticValue (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)


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: 67669814 (overridden on cmd)
Total bytes of diff: 67670878 (overridden on cmd)
Total bytes of delta: 1064 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         161 : 146181.dasm (1.77 % of base)
         147 : 340606.dasm (10.14 % of base)
         123 : 135973.dasm (2.06 % of base)
         111 : 23387.dasm (6.25 % of base)
         102 : 118229.dasm (5.85 % of base)
          83 : 154848.dasm (1.36 % of base)
          83 : 192680.dasm (1.90 % of base)
          60 : 61780.dasm (1.92 % of base)
          57 : 242967.dasm (13.01 % of base)
          46 : 192681.dasm (2.63 % of base)
          43 : 67179.dasm (2.39 % of base)
          37 : 59310.dasm (1.43 % of base)
          32 : 169068.dasm (6.04 % of base)
          32 : 203682.dasm (6.04 % of base)
          30 : 303120.dasm (2.87 % of base)
          30 : 16997.dasm (2.87 % of base)
          30 : 221892.dasm (2.87 % of base)
          29 : 330805.dasm (2.79 % of base)
          29 : 167464.dasm (4.23 % of base)
          29 : 202163.dasm (4.23 % of base)

Top file improvements (bytes):
         -98 : 57928.dasm (-0.34 % of base)
         -71 : 68052.dasm (-3.17 % of base)
         -67 : 135034.dasm (-1.67 % of base)
         -59 : 59651.dasm (-0.98 % of base)
         -45 : 131805.dasm (-1.07 % of base)
         -40 : 283970.dasm (-0.98 % of base)
         -37 : 265394.dasm (-2.15 % of base)
         -34 : 216721.dasm (-2.71 % of base)
         -32 : 131316.dasm (-1.56 % of base)
         -32 : 290086.dasm (-1.18 % of base)
         -32 : 329624.dasm (-1.18 % of base)
         -30 : 67760.dasm (-0.93 % of base)
         -28 : 331759.dasm (-0.99 % of base)
         -26 : 184738.dasm (-2.91 % of base)
         -25 : 326289.dasm (-1.74 % of base)
         -24 : 131308.dasm (-0.30 % of base)
         -24 : 278305.dasm (-1.91 % of base)
         -23 : 89403.dasm (-0.43 % of base)
         -20 : 187177.dasm (-1.39 % of base)
         -19 : 65816.dasm (-0.89 % of base)

66 total files with Code Size differences (35 improved, 31 regressed), 20 unchanged.

Top method regressions (bytes):
         161 (1.77 % of base) : 146181.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Scanner:ScanNumericLiteral(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.VisualBasicSyntaxNode]):Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.SyntaxToken:this (FullOpts)
         147 (10.14 % of base) : 340606.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
         123 (2.06 % of base) : 135973.dasm - Microsoft.CodeAnalysis.VisualBasic.Symbols.SourceNamedTypeSymbol:CheckDeclarationNameAndTypeParameters(Microsoft.CodeAnalysis.VisualBasic.VisualBasicSyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Binder,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref):this (FullOpts)
         111 (6.25 % of base) : 23387.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
         102 (5.85 % of base) : 118229.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
          83 (1.90 % 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 (1.92 % of base) : 61780.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:CheckSwitchErrors(byref,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          57 (13.01 % of base) : 242967.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
          46 (2.63 % 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)
          43 (2.39 % of base) : 67179.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion:RemapLocalFunction(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,byref,byref,byref):this (FullOpts)
          37 (1.43 % of base) : 59310.dasm - Microsoft.CodeAnalysis.CSharp.Binder:GenerateImplicitConversionErrorForCollectionExpression(Microsoft.CodeAnalysis.CSharp.BoundUnconvertedCollectionExpression,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          32 (6.04 % of base) : 169068.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
          32 (6.04 % of base) : 203682.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) : 167464.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) : 202163.dasm - Microsoft.CodeAnalysis.Compilation:CheckTupleElementNames(int,System.Collections.Immutable.ImmutableArray`1[System.String]):System.Collections.Immutable.ImmutableArray`1[System.String] (FullOpts)
          29 (2.79 % of base) : 330805.dasm - System.Globalization.FormatProvider+Number:FormatFixed(byref,byref,int,int,System.Globalization.NumberFormatInfo,int[],System.String,System.String) (FullOpts)

Top method improvements (bytes):
         -98 (-0.34 % of base) : 57928.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)
         -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)
         -67 (-1.67 % of base) : 135034.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)
         -59 (-0.98 % of base) : 59651.dasm - Microsoft.CodeAnalysis.CSharp.Binder:BindInterpolatedStringHandlerInMemberCall(Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol],byref,int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):Microsoft.CodeAnalysis.CSharp.BoundExpression:this (FullOpts)
         -45 (-1.07 % of base) : 131805.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:BindXmlContainerRewriterInfo(Microsoft.CodeAnalysis.VisualBasic.Syntax.XmlNodeSyntax,Microsoft.CodeAnalysis.VisualBasic.BoundExpression,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.VisualBasic.BoundExpression],Microsoft.CodeAnalysis.VisualBasic.Binder+XmlElementRootInfo,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag):Microsoft.CodeAnalysis.VisualBasic.BoundXmlContainerRewriterInfo:this (FullOpts)
         -40 (-0.98 % of base) : 283970.dasm - ILCompiler.Diagnostics.PdbWriter:WriteCompilerVersion():this (FullOpts)
         -37 (-2.15 % of base) : 265394.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -34 (-2.71 % of base) : 216721.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -32 (-1.56 % 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)
         -32 (-1.18 % of base) : 290086.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetTypeCoreNoCache(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):System.Reflection.TypeLoading.RoDefinitionType:this (FullOpts)
         -32 (-1.18 % of base) : 329624.dasm - System.Reflection.TypeLoading.Ecma.EcmaModule:GetTypeCoreNoCache(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],byref):System.Reflection.TypeLoading.RoDefinitionType:this (FullOpts)
         -30 (-0.93 % of base) : 67760.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (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.74 % of base) : 326289.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (FullOpts)
         -24 (-1.91 % 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)
         -24 (-0.30 % of base) : 131308.dasm - Microsoft.CodeAnalysis.VisualBasic.Binder:MakeVarianceConversionSuggestion(int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.Symbols.TypeSymbol,Microsoft.CodeAnalysis.VisualBasic.BindingDiagnosticBag,byref,ubyte):ubyte:this (FullOpts)
         -23 (-0.43 % of base) : 89403.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol:GetMergedGlobalAliasesAndUsings(Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol],System.Threading.CancellationToken):Microsoft.CodeAnalysis.CSharp.Symbols.SourceNamespaceSymbol+MergedGlobalAliasesAndUsings:this (FullOpts)
         -20 (-1.39 % of base) : 187177.dasm - Internal.IL.UnsafeAccessors:DoesMethodMatchUnsafeAccessorDeclaration(byref,Internal.TypeSystem.MethodDesc,ubyte):ubyte (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)

Top method regressions (percentages):
          57 (13.01 % of base) : 242967.dasm - System.Xml.XmlWellFormedWriter:LookupPrefix(System.String):System.String:this (FullOpts)
         147 (10.14 % of base) : 340606.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
          23 (6.53 % of base) : 316646.dasm - System.Linq.OrderedEnumerable`1[double]:TryGetLast(byref):double:this (FullOpts)
          23 (6.34 % of base) : 316645.dasm - System.Linq.OrderedEnumerable`1[double]:TryGetFirst(byref):double:this (FullOpts)
         111 (6.25 % of base) : 23387.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
          32 (6.04 % of base) : 169068.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
          32 (6.04 % of base) : 203682.dasm - Microsoft.CodeAnalysis.GeneratorDriverCache:AddOrUpdateMostRecentlyUsed(System.String,Microsoft.CodeAnalysis.GeneratorDriver):Microsoft.CodeAnalysis.GeneratorDriver:this (FullOpts)
         102 (5.85 % of base) : 118229.dasm - System.Enum:TryParseByName[short](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
          13 (4.76 % of base) : 228663.dasm - System.Dynamic.ExpandoObject+ValueCollection:Contains(System.Object):ubyte:this (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 (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)
          10 (3.85 % of base) : 290265.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
          10 (3.85 % of base) : 329795.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
           7 (3.72 % of base) : 145840.dasm - Microsoft.CodeAnalysis.VisualBasic.Syntax.InternalSyntax.Parser:PeekAheadFor[System.__Canon](System.Func`3[System.__Canon,System.__Canon,ubyte],System.__Canon,byref):int:this (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)
          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)

Top method improvements (percentages):
          -7 (-12.96 % of base) : 25678.dasm - System.SpanHelpers:LastIndexOfAnyExceptInRange[int](byref,int,int,int):int (FullOpts)
          -7 (-12.96 % of base) : 120524.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)
          -6 (-3.09 % of base) : 10210.dasm - Microsoft.FSharp.Collections.ListModule:Sum$W[System.Numerics.Vector`1[float]](Microsoft.FSharp.Core.FSharpFunc`2[Microsoft.FSharp.Core.Unit,System.Numerics.Vector`1[float]],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],Microsoft.FSharp.Core.FSharpFunc`2[System.Numerics.Vector`1[float],System.Numerics.Vector`1[float]]],Microsoft.FSharp.Collections.FSharpList`1[System.Numerics.Vector`1[float]]):System.Numerics.Vector`1[float] (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)
          -5 (-2.84 % of base) : 56950.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
         -34 (-2.71 % of base) : 216721.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
         -11 (-2.28 % of base) : 249688.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
          -8 (-2.24 % of base) : 163123.dasm - Microsoft.CSharp.RuntimeBinder.ComInterop.VariantArray:CreateCustomType(int):System.Type (FullOpts)
         -18 (-2.23 % of base) : 36900.dasm - Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer:<GenerateThreadTimeStacks>b__13_2(Microsoft.Diagnostics.Tracing.TraceEvent):this (FullOpts)
         -18 (-2.23 % of base) : 97892.dasm - Microsoft.Diagnostics.Tracing.ThreadTimeStackComputer:<GenerateThreadTimeStacks>b__13_2(Microsoft.Diagnostics.Tracing.TraceEvent):this (FullOpts)
         -37 (-2.15 % of base) : 265394.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -18 (-2.11 % of base) : 340663.dasm - Xunit.Internal.AssertHelper:ShortenAndEncodeString(System.String,int,byref):System.String (FullOpts)
         -14 (-2.03 % of base) : 326280.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
         -24 (-1.91 % 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)
          -4 (-1.87 % of base) : 307285.dasm - System.Formats.Asn1.AsnDecoder:TryReadSignedInteger(System.ReadOnlySpan`1[ubyte],int,int,System.Formats.Asn1.Asn1Tag,int,byref,byref):ubyte (FullOpts)
          -8 (-1.75 % of base) : 290602.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte:this (FullOpts)
          -8 (-1.75 % of base) : 333788.dasm - System.Security.Permissions.PrincipalPermission:IsSubsetOf(System.Security.IPermission):ubyte: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: 42430255 (overridden on cmd)
Total bytes of diff: 42437959 (overridden on cmd)
Total bytes of delta: 7704 (0.02 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         301 : 56681.dasm (9.70 % of base)
         145 : 19518.dasm (15.97 % of base)
          78 : 60195.dasm (8.04 % of base)
          75 : 22856.dasm (7.61 % of base)
          75 : 683.dasm (7.61 % of base)
          73 : 10765.dasm (7.45 % of base)
          73 : 14571.dasm (7.45 % of base)
          68 : 11401.dasm (7.03 % of base)
          68 : 11928.dasm (6.96 % of base)
          68 : 7656.dasm (7.03 % of base)
          65 : 6709.dasm (6.63 % of base)
          64 : 22988.dasm (6.45 % of base)
          63 : 104304.dasm (6.49 % of base)
          63 : 10697.dasm (6.49 % of base)
          63 : 109478.dasm (6.49 % of base)
          63 : 1280.dasm (6.49 % of base)
          62 : 1430.dasm (6.24 % of base)
          61 : 44036.dasm (14.25 % of base)
          61 : 82439.dasm (14.25 % of base)
          57 : 7576.dasm (5.79 % of base)

Top file improvements (bytes):
         -40 : 76036.dasm (-2.24 % of base)
         -35 : 103741.dasm (-1.09 % of base)
         -33 : 71609.dasm (-4.10 % of base)
         -29 : 116778.dasm (-3.16 % of base)
         -25 : 71888.dasm (-1.71 % of base)
         -25 : 86573.dasm (-1.74 % of base)
         -25 : 24178.dasm (-1.74 % of base)
         -24 : 83269.dasm (-2.68 % of base)
         -23 : 76685.dasm (-0.49 % of base)
         -20 : 31821.dasm (-2.48 % of base)
         -20 : 36242.dasm (-2.48 % of base)
         -20 : 53443.dasm (-2.48 % of base)
         -20 : 47222.dasm (-2.17 % of base)
         -20 : 83454.dasm (-2.48 % of base)
         -19 : 76742.dasm (-1.30 % of base)
         -19 : 76775.dasm (-1.30 % of base)
         -19 : 114312.dasm (-3.07 % of base)
         -19 : 28738.dasm (-0.69 % of base)
         -19 : 76733.dasm (-1.22 % of base)
         -18 : 62325.dasm (-4.21 % of base)

86 total files with Code Size differences (49 improved, 37 regressed), 20 unchanged.

Top method regressions (bytes):
         301 (9.70 % of base) : 56681.dasm - System.Net.Mime.ByteEncoder:EncodeBytes(ubyte[],int,int,ubyte,ubyte):int:this (Tier1-OSR)
         145 (15.97 % of base) : 19518.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          78 (8.04 % of base) : 60195.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          75 (7.61 % of base) : 22856.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          75 (7.61 % of base) : 683.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          73 (7.45 % of base) : 10765.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          73 (7.45 % of base) : 14571.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          68 (7.03 % of base) : 11401.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          68 (6.96 % of base) : 11928.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          68 (7.03 % of base) : 7656.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          65 (6.63 % of base) : 6709.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          64 (6.45 % of base) : 22988.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          63 (6.49 % of base) : 104304.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          63 (6.49 % of base) : 10697.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          63 (6.49 % of base) : 109478.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          63 (6.49 % of base) : 1280.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          62 (6.24 % of base) : 1430.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          61 (14.25 % of base) : 44036.dasm - System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte (Tier1)
          61 (14.25 % of base) : 82439.dasm - System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte (Tier1)
          57 (5.79 % of base) : 7576.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)

Top method improvements (bytes):
         -40 (-2.24 % of base) : 76036.dasm - System.Collections.Generic.ArraySortHelper`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]:PickPivotAndPartition(System.Span`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]],System.Comparison`1[System.Collections.Generic.KeyValuePair`2[System.__Canon,System.Reflection.Metadata.StringHandle]]):int (Tier1-OSR)
         -35 (-1.09 % of base) : 103741.dasm - System.Xml.DocumentXPathNodeIterator_ElemDescendants:MoveNext():ubyte:this (Tier1-OSR)
         -33 (-4.10 % of base) : 71609.dasm - System.Linq.Enumerable+WhereEnumerableIterator`1[ushort]:ToArray():ushort[]:this (Tier1-OSR)
         -29 (-3.16 % of base) : 116778.dasm - System.Xml.Linq.XHashtable`1+XHashtableState[System.__Canon]:Resize():System.Xml.Linq.XHashtable`1+XHashtableState[System.__Canon]:this (Tier1-OSR)
         -25 (-1.71 % of base) : 71888.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -25 (-1.74 % of base) : 86573.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -25 (-1.74 % of base) : 24178.dasm - System.IriHelper:EscapeUnescapeIri(ulong,int,int,int):System.String (Tier0-FullOpts)
         -24 (-2.68 % of base) : 83269.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
         -23 (-0.49 % of base) : 76685.dasm - System.Reflection.Metadata.Tests.LargeTablesAndHeapsTests:Others():this (Tier1-OSR)
         -20 (-2.17 % of base) : 47222.dasm - System.Linq.Enumerable+SelectEnumerableIterator`2[int,int]:ToArray():int[]:this (Tier1-OSR)
         -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.69 % of base) : 28738.dasm - System.Formats.Asn1.AsnDecoder:CopyConstructedOctetString(System.ReadOnlySpan`1[ubyte],int,System.Span`1[ubyte],ubyte,ubyte,byref):int (Tier1-OSR)
         -19 (-1.22 % of base) : 76733.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeConstantTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -19 (-1.30 % of base) : 76775.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeDeclSecurityTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -19 (-1.30 % of base) : 76742.dasm - System.Reflection.Metadata.Ecma335.MetadataBuilder:SerializeMethodSemanticsTable(System.Reflection.Metadata.BlobBuilder,System.Reflection.Metadata.Ecma335.MetadataSizes):this (Tier1-OSR)
         -19 (-3.07 % of base) : 114312.dasm - System.SpanHelpers:NonPackedIndexOfValueType[short,System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
         -18 (-1.93 % of base) : 22997.dasm - System.Collections.Generic.List`1[System.__Canon]:.ctor(System.Collections.Generic.IEnumerable`1[System.__Canon]):this (Tier1)

Top method regressions (percentages):
         145 (15.97 % of base) : 19518.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          61 (14.25 % of base) : 44036.dasm - System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte (Tier1)
          61 (14.25 % of base) : 82439.dasm - System.Globalization.Ordinal:EqualsIgnoreCase_Vector[System.Runtime.Intrinsics.Vector128`1[ushort]](byref,byref,int):ubyte (Tier1)
         301 (9.70 % of base) : 56681.dasm - System.Net.Mime.ByteEncoder:EncodeBytes(ubyte[],int,int,ubyte,ubyte):int:this (Tier1-OSR)
          21 (9.01 % of base) : 115597.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 19667.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 117356.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 1561.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 27539.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 87682.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 108734.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 115391.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          21 (9.01 % of base) : 24893.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          78 (8.04 % of base) : 60195.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          30 (7.67 % of base) : 15227.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
          75 (7.61 % of base) : 22856.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          75 (7.61 % of base) : 683.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          73 (7.45 % of base) : 10765.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          73 (7.45 % of base) : 14571.dasm - System.PackedSpanHelpers:IndexOf[System.SpanHelpers+DontNegate`1[short]](byref,short,int):int (Tier1)
          21 (7.32 % of base) : 24528.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)

Top method improvements (percentages):
          -6 (-5.31 % of base) : 87045.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
         -18 (-4.21 % of base) : 62325.dasm - System.Runtime.InteropServices.SafeHandle:InternalRelease(ubyte):this (Tier1)
          -5 (-4.20 % of base) : 114715.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 37698.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 49449.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 62839.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 84709.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 87778.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 95140.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 108925.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 115552.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 87699.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 87747.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 32959.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (Tier1)
          -5 (-4.20 % of base) : 6448.dasm - System.Runtime.CompilerServices.CastHelpers:IsInstanceOfInterface(ulong,System.Object):System.Object (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)
         -15 (-3.61 % of base) : 19567.dasm - System.SpanHelpers:NonPackedContainsValueType[short](byref,short,int):ubyte (Tier1)
          -4 (-3.60 % of base) : 37825.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: 142641671 (overridden on cmd)
Total bytes of diff: 142643107 (overridden on cmd)
Total bytes of delta: 1436 (0.00 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         178 : 312454.dasm (4.22 % of base)
         174 : 312508.dasm (4.41 % of base)
         134 : 31565.dasm (9.63 % of base)
         134 : 1258.dasm (9.63 % of base)
         120 : 329786.dasm (1.96 % of base)
          83 : 319316.dasm (5.23 % of base)
          77 : 41026.dasm (1.89 % of base)
          77 : 65557.dasm (1.89 % of base)
          72 : 319317.dasm (4.45 % of base)
          72 : 319320.dasm (4.45 % of base)
          72 : 319318.dasm (4.45 % of base)
          72 : 319321.dasm (4.45 % of base)
          72 : 319319.dasm (4.45 % of base)
          72 : 319322.dasm (4.45 % of base)
          72 : 156177.dasm (5.88 % of base)
          71 : 319324.dasm (4.45 % of base)
          60 : 304785.dasm (2.03 % of base)
          57 : 150260.dasm (13.01 % of base)
          57 : 74097.dasm (13.01 % of base)
          51 : 327656.dasm (2.50 % of base)

Top file improvements (bytes):
        -176 : 321513.dasm (-6.08 % of base)
        -136 : 312455.dasm (-1.99 % of base)
        -113 : 327056.dasm (-3.21 % of base)
         -98 : 71308.dasm (-0.35 % of base)
         -89 : 202864.dasm (-3.21 % of base)
         -59 : 312610.dasm (-3.20 % of base)
         -58 : 39379.dasm (-0.96 % of base)
         -58 : 15691.dasm (-0.96 % of base)
         -45 : 15874.dasm (-1.10 % of base)
         -43 : 321795.dasm (-1.50 % of base)
         -43 : 321615.dasm (-2.56 % of base)
         -41 : 54810.dasm (-0.56 % of base)
         -41 : 35218.dasm (-0.58 % of base)
         -41 : 60841.dasm (-0.56 % of base)
         -41 : 6279.dasm (-0.58 % of base)
         -39 : 321767.dasm (-3.17 % of base)
         -37 : 294586.dasm (-2.15 % of base)
         -37 : 321649.dasm (-2.62 % of base)
         -36 : 321772.dasm (-2.56 % of base)
         -35 : 308800.dasm (-1.99 % of base)

55 total files with Code Size differences (29 improved, 26 regressed), 20 unchanged.

Top method regressions (bytes):
         178 (4.22 % of base) : 312454.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1665_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         174 (4.41 % of base) : 312508.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1680_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         134 (9.63 % of base) : 31565.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
         134 (9.63 % of base) : 1258.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
         120 (1.96 % of base) : 329786.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex31345_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          83 (5.23 % of base) : 319316.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5355_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          77 (1.89 % of base) : 41026.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          77 (1.89 % of base) : 65557.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):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)
          72 (4.45 % of base) : 319317.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5356_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          72 (4.45 % of base) : 319318.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5357_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          72 (4.45 % of base) : 319319.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5358_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          72 (4.45 % of base) : 319320.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5359_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          72 (4.45 % of base) : 319321.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5360_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          72 (4.45 % of base) : 319322.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5361_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          71 (4.45 % of base) : 319324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5362_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          60 (2.03 % of base) : 304785.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:CheckSwitchErrors(byref,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (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 (2.50 % of base) : 327656.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6444_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)

Top method improvements (bytes):
        -176 (-6.08 % of base) : 321513.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4397_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -136 (-1.99 % of base) : 312455.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1671_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
        -113 (-3.21 % of base) : 327056.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex6095_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -98 (-0.35 % 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)
         -89 (-3.21 % of base) : 202864.dasm - XmlCoreTest.Common.WriterFactory:CompareStringWithPrefixes(System.String):ubyte:this (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) : 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)
         -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)
         -45 (-1.10 % of base) : 15874.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex3_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -43 (-2.56 % of base) : 321615.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4452_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -43 (-1.50 % of base) : 321795.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4895_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -41 (-0.56 % of base) : 54810.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1012_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -41 (-0.56 % of base) : 60841.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1034_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -41 (-0.58 % of base) : 35218.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (FullOpts)
         -41 (-0.58 % of base) : 6279.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1054_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol:this (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)
         -37 (-2.15 % of base) : 294586.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (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)

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)
         134 (9.63 % of base) : 31565.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,ubyte) (FullOpts)
         134 (9.63 % of base) : 1258.dasm - Xunit.Assert:Equal(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],ubyte,ubyte,ubyte,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)
          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)
          72 (4.45 % of base) : 319317.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5356_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          72 (4.45 % of base) : 319318.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5357_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          72 (4.45 % of base) : 319319.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5358_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          72 (4.45 % of base) : 319320.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5359_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          72 (4.45 % of base) : 319321.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5360_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          72 (4.45 % of base) : 319322.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5361_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
          71 (4.45 % of base) : 319324.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex5362_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         174 (4.41 % of base) : 312508.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1680_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         178 (4.22 % of base) : 312454.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1665_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (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)
          10 (3.85 % of base) : 206635.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)
          10 (3.85 % of base) : 211244.dasm - System.Reflection.TypeLoading.GetTypeCoreCache+Container:TryGetValue(System.ReadOnlySpan`1[ubyte],System.ReadOnlySpan`1[ubyte],int,byref):ubyte:this (FullOpts)

Top method improvements (percentages):
        -176 (-6.08 % of base) : 321513.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4397_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -89 (-3.21 % of base) : 202864.dasm - XmlCoreTest.Common.WriterFactory:CompareStringWithPrefixes(System.String):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)
         -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)
         -34 (-2.84 % of base) : 41333.dasm - System.ComponentModel.EnumConverter:ConvertFrom(System.ComponentModel.ITypeDescriptorContext,System.Globalization.CultureInfo,System.Object):System.Object:this (FullOpts)
          -5 (-2.84 % of base) : 72007.dasm - Microsoft.VisualBasic.CompilerServices.ConversionResolution+OperatorCaches+FixedList:Lookup(System.Type,System.Type,byref,byref):ubyte:this (FullOpts)
         -37 (-2.62 % of base) : 321649.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4554_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -43 (-2.56 % of base) : 321615.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex4452_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)
         -23 (-2.41 % of base) : 307962.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex999_TryMatchAtCurrentPosition(System.Text.RegularExpressions.RegexRunner,System.ReadOnlySpan`1[ushort]):ubyte (FullOpts)
         -11 (-2.28 % of base) : 197645.dasm - System.Xml.Xsl.Runtime.XmlQueryOutput:CopyNode(System.Xml.XPath.XPathNavigator):this (FullOpts)
         -37 (-2.15 % of base) : 294586.dasm - System.Text.RegularExpressions.Generated.<RegexGenerator_g>F7680D248A4DE6BF5B840634AFF895A52942D245A7F8BB88A5564E83370DDC02A__CreateIntegerRegex_0+RunnerFactory+Runner:TryMatchAtCurrentPosition(System.ReadOnlySpan`1[ushort]):ubyte:this (FullOpts)
         -18 (-2.11 % of base) : 340919.dasm - Xunit.Internal.AssertHelper:ShortenAndEncodeString(System.String,int,byref):System.String (FullOpts)
         -14 (-2.03 % of base) : 170902.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):ubyte (FullOpts)
         -14 (-2.03 % of base) : 173581.dasm - System.IPv6AddressHelper:InternalIsValid(ulong,int,byref,ubyte):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)
        -136 (-1.99 % of base) : 312455.dasm - System.Text.RegularExpressions.CompiledRegexRunner:Regex1671_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) : 228669.dasm - DataContractJsonSerializerTests:DCJS_DecimalAsRoot() (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: 14769832 (overridden on cmd)
Total bytes of diff: 14769681 (overridden on cmd)
Total bytes of delta: -151 (-0.00 % of base)
    diff is an improvement.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         117 : 1393.dasm (0.71 % of base)
          94 : 18406.dasm (7.18 % of base)
          83 : 7753.dasm (1.89 % of base)
          83 : 19658.dasm (1.89 % of base)
          77 : 22235.dasm (1.83 % of base)
          73 : 1135.dasm (0.75 % of base)
          60 : 29148.dasm (2.01 % of base)
          56 : 10096.dasm (1.87 % of base)
          51 : 16735.dasm (1.46 % of base)
          41 : 21189.dasm (3.97 % of base)
          35 : 32203.dasm (2.03 % of base)
          28 : 22032.dasm (1.67 % of base)
          20 : 20143.dasm (1.75 % of base)
          20 : 1353.dasm (0.17 % of base)
          18 : 26279.dasm (1.12 % of base)
          17 : 24785.dasm (0.61 % of base)
          15 : 25256.dasm (0.25 % of base)
          15 : 1166.dasm (0.26 % of base)
          14 : 17128.dasm (0.42 % of base)
          14 : 24212.dasm (0.23 % of base)

Top file improvements (bytes):
        -255 : 1384.dasm (-1.40 % of base)
        -175 : 18794.dasm (-14.29 % of base)
        -147 : 1391.dasm (-0.96 % of base)
         -65 : 1207.dasm (-1.47 % of base)
         -58 : 27119.dasm (-0.95 % of base)
         -46 : 1112.dasm (-1.34 % of base)
         -44 : 5323.dasm (-1.62 % of base)
         -44 : 16523.dasm (-1.62 % of base)
         -41 : 23462.dasm (-0.58 % of base)
         -40 : 17916.dasm (-0.49 % of base)
         -32 : 34285.dasm (-0.74 % of base)
         -30 : 31131.dasm (-1.01 % of base)
         -30 : 13174.dasm (-1.77 % of base)
         -28 : 9413.dasm (-2.88 % of base)
         -27 : 1243.dasm (-1.12 % of base)
         -26 : 1364.dasm (-0.28 % of base)
         -20 : 24576.dasm (-0.39 % of base)
         -18 : 1321.dasm (-1.30 % of base)
         -14 : 16279.dasm (-0.78 % of base)
         -14 : 2162.dasm (-0.95 % of base)

54 total files with Code Size differences (26 improved, 28 regressed), 20 unchanged.

Top method regressions (bytes):
         117 (0.71 % of base) : 1393.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxPairTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
          94 (7.18 % of base) : 18406.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (FullOpts)
          83 (1.89 % of base) : 7753.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          83 (1.89 % of base) : 19658.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          77 (1.83 % of base) : 22235.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          73 (0.75 % of base) : 1135.dasm - BepuPhysics.CollisionDetection.SweepTasks.GJKDistanceTester`6[BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.BoxSupportFinder,BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.Collidables.BoxSupportFinder]:FindClosestPoint(byref,byref,byref,byref,byref) (FullOpts)
          60 (2.01 % of base) : 29148.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:CheckSwitchErrors(byref,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          56 (1.87 % of base) : 10096.dasm - FSharp.Compiler.CheckExpressions:TcLetrecBindings(FSharp.Compiler.CheckExpressions+OverridesOK,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+RecDefnBindingInfo],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
          51 (1.46 % of base) : 16735.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):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)
          35 (2.03 % of base) : 32203.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion:RemapLocalFunction(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,byref,byref,byref):this (FullOpts)
          28 (1.67 % of base) : 22032.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:TryParseLocalFunctionStatementBody(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LocalFunctionStatementSyntax:this (FullOpts)
          20 (0.17 % of base) : 1353.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleConvexHullTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
          20 (1.75 % of base) : 20143.dasm - Microsoft.ML.Numeric.VectorUtils:DotProductWithOffset(byref,int,byref):float (FullOpts)
          18 (1.12 % of base) : 26279.dasm - Microsoft.CodeAnalysis.CSharp.Binder:UnaryOperatorOverloadResolution(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CSharp.UnaryOperatorAnalysisResult:this (FullOpts)
          17 (0.61 % of base) : 24785.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.SourceMemberContainerTypeSymbol:ForceComplete(Microsoft.CodeAnalysis.SourceLocation,System.Threading.CancellationToken):this (FullOpts)
          15 (0.26 % of base) : 1166.dasm - BepuPhysics.IslandAwakener:PrepareJobs(byref,ubyte,int):System.ValueTuple`2[int,int]: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)
          14 (0.23 % 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)
          14 (0.42 % of base) : 17128.dasm - SixLabors.ImageSharp.Processing.Processors.Dithering.OrderedDither:ApplyQuantizationDither[SixLabors.ImageSharp.Processing.Processors.Quantization.PaletteQuantizer`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.PixelFormats.Rgba32](byref,SixLabors.ImageSharp.ImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.IndexedImageFrame`1[SixLabors.ImageSharp.PixelFormats.Rgba32],SixLabors.ImageSharp.Rectangle):this (FullOpts)

Top method improvements (bytes):
        -255 (-1.40 % of base) : 1384.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
        -175 (-14.29 % of base) : 18794.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (FullOpts)
        -147 (-0.96 % of base) : 1391.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -65 (-1.47 % of base) : 1207.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):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 (-1.34 % of base) : 1112.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.CollisionDetection.SweepTasks.CapsuleBoxDistanceTester]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.CollisionDetection.SweepTasks.CapsuleBoxDistanceTester]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
         -44 (-1.62 % of base) : 5323.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -44 (-1.62 % of base) : 16523.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -41 (-0.58 % of base) : 23462.dasm - Microsoft.CodeAnalysis.CSharp.Binder:<ResultSymbol>g__resultSymbol|1055_0(Microsoft.CodeAnalysis.CSharp.LookupResult,System.String,int,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,ubyte,byref,Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceOrTypeSymbol,int):Microsoft.CodeAnalysis.CSharp.Symbol: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)
         -30 (-1.01 % of base) : 31131.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
         -30 (-1.77 % of base) : 13174.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -28 (-2.88 % of base) : 9413.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
         -27 (-1.12 % of base) : 1243.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:Reduce(ulong,int,byref,float,byref,byref,byref,byref,float,float,byref,byref,int,byref) (FullOpts)
         -26 (-0.28 % of base) : 1364.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxTriangleTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -20 (-0.39 % of base) : 24576.dasm - Microsoft.CodeAnalysis.CSharp.Symbols.ConstraintsHelper:ResolveBounds(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol,Roslyn.Utilities.ConsList`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol],System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations],ubyte,Microsoft.CodeAnalysis.CSharp.CSharpCompilation,Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterDiagnosticInfo],byref,Microsoft.CodeAnalysis.CompoundUseSiteInfo`1[Microsoft.CodeAnalysis.CSharp.Symbols.AssemblySymbol]):Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterBounds (FullOpts)
         -18 (-1.30 % of base) : 1321.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
         -14 (-0.78 % of base) : 16279.dasm - SixLabors.ImageSharp.Formats.Jpeg.JpegDecoderCore:ProcessStartOfFrameMarker(SixLabors.ImageSharp.IO.BufferedReadStream,int,byref,ubyte):this (FullOpts)
         -14 (-0.95 % of base) : 2162.dasm - System.Text.Unicode.Utf8Utility:GetPointerToFirstInvalidByte(ulong,int,byref,byref):ulong (FullOpts)

Top method regressions (percentages):
          94 (7.18 % of base) : 18406.dasm - System.Enum:TryParseByName[uint](System.RuntimeType,System.ReadOnlySpan`1[ushort],ubyte,ubyte,byref):ubyte (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) : 1944.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          10 (3.21 % of base) : 15571.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (FullOpts)
          35 (2.03 % of base) : 32203.dasm - Microsoft.CodeAnalysis.CSharp.ClosureConversion:RemapLocalFunction(Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,byref,byref,byref,byref):this (FullOpts)
          60 (2.01 % of base) : 29148.dasm - Microsoft.CodeAnalysis.CSharp.SwitchBinder:CheckSwitchErrors(byref,Microsoft.CodeAnalysis.CSharp.BoundDecisionDag,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          83 (1.89 % of base) : 7753.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          83 (1.89 % of base) : 19658.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          56 (1.87 % of base) : 10096.dasm - FSharp.Compiler.CheckExpressions:TcLetrecBindings(FSharp.Compiler.CheckExpressions+OverridesOK,FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+RecDefnBindingInfo],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range):System.Tuple`3[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Binding],FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
          77 (1.83 % of base) : 22235.dasm - System.Number:TryParseNumber[System.Utf16Char](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (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)
          20 (1.75 % of base) : 20143.dasm - Microsoft.ML.Numeric.VectorUtils:DotProductWithOffset(byref,int,byref):float (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)
          28 (1.67 % of base) : 22032.dasm - Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LanguageParser:TryParseLocalFunctionStatementBody(Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.AttributeListSyntax],Microsoft.CodeAnalysis.Syntax.InternalSyntax.SyntaxList`1[Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken],Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.TypeSyntax,Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.SyntaxToken):Microsoft.CodeAnalysis.CSharp.Syntax.InternalSyntax.LocalFunctionStatementSyntax: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)
          51 (1.46 % of base) : 16735.dasm - SixLabors.ImageSharp.Formats.Jpeg.Components.Decoder.HuffmanScanDecoder:DecodeBlockProgressiveACRefined(byref,byref):this (FullOpts)
           8 (1.16 % of base) : 29412.dasm - Microsoft.CodeAnalysis.CSharp.TypeCompilationState:ReportCtorInitializerCycles(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol,Microsoft.CodeAnalysis.SyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag):this (FullOpts)
          18 (1.12 % of base) : 26279.dasm - Microsoft.CodeAnalysis.CSharp.Binder:UnaryOperatorOverloadResolution(int,Microsoft.CodeAnalysis.CSharp.BoundExpression,Microsoft.CodeAnalysis.CSharp.CSharpSyntaxNode,Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag,byref,byref):Microsoft.CodeAnalysis.CSharp.UnaryOperatorAnalysisResult:this (FullOpts)
          10 (0.78 % of base) : 1231.dasm - BepuPhysics.CollisionDetection.DepthRefiner`6[BepuPhysics.Collidables.ConvexHull,BepuPhysics.Collidables.ConvexHullWide,BepuPhysics.Collidables.ConvexHullSupportFinder,BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.CapsuleSupportFinder]:FindMinimumDepth(byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,byref,int) (FullOpts)
           2 (0.77 % of base) : 30887.dasm - Microsoft.CodeAnalysis.CSharp.DocumentationCommentIDVisitor+PartVisitor:VisitTypeParameter(Microsoft.CodeAnalysis.CSharp.Symbols.TypeParameterSymbol,System.Text.StringBuilder):System.Object:this (FullOpts)

Top method improvements (percentages):
        -175 (-14.29 % of base) : 18794.dasm - System.Collections.Concurrent.ConcurrentDictionary`2[System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,System.__Canon]:TryGetValue(System.Net.Http.HttpConnectionPoolManager+HttpConnectionKey,byref):ubyte:this (FullOpts)
         -28 (-2.88 % of base) : 9413.dasm - FSharp.Compiler.CheckExpressions:TcMethodApplicationThen(FSharp.Compiler.CheckExpressions+TcFileState,FSharp.Compiler.CheckExpressions+TcEnv,FSharp.Compiler.ConstraintSolver+OverallTy,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.TypedTree+TType],FSharp.Compiler.CheckExpressions+UnscopedTyparEnv,Microsoft.FSharp.Core.FSharpOption`1[Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+TType]],Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.TypedTree+Expr],FSharp.Compiler.Text.Range,FSharp.Compiler.Text.Range,System.String,FSharp.Compiler.AccessibilityLogic+AccessorDomain,FSharp.Compiler.TypedTreeOps+Mutates,ubyte,Microsoft.FSharp.Collections.FSharpList`1[System.Tuple`2[FSharp.Compiler.Infos+MethInfo,Microsoft.FSharp.Core.FSharpOption`1[FSharp.Compiler.Infos+PropInfo]]],FSharp.Compiler.NameResolution+AfterResolution,FSharp.Compiler.TypedTree+ValUseFlag,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.Syntax.SynExpr],int,Microsoft.FSharp.Collections.FSharpList`1[FSharp.Compiler.CheckExpressions+DelayedItem]):System.Tuple`2[FSharp.Compiler.TypedTree+Expr,FSharp.Compiler.CheckExpressions+UnscopedTyparEnv] (FullOpts)
         -30 (-1.77 % of base) : 13174.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -44 (-1.62 % of base) : 5323.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -44 (-1.62 % of base) : 16523.dasm - System.Threading.PortableThreadPool+HillClimbing:Update(int,double,int):System.ValueTuple`2[int,int]:this (FullOpts)
         -65 (-1.47 % of base) : 1207.dasm - BepuPhysics.Trees.Tree:FindPartitionBinned(byref,int,int,byref,byref,byref,byref,byref):this (FullOpts)
        -255 (-1.40 % of base) : 1384.dasm - BepuPhysics.CollisionDetection.CollisionTasks.TriangleCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):this (FullOpts)
         -46 (-1.34 % of base) : 1112.dasm - BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.CollisionDetection.SweepTasks.CapsuleBoxDistanceTester]:Sweep[BepuPhysics.CollisionDetection.SweepTasks.ConvexPairSweepTask`5+UnoffsetSweep[BepuPhysics.Collidables.Capsule,BepuPhysics.Collidables.CapsuleWide,BepuPhysics.Collidables.Box,BepuPhysics.Collidables.BoxWide,BepuPhysics.CollisionDetection.SweepTasks.CapsuleBoxDistanceTester]](ulong,byref,byref,ulong,byref,byref,byref,float,float,float,int,byref,byref,byref,byref,byref):ubyte (FullOpts)
         -18 (-1.30 % of base) : 1321.dasm - BepuPhysics.Constraints.TypeProcessor`3[BepuPhysics.Constraints.TwoBodyReferences,BepuPhysics.Constraints.Contact.Contact1PrestepData,BepuPhysics.Constraints.Contact.Contact1AccumulatedImpulses]:Remove(byref,int,byref,ubyte):this (FullOpts)
         -13 (-1.13 % of base) : 23138.dasm - System.Collections.Generic.Dictionary`2[System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon]]:TryInsert(System.ReadOnlyMemory`1[ushort],System.Collections.Immutable.ImmutableArray`1[System.__Canon],ubyte):ubyte:this (FullOpts)
         -27 (-1.12 % of base) : 1243.dasm - BepuPhysics.CollisionDetection.CollisionTasks.ManifoldCandidateHelper:Reduce(ulong,int,byref,float,byref,byref,byref,byref,float,float,byref,byref,int,byref) (FullOpts)
         -30 (-1.01 % of base) : 31131.dasm - Microsoft.CodeAnalysis.CSharp.LocalRewriter:VisitArgumentsAndCaptureReceiverIfNeeded(byref,int,System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],Microsoft.CodeAnalysis.CSharp.Symbol,System.Collections.Immutable.ImmutableArray`1[int],System.Collections.Immutable.ImmutableArray`1[ubyte],Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1[Microsoft.CodeAnalysis.CSharp.BoundExpression],byref,Microsoft.CodeAnalysis.CSharp.BoundExpression):System.Collections.Immutable.ImmutableArray`1[Microsoft.CodeAnalysis.CSharp.BoundExpression]:this (FullOpts)
        -147 (-0.96 % of base) : 1391.dasm - BepuPhysics.CollisionDetection.CollisionTasks.BoxCylinderTester:Test(byref,byref,byref,byref,byref,byref,int,byref):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)
         -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)
          -2 (-0.86 % of base) : 1205.dasm - BepuPhysics.Trees.Tree:CreateStagingNodeBinned(byref,int,int,byref,byref):int:this (FullOpts)
         -14 (-0.78 % of base) : 16279.dasm - SixLabors.ImageSharp.Formats.Jpeg.JpegDecoderCore:ProcessStartOfFrameMarker(SixLabors.ImageSharp.IO.BufferedReadStream,int,byref,ubyte):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)
          -6 (-0.62 % of base) : 2575.dasm - System.Version:TryFormatCore[ushort](System.Span`1[ushort],int,byref):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: 5085273 (overridden on cmd)
Total bytes of diff: 5085866 (overridden on cmd)
Total bytes of delta: 593 (0.01 % of base)
    diff is a regression.
    relative diff is a regression.

Detail diffs



Top file regressions (bytes):
         158 : 10631.dasm (3.84 % of base)
         158 : 4647.dasm (3.84 % of base)
          48 : 17794.dasm (5.49 % of base)
          48 : 20430.dasm (5.49 % of base)
          48 : 17795.dasm (5.16 % of base)
          48 : 20431.dasm (5.16 % of base)
          48 : 23074.dasm (5.49 % of base)
          48 : 23077.dasm (5.16 % of base)
          47 : 8624.dasm (4.97 % of base)
          47 : 2673.dasm (5.36 % of base)
          47 : 2674.dasm (5.04 % of base)
          47 : 8623.dasm (5.28 % of base)
          17 : 11504.dasm (1.59 % of base)
          17 : 6194.dasm (1.59 % of base)
          10 : 17637.dasm (3.23 % of base)
          10 : 22921.dasm (3.23 % of base)
          10 : 20282.dasm (3.23 % of base)
          10 : 2560.dasm (3.23 % of base)
          10 : 7563.dasm (3.23 % of base)
           7 : 23449.dasm (1.41 % of base)

Top file improvements (bytes):
         -30 : 18359.dasm (-1.91 % of base)
         -30 : 20990.dasm (-1.91 % of base)
         -30 : 3484.dasm (-1.49 % of base)
         -30 : 15590.dasm (-1.91 % of base)
         -30 : 465.dasm (-1.91 % of base)
         -16 : 1395.dasm (-1.13 % of base)
         -16 : 21833.dasm (-1.13 % of base)
         -16 : 19200.dasm (-1.13 % of base)
         -16 : 4853.dasm (-1.13 % of base)
         -16 : 16556.dasm (-1.13 % of base)
          -8 : 1747.dasm (-2.17 % of base)
          -8 : 19539.dasm (-2.17 % of base)
          -8 : 22208.dasm (-2.17 % of base)
          -8 : 16882.dasm (-2.17 % of base)
          -8 : 5794.dasm (-2.17 % of base)
          -5 : 413.dasm (-1.35 % of base)
          -5 : 18190.dasm (-1.35 % of base)
          -5 : 20836.dasm (-1.35 % of base)
          -5 : 3292.dasm (-1.35 % of base)
          -5 : 15638.dasm (-1.35 % of base)

40 total files with Code Size differences (20 improved, 20 regressed), 20 unchanged.

Top method regressions (bytes):
         158 (3.84 % of base) : 10631.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
         158 (3.84 % of base) : 4647.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          48 (5.49 % of base) : 17794.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          48 (5.49 % of base) : 20430.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          48 (5.49 % of base) : 23074.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          48 (5.16 % of base) : 17795.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          48 (5.16 % of base) : 20431.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          48 (5.16 % of base) : 23077.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          47 (5.36 % of base) : 2673.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          47 (5.28 % of base) : 8623.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          47 (4.97 % of base) : 8624.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          47 (5.04 % of base) : 2674.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          17 (1.59 % of base) : 11504.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetStaticFunctionPointerTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],ubyte,byref):ubyte:this (FullOpts)
          17 (1.59 % of base) : 6194.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetStaticFunctionPointerTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],ubyte,byref):ubyte:this (FullOpts)
          10 (3.23 % of base) : 17637.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)
          10 (3.23 % of base) : 20282.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (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)
           7 (1.41 % of base) : 23449.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)

Top method improvements (bytes):
         -30 (-1.91 % of base) : 18359.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -30 (-1.91 % of base) : 20990.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -30 (-1.49 % of base) : 3484.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -30 (-1.91 % of base) : 15590.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -30 (-1.91 % of base) : 465.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -16 (-1.13 % of base) : 1395.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
         -16 (-1.13 % of base) : 21833.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
         -16 (-1.13 % of base) : 19200.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
         -16 (-1.13 % of base) : 4853.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
         -16 (-1.13 % of base) : 16556.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (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) : 22208.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) : 5794.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
          -5 (-1.35 % of base) : 413.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
          -5 (-1.35 % of base) : 18190.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
          -5 (-1.35 % of base) : 20836.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
          -5 (-1.35 % of base) : 3292.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
          -5 (-1.35 % of base) : 15638.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)

Top method regressions (percentages):
          48 (5.49 % of base) : 17794.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          48 (5.49 % of base) : 20430.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          48 (5.49 % of base) : 23074.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          47 (5.36 % of base) : 2673.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          47 (5.28 % of base) : 8623.dasm - System.Globalization.CompareInfo:IndexOfOrdinalHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          48 (5.16 % of base) : 17795.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          48 (5.16 % of base) : 20431.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          48 (5.16 % of base) : 23077.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          47 (5.04 % of base) : 2674.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
          47 (4.97 % of base) : 8624.dasm - System.Globalization.CompareInfo:IndexOfOrdinalIgnoreCaseHelper(System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort],int,ulong,ubyte):int:this (FullOpts)
         158 (3.84 % of base) : 10631.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
         158 (3.84 % of base) : 4647.dasm - System.Number:TryParseNumber[ushort](byref,ulong,int,byref,System.Globalization.NumberFormatInfo):ubyte (FullOpts)
          10 (3.23 % of base) : 17637.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)
          10 (3.23 % of base) : 20282.dasm - System.IO.PathInternal:GetRootLength(System.ReadOnlySpan`1[ushort]):int (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)
          17 (1.59 % of base) : 11504.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetStaticFunctionPointerTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],ubyte,byref):ubyte:this (FullOpts)
          17 (1.59 % of base) : 6194.dasm - Internal.Runtime.TypeLoader.TypeLoaderEnvironment:TryGetStaticFunctionPointerTypeForComponents(System.RuntimeTypeHandle,System.RuntimeTypeHandle[],ubyte,byref):ubyte:this (FullOpts)
           7 (1.41 % of base) : 23449.dasm - System.Runtime.ThunkBlocks:GetNewThunksBlock():long (FullOpts)

Top method improvements (percentages):
          -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) : 22208.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) : 5794.dasm - System.Globalization.CultureData:get_CalendarIds():ushort[]:this (FullOpts)
         -30 (-1.91 % of base) : 18359.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -30 (-1.91 % of base) : 20990.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -30 (-1.91 % of base) : 15590.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -30 (-1.91 % of base) : 465.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
         -30 (-1.49 % of base) : 3484.dasm - System.Text.UnicodeEncoding:GetCharCount(ulong,int,System.Text.DecoderNLS):int:this (FullOpts)
          -5 (-1.35 % of base) : 413.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
          -5 (-1.35 % of base) : 18190.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
          -5 (-1.35 % of base) : 20836.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
          -5 (-1.35 % of base) : 3292.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
          -5 (-1.35 % of base) : 15638.dasm - System.Number:TryUInt32ToDecStr[ushort](uint,System.Span`1[ushort],byref):ubyte (FullOpts)
         -16 (-1.13 % of base) : 21833.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
         -16 (-1.13 % of base) : 19200.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
         -16 (-1.13 % of base) : 16556.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
         -16 (-1.13 % of base) : 1395.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)
         -16 (-1.13 % of base) : 4853.dasm - System.Number:FormatFixed[ushort](byref,byref,int,int[],System.ReadOnlySpan`1[ushort],System.ReadOnlySpan`1[ushort]) (FullOpts)